{"version":3,"file":"./js/dist/client.bundle.js","mappings":"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","sources":["webpack://@skv/nsw/../SKV.ClientAssets/sprites/ sync ^(.*\\.(svg$))[^.]*$/i","webpack://@skv/nsw/../SKV.FrontEnd/src/styles/au-variables.scss","webpack://@skv/nsw/../SKV.FrontEnd/src/styles/jsvariables-nsw.scss","webpack://@skv/nsw/../SKV.FrontEnd/src/styles/jsvariables.scss","webpack://@skv/nsw/../SKV.FrontEnd/src/styles/nsw-variables.scss","webpack://@skv/nsw/../SKV.FrontEnd/src/styles/nz-variables.scss","webpack://@skv/nsw/../SKV.ClientAssets/sprites/glyph/add.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/glyph/arror-right--hover.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/glyph/arrow-down--hover.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/glyph/arrow-down.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/glyph/arrow-left--hover.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/glyph/arrow-left.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/glyph/arrow-right--hover.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/glyph/arrow-right.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/glyph/arrow-up--hover.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/glyph/arrow-up.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/glyph/caution.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/glyph/close--hover.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/glyph/close.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/glyph/copy.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/glyph/correct.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/glyph/download.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/glyph/duplicate.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/glyph/edit.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/glyph/envelope.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/glyph/error.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/glyph/eye.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/glyph/face.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/glyph/file.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/glyph/flag-full.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/glyph/flag.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/glyph/heart-full.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/glyph/heart.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/glyph/incorrect.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/glyph/info.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/glyph/link-external.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/glyph/paper-clip.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/glyph/paper-plane.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/glyph/pencil.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/glyph/positive.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/glyph/promote.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/glyph/question.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/glyph/share.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/glyph/star.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/glyph/trash.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/icons/accessible.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/icons/briefcase.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/icons/calendar.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/icons/caret-down.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/icons/caret-up.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/icons/checklist.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/icons/chev-down.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/icons/chev-left.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/icons/chev-right.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/icons/chev-up.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/icons/clock.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/icons/close.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/icons/copy.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/icons/correct.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/icons/duplicate.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/icons/edit.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/icons/envelope-outline.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/icons/envelope.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/icons/exclamation-circle.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/icons/exclamation-triangle.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/icons/external.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/icons/eye.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/icons/face.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/icons/facebook-circle.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/icons/file.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/icons/heart.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/icons/home.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/icons/incorrect.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/icons/linkedin-circle.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/icons/location-pin.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/icons/marker.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/icons/mortarboard.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/icons/paper-plane.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/icons/pencil.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/icons/question-circle.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/icons/ribbon.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/icons/share.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/icons/spinner-solid.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/icons/star.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/icons/trash.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/icons/twitter-circle.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/icons/user-circle.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/icons/wheelchair.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/illustrations/01B.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/illustrations/AU01.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/illustrations/AU02.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/illustrations/AU03.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/illustrations/NZ01.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/illustrations/NZ02.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/illustrations/NZ03.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/illustrations/opportunities.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/illustrations/search.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/logos/certsy-logo.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/logos/nswgov-inverse.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/logos/nswvolunteering-cobrand.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/logos/nswvolunteering.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/logos/seekvolunteer-inverse.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/logos/seekvolunteer.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/personas/four.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/personas/one.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/personas/three.svg","webpack://@skv/nsw/../SKV.ClientAssets/sprites/personas/two.svg","webpack://@skv/nsw/./src/ui/SearchForm.state.ts","webpack://@skv/nsw/../SKV.ClientState/src/hooks/useThunkReducer.tsx","webpack://@skv/nsw/../SKV.ClientState/src/state/favourites/types.ts","webpack://@skv/nsw/../SKV.ClientState/src/state/favourites/actions.tsx","webpack://@skv/nsw/../SKV.ClientState/src/state/favourites/helpers.tsx","webpack://@skv/nsw/../SKV.ReactRemark/src/index.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/SvgSprite.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/Accordion.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/AdminFooter.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/AspectRatio.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/styles/animations.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/PrivateNotes/NoteWindow.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/PrivateNotes/index.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/types/AgencyEntityTypes.ts","webpack://@skv/nsw/../SKV.ClientCore/src/types/ApplicationTypes.ts","webpack://@skv/nsw/../SKV.ClientCore/src/types/ConnectionRequestTypes.ts","webpack://@skv/nsw/../SKV.ClientCore/src/types/EmailNotificationTypes.ts","webpack://@skv/nsw/../SKV.ClientCore/src/types/OpportunitySearch.ts","webpack://@skv/nsw/../SKV.ClientCore/src/types/OpportunityStatus.ts","webpack://@skv/nsw/../SKV.ClientCore/src/types/OrganisationStatus.ts","webpack://@skv/nsw/../SKV.ClientCore/src/components/AdminNavBar/AdminAccountDropdown.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/AdminNavBar/AdminNavBarToggler.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/AdminNavBar/NavBarAuthenticatedAdmin.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/AdminNavBar/navbar.service.ts","webpack://@skv/nsw/../SKV.ClientCore/src/components/AdminNavBar/NavBarAuthenticatedAdminOrg.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/AdminNavBar/NavBarUnauthenticated.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/AdminPeekdown.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/AdminSearchNoResults.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/AdminWidgetSelect.tsx","webpack://@skv/nsw/../SKV.ClientUtil/src/getDateRange.ts","webpack://@skv/nsw/../SKV.ClientUtil/src/locationHelpers.tsx","webpack://@skv/nsw/../SKV.ClientUtil/src/pluraliser.ts","webpack://@skv/nsw/../SKV.ClientUtil/src/resizeImg.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/AdSpace.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/AgencyEntities/EntityModal.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/AgencyEntities/SupportedOrganisations.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/Analytics/AnalyticsProvider.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/Analytics/Analytics.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/Analytics/AnalyticsStatic.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/DateRangePicker/DateRangePickerSelect.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/DateRangePicker/DateRangePickerHeader.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/DateRangePicker/DateRangePicker.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/ApplicationsTable.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/ArticleCard.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/BrowserUpgradeNotification.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/CertsyCta.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/ConnectionRequests/NewOrganisation.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/CsvImportForm.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/ui/ExternalLink.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/DefinitionLists.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/Errors.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/ErrorBoundary.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/EventBadge.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/EventDiscoverySlider.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/FaceCta.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/FavouriteBtn.tsx","webpack://@skv/nsw/../SKV.ClientState/src/state/favourites/selectors.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/Footer.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/Form/HelpText.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/Form/ValidationError.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/Form/Fieldset.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/Form/DateField.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/Form/Field.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/Form/PasteInput.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/Form/RadioSwitch.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/Form/SelectMulti.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/GlobalNav.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/Header.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/HelmetCanonical.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/HotTipPopover.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/IconLink.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/InDemandCalendar.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/hooks/useAppInsights.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/hooks/useAsyncTypeahead.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/hooks/usePageFocus.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/hooks/useReferrer.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/hooks/useSearchFilters.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/Typeahead/Highlighter.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/Typeahead/ListItem.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/Typeahead/Menu.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/Typeahead/AsyncTypeahead.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/Typeahead/AsyncTypeaheadSearch.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/MultiLocationTypeahead.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/NavBar.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/Pagination.tsx","webpack://@skv/nsw/../SKV.ClientUtil/src/pagination.ts","webpack://@skv/nsw/../SKV.ClientCore/src/components/Peekdown.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/RecruitmentAdviceCta.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/VolunteerSearchLink.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/ResultCard.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/ResultFiltersDropdown.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/ResultSearchTypeBreak.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/ScrollSink.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/ResultTable.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/SearchFormAdditionalFilter.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/SearchFormWithFilters.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/SeekWidgetCta.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/ShareableLinkInfoModal.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/ShareablePasteInput.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/ShareSocialEmailButton.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/ShareSocialFacebookButton.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/ShareSocialLinkedinButton.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/ShareSocialTwitterButton.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/ShareSocial.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/SidebarBox.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/hocs/withInjectedRouter.tsx","webpack://@skv/nsw/../SKV.FrontEnd/src/styles/au-variables.scss?a59c","webpack://@skv/nsw/../SKV.FrontEnd/src/styles/jsvariables.scss?22a4","webpack://@skv/nsw/../SKV.ClientCore/src/themes/auTheme.ts","webpack://@skv/nsw/../SKV.FrontEnd/src/styles/jsvariables-nsw.scss?6e45","webpack://@skv/nsw/../SKV.FrontEnd/src/styles/nsw-variables.scss?f42f","webpack://@skv/nsw/../SKV.ClientCore/src/themes/nswTheme.ts","webpack://@skv/nsw/../SKV.FrontEnd/src/styles/nz-variables.scss?1fe0","webpack://@skv/nsw/../SKV.ClientCore/src/themes/nzTheme.ts","webpack://@skv/nsw/../SKV.ClientCore/src/components/StaticLayout.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/hocs/withThemeProvider.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/Strapi/Provider.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/Tabs.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/components/TooltipPopover.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/models/CustomError.ts","webpack://@skv/nsw/../SKV.ClientCore/src/pages/browser-upgrade/index.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/schemas/EoiSchema.ts","webpack://@skv/nsw/../SKV.ClientState/src/state/favourites/hooks.tsx","webpack://@skv/nsw/../SKV.ClientState/src/state/favourites/reducer.tsx","webpack://@skv/nsw/../SKV.ClientState/src/state/opportunity/reducer.ts","webpack://@skv/nsw/../SKV.ClientState/src/state/opportunity/actions.tsx","webpack://@skv/nsw/../SKV.ClientState/src/state/opportunity/hooks.tsx","webpack://@skv/nsw/../SKV.ClientState/src/state/context/PageEnvelope.tsx","webpack://@skv/nsw/../SKV.ClientState/src/state/context/OpportunitySearchQuery.tsx","webpack://@skv/nsw/../SKV.ClientState/src/state/opportunityResult/util.tsx","webpack://@skv/nsw/../SKV.ClientState/src/state/opportunityResult/actions.tsx","webpack://@skv/nsw/../SKV.ClientState/src/state/organisation/actions.tsx","webpack://@skv/nsw/../SKV.ClientState/src/state/organisation/hooks.tsx","webpack://@skv/nsw/../SKV.ClientState/src/state/organisation/reducer.ts","webpack://@skv/nsw/../SKV.ClientState/src/state/context/OrganisationSearchQuery.tsx","webpack://@skv/nsw/../SKV.ClientState/src/state/organisationResult/util.tsx","webpack://@skv/nsw/../SKV.ClientState/src/state/organisationResult/actions.tsx","webpack://@skv/nsw/../SKV.ClientState/src/state/organisationResult/reducer.tsx","webpack://@skv/nsw/../SKV.ClientState/src/state/context/ServerStatic.tsx","webpack://@skv/nsw/../SKV.ClientState/src/state/context/Global.tsx","webpack://@skv/nsw/../SKV.ClientState/src/state/SearchForm.state.ts","webpack://@skv/nsw/../SKV.ClientState/src/state/index.tsx","webpack://@skv/nsw/../SKV.ClientState/src/state/opportunityResult/reducer.ts","webpack://@skv/nsw/../SKV.ClientState/src/view-model/RootView.tsx","webpack://@skv/nsw/../SKV.ClientState/src/view-model/ViewModel.tsx","webpack://@skv/nsw/./src/state/UserContext.tsx","webpack://@skv/nsw/./src/state/EoiFormContext.tsx","webpack://@skv/nsw/./src/ui/Account/SignInCta.tsx","webpack://@skv/nsw/./src/ui/Form/ValidationError.tsx","webpack://@skv/nsw/./src/ui/Form/HelpText.tsx","webpack://@skv/nsw/./src/ui/Form/Field.tsx","webpack://@skv/nsw/./src/ui/Form/Select.tsx","webpack://@skv/nsw/./src/ui/Account/SignInOutPanel.tsx","webpack://@skv/nsw/./src/ui/Banner.tsx","webpack://@skv/nsw/./src/constants.ts","webpack://@skv/nsw/./src/ui/Breadcrumb.tsx","webpack://@skv/nsw/./src/ui/ServerResponse.tsx","webpack://@skv/nsw/./src/ui/Errors.tsx","webpack://@skv/nsw/./src/ui/FavouriteInlineSelectForm.tsx","webpack://@skv/nsw/./src/ui/Footer.tsx","webpack://@skv/nsw/./src/utils/utilities.ts","webpack://@skv/nsw/./src/utils/navigation.ts","webpack://@skv/nsw/./src/ui/NavBar.tsx","webpack://@skv/nsw/./src/ui/NSWPeekdown.tsx","webpack://@skv/nsw/./src/ui/ResultCard.tsx","webpack://@skv/nsw/./src/ui/SearchFormWithCommitment.tsx","webpack://@skv/nsw/./src/pages/favourites/index.tsx","webpack://@skv/nsw/./src/ui/SuggestedOpportunity.tsx","webpack://@skv/nsw/./src/ui/ActivityDashboard.tsx","webpack://@skv/nsw/./src/pages/home/index.tsx","webpack://@skv/nsw/./src/ui/FilterGroup.tsx","webpack://@skv/nsw/./src/ui/SearchFiltersSidebarForm.tsx","webpack://@skv/nsw/./src/ui/OrganisationSearch.tsx","webpack://@skv/nsw/../SKV.ClientState/src/state/organisationResult/hooks.tsx","webpack://@skv/nsw/./src/pages/volunteering-organisations/OrganisationDetails.tsx","webpack://@skv/nsw/./src/pages/volunteering-organisations/OrganisationDirectoryResults.tsx","webpack://@skv/nsw/./src/pages/volunteering-organisations/OrganisationDirectorySearchForm.tsx","webpack://@skv/nsw/./src/pages/volunteering-organisations/OrganisationDirectory.tsx","webpack://@skv/nsw/./src/pages/volunteering-organisations/index.tsx","webpack://@skv/nsw/./src/pages/unsubscribe/index.tsx","webpack://@skv/nsw/./src/ui/ShareSocial.tsx","webpack://@skv/nsw/./src/pages/volunteering/OpportunityDetailsAside.tsx","webpack://@skv/nsw/./src/ui/Alerts/InPageAlert.tsx","webpack://@skv/nsw/./src/pages/volunteering/OpportunityDetailsEoiRedirect.tsx","webpack://@skv/nsw/./src/pages/volunteering/OpportunityDetailsEoi.tsx","webpack://@skv/nsw/./src/pages/volunteering/OpportunityDetailsEoiSuccess.tsx","webpack://@skv/nsw/./src/pages/volunteering/OpportunityDetailsHeader.tsx","webpack://@skv/nsw/./src/pages/volunteering/OpportunityDetailsMain.tsx","webpack://@skv/nsw/./src/pages/volunteering/OpportunityDetails.tsx","webpack://@skv/nsw/./src/pages/volunteering/index.tsx","webpack://@skv/nsw/./src/pages/browser-upgrade/index.tsx","webpack://@skv/nsw/./src/pages/my-activity/Dashboard.tsx","webpack://@skv/nsw/./src/pages/my-activity/Suggestions.tsx","webpack://@skv/nsw/./src/pages/my-activity/Subscriptions.tsx","webpack://@skv/nsw/./src/pages/my-activity/Applications.tsx","webpack://@skv/nsw/./src/pages/my-activity/Experiences.tsx","webpack://@skv/nsw/./src/pages/my-activity/AddExperience.tsx","webpack://@skv/nsw/../SKV.ClientCore/src/locales/yup.ts","webpack://@skv/nsw/./src/pages/my-activity/Favourites.tsx","webpack://@skv/nsw/./src/pages/my-activity/index.tsx","webpack://@skv/nsw/./src/pages/signin/index.tsx","webpack://@skv/nsw/./src/ui/OpportunityEmailSubscribeForm.tsx","webpack://@skv/nsw/./src/ui/OpportunitySearchResultsHeader.tsx","webpack://@skv/nsw/./src/ui/OpportunitySearchResults.tsx","webpack://@skv/nsw/../SKV.ClientState/src/state/opportunityResult/hooks.tsx","webpack://@skv/nsw/./src/ui/OrganisationSearchForm.tsx","webpack://@skv/nsw/./src/App.tsx","webpack://@skv/nsw/./src/Root.tsx","webpack://@skv/nsw/./src/client.ts"],"sourcesContent":["var map = {\n\t\"./glyph/add.svg\": 21896,\n\t\"./glyph/arror-right--hover.svg\": 54488,\n\t\"./glyph/arrow-down--hover.svg\": 99656,\n\t\"./glyph/arrow-down.svg\": 92516,\n\t\"./glyph/arrow-left--hover.svg\": 44648,\n\t\"./glyph/arrow-left.svg\": 35999,\n\t\"./glyph/arrow-right--hover.svg\": 17088,\n\t\"./glyph/arrow-right.svg\": 99412,\n\t\"./glyph/arrow-up--hover.svg\": 22716,\n\t\"./glyph/arrow-up.svg\": 61364,\n\t\"./glyph/caution.svg\": 88712,\n\t\"./glyph/close--hover.svg\": 85428,\n\t\"./glyph/close.svg\": 54540,\n\t\"./glyph/copy.svg\": 38068,\n\t\"./glyph/correct.svg\": 22136,\n\t\"./glyph/download.svg\": 51588,\n\t\"./glyph/duplicate.svg\": 39276,\n\t\"./glyph/edit.svg\": 4556,\n\t\"./glyph/envelope.svg\": 99559,\n\t\"./glyph/error.svg\": 808,\n\t\"./glyph/eye.svg\": 55992,\n\t\"./glyph/face.svg\": 67608,\n\t\"./glyph/file.svg\": 62000,\n\t\"./glyph/flag-full.svg\": 64812,\n\t\"./glyph/flag.svg\": 58924,\n\t\"./glyph/heart-full.svg\": 84183,\n\t\"./glyph/heart.svg\": 35176,\n\t\"./glyph/incorrect.svg\": 22132,\n\t\"./glyph/info.svg\": 99156,\n\t\"./glyph/link-external.svg\": 86580,\n\t\"./glyph/paper-clip.svg\": 68772,\n\t\"./glyph/paper-plane.svg\": 3068,\n\t\"./glyph/pencil.svg\": 94028,\n\t\"./glyph/positive.svg\": 15952,\n\t\"./glyph/promote.svg\": 10320,\n\t\"./glyph/question.svg\": 96732,\n\t\"./glyph/share.svg\": 1100,\n\t\"./glyph/star.svg\": 63004,\n\t\"./glyph/trash.svg\": 6868,\n\t\"./icons/accessible.svg\": 40205,\n\t\"./icons/briefcase.svg\": 2120,\n\t\"./icons/calendar.svg\": 57256,\n\t\"./icons/caret-down.svg\": 99044,\n\t\"./icons/caret-up.svg\": 65264,\n\t\"./icons/checklist.svg\": 66184,\n\t\"./icons/chev-down.svg\": 90096,\n\t\"./icons/chev-left.svg\": 59476,\n\t\"./icons/chev-right.svg\": 71440,\n\t\"./icons/chev-up.svg\": 22624,\n\t\"./icons/clock.svg\": 31452,\n\t\"./icons/close.svg\": 15497,\n\t\"./icons/copy.svg\": 39596,\n\t\"./icons/correct.svg\": 28392,\n\t\"./icons/duplicate.svg\": 41188,\n\t\"./icons/edit.svg\": 81948,\n\t\"./icons/envelope-outline.svg\": 12748,\n\t\"./icons/envelope.svg\": 69928,\n\t\"./icons/exclamation-circle.svg\": 6900,\n\t\"./icons/exclamation-triangle.svg\": 64764,\n\t\"./icons/external.svg\": 78416,\n\t\"./icons/eye.svg\": 1420,\n\t\"./icons/face.svg\": 7264,\n\t\"./icons/facebook-circle.svg\": 38384,\n\t\"./icons/file.svg\": 91516,\n\t\"./icons/heart.svg\": 2280,\n\t\"./icons/home.svg\": 2644,\n\t\"./icons/incorrect.svg\": 76764,\n\t\"./icons/linkedin-circle.svg\": 46168,\n\t\"./icons/location-pin.svg\": 57844,\n\t\"./icons/marker.svg\": 10664,\n\t\"./icons/mortarboard.svg\": 55104,\n\t\"./icons/paper-plane.svg\": 43580,\n\t\"./icons/pencil.svg\": 99596,\n\t\"./icons/question-circle.svg\": 57968,\n\t\"./icons/ribbon.svg\": 54772,\n\t\"./icons/share.svg\": 95676,\n\t\"./icons/spinner-solid.svg\": 24548,\n\t\"./icons/star.svg\": 86528,\n\t\"./icons/trash.svg\": 2844,\n\t\"./icons/twitter-circle.svg\": 67720,\n\t\"./icons/user-circle.svg\": 14188,\n\t\"./icons/wheelchair.svg\": 39844,\n\t\"./illustrations/01B.svg\": 76380,\n\t\"./illustrations/AU01.svg\": 3344,\n\t\"./illustrations/AU02.svg\": 22408,\n\t\"./illustrations/AU03.svg\": 11644,\n\t\"./illustrations/NZ01.svg\": 14448,\n\t\"./illustrations/NZ02.svg\": 33300,\n\t\"./illustrations/NZ03.svg\": 27548,\n\t\"./illustrations/opportunities.svg\": 61484,\n\t\"./illustrations/search.svg\": 85340,\n\t\"./logos/certsy-logo.svg\": 6304,\n\t\"./logos/nswgov-inverse.svg\": 36428,\n\t\"./logos/nswvolunteering-cobrand.svg\": 63412,\n\t\"./logos/nswvolunteering.svg\": 17968,\n\t\"./logos/seekvolunteer-inverse.svg\": 53124,\n\t\"./logos/seekvolunteer.svg\": 31216,\n\t\"./personas/four.svg\": 79024,\n\t\"./personas/one.svg\": 780,\n\t\"./personas/three.svg\": 5668,\n\t\"./personas/two.svg\": 27016\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 = 38084;","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../SKV.NSW/node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../SKV.NSW/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ``, \"\",{\"version\":3,\"sources\":[],\"names\":[],\"mappings\":\"\",\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"enableBackgroundPatterns\": `false`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../SKV.NSW/node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../SKV.NSW/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ``, \"\",{\"version\":3,\"sources\":[],\"names\":[],\"mappings\":\"\",\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"gray100\": `#fbfbfb`,\n\t\"gray200\": `#f2f2f2`,\n\t\"gray300\": `#ebebeb`,\n\t\"gray400\": `#cdd3d6`,\n\t\"gray500\": `#d6d6d6`,\n\t\"gray600\": `#ababab`,\n\t\"gray700\": `#747474`,\n\t\"gray800\": `#495054`,\n\t\"gray900\": `#22272b`,\n\t\"primaryColor\": `#002664`,\n\t\"secondaryColor\": `#cbedfd`,\n\t\"nswBlueColor\": `#0198d2`,\n\t\"successColor\": `#008a07`,\n\t\"infoColor\": `#2e5299`,\n\t\"warningColor\": `#c95000`,\n\t\"dangerColor\": `#b81237`,\n\t\"lightColor\": `#fff`,\n\t\"darkColor\": `#22272b`,\n\t\"linkColor\": `#002664`,\n\t\"mutedColor\": `#747474`,\n\t\"lineHeightBase\": `1.5`,\n\t\"spacer1\": `.25rem`,\n\t\"spacer2\": `.5rem`,\n\t\"spacer3\": `1rem`,\n\t\"spacer4\": `1.5rem`,\n\t\"spacer5\": `3rem`,\n\t\"spacer6\": `5rem`,\n\t\"btnPaddingY\": `.625rem`,\n\t\"btnPaddingX\": `.5625rem`,\n\t\"borderRadius\": `.25rem`,\n\t\"borderRadiusLg\": `.25rem`,\n\t\"borderRadiusSm\": `.1875rem`,\n\t\"boxShadowSm\": `0 .125rem .25rem rgba(0,0,0,.075)`,\n\t\"boxShadow\": `0 .5rem 1rem rgba(0,0,0,.15)`,\n\t\"boxShadowLg\": `0 1rem 3rem rgba(0,0,0,.175)`,\n\t\"xsBreakpoint\": `0`,\n\t\"smBreakpoint\": `576px`,\n\t\"mdBreakpoint\": `768px`,\n\t\"lgBreakpoint\": `992px`,\n\t\"xlBreakpoint\": `1200px`,\n\t\"smMaxWidth\": `540px`,\n\t\"mdMaxWidth\": `720px`,\n\t\"lgMaxWidth\": `960px`,\n\t\"xlMaxWidth\": `1200px`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../SKV.NSW/node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../SKV.NSW/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.react-mde.react-mde,.react-mde .mde-header,.react-mde .mde-header .mde-tabs button.selected{border-color:#555}.fs-7{font-size:.875rem}.rounded{border-radius:.125rem}.rounded-lg{border-radius:.25rem}.rounded-xl{border-radius:.5rem}`, \"\",{\"version\":3,\"sources\":[\"webpack://./../SKV.FrontEnd/src/styles/_custom.scss\"],\"names\":[],\"mappings\":\"AAuVA,6FAGE,iBA9TS,CAiUX,MACE,iBA5Pa,CA+Pf,SACE,qBA3Qc,CA8QhB,YACE,oBA7QiB,CAgRnB,YACE,mBAhRiB\",\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"gray100\": `#f7f7f7`,\n\t\"gray200\": `#eee`,\n\t\"gray300\": `#ddd`,\n\t\"gray400\": `#ccc`,\n\t\"gray500\": `#aaa`,\n\t\"gray600\": `#777`,\n\t\"gray700\": `#555`,\n\t\"gray800\": `#222`,\n\t\"gray900\": `#1c1c1c`,\n\t\"primaryColor\": `#9556b7`,\n\t\"secondaryColor\": `#0b076d`,\n\t\"successColor\": `#248817`,\n\t\"infoColor\": `#0d3880`,\n\t\"warningColor\": `#ffc708`,\n\t\"dangerColor\": `#cf1a6d`,\n\t\"lightColor\": `#f7f7f7`,\n\t\"darkColor\": `#1c1c1c`,\n\t\"linkColor\": `#2765cf`,\n\t\"mutedColor\": `#555`,\n\t\"lineHeightBase\": `1.5`,\n\t\"spacer1\": `.25rem`,\n\t\"spacer2\": `.5rem`,\n\t\"spacer3\": `1rem`,\n\t\"spacer4\": `1.5rem`,\n\t\"spacer5\": `3rem`,\n\t\"spacer6\": `5rem`,\n\t\"btnPaddingY\": `.625rem`,\n\t\"btnPaddingX\": `.9375rem`,\n\t\"borderRadius\": `.125rem`,\n\t\"borderRadiusLg\": `.25rem`,\n\t\"borderRadiusSm\": `.125rem`,\n\t\"boxShadowSm\": `0 .125rem .25rem rgba(0,0,0,.075)`,\n\t\"boxShadow\": `0 .5rem 1rem rgba(0,0,0,.15)`,\n\t\"boxShadowLg\": `0 1rem 3rem rgba(0,0,0,.175)`,\n\t\"xsBreakpoint\": `0`,\n\t\"smBreakpoint\": `576px`,\n\t\"mdBreakpoint\": `768px`,\n\t\"lgBreakpoint\": `992px`,\n\t\"xlBreakpoint\": `1200px`,\n\t\"smMaxWidth\": `540px`,\n\t\"mdMaxWidth\": `720px`,\n\t\"lgMaxWidth\": `960px`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../SKV.NSW/node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../SKV.NSW/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ``, \"\",{\"version\":3,\"sources\":[],\"names\":[],\"mappings\":\"\",\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"enableBackgroundPatterns\": `false`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../SKV.NSW/node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../SKV.NSW/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ``, \"\",{\"version\":3,\"sources\":[],\"names\":[],\"mappings\":\"\",\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"enableBackgroundPatterns\": `true`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = {\n id: \"glyph:add-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#glyph:add-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"glyph:arror-right--hover-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#glyph:arror-right--hover-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"glyph:arrow-down--hover-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#glyph:arrow-down--hover-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"glyph:arrow-down-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#glyph:arrow-down-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"glyph:arrow-left--hover-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#glyph:arrow-left--hover-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"glyph:arrow-left-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#glyph:arrow-left-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"glyph:arrow-right--hover-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#glyph:arrow-right--hover-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"glyph:arrow-right-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#glyph:arrow-right-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"glyph:arrow-up--hover-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#glyph:arrow-up--hover-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"glyph:arrow-up-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#glyph:arrow-up-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"glyph:caution-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#glyph:caution-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"glyph:close--hover-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#glyph:close--hover-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"glyph:close-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#glyph:close-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"glyph:copy-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#glyph:copy-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"glyph:correct-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#glyph:correct-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"glyph:download-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#glyph:download-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"glyph:duplicate-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#glyph:duplicate-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"glyph:edit-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#glyph:edit-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"glyph:envelope-usage\",\n viewBox: \"0 0 19 15\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#glyph:envelope-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"glyph:error-usage\",\n viewBox: \"0 0 15 15\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#glyph:error-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"glyph:eye-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#glyph:eye-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"glyph:face-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#glyph:face-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"glyph:file-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#glyph:file-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"glyph:flag-full-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#glyph:flag-full-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"glyph:flag-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#glyph:flag-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"glyph:heart-full-usage\",\n viewBox: \"0 0 20 18\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#glyph:heart-full-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"glyph:heart-usage\",\n viewBox: \"0 0 20 18\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#glyph:heart-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"glyph:incorrect-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#glyph:incorrect-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"glyph:info-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#glyph:info-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"glyph:link-external-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#glyph:link-external-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"glyph:paper-clip-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#glyph:paper-clip-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"glyph:paper-plane-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#glyph:paper-plane-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"glyph:pencil-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#glyph:pencil-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"glyph:positive-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#glyph:positive-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"glyph:promote-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#glyph:promote-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"glyph:question-usage\",\n viewBox: \"0 0 14 14\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#glyph:question-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"glyph:share-usage\",\n viewBox: \"0 0 16 14\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#glyph:share-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"glyph:star-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#glyph:star-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"glyph:trash-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#glyph:trash-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"icons:accessible-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#icons:accessible-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"icons:briefcase-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#icons:briefcase-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"icons:calendar-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#icons:calendar-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"icons:caret-down-usage\",\n viewBox: \"0 0 8 4\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#icons:caret-down-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"icons:caret-up-usage\",\n viewBox: \"0 0 8 4\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#icons:caret-up-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"icons:checklist-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#icons:checklist-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"icons:chev-down-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#icons:chev-down-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"icons:chev-left-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#icons:chev-left-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"icons:chev-right-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#icons:chev-right-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"icons:chev-up-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#icons:chev-up-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"icons:clock-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#icons:clock-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"icons:close-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#icons:close-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"icons:copy-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#icons:copy-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"icons:correct-usage\",\n viewBox: \"0 0 24 24\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#icons:correct-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"icons:duplicate-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#icons:duplicate-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"icons:edit-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#icons:edit-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"icons:envelope-outline-usage\",\n viewBox: \"0 0 24 24\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#icons:envelope-outline-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"icons:envelope-usage\",\n viewBox: \"0 0 17 15\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#icons:envelope-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"icons:exclamation-circle-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#icons:exclamation-circle-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"icons:exclamation-triangle-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#icons:exclamation-triangle-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"icons:external-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#icons:external-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"icons:eye-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#icons:eye-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"icons:face-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#icons:face-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"icons:facebook-circle-usage\",\n viewBox: \"0 0 1024 1024\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#icons:facebook-circle-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"icons:file-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#icons:file-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"icons:heart-usage\",\n viewBox: \"0 0 18 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#icons:heart-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"icons:home-usage\",\n viewBox: \"0 0 20 22\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#icons:home-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"icons:incorrect-usage\",\n viewBox: \"0 0 24 24\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#icons:incorrect-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"icons:linkedin-circle-usage\",\n viewBox: \"0 0 1024 1024\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#icons:linkedin-circle-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"icons:location-pin-usage\",\n viewBox: \"0 0 14 18\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#icons:location-pin-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"icons:marker-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#icons:marker-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"icons:mortarboard-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#icons:mortarboard-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"icons:paper-plane-usage\",\n viewBox: \"0 0 17 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#icons:paper-plane-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"icons:pencil-usage\",\n viewBox: \"0 0 17 17\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#icons:pencil-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"icons:question-circle-usage\",\n viewBox: \"0 0 24 24\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#icons:question-circle-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"icons:ribbon-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#icons:ribbon-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"icons:share-usage\",\n viewBox: \"0 0 16 14\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#icons:share-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"icons:spinner-solid-usage\",\n viewBox: \"0 0 512 512\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#icons:spinner-solid-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"icons:star-usage\",\n viewBox: \"0 0 17 17\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#icons:star-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"icons:trash-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#icons:trash-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"icons:twitter-circle-usage\",\n viewBox: \"0 0 1024 1024\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#icons:twitter-circle-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"icons:user-circle-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#icons:user-circle-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"icons:wheelchair-usage\",\n viewBox: \"0 0 16 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#icons:wheelchair-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"illustrations:01B-usage\",\n viewBox: \"0 0 439 78\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#illustrations:01B-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"illustrations:AU01-usage\",\n viewBox: \"0 0 272 238\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#illustrations:AU01-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"illustrations:AU02-usage\",\n viewBox: \"0 0 263 231\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#illustrations:AU02-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"illustrations:AU03-usage\",\n viewBox: \"0 0 231 233\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#illustrations:AU03-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"illustrations:NZ01-usage\",\n viewBox: \"0 0 468.7 345.3\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#illustrations:NZ01-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"illustrations:NZ02-usage\",\n viewBox: \"0 0 476.2 330\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#illustrations:NZ02-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"illustrations:NZ03-usage\",\n viewBox: \"0 0 321 354.6\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#illustrations:NZ03-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"illustrations:opportunities-usage\",\n viewBox: \"0 0 294 330\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#illustrations:opportunities-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"illustrations:search-usage\",\n viewBox: \"0 0 294 330\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#illustrations:search-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"logos:certsy-logo-usage\",\n viewBox: \"0 0 118 35\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#logos:certsy-logo-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"logos:nswgov-inverse-usage\",\n viewBox: \"0 0 35 38\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#logos:nswgov-inverse-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"logos:nswvolunteering-cobrand-usage\",\n viewBox: \"0 0 178.1 106.1\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#logos:nswvolunteering-cobrand-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"logos:nswvolunteering-usage\",\n viewBox: \"0 0 217 16\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#logos:nswvolunteering-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"logos:seekvolunteer-inverse-usage\",\n viewBox: \"0 0 249 48\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#logos:seekvolunteer-inverse-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"logos:seekvolunteer-usage\",\n viewBox: \"0 0 249 48\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#logos:seekvolunteer-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"personas:four-usage\",\n viewBox: \"0 0 40 42\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#personas:four-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"personas:one-usage\",\n viewBox: \"0 0 32 43\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#personas:one-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"personas:three-usage\",\n viewBox: \"0 0 37 44\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#personas:three-usage\",\n toString: function () {\n return this.url;\n }\n }","module.exports = {\n id: \"personas:two-usage\",\n viewBox: \"0 0 32 43\",\n url: \"/static/\" + \"sprites.7c48241be7aeec520040e3ed5960af67.svg#personas:two-usage\",\n toString: function () {\n return this.url;\n }\n }","import type { FriendlyKeyValueUrl, PageEnvelope } from \"@skv/core\";\nimport { Machine, assign } from \"xstate\";\n\ninterface SearchFormStateSchema {\n states: {\n initialSuggestions: {\n states: {\n idle: {};\n loading: {};\n loaded: {};\n failed: {};\n };\n };\n relatedSuggestions: {\n states: {\n idle: {};\n loading: {};\n loaded: {};\n failed: {};\n };\n };\n };\n}\n\nexport type SearchFormEvent =\n | {\n type: \"SELECT\";\n value: string[];\n }\n | {\n type: \"CLEAR_ALL_INPUTS\";\n }\n | {\n type: \"KEYWORD_INPUT_CLEAR\";\n }\n | {\n type: \"KEYWORD_INPUT_CHANGE\";\n value: string;\n }\n | {\n type: \"KEYWORD_INPUT_SELECT\";\n value: FriendlyKeyValueUrl;\n }\n | {\n type: \"LOCATION_INPUT_CLEAR\";\n }\n | {\n type: \"LOCATION_INPUT_CHANGE\";\n value: string;\n }\n | {\n type: \"LOCATION_INPUT_SELECT\";\n value: string;\n }\n | {\n type: \"FETCH_START_INITIAL_SUGGESTIONS\";\n }\n | {\n type: \"FETCH_START_LOCATIONS\";\n value: string;\n }\n | {\n type: \"\";\n };\n\ninterface SearchFormContext {\n keyword: string;\n where: string;\n category: number[];\n didKeywordAutoComplete: boolean;\n didWhereAutoComplete: boolean;\n initialSuggestions: string[];\n relatedSuggestions: string[];\n\n cache: {\n [key: string]: string[];\n };\n}\n\nlet INITIAL_SUGGESTIONS_CACHE = null;\nconst WHERE_STORE_NAME = \"searchFormWhere\";\n\n/* Guards */\nconst locationSearchValid = (ctx, event) => {\n if (\"value\" in event) {\n return event.value.length > 2;\n }\n\n return false;\n};\n\nconst idleLocationHasValidValue = (ctx, event) => {\n return ctx.where.length > 2;\n};\n\nexport const searchFormMachine = Machine<\n SearchFormContext,\n SearchFormStateSchema,\n SearchFormEvent\n>({\n id: \"typeahead\",\n type: \"parallel\",\n context: {\n keyword: \"\",\n where: \"\",\n category: [],\n didKeywordAutoComplete: false,\n didWhereAutoComplete: false,\n initialSuggestions: [],\n relatedSuggestions: [],\n cache: {},\n },\n states: {\n initialSuggestions: {\n initial: INITIAL_SUGGESTIONS_CACHE ? \"loaded\" : \"loading\",\n states: {\n idle: {\n on: {\n FETCH_START_INITIAL_SUGGESTIONS: \"loading\",\n },\n },\n loading: {\n invoke: {\n id: \"fetch_initial_suggestions\",\n src: (ctx) => {\n if (INITIAL_SUGGESTIONS_CACHE) {\n return Promise.resolve().then(() => INITIAL_SUGGESTIONS_CACHE);\n }\n\n return fetch(\"/api/locations/default\")\n .then>((res) =>\n res.json()\n )\n .then(({ data }) => {\n INITIAL_SUGGESTIONS_CACHE = data.locations;\n return data.locations;\n });\n },\n onDone: {\n target: \"loaded\",\n actions: assign({\n initialSuggestions: (ctx, event) => event.data,\n }),\n },\n onError: \"failed\",\n },\n },\n loaded: {},\n failed: {},\n },\n },\n relatedSuggestions: {\n initial: \"idle\",\n states: {\n idle: {\n always: [\n {\n target: \"loading\",\n cond: idleLocationHasValidValue,\n },\n ],\n },\n loading: {\n invoke: {\n id: \"fetch_location_suggestions\",\n src: (ctx) => {\n if (ctx.cache[ctx.where]) {\n return Promise.resolve().then(() => ctx.cache[ctx.where]);\n }\n\n const jsonCache =\n sessionStorage?.getItem(WHERE_STORE_NAME) || \"{}\";\n const whereCache = JSON.parse(jsonCache) as Record<\n string,\n string[]\n >;\n\n if (whereCache.hasOwnProperty(ctx.where)) {\n return Promise.resolve().then(() => whereCache[ctx.where]);\n }\n\n return fetch(`/api/locations?q=${ctx.where}`)\n .then>((res) =>\n res.json()\n )\n .then(({ data }) => {\n try {\n whereCache[ctx.where] = [...data.locations];\n sessionStorage?.setItem(\n WHERE_STORE_NAME,\n JSON.stringify(whereCache)\n );\n } catch (e) {\n console.error(\"Error storing search form where: \", e);\n }\n\n return data.locations;\n });\n },\n onDone: {\n target: \"loaded\",\n actions: assign({\n cache: (ctx, event) =>\n Object.assign({}, ctx.cache, {\n [ctx.where]: event.data,\n }),\n relatedSuggestions: (ctx, event) => event.data,\n }),\n },\n onError: \"failed\",\n },\n },\n loaded: {},\n failed: {},\n },\n },\n },\n on: {\n CLEAR_ALL_INPUTS: {\n actions: assign({\n keyword: (ctx) => \"\",\n category: (ctx) => [],\n where: (ctx) => \"\",\n didKeywordAutoComplete: (ctx) => false,\n didWhereAutoComplete: (ctx) => false,\n cache: (ctx) => {\n const tempCache = Object.assign({}, ctx.cache);\n delete tempCache[ctx.keyword];\n delete tempCache[ctx.where];\n return tempCache;\n },\n }),\n },\n KEYWORD_INPUT_CLEAR: {\n actions: assign({\n keyword: (ctx) => \"\",\n category: (ctx) => [],\n didKeywordAutoComplete: (ctx) => false,\n cache: (ctx) => {\n const tempCache = Object.assign({}, ctx.cache);\n delete tempCache[ctx.keyword];\n return tempCache;\n },\n }),\n },\n KEYWORD_INPUT_CHANGE: {\n actions: assign({\n keyword: (ctx, e) => e.value,\n category: (ctx) => [],\n didKeywordAutoComplete: (ctx) => false,\n }),\n },\n KEYWORD_INPUT_SELECT: {\n actions: assign({\n keyword: (ctx, e) => e.value.name,\n category: (ctx, e) => [e.value.id],\n didKeywordAutoComplete: (ctx) => true,\n }),\n },\n LOCATION_INPUT_CLEAR: {\n actions: assign({\n where: (ctx) => \"\",\n didWhereAutoComplete: (ctx) => false,\n }),\n },\n LOCATION_INPUT_CHANGE: {\n actions: assign({\n where: (ctx, e) => e.value,\n didWhereAutoComplete: (ctx) => false,\n }),\n },\n LOCATION_INPUT_SELECT: [\n {\n target: \"relatedSuggestions.loading\",\n cond: locationSearchValid,\n actions: assign({\n where: (ctx, e) => e.value || ctx.where || \"\",\n didWhereAutoComplete: (ctx) => true,\n }),\n },\n ],\n FETCH_START_LOCATIONS: {\n target: \"relatedSuggestions.loading\",\n cond: locationSearchValid,\n actions: assign({\n where: (ctx, e) => e.value || ctx.where || \"\",\n }),\n },\n },\n});\n","import * as React from \"react\";\nimport { cloneDeep } from \"lodash-es\";\n\nexport const useThunkReducer = (\n reducer: React.Reducer,\n initialState: State\n) => {\n const internalReducer = React.useRef(reducer);\n\n React.useEffect(() => {\n internalReducer.current = reducer;\n });\n\n /**\n * We allow nested values in the state,\n * and object.assign only does a shallow copy,\n * so potentially props could be mutated unintendedly\n * if the initial state is coming from props.\n *\n * We memoize the cloneDeep result before sending it to\n * useState as otherwise cloneDeep will run every render\n * even though its result is discarded by React\n * */\n const internalInitialState = React.useMemo(() => {\n return cloneDeep(initialState);\n }, []);\n\n const [$state, $setState] = React.useState(internalInitialState);\n\n const stateRef = React.useRef($state);\n\n const getState = React.useMemo(() => {\n return (): State => stateRef.current;\n }, [stateRef]);\n\n const setState = React.useMemo(() => {\n return (nextState: State): void => {\n stateRef.current = nextState;\n $setState(nextState);\n };\n }, []);\n\n const reduce = React.useMemo(() => {\n return (action: Actions): State => {\n return internalReducer.current(getState(), action);\n };\n }, [internalReducer, getState]);\n\n type GetState = () => State;\n\n type ThunkDispatch = (\n dispatch: React.Dispatch,\n getState: GetState\n ) => void;\n\n const dispatch = React.useMemo(() => {\n function dispatch(action: Actions): void;\n function dispatch(action: ThunkDispatch): void;\n function dispatch(action: any): void {\n if (typeof action === \"function\") {\n return (action as ThunkDispatch)(dispatch, getState);\n }\n\n return setState(reduce(action));\n }\n\n return dispatch;\n }, [setState, reduce, getState]);\n\n return [getState, dispatch] as const;\n};\n","import { CustomError } from \"@skv/core\";\n\nexport interface State {\n opportunities: {\n [oppId: string]: string | number;\n };\n organisations: {\n [orgId: string]: string | number;\n };\n loading: boolean;\n error: false | null | CustomError;\n}\n\nexport enum FAVOURITES_ENUM {\n OPPORTUNITY = \"opp\",\n ORGANISATION = \"org\",\n}\n\nexport type ActionTypes =\n | {\n type: \"FAVOURITES:FETCH:START\";\n }\n | {\n type: \"FAVOURITES:FETCH:END\";\n payload: {\n opportunities: {\n [oppId: string]: string;\n };\n organisations: {\n [orgId: string]: string;\n };\n };\n }\n | {\n type: \"FAVOURITES:OPP:ADD\";\n payload: {\n id: string;\n };\n }\n | {\n type: \"FAVOURITES:ORG:ADD\";\n payload: {\n id: string;\n };\n }\n | {\n type: \"FAVOURITES:OPP:REMOVE\";\n payload: {\n id: string;\n };\n }\n | {\n type: \"FAVOURITES:ORG:REMOVE\";\n payload: {\n id: string;\n };\n };\n","import { AppThunk } from \"../\";\n\nexport const addFavourite =\n (id, type): AppThunk =>\n (dispatch) => {\n if (!id) {\n throw Error(\"No id passed to addFavourite function\");\n }\n\n // make sure type is always a valid value\n switch (type) {\n case \"opp\":\n case \"org\":\n break;\n default:\n type = \"opp\";\n break;\n }\n\n dispatch({\n type: type === \"opp\" ? \"FAVOURITES:OPP:ADD\" : \"FAVOURITES:ORG:ADD\",\n payload: {\n id,\n },\n });\n\n return fetch(\"/api/favourites\", {\n method: \"POST\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n id,\n type,\n }),\n })\n .then((res) => {\n if (res.ok) {\n return res.json();\n }\n\n throw Error(\"Unhandled error\");\n })\n .then(({ data, success, errorCode, errorMessage }) => {\n if (success) {\n return true;\n }\n\n throw Error(\"Recieved false for success from API\");\n });\n };\n\nexport const removeFavourite =\n (id, type): AppThunk =>\n (dispatch) => {\n if (!id) {\n throw Error(\"No id passed to addFavourite function\");\n }\n\n // make sure type is always a valid value\n switch (type) {\n case \"opp\":\n case \"org\":\n break;\n default:\n type = \"opp\";\n break;\n }\n\n dispatch({\n type: type === \"opp\" ? \"FAVOURITES:OPP:REMOVE\" : \"FAVOURITES:ORG:REMOVE\",\n payload: {\n id,\n },\n });\n\n fetch(\"/api/favourites\", {\n method: \"DELETE\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n id,\n type,\n }),\n })\n .then((res) => {\n if (res.ok) {\n return res.json();\n }\n })\n .then(({ data, success, errorCode, errorMessage }) => {\n if (success) {\n return true;\n }\n });\n };\n\nexport const getFavourites = (): AppThunk => (dispatch) => {\n dispatch({\n type: \"FAVOURITES:FETCH:START\",\n });\n fetch(\"/api/favourites/list\")\n .then((res) => {\n if (res.ok) {\n return res.json();\n }\n })\n .then(({ data, success, errorCode, errorMessage }) => {\n if (success) {\n dispatch({\n type: \"FAVOURITES:FETCH:END\",\n payload: {\n opportunities: data.favourites.opportunities.reduce((acc, cur) => {\n acc[cur.id] = cur.date;\n return acc;\n }, {}),\n organisations: data.favourites.organisations.reduce((acc, cur) => {\n acc[cur.id] = cur.date;\n return acc;\n }, {}),\n },\n });\n }\n })\n .catch((err) => {\n dispatch({\n type: \"FAVOURITES:FETCH:END\",\n payload: {\n opportunities: {},\n organisations: {},\n },\n });\n console.log(err);\n });\n};\n","import { FAVOURITES_ENUM } from \"./types\";\n\ninterface FavouriteItem {\n id: string;\n date: number;\n}\n\ntype ReturnType = {\n opportunities: Record;\n organisations: Record;\n};\n\nexport function getFavouritesFromCookie(): ReturnType {\n const favourites = Object.values(FAVOURITES_ENUM).reduce((acc, cur) => {\n const list = getListFromCookie(cur);\n acc[cur] = list.reduce((innerAcc, innerCur) => {\n innerAcc[innerCur.id] = innerCur.date;\n return innerAcc;\n }, {});\n return acc;\n }, {});\n\n return {\n opportunities: favourites[FAVOURITES_ENUM.OPPORTUNITY],\n organisations: favourites[FAVOURITES_ENUM.ORGANISATION],\n };\n}\n\nfunction getListFromCookie(type: FAVOURITES_ENUM) {\n let listOfFavourites: FavouriteItem[] = [];\n\n if (typeof document !== \"undefined\" && document?.cookie) {\n const favCookie = document.cookie\n .split(\";\")\n .find((c) => c.trim().startsWith(`f_${type}=`))\n ?.split(\"=\")[1];\n\n if (favCookie) {\n const decoded = decodeURIComponent(decodeURIComponent(favCookie) || \"\");\n listOfFavourites = (Object.entries(JSON.parse(decoded)) || []).map(\n ([id, date]) => ({ id, date } as FavouriteItem)\n );\n }\n }\n\n return listOfFavourites;\n}\n","/*\n NOTE: This is pretty much a fork of remark-react\n https://github.com/remarkjs/react-remark\n\n Currently (as of 18/01/2021) react-remark doesn't support\n server rendering markdown. See below github issue:\n https://github.com/remarkjs/react-remark/issues/16\n\n Main differences are:\n - secure by default by having the sanitize step within the exported hook\n - uses remark's synchronous 'processSync' method instead of\n process (which is async)\n - adds an additional initialContent option to the useRemark hook\n and uses children prop as the initialContent\n - exports a component that has a modified hast-util-sanitize\n github schema (default) to allow the custom 'jsx' tag in html (which\n allows us to further parse this in to a react component via jsx-parser).\n This allows us to write jsx in markdown, and render the actual react-component.\n - adds 'className' as a valid attribute to all elements (might only need\n this on jsx tags, todo : look in to this further)\n*/\n\nimport {\n FunctionComponent,\n Fragment,\n ReactElement,\n createElement,\n useState,\n useEffect,\n useCallback,\n useMemo,\n} from \"react\";\nimport unified, { PluggableList } from \"unified\";\nimport remarkParse, { RemarkParseOptions } from \"remark-parse\";\nimport remarkToRehype from \"remark-rehype\";\nimport rehypeReact, { Options as RehypeReactOptions } from \"rehype-react\";\n\nimport rehypeSanitize from \"rehype-sanitize\";\n\nimport deepMerge from \"deepmerge\";\nimport GHSCHEMA from \"hast-util-sanitize/lib/github.json\";\nimport u from \"unist-builder\";\n\ntype PartialBy = Omit & Partial>;\n\nexport interface UseRemarkOptions {\n remarkParseOptions?: Partial;\n remarkToRehypeOptions?: RemarkToRehypeOptions;\n rehypeReactOptions?: PartialBy<\n RehypeReactOptions,\n \"createElement\"\n >;\n remarkPlugins?: PluggableList;\n rehypePlugins?: PluggableList;\n onError?: (err: Error) => void;\n initialContent?: string;\n}\n\nconst SCHEMA = deepMerge(GHSCHEMA, {\n tagNames: [\"jsx\"],\n attributes: {\n \"*\": [\"className\"],\n },\n});\n\ntype Test = T extends unified.Plugin\n ? U\n : never;\n\ntype RemarkToRehypeOptions = Test[1];\n\nexport const useRemark = ({\n remarkParseOptions,\n remarkToRehypeOptions,\n rehypeReactOptions,\n remarkPlugins = [],\n rehypePlugins = [],\n onError = () => {},\n initialContent,\n}: UseRemarkOptions = {}): [ReactElement | null, (source: string) => void] => {\n const parser = useCallback((source: string) => {\n const result = unified()\n .use(remarkParse, remarkParseOptions)\n .use(remarkPlugins)\n .use(remarkToRehype, remarkToRehypeOptions)\n .use(rehypeSanitize, SCHEMA as any)\n .use(rehypePlugins)\n .use(rehypeReact, {\n createElement,\n Fragment,\n ...rehypeReactOptions,\n } as RehypeReactOptions)\n .processSync(source).result as ReactElement;\n\n return result;\n }, []);\n\n const [reactContent, setReactContent] = useState(() =>\n initialContent ? parser(initialContent) : null\n );\n\n const setMarkdownSource = useCallback((source: string) => {\n const result = parser(source);\n setReactContent(result);\n }, []);\n\n return [reactContent, setMarkdownSource];\n};\n\nexport interface RemarkProps extends UseRemarkOptions {\n children: string;\n}\n\nexport const Remark: FunctionComponent = ({\n children,\n ...useRemarkOptions\n}) => {\n const [reactContent, setMarkdownSource] = useRemark({\n ...useRemarkOptions,\n initialContent: children,\n });\n\n useEffect(() => {\n setMarkdownSource(children);\n }, [children, setMarkdownSource]);\n\n return reactContent;\n};\n\ninterface RemarkJsxProps extends RemarkProps {\n renderJsx: (props: rehypeReact.ComponentProps) => JSX.Element;\n}\n\nconst remarkJsxToRehypeOptions: RemarkToRehypeOptions = {\n allowDangerousHtml: true,\n handlers: {\n code: (h, node) => {\n const value = node.value ? node.value + \"\\n\" : \"\";\n const lang =\n node.lang && (node.lang as string).match(/^[^ \\t]+(?=[ \\t]|$)/);\n const props: Record = {};\n\n if (lang) {\n props.language = lang;\n props.className = [\"language-\" + lang];\n }\n\n if (lang && lang[0] === \"jsx\") {\n return h(node, \"jsx\", props, [u(\"text\", value)]);\n }\n\n return h(node, \"pre\", [h(node, \"code\", props, [u(\"text\", value)])]);\n },\n },\n};\n\nexport const RemarkJsx: FunctionComponent = ({\n children,\n renderJsx,\n rehypeReactOptions: initialRehypeReactOptions,\n}) => {\n const rehypeReactOptions = useMemo(\n () =>\n deepMerge(\n {\n passNode: true,\n components: {\n jsx: renderJsx,\n },\n },\n initialRehypeReactOptions || {}\n ),\n []\n );\n\n return (\n \n {children}\n \n );\n};\n","import * as React from \"react\";\n\nconst req = require.context(\n \"@skv/assets/sprites\",\n true,\n /^(.*\\.(svg$))[^.]*$/im\n);\n\ntype LoadedSprite = {\n id: string;\n url: string;\n};\n\nconst sprites = req.keys().map(function (key) {\n const sprite = req(key);\n return {\n id: sprite.id,\n url: sprite.url,\n } as LoadedSprite;\n});\n\nconst spritesDictionary = sprites.reduce((acc, cur) => {\n acc[cur.id] = cur;\n return acc;\n}, {} as Record);\n\ninterface SvgSpriteProps\n extends Omit, \"aria-hidden\"> {\n id: string;\n [\"aria-hidden\"]?: never;\n}\n\n// SvgSprite should always have either an aria-label or aria-hidden attribute to ensure good accessibility.\n// \"aria-hidden\" is not allowed as a prop, because it will be added if \"aria-label\" is falsy.\n\nexport const SvgSprite: React.FC = ({\n id,\n \"aria-label\": ariaLabel,\n ...rest\n}) => {\n const spriteKey = `${id}-usage`;\n const sprite = spritesDictionary[spriteKey];\n const spriteAtLocation = `@skv/assets/sprites/${id.replace(\":\", \"/\")}.svg`;\n\n if (!sprite) {\n throw Error(\n `No sprite found with id ${id}. ${spriteAtLocation} does not exist`\n );\n }\n\n if (ariaLabel) {\n return (\n \n \n \n );\n }\n\n return (\n \n \n \n );\n};\n","import { Remark } from \"@skv/react-remark\";\nimport * as React from \"react\";\nimport {\n Accordion as BootstrapAccordion,\n AccordionProps as BootstrapAccordionProps,\n} from \"react-bootstrap\";\nimport styled from \"styled-components\";\nimport { SvgSprite } from \"./SvgSprite\";\n\nconst Toggle = styled.button`\n position: relative;\n top: 1px;\n margin-top: -1px;\n display: block;\n text-align: left;\n width: 100%;\n background-color: transparent;\n border: 0;\n padding: 0.6875rem 0;\n\n display: flex;\n\n border-top: 1px solid ${(p): string => p.theme.gray300};\n border-bottom: 1px solid ${(p): string => p.theme.gray300};\n`;\n\nconst CustomToggle: React.FC<{\n label: string;\n setActiveKey: (key: string) => void;\n active: boolean;\n eventKey: string;\n}> = ({ label, setActiveKey, active, eventKey }) => {\n const handleClick = (e) => {\n setActiveKey(active ? null : eventKey);\n };\n\n return (\n \n \n {label}\n \n \n p.theme.gray600};\n transition: transform 0.3s ${(p): string => p.theme.timingFnEaseOut};\n\n transform: rotate3d(1, 0, 0, 0deg);\n\n .open & {\n transform: rotate3d(1, 0, 0, 180deg);\n }\n `}\n />\n \n \n );\n};\n\nexport interface Question {\n question: string;\n answer: React.ReactNode;\n}\n\ninterface AccordionProps extends BootstrapAccordionProps {\n questions: Question[];\n // answers can come from a json with html markup,\n // or also as a React.ReactNode\n answersAreHtml?: boolean; // todo: deprecate\n answersAreJsx?: boolean;\n}\n\nexport const Accordion: React.FC = ({\n questions,\n answersAreHtml = false,\n answersAreJsx = false,\n ...rest\n}) => {\n const [activeKey, setActiveKey] = React.useState(null);\n\n return (\n \n {questions.map((q, idx) => (\n
\n \n\n \n {((): JSX.Element => {\n if (answersAreHtml) {\n return (\n \n );\n }\n\n if (answersAreJsx) {\n return {q.answer as string};\n }\n\n return
{q.answer}
;\n })()}\n
\n
\n ))}\n
\n );\n};\n","interface AdminFooterProps {\n termsConditionsUrl: string;\n privacyUrl: string;\n contactSupportUrl: string;\n commonQuestionsUrl: string;\n applicationName: string;\n isFullWidth?: boolean;\n}\n\nconst CURRENT_YEAR = new Date().getFullYear();\n\nexport const AdminFooter = (props: AdminFooterProps) => {\n return (\n
\n {props.isFullWidth ? (\n
\n
\n \n
\n
\n ) : (\n
\n \n
\n )}\n
\n );\n};\n\nconst AdminFooterInner = (props: AdminFooterProps) => {\n return (\n <>\n \n \n © {props.applicationName} {CURRENT_YEAR}\n \n \n );\n};\n","import * as React from \"react\";\n\ninterface AspectRatioProps extends React.HTMLAttributes {\n width: number;\n height: number;\n}\n\nexport const AspectRatio: React.FC = (props) => {\n const { children, style, width, height, ...rest } = props;\n return (\n \n {children}\n \n );\n};\n","import { keyframes } from \"styled-components\";\n\nexport const Rotate360 = keyframes`\n from {\n transform: rotate(0deg);\n }\n\n to {\n transform: rotate(360deg);\n }\n`;\n","import classNames from \"classnames\";\nimport { rgba } from \"polished\";\nimport * as React from \"react\";\nimport styled from \"styled-components\";\n\nimport { AspectRatio } from \"../AspectRatio\";\nimport { SvgSprite } from \"../SvgSprite\";\n\nimport { format, parseISO } from \"date-fns\";\nimport { Rotate360 } from \"../../styles\";\nimport type { Note } from \"./index\";\n\nexport const EmptyNotesView = styled.div.attrs((props) => ({\n ...props,\n className: \"p-3 bg-white\",\n children: (\n <>\n
\n \n \n \n
\n

\n There are no notes for this organisation.\n

\n \n ),\n}))`\n flex: 1 1 100%;\n display: flex;\n flex-direction: column;\n justify-content: center;\n`;\n\nexport const NoteList = styled.ul.attrs((props) => ({\n ...props,\n className: \"bg-white pt-3 px-3\",\n}))`\n list-style: none;\n margin: 0;\n max-height: 400px;\n overflow: auto;\n\n li {\n margin-bottom: 1rem;\n }\n`;\n\nexport const Header = styled.header.attrs((attrs) => ({\n ...attrs,\n className: classNames(\"px-3 py-3 bg-warning mb-0 h5\", attrs.className),\n}))``;\n\nexport const NoteBtnBar = styled.div`\n position: absolute;\n top: 0;\n right: 0;\n`;\n\nexport const NoteBtn = styled.button.attrs({\n className: \"p-1 text-muted\",\n})`\n background: 0;\n border: 0;\n line-height: 0;\n padding: 0;\n`;\n\nexport const NoteListItem = styled.li.attrs((props) => ({\n ...props,\n className: \"py-2 px-3 bg-light\",\n}))`\n display: flex;\n flex-direction: column;\n position: relative;\n border-radius: 0.5rem;\n\n &:hover,\n &:focus,\n &:focus-within {\n ${NoteBtnBar} {\n display: inline-block;\n visibility: visible;\n }\n }\n\n ${NoteBtnBar} {\n display: none;\n visibility: hidden;\n }\n`;\n\nexport const Footer = styled.footer.attrs((props) => ({\n ...props,\n className: \"position-relative bg-light\",\n}))``;\n\nexport const NoteTextArea = styled.textarea.attrs((props) => ({\n ...props,\n className: \"p-3\",\n}))`\n background: transparent;\n border: 0;\n display: block;\n\n ::placeholder {\n font-style: italic;\n }\n`;\n\ninterface NoteTextAreaWrapperProps {\n \"data-value\": string;\n}\n\nexport const NoteTextAreaWrapper = styled.div.attrs(\n (props) => ({\n ...props,\n className: \"p-3\",\n })\n)`\n max-height: 8rem;\n overflow: auto;\n\n ${NoteTextArea} {\n border: 0;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n width: 100%;\n height: 100%;\n resize: none;\n }\n\n &:after {\n content: attr(data-value) \" \";\n white-space: pre-wrap;\n word-break: break-word;\n visibility: hidden;\n }\n`;\n\ninterface NoteSubmitBtnProps {\n $isSubmitting?: boolean;\n}\n\nexport const NoteSubmitBtn = styled.button.attrs(\n (props) => ({\n ...props,\n children: (\n <>\n {props.$isSubmitting ? (\n \n ) : (\n \n )}\n \n ),\n })\n)`\n position: absolute;\n right: 1rem;\n bottom: 0.75rem;\n padding: 0.5rem;\n background-color: ${(p) => rgba(p.theme.gray100, 0.8)};\n border: 0;\n line-height: 0;\n border-radius: 50%;\n\n transition: color 0.3s ${(p) => p.theme.timingFnEaseOut};\n\n &:disabled {\n color: ${(p) => p.theme.gray500};\n }\n\n &:hover,\n &:focus {\n background-color: ${(p) => p.theme.gray300};\n }\n`;\n\ninterface NoteItemProps extends Note {\n isEditing: boolean;\n onEditClick: (event: React.MouseEvent) => void;\n onEdit: (event: React.ChangeEvent) => void;\n onDelete: (event: React.MouseEvent) => void;\n onBlur: (event: React.FocusEvent) => void;\n}\n\nexport const NoteItem: React.FC = ({\n isEditing,\n authorName,\n dateCreated,\n id,\n note,\n onEditClick,\n onBlur,\n onEdit,\n onDelete,\n canDelete,\n canEdit,\n}) => {\n const textAreaRef = React.useRef(null);\n\n const [isDeleting, setIsDeleting] = React.useState(false);\n\n React.useEffect(() => {\n if (isEditing && textAreaRef.current) {\n textAreaRef.current.focus();\n textAreaRef.current.setSelectionRange(\n textAreaRef.current.value.length,\n textAreaRef.current.value.length\n );\n }\n }, [isEditing]);\n\n return (\n <>\n \n {authorName}{\" \"}\n \n {format(parseISO(dateCreated), \"dd MMM yyyy\")}\n \n \n
\n {isEditing ? (\n \n \n
\n ) : (\n \n {note}\n

\n )}\n \n\n {canEdit && canDelete && (\n \n \n \n \n\n {\n setIsDeleting(true);\n onDelete(e);\n }}\n disabled={isDeleting}\n aria-label=\"Delete note\"\n >\n {isDeleting ? (\n \n ) : (\n \n )}\n \n \n )}\n \n );\n};\n","import * as React from \"react\";\n\nimport { Popover, PopoverDisclosure, Portal, usePopoverState } from \"reakit\";\n\nimport { SvgSprite } from \"../SvgSprite\";\n\nimport {\n EmptyNotesView,\n Footer,\n Header,\n NoteItem,\n NoteList,\n NoteListItem,\n NoteSubmitBtn,\n NoteTextArea,\n NoteTextAreaWrapper,\n} from \"./NoteWindow\";\n\nimport classNames from \"classnames\";\n\ninterface PrivateNotesProps {\n orgId: number;\n}\n\nexport interface Note {\n authorName: string;\n dateCreated: string;\n id: number;\n note: string;\n canEdit: boolean;\n canDelete: boolean;\n}\n\ninterface PrivateNotesInternalState {\n editingIdx: null | number;\n status: \"initial\" | \"loading\" | \"idle\" | \"sending\";\n notes: Note[];\n draft: string;\n}\n\n/* NoteHelpers */\n\nconst updateNote = (orgId, note: Pick): Promise => {\n return fetch(`/api/organisation/${orgId}/notes/${note.id}`, {\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({\n note: note.note,\n }),\n })\n .then((res) => {\n if (res.ok) {\n return res.json();\n }\n throw Error(\"Network error\");\n })\n .then((data) => {\n console.log();\n })\n .catch((err) => {\n console.log(err);\n });\n};\n\nexport const PrivateNotes: React.FC = ({ orgId }) => {\n const [isClient, setIsClient] = React.useState(false);\n\n const noteListRef = React.useRef(null);\n\n const [state, setState] = React.useState(() => {\n return {\n editingIdx: null,\n status: \"initial\",\n notes: [],\n draft: \"\",\n };\n });\n\n const popover = usePopoverState({\n placement: \"top-start\",\n baseId: \"private_notes_window\",\n });\n\n const { visible } = popover;\n\n const handleNoteSubmit = (e: React.FormEvent): void => {\n e.preventDefault();\n\n setState((prev) => ({\n ...prev,\n status: \"sending\",\n }));\n\n fetch(`/api/organisation/${orgId}/notes`, {\n method: \"POST\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n note: state.draft,\n }),\n })\n .then((res) => {\n if (res.ok) {\n return res.json();\n }\n\n throw Error(\"Network error\");\n })\n .then((data) => {\n setState((prev) => ({\n ...prev,\n status: \"idle\",\n notes: [...prev.notes, data],\n draft: \"\",\n }));\n console.log(data);\n });\n };\n\n const createNoteDeleteHandler =\n (idx: number) =>\n (e: React.MouseEvent): void => {\n e.preventDefault();\n\n const noteId = state.notes[idx].id;\n fetch(`/api/organisation/${orgId}/notes/${noteId}`, {\n method: \"DELETE\",\n })\n .then((res) => {\n if (res.ok) {\n return res.json();\n }\n\n throw Error(\"Network error\");\n })\n .then((data) => {\n if (data === true) {\n setState((prev) => ({\n ...prev,\n notes: prev.notes.filter((n) => n.id !== noteId),\n }));\n }\n });\n };\n\n const createNoteEditClickHandler =\n (idx: number) =>\n (e: React.MouseEvent): void => {\n e.preventDefault();\n\n if (idx === state.editingIdx) {\n updateNote(orgId, {\n id: state.notes[idx].id,\n note: state.notes[idx].note,\n });\n\n setState((prev) => ({\n ...prev,\n editingIdx: null,\n }));\n\n return;\n }\n\n setState((prev) => ({\n ...prev,\n editingIdx: idx,\n }));\n };\n\n const createNoteBlurHandler =\n (idx) =>\n (e: React.FocusEvent): void => {\n updateNote(orgId, {\n id: state.notes[idx].id,\n note: state.notes[idx].note,\n });\n\n setState((prev) => ({\n ...prev,\n editingIdx: null,\n }));\n };\n\n const createNoteEditHandler =\n (idx) =>\n (e: React.ChangeEvent): void => {\n const value = e.target.value;\n\n setState((prev) => ({\n ...prev,\n notes: Object.assign([], prev.notes, {\n [idx]: {\n ...prev.notes[idx],\n note: value,\n },\n }),\n }));\n };\n\n React.useEffect(() => {\n setIsClient(true);\n\n setState((prev) => ({\n ...prev,\n status: \"loading\",\n }));\n\n fetch(`/api/organisation/${orgId}/notes`)\n .then((res) => {\n if (res.ok) {\n return res.json();\n }\n\n throw Error(\"Network error\");\n })\n .then((data) => {\n setState((prev) => ({\n ...prev,\n status: \"idle\",\n notes: data,\n }));\n })\n .catch((err) => {\n // todo : handle error\n });\n }, []);\n\n const prevNotesLength = React.useRef(state.notes.length);\n\n React.useEffect(() => {\n /*\n scroll to bottom of private notes window when popover visible\n */\n if (visible && noteListRef.current) {\n const el = noteListRef.current;\n el.scrollTop = el.scrollHeight;\n }\n }, [visible]);\n\n React.useEffect(() => {\n /*\n scroll to bottom of private notes window if notes length grows\n */\n if (noteListRef.current && prevNotesLength.current < state.notes.length) {\n const el = noteListRef.current;\n el.scrollTop = el.scrollHeight;\n }\n }, [state.notes.length]);\n\n React.useEffect(() => {\n prevNotesLength.current = state.notes.length;\n });\n\n if (!isClient) {\n return null;\n }\n\n return (\n \n \n \n \n \n
Private notes
\n {state.notes.length ? (\n \n {state.notes.map((n, idx) => (\n \n \n \n ))}\n \n ) : (\n \n )}\n
\n
\n \n {\n const value = e.target.value;\n setState((prev) => ({\n ...prev,\n draft: value,\n }));\n }}\n value={state.draft}\n placeholder=\"Type your note here...\"\n disabled={state.status === \"sending\"}\n />\n \n\n \n \n
\n \n
\n );\n};\n","import { KeyValue, PaginatedModel } from \"@skv/core\";\n\nexport enum AgencyEntityStatus {\n Active,\n Archived,\n}\n\nexport type AgencyEntityStatusKeyValue = {\n id: AgencyEntityStatus;\n name: string;\n};\n\nexport interface AgencyEntitySearchQuery {\n ascending: boolean;\n page: number;\n search: string;\n sortedBy: number;\n}\n\nexport type AgencyEntityListResult = PaginatedModel & {\n agencyName: string;\n};\n\nexport interface AgencyEntity {\n id: number;\n name: string;\n dateCreated: string;\n managerName: string;\n managerEmail: string;\n type: string;\n}\n\nexport interface AgencyEntityListViewModel {\n filteredByStatus: AgencyEntityStatusKeyValue;\n filteredByType: KeyValue[];\n form: AgencyEntitySearchQuery;\n listResult: AgencyEntityListResult;\n requestConnectionUrl: string;\n}\n","import type { PaginatedModel } from \"./\";\n\n/* Application Search */\nexport enum ApplicationStatus {\n Pending,\n UnderReview,\n Accepted,\n NotSuitable,\n UnableToContact,\n}\n\nexport type ApplicationStatusKeyValue = {\n id: ApplicationStatus;\n name: string;\n};\n\nexport interface ApplicationSearchQuery {\n ascending: boolean;\n dateFrom: string | null;\n dateTo: string | null;\n page: number;\n search: string;\n sortedBy: number;\n}\n\nexport type ApplicationsListResult = PaginatedModel;\n\nexport interface Applicant {\n applicantEmail: string;\n applicantFirstName: string;\n applicantLastName: string;\n applicantPhone: string;\n applicantShareableLink: string;\n applicationDate: string;\n applicationStatus: ApplicationStatusKeyValue;\n applicationSource: string;\n id: number;\n isNew: boolean;\n}\n\nexport interface OpportunityApplicant extends Applicant {\n opportunityId: number;\n opportunityTitle: string;\n}\n\nexport interface ApplicationsViewModel {\n filteredByStatus: ApplicationStatusKeyValue;\n form: ApplicationSearchQuery;\n listResult: ApplicationsListResult;\n}\n\n/* Opportunity Applications */\nexport interface ApplicationsOpportunityListResult\n extends PaginatedModel {\n opportunityCategory: string;\n opportunityIsOnlineOrRemote: boolean;\n opportunityLocations: string[];\n opportunityTitle: string;\n opportunityTypeOfWorks: string[];\n}\n\nexport interface ApplicationsOpportunityViewModel {\n filteredByStatus: ApplicationStatusKeyValue;\n form: ApplicationSearchQuery;\n listResult: ApplicationsOpportunityListResult;\n}\n\n/* Application Details */\n\nexport interface ApplicationApplicantDetails extends Applicant {\n dateModified: string | null;\n gender: string;\n lastModifiedBy: string | null;\n location: string | null;\n opportunityId: number | string;\n opportunityIsOnlineOrRemote: boolean;\n opportunityLocations: string[];\n opportunityReference: string;\n opportunityTitle: string;\n opportunityTotalApplicantsCount: number;\n organisationName: string;\n qualification: string | null;\n syncId: number | null;\n yearOfBirth: number | null;\n}\n\nexport interface ApplicationDetailsFormData {\n applicationStatus: ApplicationStatus;\n id: number;\n notes: string | null;\n organisationId: number | null;\n}\n","import type { PaginatedModel } from \"./\";\n\nexport enum ConnectionRequestStatus {\n Pending,\n Accepted,\n Declined,\n}\n\nexport type ConnectionRequestStatusKeyValue = {\n id: ConnectionRequestStatus;\n name: string;\n};\n\nexport interface ConnectionRequestSearchQuery {\n ascending: boolean;\n page: number;\n search: string;\n sortedBy: number;\n status: number;\n}\n\nexport type ConnectionRequestListResult = PaginatedModel;\n\nexport interface ConnectionRequest {\n id: number;\n name: string;\n dateRequested: string;\n requestedByFirstName: string;\n requestedByLastName: string;\n requestedByEmail: string;\n status: string;\n isOrganisationActive: boolean;\n}\n\nexport type ConnectionRequestViewModel = ConnectionRequest & {\n dateAccepted?: string;\n dateDeclined?: string;\n description: string;\n category: string;\n websiteUrl: string;\n emailAddress: string;\n primaryAddress: Address;\n organisationApplicationUrl: string;\n isOrganisationActive: boolean;\n};\n\ntype Address = {\n id: number;\n street: string;\n suburb: string;\n state: string;\n stateCode: string;\n postcode: string;\n country: string;\n isPrimary: boolean;\n};\n\nexport interface ConnectionRequestListViewModel {\n filteredByStatus: ConnectionRequestStatusKeyValue;\n form: ConnectionRequestSearchQuery;\n listResult: ConnectionRequestListResult;\n}\n","export enum EmailNotificationTypes {\n VolunteerOpportunitySearch,\n VolunteerOrganisationViewedEoi,\n OrganisationSummary,\n VolunteerAllOpportunitySearches,\n OrganisationNoActivityForThreeMonths,\n OrganisationNoActivityForOneYear\n}\n","import type { MetaSegment, WorldLocation } from \"@skv/core\";\n\nexport enum OpportunitySearchTypes {\n NoLocation,\n LocationSuburb,\n LocationRegional,\n LocationMetro,\n LocationStateRegion,\n}\n\ninterface OpportunitySearchResultOrganisation {\n friendlyName: string;\n id: number;\n logoUrl: string;\n name: string;\n url: string;\n}\n\nexport interface OpportunitySearchResult {\n agencyName?: string;\n category: MetaSegment;\n eventEndDate?: string | null;\n eventStartDate?: string | null;\n friendlyName: string;\n id: number;\n isFeatured: boolean;\n isNew: boolean;\n isOrgLinkedEntity: boolean;\n locations: WorldLocation[];\n name: string;\n onlineRemoteVolunteers: boolean;\n organisation: OpportunitySearchResultOrganisation;\n organisationMemberName?: string;\n summary: string;\n typesOfWork: MetaSegment[];\n url: string;\n}\n\nexport interface OpportunitySearchResults {\n canonicalLocation: string | null;\n canonicalUrl: string | null;\n metaFilters: string[];\n noLocationMatch: boolean;\n onlineRemoteVolunteersOnly: boolean;\n opportunities: OpportunitySearchResult[];\n opportunitySearchType: OpportunitySearchTypes;\n organisationName: string | null;\n page: number;\n pageDescription: string;\n pageSize: number;\n pageTitle: string;\n searchSummary: string;\n suggestedLocations: MetaSegment[];\n surroundingOpportunityIndex: number;\n totalCount: number;\n totalPages: number;\n}\n\n// todo : deprecate opportunityresultstateenums in favour of unified shared SearchResultStatus\nexport enum OpportunityResultStateEnums {\n IDLE = \"IDLE\",\n FETCHING_DATA = \"FETCHING_DATA\",\n FETCH_ERROR = \"FETCH_ERROR\",\n}\n\nexport enum SearchResultStatus {\n IDLE = \"IDLE\",\n FETCHING_DATA = \"FETCHING_DATA\",\n FETCH_ERROR = \"FETCH_ERROR\",\n}\n","export enum OpportunityStatus {\n Draft,\n Open,\n Archived,\n Expired,\n}\n","export enum OrganisationStatus {\n Pending,\n Active,\n Inactive,\n NotSuitable,\n}\n","import React from \"react\";\nimport { Dropdown } from \"react-bootstrap\";\nimport { NavBarOrganisationPropTypes, NavBarUserPropTypes, useNavBar } from \".\";\n\nimport { OrganisationStatus } from \"../../types\";\nimport { SvgSprite } from \"../SvgSprite\";\n\nconst LINKS = {\n accountDetails: \"/account/edit\",\n changePassword: \"/account/password\",\n whatsNew: \"/whatsnew\",\n recruitmentAdvice: \"/recruitment-advice\", // Note, this is if it is on the Admin page, otherwise pass through clientApplicationUrl.\n seekWidget: \"/seek-widget\",\n contactUs: \"/contact\",\n signOut: \"/account/signout\",\n reports: \"/reports\",\n};\n\ninterface AccountUserDetailsProps {\n user: NavBarUserPropTypes;\n organisation: NavBarOrganisationPropTypes;\n}\n\nconst AccountUserDetails = (props: AccountUserDetailsProps): JSX.Element => {\n const { isSuperAdmin, firstName, lastName, username } = props.user;\n\n return (\n <>\n \n {((): React.ReactNode => {\n if (isSuperAdmin && props.organisation) {\n return props.organisation.name;\n }\n\n return `${firstName} ${lastName}`;\n })()}\n \n {props.organisation &&\n props.organisation.status.id === OrganisationStatus.Pending && (\n \n \n Pending activation\n \n )}\n\n
{username}
\n \n );\n};\n\nexport const AdminAccountDropdownMobile = (): JSX.Element => {\n const { user, organisation, showSeekWidgetCta } = useNavBar();\n const seekWidgetCtaNotHidden = !user.isSuperAdmin;\n\n return (\n \n );\n};\n\nconst DropdownBtn = React.forwardRef<\n HTMLButtonElement,\n React.ButtonHTMLAttributes\n>(({ className, children, onClick, ...rest }, ref) => {\n return (\n \n {children}\n \n );\n});\n\nexport const AdminAccountDropdown = (): JSX.Element => {\n const { user, organisation, showSeekWidgetCta } = useNavBar();\n const seekWidgetCtaNotHidden = !user.isSuperAdmin;\n\n return (\n \n \n \n Account\n \n \n
\n \n
\n
\n \n \n
\n );\n};\n","import React from \"react\";\nimport { Navbar } from \"react-bootstrap\";\nimport { NavbarToggleProps } from \"react-bootstrap/esm/NavbarToggle\";\nimport { SvgSprite } from \"../SvgSprite\";\n\nexport const AdminNavBarToggler = (\n props: NavbarToggleProps & React.HTMLAttributes\n): JSX.Element => {\n return (\n \n \n Menu\n \n \n \n );\n};\n","import React from \"react\";\nimport { Navbar } from \"react-bootstrap\";\nimport {\n AdminAccountDropdown,\n AdminAccountDropdownMobile,\n} from \"./AdminAccountDropdown\";\n\nimport qs from \"qs\";\nimport { NavbarBase } from \"./NavbarBase\";\n\nimport { AsyncTypeahead, useAsyncTypeahead } from \"../../\";\n\nimport { useLocation } from \"react-router-dom\";\n\nimport { useForm } from \"react-yup\";\nimport { useNavBar } from \".\";\nimport { ResultFiltersDropdown } from \"../\";\n\nimport { KeyValue } from \"@skv/core\";\nimport * as Yup from \"yup\";\n\nimport { FocusScope } from \"@react-aria/focus\";\n\ntype TypeaheadResult = {\n id: number;\n name: string;\n source: string;\n isSocialEnterprise: boolean;\n};\n\ntype PeopleTypeaheadResult = {\n contactId: number;\n email: string;\n firstName: string;\n lastName: string;\n link: string;\n organisationId: number;\n type: KeyValue & {\n isContact: boolean;\n isAdministrator: boolean;\n };\n};\n\nconst typeaheadLabelKey = (\n result: TypeaheadResult | PeopleTypeaheadResult\n): string => {\n if (\"contactId\" in result) {\n return `${result.firstName} ${result.lastName} ${result.email} (${result.type.name})`;\n }\n\n return `${result.name} (#${result.id}${\n result.isSocialEnterprise ? \" SE\" : \"\"\n }) - ${result.source}`;\n};\n\ntype SearchType = \"opp\" | \"org\" | \"people\";\n\nconst SCHEMA = Yup.object({\n status: Yup.array().of(Yup.number()),\n source: Yup.array().of(Yup.string()),\n organisationTypes: Yup.array().of(Yup.number()),\n types: Yup.array().of(Yup.number()),\n organisationSettings: Yup.array().of(Yup.number()),\n}).defined();\n\nexport const NavBarAuthenticatedAdmin: React.FC<{}> = (props) => {\n const location = useLocation();\n\n const [searchType, setSearchType] = React.useState(() => {\n switch (location.pathname) {\n case \"/search/opportunities\":\n return \"opp\";\n case \"/search/people\":\n return \"people\";\n case \"/search/organisations\":\n default:\n return \"org\";\n }\n });\n\n const {\n opportunityStatusList,\n organisationStatusList,\n organisationTypeList,\n organisationSettingsList,\n sourcesList,\n peopleTypeList,\n } = useNavBar();\n\n const query = React.useMemo(() => {\n return qs.parse(location.search, { ignoreQueryPrefix: true });\n }, [location.search]);\n\n const { field, isChecked, setValues } = useForm({\n validationSchema: SCHEMA,\n defaultValues: () => {\n return {\n status: query.status\n ? Array.isArray(query.status)\n ? (query.status as string[]).map((n) => parseInt(n, 10))\n : [parseInt(query.status as string, 10)]\n : [],\n source: query.source\n ? Array.isArray(query.source)\n ? (query.source as string[])\n : [query.source as string]\n : [],\n organisationTypes: query.organisationTypes\n ? Array.isArray(query.organisationTypes)\n ? (query.organisationTypes as string[]).map((n) => parseInt(n, 10))\n : [parseInt(query.organisationTypes as string, 10)]\n : [],\n types: query.types\n ? Array.isArray(query.types)\n ? (query.types as string[]).map((n) => parseInt(n, 10))\n : [parseInt(query.types as string, 10)]\n : [],\n organisationSettings: query.organisationSettings\n ? Array.isArray(query.organisationSettings)\n ? (query.organisationSettings as string[]).map((n) =>\n parseInt(n, 10)\n )\n : [parseInt(query.organisationSettings as string, 10)]\n : [],\n };\n },\n });\n\n const typeahead = useAsyncTypeahead({\n url: (q) => {\n switch (searchType) {\n case \"org\":\n return `/api/organisations/autocomplete/${q}`;\n case \"people\":\n return `/api/people/autocomplete/${q}`;\n }\n },\n onSuccess: (res) => {\n console.log(res);\n return res;\n },\n });\n\n const opportunityFilters = React.useMemo(() => {\n return [\n {\n label: \"Status\",\n name: \"status\",\n data: opportunityStatusList,\n labelKey: (n) => n.name,\n valueKey: (n) => n.id,\n isChecked: (n) => isChecked(\"status\", n.id),\n onChange: field.onChange,\n onBlur: field.onBlur,\n },\n {\n label: \"Source\",\n name: \"source\",\n data: sourcesList,\n labelKey: (n) => n.name,\n valueKey: (n) => n.name,\n isChecked: (n) => isChecked(\"source\", n.name),\n onChange: field.onChange,\n onBlur: field.onBlur,\n },\n ];\n }, []);\n\n const organisationFilters = React.useMemo(() => {\n const organisationFiltersList = [\n {\n label: \"Status\",\n name: \"status\",\n data: organisationStatusList,\n labelKey: (n) => n.name,\n valueKey: (n) => n.id,\n isChecked: (n) => isChecked(\"status\", n.id),\n onChange: field.onChange,\n onBlur: field.onBlur,\n },\n {\n label: \"Source\",\n name: \"source\",\n data: sourcesList,\n labelKey: (n) => n.name,\n valueKey: (n) => n.name,\n isChecked: (n) => isChecked(\"source\", n.name),\n onChange: field.onChange,\n onBlur: field.onBlur,\n },\n {\n label: \"Type\",\n name: \"organisationTypes\",\n data: organisationTypeList,\n labelKey: (n) => n.name,\n valueKey: (n) => n.id,\n isChecked: (n) => isChecked(\"organisationTypes\", n.id),\n onChange: field.onChange,\n onBlur: field.onBlur,\n },\n {\n label: \"Setting\",\n name: \"organisationSettings\",\n data: organisationSettingsList,\n labelKey: (n) => n.name,\n valueKey: (n) => n.id,\n isChecked: (n) => isChecked(\"organisationSettings\", n.id),\n onChange: field.onChange,\n onBlur: field.onBlur,\n },\n ];\n\n if (process.env.TARGET_ENV === \"nz\") {\n return organisationFiltersList.filter(\n (n) => n.name !== \"organisationTypes\"\n );\n }\n\n return organisationFiltersList;\n }, [\n field.onBlur,\n field.onChange,\n isChecked,\n organisationSettingsList,\n organisationStatusList,\n organisationTypeList,\n sourcesList,\n ]);\n\n const peopleFilters = React.useMemo(() => {\n return [\n {\n label: \"Type\",\n name: \"types\",\n data: peopleTypeList,\n labelKey: (n) => n.name,\n valueKey: (n) => n.id,\n isChecked: (n) => isChecked(\"types\", n.id),\n onChange: field.onChange,\n onBlur: field.onBlur,\n },\n ];\n }, []);\n\n const typeaheadProps = React.useMemo(() => {\n switch (searchType) {\n case \"opp\":\n return {\n action: \"/search/opportunities\",\n placeholder: \"Search opportunities\",\n };\n case \"people\":\n return {\n action: \"/search/people\",\n placeholder: \"Search people\",\n };\n case \"org\":\n default:\n return {\n action: \"/search/organisations\",\n placeholder: \"Search organisations\",\n };\n }\n }, [searchType]);\n\n const [isExpanded, setExpanded] = React.useState(false);\n\n return (\n \n \n \n \n
\n p.theme.mdBreakpoint}) {\n flex-direction: row;\n }\n .typeahead__wrapper {\n flex: 1 1 100%;\n width: 100%;\n // border: 1px solid ${(p) => p.theme.gray300};\n @media (min-width: ${(p) => p.theme.mdBreakpoint}) {\n flex: 1 1 auto;\n width: auto;\n }\n }\n .typeahead__wrapper-input {\n background-color: ${(p) => p.theme.gray100};\n border-color: ${(p) => p.theme.gray400};\n position: relative;\n &:focus {\n z-index: 1;\n }\n @media (min-width: ${(p) => p.theme.mdBreakpoint}) {\n border-right: 0;\n border-left: 0;\n border-radius: 0;\n }\n }\n .navbar__form-search-type {\n @media (min-width: ${(p) => p.theme.mdBreakpoint}) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n }\n .navbar__form-filters-btn {\n border-color: transparent;\n @media (min-width: ${(p) => p.theme.mdBreakpoint}) {\n border-color: ${(p) => p.theme.gray400};\n background-color: ${(p) => p.theme.gray100};\n border-left: 0;\n border-right: 0;\n }\n }\n `}\n action={typeaheadProps.action}\n className=\"navbar__form flex-grow-1 my-xl-0\"\n >\n p.theme.mdBreakpoint}) {\n &&& {\n flex: 0 0 180px;\n // border-right: 1px solid ${(p) => p.theme.gray300};\n }\n }\n `}\n className=\"navbar__form-search-type custom-select mb-1 mb-md-0\"\n // name=\"searchType\"\n value={searchType}\n onChange={(e) => {\n const { value } = e.target;\n setSearchType(value as SearchType);\n }}\n >\n \n \n \n \n {\n console.log(selected);\n }}\n defaultInputValue={(query.search as string) || \"\"}\n renderMenu={(\n results,\n menuProps,\n { Menu, MenuHeader, MenuItem, CurrentHighlighter }\n ): JSX.Element => {\n return (\n \n }\n >\n {(() => {\n if (typeahead.isLoading) {\n return (\n \n Loading, please wait...\n \n );\n }\n if (!results.length) {\n return (\n \n No results to display\n \n );\n }\n if (searchType === \"people\") {\n return (results as PeopleTypeaheadResult[]).map(\n (n, idx) => (\n {\n return (\n {}}\n css={`\n overflow: hidden;\n text-overflow: ellipsis;\n `}\n aria-label={`${n.firstName} ${n.lastName} - ${n.type.name}`}\n href={n.link}\n >\n \n {typeaheadLabelKey(n)}\n \n \n );\n }}\n />\n )\n );\n }\n return (results as TypeaheadResult[]).map((n, idx) => (\n {\n return (\n {}}\n css={`\n overflow: hidden;\n text-overflow: ellipsis;\n `}\n aria-label={`${n.name}, ID: ${n.id}, source: ${n.source}`}\n href={`/${n.id}/dashboard`}\n >\n \n {typeaheadLabelKey(n)}\n \n \n );\n }}\n />\n ));\n })()}\n
\n );\n }}\n // if searchType is opportunity, make typeahead act as a normal input\n open={searchType === \"opp\" ? false : undefined}\n isLoading={searchType === \"opp\" ? false : typeahead.isLoading}\n options={searchType === \"opp\" ? [] : typeahead.options}\n onSearch={\n searchType === \"opp\" ? () => void 0 : typeahead.onSearch\n }\n />\n p.theme.mdBreakpoint}) {\n width: auto;\n }\n `}\n >\n
\n {\n switch (searchType) {\n case \"opp\":\n return opportunityFilters;\n case \"people\":\n return peopleFilters;\n case \"org\":\n default:\n return organisationFilters;\n }\n })()}\n onReset={(e) => {\n e.preventDefault();\n setValues((v) => ({\n ...v,\n status: [],\n source: [],\n organisationTypes: [],\n organisationSettings: [],\n }));\n }}\n />\n
\n
\n \n
\n \n \n
\n \n
    \n \n
\n
\n
\n \n
\n );\n};\n","import { Subject } from \"rxjs\";\n\nconst statusSubject = new Subject();\nconst nameSubject = new Subject();\n\ntype Status = {\n id: number;\n name: string;\n};\n\nexport const navbarService = {\n setStatus: (status: Status): void => {\n statusSubject.next(status);\n },\n getStatus: () => statusSubject.asObservable(),\n setName: (name: string) => {\n nameSubject.next(name);\n },\n getName: () => nameSubject.asObservable(),\n};\n","import React from \"react\";\nimport { Navbar } from \"react-bootstrap\";\n\nimport { NavBarLinks } from \"./NavBarLinks\";\n\nimport { css, DefaultTheme } from \"styled-components\";\n\nimport { OrganisationStatus } from \"../../types/OrganisationStatus\";\nimport { SvgSprite } from \"../SvgSprite\";\nimport { useNavBar } from \"./\";\nimport { AdminNavBarToggler } from \"./AdminNavBarToggler\";\n\nimport { navbarService } from \"./navbar.service\";\n\nimport { FocusScope } from \"@react-aria/focus\";\n\ntype ThemeColors = {\n primaryColor: string;\n secondaryColor: string;\n successColor: string;\n infoColor: string;\n warningColor: string;\n dangerColor: string;\n lightColor: string;\n darkColor: string;\n linkColor: string;\n mutedColor: string;\n};\n\nconst StatusIndicatorCss = (themeColor: keyof ThemeColors) => css`\n display: inline-flex;\n &:before {\n content: \"\";\n display: inline-block;\n width: ${12 / 16}rem;\n height: ${12 / 16}rem;\n border-radius: 50%;\n margin-right: 0.4rem;\n background-color: ${(p) => p.theme[themeColor]};\n align-self: center;\n }\n`;\n\ntype SpanProps = React.DetailedHTMLProps<\n React.HTMLAttributes,\n HTMLSpanElement\n>;\n\ninterface StatusIndicatorProps extends SpanProps {\n children: string;\n color: keyof ThemeColors;\n mobile?: boolean;\n}\n\nconst StatusIndicator: React.FC = ({\n mobile = false,\n children,\n color,\n ...rest\n}) => {\n const ref = React.useRef(null);\n\n const [isTruncated, setTruncated] = React.useState(false);\n\n React.useEffect(() => {\n setTruncated(ref.current.clientWidth < ref.current.scrollWidth);\n }, [children]);\n\n if (mobile) {\n return (\n \n {children}\n \n );\n }\n\n return (\n p.theme.lgBreakpoint}) {\n ${StatusIndicatorCss(color)};\n }\n\n @media (min-width: ${(p) => p.theme.lgBreakpoint}) {\n max-width: 250px;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n `}\n {...rest}\n >\n {children}\n \n );\n};\n\ninterface OrgStatusIndicatorProps extends SpanProps {\n children: string;\n mobile?: boolean;\n statusId: OrganisationStatus;\n}\n\nconst OrgStatusIndicator: React.FC = ({\n mobile = false,\n statusId,\n children,\n ...rest\n}) => {\n const indicatorColor: keyof ThemeColors = React.useMemo(() => {\n switch (statusId) {\n /* active */\n case OrganisationStatus.Active:\n return \"primaryColor\";\n /* inactive */\n case OrganisationStatus.Inactive:\n return \"mutedColor\";\n /* not suitable */\n case OrganisationStatus.NotSuitable:\n return \"warningColor\";\n /* pending */\n case OrganisationStatus.Pending:\n default:\n return \"dangerColor\";\n }\n }, [statusId]);\n\n return (\n \n {children}\n \n );\n};\n\nexport const NavBarAuthenticatedAdminOrg = (): JSX.Element => {\n const { organisation } = useNavBar();\n\n const [isExpanded, setExpanded] = React.useState(false);\n\n const { isExternal, source } = organisation;\n\n const [status, setStatus] = React.useState(organisation.status);\n const [orgName, setOrgName] = React.useState(organisation.name);\n\n React.useEffect(() => {\n const statusSubscription$ = navbarService.getStatus().subscribe(setStatus);\n const orgNameSubscription$ = navbarService.getName().subscribe(setOrgName);\n\n return (): void => {\n statusSubscription$.unsubscribe();\n orgNameSubscription$.unsubscribe();\n };\n }, []);\n\n return (\n \n \n p.theme.gray900};\n `}\n href=\"/dashboard\"\n aria-label=\"Back to master dashboard\"\n >\n \n \n \n \n
\n {/* Mobile */}\n
    \n \n
\n
\n\n {/* Desktop */}\n
    \n \n
\n\n
\n {isExternal ? (\n \n {source}\n \n ) : (\n \n {status.name}\n \n )}\n
\n
\n \n \n \n );\n};\n","import React, { useState } from \"react\";\nimport { Navbar } from \"react-bootstrap\";\nimport { NavbarToggleProps } from \"react-bootstrap/esm/NavbarToggle\";\nimport { SvgSprite } from \"../SvgSprite\";\n\nimport { FocusScope } from \"@react-aria/focus\";\n\nconst UnauthNavBarToggler = (\n props: NavbarToggleProps & React.HTMLAttributes\n) => {\n return (\n \n \n Menu\n \n \n \n );\n};\n\ninterface NavBarUnauthenticatedProps {\n brandHref: string;\n}\n\nexport const NavBarUnauthenticated: React.FC = (\n props: NavBarUnauthenticatedProps\n) => {\n const [isExpanded, setExpanded] = useState(false);\n\n const { brandHref } = props;\n return (\n \n \n
\n \n \n \n \n
\n\n \n
\n
\n \n
\n\n
\n \n
\n \n Post an opportunity\n \n
\n
\n\n
\n \n
\n \n Post an opportunity\n \n
\n
\n
\n
\n \n
\n );\n};\n","import React from \"react\";\nimport { Collapse } from \"react-bootstrap\";\n\nimport store from \"store2\";\n\nconst STORE = store.local.namespace(\"admin\");\n\ninterface AdminPeekdownProps {\n isAdmin: boolean;\n storeKey?: string;\n storeValue?: string;\n}\n\n/* Generic peekdown */\n\nexport const AdminPeekdown: React.FC = ({\n isAdmin,\n children,\n storeKey = \"peekdown\",\n storeValue = \"site-update-virtual-opps\",\n}) => {\n const [open, setOpen] = React.useState(false);\n\n React.useEffect(() => {\n // cleanup previous stored localStorage hidePeekdown key\n if (STORE.get(\"hidePeekdown\")) {\n STORE.remove(\"hidePeekdown\");\n }\n\n if (isAdmin) {\n return;\n }\n\n const peekdownName = STORE.get(storeKey);\n if (peekdownName !== storeValue) {\n setOpen(true);\n }\n }, [isAdmin, storeKey, storeValue]);\n\n const handleClose = React.useCallback(\n (e) => {\n setOpen(false);\n STORE.set(storeKey, storeValue);\n },\n [storeKey, storeValue]\n );\n\n return (\n \n \n
{children}
\n \n ×\n Close alert\n \n
\n \n );\n};\n","import { AspectRatio, RelativeLink } from \"./\";\nimport { SvgSprite } from \"./SvgSprite\";\n\nexport const AdminOrganisationsSearchNoResults = () => {\n return (\n <>\n
No matching organisations found
\n

\n Sorry, we couldn't find any organisations that matched what you\n were searching for.\n
\n Maybe try the following...\n

\n
    \n
  • Check the spelling of your search terms
  • \n
  • \n Go back to the dashboard\n
  • \n
\n \n );\n};\n\nexport const AdminOpportunitiesSearchNoResults = () => {\n return (\n <>\n
No matching opportunities found
\n

\n Sorry, we couldn't find any opportunities that matched what you\n were searching for.\n
\n Maybe try the following...\n

\n
    \n
  • Check the spelling of your search terms
  • \n
  • \n Go back to the dashboard\n
  • \n
\n \n );\n};\n\nexport const AdminOpportunitiesClosedEmpty = () => {\n if (process.env.TARGET_ENV === \"nz\") {\n return (\n
\n
\n \n \n \n
\n

None closed

\n

\n Keep a record of old opportunities by closing them. You can always\n reopen them later.\n

\n
\n
\n
\n );\n }\n\n if (process.env.TARGET_ENV === \"au\") {\n return (\n
\n
\n \n \n \n \n
\n
\n

None closed

\n

\n Keep a record of old opportunities by closing them. You can always\n reopen them later.\n

\n
\n
\n \n );\n }\n\n throw Error(\n \"Cannot render component as the TARGET_ENV variable matches 'au' or 'nz'\"\n );\n};\n\nexport const AdminOpportunitiesDraftsEmpty = () => {\n if (process.env.TARGET_ENV === \"nz\") {\n return (\n
\n
\n \n \n \n \n
\n
\n

No drafts

\n

\n Start recruiting volunteers for your organisation by{\" \"}\n \n posting an opportunity\n \n .\n

\n
\n
\n \n );\n }\n\n if (process.env.TARGET_ENV === \"au\") {\n return (\n
\n
\n \n \n \n \n
\n
\n

No drafts

\n

\n Start recruiting volunteers for your organisation by{\" \"}\n \n posting an opportunity\n \n .\n

\n
\n
\n \n );\n }\n\n throw Error(\n \"Cannot render component as the TARGET_ENV variable matches 'au' or 'nz'\"\n );\n};\n\nexport const AdminOpportunitiesExpiredEmpty = () => {\n if (process.env.TARGET_ENV === \"nz\") {\n return (\n
\n
\n \n \n \n
\n

No expired opportunities

\n

\n Any opportunities that have expired will be listed here. You can\n close or readvertise them.\n

\n
\n
\n
\n );\n }\n\n if (process.env.TARGET_ENV === \"au\") {\n return (\n
\n
\n \n \n \n \n
\n
\n

No expired opportunities

\n

\n Any opportunities that have expired will be listed here. You can\n close or readvertise them.\n

\n
\n
\n \n );\n }\n\n throw Error(\n \"Cannot render component as the TARGET_ENV variable matches 'au' or 'nz'\"\n );\n};\n\nexport const AdminOpportunitiesOpenEmpty = () => {\n if (process.env.TARGET_ENV === \"nz\") {\n return (\n
\n
\n \n \n \n
\n

No open opportunities

\n

\n All your currently advertised opportunities will be listed here.{\" \"}\n \n Post a new opportunity\n \n .\n

\n
\n
\n
\n );\n }\n\n if (process.env.TARGET_ENV === \"au\") {\n return (\n
\n
\n \n \n \n \n
\n
\n

No open opportunities

\n

\n All your currently advertised opportunities will be listed here.{\" \"}\n \n Post a new opportunity\n \n .\n

\n
\n
\n \n );\n }\n\n throw Error(\n \"Cannot render component as the TARGET_ENV variable matches 'au' or 'nz'\"\n );\n};\n\nexport const AdminPeopleSearchNoResults = () => {\n return (\n <>\n
No matching people found
\n

\n Sorry, we couldn't find any people that matched what you were\n searching for.\n
\n Maybe try the following...\n

\n
    \n
  • Check the spelling of your search terms
  • \n
  • \n Go back to the dashboard\n
  • \n
\n \n );\n};\n","import { AspectRatio, SvgSprite } from \"@skv/core\";\nimport type { WidgetType } from \"@skv/core/src/components/Widget\";\n\ninterface ChooseWidgetToEmbedProps {\n widgetType: WidgetType | null;\n handleWidgetChange: (type: WidgetType) => void;\n isDisabled: boolean;\n}\n\nexport const ChooseWidgetToEmbed = (props: ChooseWidgetToEmbedProps) => {\n return (\n
\n

Choose a widget to embed:

\n input {\n width: 1rem;\n height: 1rem;\n }\n }\n }\n `}\n >\n
\n \n \n \n \n \n props.handleWidgetChange(\"results\")}\n />\n List of opportunities\n
\n \n \n A list of all your currently advertised opportunities.\n \n \n
\n \n \n \n \n \n props.handleWidgetChange(\"search\")}\n />\n Search widget\n
\n \n \n Best if you advertise a lot of opportunities and could benefit from\n the added search function.\n \n \n \n
\n );\n};\n","import dayjs from \"dayjs\";\n\nexport const isInThePast = (date: string) => {\n const now = new Date();\n const nowDate = `${now.getFullYear()}-${now.getMonth() + 1}-${now.getDate()}`;\n return dayjs(date).isBefore(nowDate, \"day\");\n};\n\nexport const getDateRange = (\n startDate: string,\n endDate?: string,\n format?: string\n) => {\n const dateFormat = format || \"D MMM YYYY\";\n const [dayPart, monthPart, yearPart] = dateFormat.split(\" \");\n\n // Does endDate exist?\n if (!endDate) {\n return dayjs(startDate).format(dateFormat);\n }\n // Is endDate before startDate?\n if (dayjs(endDate).isBefore(dayjs(startDate), \"day\")) {\n return dayjs(startDate).format(dateFormat);\n }\n // Is startDate and endDate the same?\n if (dayjs(startDate).isSame(dayjs(endDate), \"day\")) {\n return dayjs(startDate).format(dateFormat);\n }\n // Is startDate and endDate in the same month?\n if (dayjs(startDate).isSame(dayjs(endDate), \"month\")) {\n return `${dayjs(startDate).format(dayPart)} - ${dayjs(endDate).format(\n dateFormat\n )}`;\n }\n // Is startDate and endDate in the same year?\n const shortMonth = `${dayPart} MMM`;\n if (dayjs(startDate).isSame(dayjs(endDate), \"year\")) {\n return `${dayjs(startDate).format(shortMonth)} - ${dayjs(endDate).format(\n `${shortMonth} ${yearPart}`\n )}`;\n }\n // Start and end date are in different years\n return `${dayjs(startDate).format(`${shortMonth} ${yearPart}`)} - ${dayjs(\n endDate\n ).format(`${shortMonth} ${yearPart}`)}`;\n};\n","import { VolunteerSearchLink, WorldLocation } from \"@skv/core\";\nimport * as React from \"react\";\n\ntype LocationSegmentsToReactNode = (\n locations: WorldLocation[],\n isOnlineOrRemote: boolean\n) => React.ReactNode;\n\ninterface LocationStringsToReactNodeOptions {\n noLocationsText?: string;\n remoteFriendlyLabel?: string;\n}\n\nexport const locationSegmentsToReactNode: LocationSegmentsToReactNode = (\n locations,\n isOnlineOrRemote,\n options?: LocationStringsToReactNodeOptions\n) => {\n options = Object.assign(\n {},\n {\n noLocationsText: \"Remote Only\",\n remoteFriendlyLabel: \"Remote Friendly\",\n },\n options\n );\n\n switch (locations.length) {\n case 0:\n return isOnlineOrRemote ? {options.noLocationsText} : null;\n case 1:\n return (\n \n {locations[0].segments.map((segment, idx) => (\n \n {idx !== 0 && \" \"}\n \n {segment.name}\n \n \n ))}\n {isOnlineOrRemote ? ` / ${options.remoteFriendlyLabel}` : null}\n \n );\n default:\n return (\n \n {locations.map((n) => n.displayName).join(\", \")}\n {isOnlineOrRemote ? ` / ${options.remoteFriendlyLabel}` : null}\n \n );\n }\n};\n\nexport const locationStringsToReactNode = (\n locations: string[],\n isOnlineOrRemote: boolean,\n options?: LocationStringsToReactNodeOptions\n): React.ReactNode => {\n options = Object.assign(\n {},\n {\n noLocationsText: \"Remote Only\",\n remoteFriendlyLabel: \"Remote Friendly\",\n },\n options\n );\n\n switch (locations.length) {\n case 0:\n return isOnlineOrRemote ? {options.noLocationsText} : null;\n default:\n return (\n \n {locations.join(\", \")}\n {isOnlineOrRemote ? ` / ${options.remoteFriendlyLabel}` : null}\n \n );\n }\n};\n","interface PluraliserOptions {\n none: string;\n singular: string;\n plural: string;\n}\n\nexport const pluraliser = (\n count: number,\n { none, singular, plural }: PluraliserOptions\n): string => {\n if (count === 0) {\n return none;\n }\n\n if (count === 1) {\n return singular;\n }\n\n return plural;\n};\n","/*\n Below is used on organisation images\n*/\n\nexport const resizeImg = (url, size) => {\n if (!url) {\n throw Error(\"Argument 'url' passed with no value\");\n }\n\n const newUrl = url.split(\"/\");\n newUrl.splice(newUrl.length - 1, 0, size);\n return newUrl.join(\"/\");\n};\n\n/*\n Below is used on blog articles from strapi\n*/\n\nlet CLOUDFRONT_URL;\n\nif (process.env.TARGET_ENV === \"nz\") {\n CLOUDFRONT_URL = \"cdn.seekvolunteer.co.nz\";\n} else {\n CLOUDFRONT_URL = \"cdn.volunteer.com.au\";\n}\n\nexport const resizeImgCloudFront = (imgUrl: string, size: string): string => {\n const urlArray = imgUrl.split(\"/\");\n\n const result = [...urlArray];\n result.splice(urlArray.length - 1, 0, size);\n result[2] = CLOUDFRONT_URL;\n\n return result.join(\"/\");\n};\n","import * as React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport styled, { useTheme } from \"styled-components\";\n\nimport { StrapiPromo } from \"../types\";\n\nimport { resizeImgCloudFront } from \"@skv/util\";\n\ntype ImgProps = React.DetailedHTMLProps<\n React.ImgHTMLAttributes,\n HTMLImageElement\n>;\n\nexport interface AdSpaceWithImageProps {\n imgXl2x: string;\n imgXl: string;\n\n imgLg2x: string;\n imgLg: string;\n\n imgMd2x: string;\n imgMd: string;\n\n img2x: string;\n img: string;\n\n imgAlt?: string;\n\n imgProps?: Omit;\n}\n\nconst BaseAdSpace = styled.section`\n background-color: ${(p): string => p.theme.infoColor};\n display: flex;\n flex-direction: column;\n min-height: 320px;\n justify-content: center;\n\n @media (min-width: ${(p): string => p.theme.mdBreakpoint}) {\n flex-direction: row;\n }\n`;\n\nconst BaseAdSpaceContent = styled.div`\n padding: 1rem ${30 / 16}rem;\n flex: 1 1 auto;\n color: #fff;\n display: flex;\n flex-direction: column;\n justify-content: center;\n\n @media (min-width: ${(p): string => p.theme.mdBreakpoint}) {\n flex: 0 1 40%;\n }\n`;\n\nexport const AdSpaceWithImage = ({\n imgXl2x,\n imgXl,\n\n imgLg2x,\n imgLg,\n\n imgMd2x,\n imgMd,\n\n img2x,\n img,\n imgAlt = \"\",\n\n imgProps,\n\n children,\n ...rest\n}: AdSpaceWithImageProps & {\n children?: React.ReactNode;\n}): JSX.Element => {\n const theme = useTheme();\n\n return (\n \n p.theme.mdBreakpoint}) {\n min-height: 320px;\n flex: 1 1 60%;\n }\n `}\n >\n \n \n \n \n \n \n \n \n {children}\n \n );\n};\n\nexport const AdSpace = ({\n created_at,\n heading,\n subheading,\n id,\n media,\n published_at,\n summary,\n updated_at,\n url,\n media_alt_tag,\n _request_date_UTC,\n button_text,\n object_position,\n children,\n ...rest\n}: StrapiPromo & {\n children?: React.ReactNode;\n}): JSX.Element => {\n if (media) {\n return (\n \n
\n

{heading}

\n {subheading && (\n

{subheading}

\n )}\n {summary &&

{summary}

}\n
\n \n {button_text || \"Read more\"}\n \n
\n
\n \n );\n }\n\n return (\n \n p.theme.mdBreakpoint}) {\n flex: 1 1 100%;\n text-align: center;\n }\n `}\n >\n
\n \n {heading}\n \n {subheading && (\n

{subheading}

\n )}\n {summary &&

{summary}

}\n
\n p.theme.mdBreakpoint}) {\n align-self: center;\n }\n `}\n className=\"btn btn-sm btn-outline-light\"\n to={url}\n >\n {button_text || \"Read more\"}\n \n
\n
\n \n
\n );\n};\n","import {\n Alert,\n AlertProps,\n Form,\n PageEnvelope,\n createPageEnvelopeResponseHandler,\n} from \"@skv/core\";\nimport { useState } from \"react\";\nimport { Modal, ModalProps } from \"react-bootstrap\";\nimport { useRouteMatch } from \"react-router-dom\";\nimport { useForm } from \"react-yup\";\nimport * as Yup from \"yup\";\n\nexport const EntityModal = (modalProps: ModalProps) => {\n const match = useRouteMatch<{ orgId: string | undefined }>(\n \"/:orgId?/organisations\"\n );\n const { params } = match;\n const { orgId } = params;\n\n const [entityAdded, setEntityAdded] = useState(false);\n const [alertStatus, setAlertStatus] = useState({\n show: false,\n variant: \"danger\",\n children: null,\n });\n\n const {\n field,\n values,\n errors,\n touched,\n FormProvider,\n createSubmitHandler,\n setSubmitting,\n isSubmitting,\n } = useForm({\n validationSchema: ENTITY_SCHEMA,\n });\n\n const handleValidSubmit = async (values: EntitySchemaType) => {\n const fetchUrl = orgId ? `/api/${orgId}/entity` : `/api/entity`;\n fetch(fetchUrl, {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n accept: \"application/json\",\n },\n body: JSON.stringify({\n name: values.name,\n }),\n })\n .then>(\n createPageEnvelopeResponseHandler({ values, fetchUrl })\n )\n .then((res) => {\n if (res.success) {\n setEntityAdded(true);\n modalProps.onHide();\n } else {\n let errorMsg: JSX.Element = null;\n switch (res.errorCode) {\n case \"error:agencyentitycreate:formvalidation\":\n const formErrors = Object.entries(res.data.formErrors);\n errorMsg = (\n <>\n There are errors in the form. Please resolve the following\n issues:\n
    \n {formErrors.map((n) => (\n
  • {n[1][0]}
  • \n ))}\n
\n \n );\n break;\n case \"error:agencyentitycreate:alreadyexists\":\n errorMsg = (\n <>{`${values.name} is already a member of your community.`}\n );\n break;\n case \"error:agencyentitycreate:notallowed\":\n errorMsg = <>Sorry, you are not allowed to create an entity.;\n break;\n case \"error:agencyentitycreate:agencynotfound\":\n default:\n errorMsg = <>Sorry, something wrong happened.;\n break;\n }\n\n setAlertStatus((prev) => ({\n ...prev,\n show: true,\n variant: \"danger\",\n children: errorMsg,\n }));\n }\n })\n .catch((err) => {\n console.log(\"ERROR\");\n console.log(err);\n\n setAlertStatus((prev) => ({\n ...prev,\n show: true,\n variant: \"danger\",\n children: <>Sorry, something wrong happened.,\n }));\n })\n .finally(() => {\n setSubmitting(false);\n });\n };\n\n const onClose = () => {\n modalProps.onHide();\n // window.location.reload();\n };\n\n return (\n \n \n
\n \n Create new managed organisation\n \n \n {entityAdded ? (\n \n The entity {values.name} has been added successfully!\n \n ) : (\n <>\n \n\n
\n A managed organisation is an organisation that your\n organisation manages on SEEK Volunteer. They typically don't\n have their own account and rely on you to recruit volunteers\n on their behalf.\n
\n\n
\n All fields marked with * are required\n
\n\n \n \n )}\n
\n \n {entityAdded ? (\n \n Close\n \n ) : (\n <>\n \n {isSubmitting && (\n \n )}\n Create\n \n \n )}\n \n
\n \n
\n );\n};\n\nconst ENTITY_SCHEMA = Yup.object({\n memberId: Yup.number().nullable(),\n supportingLinked: Yup.boolean().nullable(),\n name: Yup.string()\n .required()\n .min(3)\n .max(100)\n .label(\"Entity name\")\n .when(\"memberOrganisationId\", (value, schema) => {\n if (value) {\n return schema\n .required(\"Entity name is required.\")\n .typeError(\"Entity name is required.\");\n }\n return schema.nullable();\n }),\n}).defined();\n\ntype EntitySchemaType = Yup.InferType;\n\ninterface AgencyEntityFormModel {\n name: string;\n formErrors: {\n [key: string]: string[];\n };\n}\n","import { SvgSprite } from \"@skv/core/src/components\";\nimport { forwardRef } from \"react\";\n\ninterface SupportedOrganisationsProps {\n className?: string;\n children?: React.ReactNode;\n}\n\nexport const SupportedOrganisations = (() => {\n const SupportedOrganisations = forwardRef<\n HTMLDivElement,\n SupportedOrganisationsProps\n >((props, ref) => {\n return (\n
\n {props.children}\n
\n );\n });\n\n SupportedOrganisations.displayName = \"SupportedOrganisations\";\n\n type ContentProps = {\n requestConnectionUrl?: string;\n title?: string;\n className?: string;\n };\n\n return Object.assign(SupportedOrganisations, {\n MainContent: forwardRef((props, ref) => {\n return (\n
\n {props.title &&

{props.title}

}\n

\n A supported organisation has their own SEEK Volunteer account,\n connected to your Agency account.\n

\n

Once connected, you can:

\n
    \n
  • access their opportunities from your dashboard
  • \n
  • view a summary of their volunteer applications
  • \n
\n
\n );\n }),\n GetConnected: forwardRef((props, ref) => {\n return (\n
\n
\n
\n

Get connected

\n \n
\n

Share this link with your members:

\n \n {props.requestConnectionUrl?.replace(/(^\\w+:|^)\\/\\//, '')}\n \n
\n
\n );\n }),\n });\n})();\n","import * as React from \"react\";\nimport { AnalyticsData } from \"./Analytics\";\n// import { prettyLog } from \"./helpers\";\n\nexport interface AnalyticsProviderProps {\n division: \"vol\";\n country: \"nz\" | \"au\";\n site: \"skvnz\" | \"skvau\" | \"nswgov\";\n scriptSrc: string;\n}\n\ntype AnalyticsLinkNameTypes =\n | \"favourite-opportunity\"\n | \"favourite-organisation\"\n | \"remove-favourite-opportunity\"\n | \"remove-favourite-organisation\"\n | \"subscribe-to-new-opportunity-email\"\n | \"express-of-interest\"\n | \"survey-link-clicked\";\n\n// State context is immutable for now\ntype AnalyticsStateContext = AnalyticsProviderProps & {\n scriptLoaded: boolean;\n};\n\ninterface AnalyticsMethods {\n trackPageLink: (link: AnalyticsLinkNameTypes) => void;\n trackPageView: (data: AnalyticsData) => void;\n}\n\nconst AnalyticsContext = React.createContext(\n undefined\n);\n\nconst AnalyticsMethods = React.createContext(\n undefined\n);\n\ndeclare const global: {\n utag: any;\n analytics: any;\n};\n\nexport const AnalyticsProvider: React.FC = ({\n country,\n division,\n site,\n scriptSrc,\n children,\n}) => {\n if (!country || !division || !site) {\n throw Error(\n \"Analytics provider needs 'country', 'division', and 'site' props\"\n );\n }\n\n const queue = React.useRef([]);\n const [scriptLoaded, setScriptLoaded] = React.useState(false);\n\n /* methods */\n\n const trackPageLink = React.useCallback(\n (link: AnalyticsLinkNameTypes) => {\n if (global.utag && scriptLoaded) {\n global.analytics.linkName = link;\n global.utag.link(global.analytics);\n\n // if (process.env.NODE_ENV !== \"production\") {\n // prettyLog(\"link\", global.analytics);\n // }\n }\n },\n [scriptLoaded]\n );\n\n const trackPageView = React.useCallback(\n (data?: AnalyticsData): void => {\n if (global.utag && scriptLoaded) {\n global.analytics = Object.assign({}, { country, division, site }, data);\n global.utag.view(global.analytics);\n\n // if (process.env.NODE_ENV !== \"production\") {\n // prettyLog(\"page-view\", global.analytics);\n // }\n } else {\n //prettyLog(\"queuing\", data);\n queue.current = [...queue.current, data];\n }\n },\n [country, division, site, scriptLoaded]\n );\n\n React.useEffect(() => {\n // initialise default global.analytics object\n global.analytics = {\n country,\n division,\n site,\n };\n }, [country, division, site]);\n\n React.useEffect(() => {\n // load tracking script\n\n if (scriptSrc && typeof scriptSrc === \"string\") {\n const script = document.createElement(\"script\");\n script.src = scriptSrc;\n script.type = \"text/javascript\";\n script.async = true;\n script.onload = (): void => {\n setScriptLoaded(true);\n };\n\n const topScript = document.getElementsByTagName(\"script\")[0];\n topScript.parentNode.insertBefore(script, topScript);\n }\n }, [scriptSrc]);\n\n React.useEffect(() => {\n // process queue\n if (scriptLoaded) {\n queue.current.forEach((data) => trackPageView(data));\n queue.current = [];\n }\n }, [scriptLoaded, trackPageView]);\n\n return (\n \n \n {children}\n \n \n );\n};\n\nexport const useAnalyticsUtil = () => {\n const analyticsUtils = React.useContext(AnalyticsMethods);\n\n if (analyticsUtils === undefined) {\n throw Error(\"useAnalyticsUtil used outside an \");\n }\n\n return analyticsUtils;\n};\n","import {\n OpportunitySearchQueryState,\n OrganisationSearchQueryState,\n useGlobal,\n} from \"@skv/state\";\nimport * as React from \"react\";\n\nimport { useAnalyticsUtil } from \"./AnalyticsProvider\";\n\ntype InputMethods = \"auto-suggest\" | \"typed\";\nexport interface AnalyticsData {\n // main/search results\n subSection?: string;\n subSubSection?: string;\n subSubSubSection?: string;\n pageTitle?: string;\n pageType?: string;\n loginStatus?: \"loggedin\" | \"loggedout\";\n searchTerm?: string;\n searchTermInputMethod?: InputMethods;\n searchLocation?: string;\n searchLocationInputMethod?: InputMethods;\n searchLocationRadius?: string; // {distance}km\n searchCategory?: string;\n searchWorkType?: string;\n searchSuitability?: string;\n searchCommitment?: string;\n searchDayAndTime?: string;\n\n // opp/org\n organisationId?: number;\n opportunityId?: number;\n}\n\ninterface AnalyticsProps {\n data: AnalyticsData;\n}\n\nexport const Analytics: React.FC = ({ data }) => {\n const { trackPageView } = useAnalyticsUtil();\n\n if (!trackPageView) {\n throw Error(\n \" component used outside an . Did you forget to wrap your app with the AnalyticsProvider component?\"\n );\n }\n\n React.useEffect(() => {\n trackPageView(data);\n }, []);\n\n return null;\n};\n\ninterface AnalyticsSearchQueryProps {\n searchQuery: OpportunitySearchQueryState | OrganisationSearchQueryState;\n data?: AnalyticsData;\n delay?: number;\n}\n\n/**\n * AnalyticsSearchQuery relies on history.state for the searchQuery.\n * We are doing a history.push AFTER the FETCH:END method has completed,\n * therefore, our searchQuery will actually not be the correct searchQuery\n * when the searchResults has updated (as we have not pushed the new url and\n * searchQuery state yet). Without changing the logic for the searchQuery,\n * for now opt to delay the firing of the tracking event until the searchQuery\n * is stable, which should happen almost immediately, as it'll fire in the next\n * promise block.\n *\n * Side note, this also prevents quick successions of searchQuery changing and\n * firing tracking events (e.g, a user changing category sidebar filters quickly)\n * */\nexport const AnalyticsSearchQuery: React.FC = ({\n searchQuery,\n data,\n delay = 1000,\n}) => {\n const { trackPageView } = useAnalyticsUtil();\n\n const {\n categoryList,\n commitmentList,\n dayAndTimeList,\n suitableForList,\n typeOfWorkList,\n } = useGlobal();\n\n if (!trackPageView) {\n throw Error(\n \" component used outside an . Did you forget to wrap your app with the AnalyticsProvider component?\"\n );\n }\n\n React.useEffect(() => {\n const timeout = setTimeout(() => {\n const _data: AnalyticsData = Object.assign(\n {},\n {\n searchTerm: searchQuery.keyword || \"\",\n searchTermInputMethod: \"typed\", // todo : when category search is in, work on auto-suggest\n searchLocation: searchQuery.where || \"\",\n searchLocationInputMethod: \"typed\",\n searchLocationRadius: \"0km\", // todo : no radius search atm\n searchCategory: searchQuery.category\n .map((id) => categoryList.find((n) => n.id === id)?.name)\n .filter((n) => n != null)\n .join(\", \"),\n },\n data\n );\n\n if (\"typeofwork\" in searchQuery) {\n _data.searchWorkType = searchQuery.typeofwork\n .map((id) => typeOfWorkList.find((n) => n.id === id)?.name)\n .filter((n) => n != null)\n .join(\", \");\n }\n\n if (\"suitablefor\" in searchQuery) {\n _data.searchSuitability = searchQuery.suitablefor\n .map((id) => suitableForList.find((n) => n.id === id)?.name)\n .filter((n) => n != null)\n .join(\", \");\n }\n\n if (\"commitment\" in searchQuery) {\n _data.searchCommitment = searchQuery.commitment\n .map((id) => commitmentList.find((n) => n.id === id)?.name)\n .filter((n) => n != null)\n .join(\", \");\n }\n\n if (\"daytime\" in searchQuery) {\n _data.searchDayAndTime = searchQuery.daytime\n .map((id) => dayAndTimeList.find((n) => n.id === id)?.name)\n .filter((n) => n != null)\n .join(\", \");\n }\n\n trackPageView(_data);\n }, delay);\n\n return (): void => {\n clearTimeout(timeout);\n };\n }, [\n categoryList,\n commitmentList,\n data,\n dayAndTimeList,\n searchQuery,\n suitableForList,\n trackPageView,\n typeOfWorkList,\n delay,\n ]);\n\n return null;\n};\n","import * as React from \"react\";\nimport { AnalyticsProvider } from \"./AnalyticsProvider\";\nimport { Analytics } from \"./Analytics\";\nimport type { AnalyticsData } from \"./Analytics\";\nimport type { AnalyticsProviderProps } from \"./AnalyticsProvider\";\n\ninterface AnalyticsStaticProps extends AnalyticsData, AnalyticsProviderProps {}\n\nexport const AnalyticsStatic: React.FC = ({\n country,\n division,\n site,\n scriptSrc,\n ...rest\n}) => {\n return (\n \n \n \n );\n};\n","import * as React from \"react\";\nimport { SvgSprite } from \"../SvgSprite\";\n\nimport classNames from \"classnames\";\n\ninterface State {\n isFocused: boolean;\n activeIdx: number;\n}\n\nexport interface DateRangePickerSelectProps {\n id: string;\n label: string;\n selected: T;\n dataSource: T[];\n renderOption: (option: T, idx: number) => React.ReactNode;\n onSelect: (option: T, idx: number) => void;\n isActive: (option: T, idx: number) => boolean;\n innerRef?: React.MutableRefObject<{\n ul: HTMLUListElement;\n button: HTMLButtonElement;\n }>;\n \"aria-labelledby\": string;\n}\n\ntype ListItemProps = React.DetailedHTMLProps<\n React.LiHTMLAttributes,\n HTMLLIElement\n>;\n\ninterface ListOptionProps extends ListItemProps {\n active: boolean;\n}\n\nconst ListOption: React.FC = ({\n active,\n children,\n ...props\n}) => {\n const liRef = React.useRef(null);\n\n React.useEffect(() => {\n if (!active) {\n return;\n }\n\n if (liRef.current) {\n const parentNode = liRef.current.parentNode as HTMLUListElement;\n const currentNode = liRef.current;\n\n /* - delta */\n if (currentNode.offsetTop < parentNode.scrollTop) {\n // scrollIntoView with top aligned\n currentNode.scrollIntoView({ block: \"nearest\" });\n // parentNode.scrollTop = currentNode.offsetTop;\n }\n\n /* + delta */\n if (\n currentNode.offsetTop + currentNode.clientHeight >\n parentNode.scrollTop + parentNode.clientHeight\n ) {\n // scrollIntoView with bottom aligned\n currentNode.scrollIntoView({ block: \"nearest\" });\n }\n }\n }, [active]);\n\n return (\n
  • \n {children}\n
  • \n );\n};\n\nexport const DateRangePickerSelect = ({\n id,\n label,\n selected,\n dataSource,\n renderOption,\n onSelect,\n isActive,\n innerRef,\n \"aria-labelledby\": labeledBy,\n ...props\n}: DateRangePickerSelectProps): JSX.Element => {\n const ulRef = React.useRef(null);\n const buttonRef = React.useRef(null);\n\n React.useImperativeHandle(innerRef, () => ({\n ul: ulRef.current,\n button: buttonRef.current,\n }));\n\n const [state, setState] = React.useState(() => {\n return {\n isFocused: false,\n activeIdx: dataSource.findIndex(isActive),\n };\n });\n\n const handleBlur = (e: React.FocusEvent): void => {\n e.stopPropagation();\n\n if (e.currentTarget === e.target) {\n console.log(\"blur (self)\");\n setState((prev) => ({ ...prev, isFocused: false }));\n }\n if (!e.currentTarget.contains(e.relatedTarget as Node)) {\n console.log(\"focusleave\");\n setState((prev) => ({ ...prev, isFocused: false }));\n }\n };\n\n const handleUlKeyDown = (e: React.KeyboardEvent): void => {\n switch (e.key) {\n case \"Escape\": {\n setState((prev) => ({\n ...prev,\n isFocused: false,\n }));\n buttonRef.current.focus();\n break;\n }\n\n case \"ArrowUp\": {\n e.preventDefault();\n setState((prev) => {\n let nextActiveIdx = prev.activeIdx - 1;\n\n if (nextActiveIdx < 0) {\n nextActiveIdx = dataSource.length - 1;\n }\n\n return {\n ...prev,\n activeIdx: nextActiveIdx,\n };\n });\n break;\n }\n\n case \"ArrowDown\": {\n e.preventDefault();\n setState((prev) => {\n let nextActiveIdx = prev.activeIdx + 1;\n\n if (nextActiveIdx > dataSource.length - 1) {\n nextActiveIdx = 0;\n }\n\n return {\n ...prev,\n activeIdx: nextActiveIdx,\n };\n });\n break;\n }\n\n case \"Home\": {\n e.preventDefault();\n setState((prev) => ({\n ...prev,\n activeIdx: 0,\n }));\n break;\n }\n\n case \"End\": {\n e.preventDefault();\n setState((prev) => ({\n ...prev,\n activeIdx: dataSource.length - 1,\n }));\n break;\n }\n\n case \"Enter\": {\n e.preventDefault();\n setState((prev) => ({\n ...prev,\n isFocused: false,\n }));\n buttonRef.current.focus();\n break;\n }\n }\n };\n\n const onSelectRef = React.useRef(onSelect);\n\n React.useEffect(() => {\n onSelectRef.current = onSelect;\n });\n\n React.useEffect(() => {\n if (onSelectRef.current && dataSource) {\n onSelectRef.current(dataSource[state.activeIdx], state.activeIdx);\n }\n }, [dataSource, state.activeIdx]);\n\n React.useEffect(() => {\n if (state.isFocused) {\n ulRef.current.focus();\n }\n }, [state.isFocused]);\n\n const btnId = `${id}__toggle-btn`;\n\n return (\n
    \n {\n e.preventDefault();\n setState((prev) => ({\n ...prev,\n isFocused: true,\n }));\n\n ulRef.current.focus();\n }}\n onKeyDown={(e) => {\n const { key } = e;\n\n switch (key) {\n case \"ArrowUp\": {\n e.preventDefault();\n setState((prev) => {\n let nextActiveIdx = prev.activeIdx - 1;\n\n if (nextActiveIdx < 0) {\n nextActiveIdx = dataSource.length - 1;\n }\n\n return {\n ...prev,\n isFocused: true,\n activeIdx: nextActiveIdx,\n };\n });\n break;\n }\n\n case \"ArrowDown\": {\n e.preventDefault();\n setState((prev) => {\n let nextActiveIdx = prev.activeIdx + 1;\n\n if (nextActiveIdx > dataSource.length - 1) {\n nextActiveIdx = 0;\n }\n\n return {\n ...prev,\n isFocused: true,\n activeIdx: nextActiveIdx,\n };\n });\n break;\n }\n }\n }}\n >\n {label}{\" \"}\n p.theme.timingFnEaseOut};\n `}\n style={{\n transform: state.isFocused\n ? \"rotate3d(1, 0, 0, 180deg)\"\n : \"rotate3d(1, 0, 0, 0deg)\",\n }}\n />\n \n \n {dataSource.map((n, idx) => {\n return (\n {\n setState((prev) => ({\n ...prev,\n isFocused: false,\n activeIdx: idx,\n }));\n onSelect(n, idx);\n }}\n aria-selected={idx === state.activeIdx}\n active={idx === state.activeIdx}\n >\n {renderOption(n, idx)}\n \n );\n })}\n \n
    \n );\n};\n","import * as React from \"react\";\nimport {\n DateRangePickerSelect,\n DateRangePickerSelectProps,\n} from \"./DateRangePickerSelect\";\n\n// import styled from \"styled-components\";\n\nexport interface DateRangePickerHeaderProps {\n id: string;\n year: number;\n month: number;\n onMonthChange?: (month: number) => void;\n onYearChange?: (year: number) => void;\n innerRef?: React.MutableRefObject<{\n monthDropdown: DateRangePickerSelectProps[\"innerRef\"][\"current\"];\n yearDropdown: DateRangePickerSelectProps[\"innerRef\"][\"current\"];\n }>;\n}\n\nexport const MONTHS = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n];\n\nconst CURRENT_YEAR = new Date().getFullYear();\n\nconst YEARS = Array.from({ length: 20 }).map((n, idx) => {\n return CURRENT_YEAR - idx;\n});\n\nexport const DateRangePickerHeader: React.FC = ({\n id,\n year,\n month,\n onMonthChange,\n onYearChange,\n innerRef,\n}) => {\n const monthDropdownRef = React.useRef<\n DateRangePickerSelectProps[\"innerRef\"][\"current\"]\n >(null);\n\n const yearDropdownRef = React.useRef<\n DateRangePickerSelectProps[\"innerRef\"][\"current\"]\n >(null);\n\n React.useImperativeHandle(innerRef, () => ({\n monthDropdown: monthDropdownRef.current,\n yearDropdown: yearDropdownRef.current,\n }));\n\n return (\n
    \n \n {MONTHS[month]} {year}\n \n
    \n
    \n \n Select a month\n \n {\n onMonthChange(idx);\n }}\n dataSource={MONTHS}\n renderOption={(month) => month}\n isActive={(value, idx) => {\n return idx === month;\n }}\n aria-labelledby={`${id}-month-label`}\n />\n
    \n
    \n \n Select a year\n \n {\n onYearChange(_year);\n }}\n dataSource={YEARS}\n renderOption={(_year) => _year}\n isActive={(_year, idx) => {\n return _year === year;\n }}\n aria-labelledby={`${id}-year-label`}\n />\n
    \n
    \n
    \n );\n};\n","import * as React from \"react\";\nimport DayPicker, {\n DateUtils,\n DayPickerProps,\n RangeModifier,\n} from \"react-day-picker\";\nimport { createGlobalStyle } from \"styled-components\";\n\nimport {\n DateRangePickerHeader,\n DateRangePickerHeaderProps,\n} from \"./DateRangePickerHeader\";\n\nimport dayjs from \"dayjs\";\nimport { SvgSprite } from \"../SvgSprite\";\n\ntype FilteredDayPickerProps = Omit<\n DayPickerProps,\n \"onDayClick\" | \"modifiers\" | \"selectedDays\"\n>;\n\ninterface Preset {\n range: RangeModifier;\n label: React.ReactNode;\n}\n\nexport interface DateRangePickerProps extends FilteredDayPickerProps {\n id: string;\n\n onChange?: (range: RangeModifier) => void;\n\n from?: Date;\n to?: Date;\n\n innerRef?: React.MutableRefObject<{\n header: DateRangePickerHeaderProps[\"innerRef\"][\"current\"];\n }>;\n\n presets: Preset[];\n onPresetClick: (\n preset: Preset,\n event: React.MouseEvent\n ) => void;\n}\n\nexport const DateRangePicker: React.FC = ({\n id,\n onChange,\n onMonthChange,\n from,\n to,\n innerRef,\n presets,\n onPresetClick,\n ...props\n}) => {\n const [dayPickerStyles, setDayPickerStyles] = React.useState(undefined);\n\n React.useEffect(() => {\n setDayPickerStyles(import(\"react-day-picker/lib/style.css\"));\n }, []);\n\n const GlobalStyles = createGlobalStyle`\n ${dayPickerStyles}\n `;\n\n const [calendarState, setCalendarState] = React.useState(() => {\n return {\n date: from || new Date(),\n };\n });\n\n const modifiers = {\n start: from,\n end: to,\n };\n\n const headerRef =\n React.useRef(null);\n\n React.useImperativeHandle(innerRef, () => ({\n header: headerRef.current,\n }));\n\n return (\n <>\n \n {\n const newDate = dayjs(calendarState.date).set(\"M\", month).toDate();\n setCalendarState((prev) => ({\n ...prev,\n date: newDate,\n }));\n }}\n onYearChange={(year) => {\n const newDate = dayjs(calendarState.date).set(\"y\", year).toDate();\n setCalendarState((prev) => ({\n ...prev,\n date: newDate,\n }));\n }}\n />\n \n {\n const newDate = dayjs(calendarState.date).subtract(1, \"M\").toDate();\n setCalendarState((prev) => ({\n ...prev,\n date: newDate,\n }));\n }}\n aria-label=\"Previous month\"\n >\n \n \n {\n setCalendarState((prev) => ({\n ...prev,\n date: new Date(),\n }));\n }}\n >\n Today\n \n {\n const newDate = dayjs(calendarState.date).add(1, \"M\").toDate();\n setCalendarState((prev) => ({\n ...prev,\n date: newDate,\n }));\n }}\n aria-label=\"Next month\"\n >\n \n \n \n p.theme.linkColor};\n color: #f0f8ff;\n }\n\n .DayPicker-Day {\n border-radius: 0 !important;\n width: 2rem;\n height: 2rem;\n }\n\n .DayPicker-Day--today {\n color: initial;\n font-weight: normal;\n }\n\n .DayPicker-Day--today:not(.DayPicker-Day--selected) {\n position: relative;\n\n &:after {\n content: \"\";\n left: 0.25rem;\n right: 0.25rem;\n bottom: 0.25rem;\n position: absolute;\n border-bottom: 2px solid ${(p) => p.theme.primaryColor};\n }\n }\n `}\n numberOfMonths={1}\n month={calendarState.date}\n onMonthChange={(month) => {\n setCalendarState((prev) => ({\n ...prev,\n date: month,\n }));\n\n if (onMonthChange) {\n onMonthChange(month);\n }\n }}\n selectedDays={[\n from,\n {\n from,\n to,\n },\n ]}\n modifiers={modifiers}\n onDayClick={(...args): void => {\n const range = DateUtils.addDayToRange(args[0], {\n from: from,\n to: to,\n });\n\n if (range.to == null) {\n range.to = range.from;\n }\n\n if (onChange) {\n onChange(range);\n }\n }}\n captionElement={() => {\n return null;\n }}\n navbarElement={(props) => {\n return null;\n }}\n {...props}\n />\n\n
    \n {presets.map((preset, idx) => (\n {\n onPresetClick(preset, e);\n }}\n >\n {preset.label}\n \n ))}\n
    \n \n );\n};\n","import * as React from \"react\";\nimport { Dropdown, Form } from \"react-bootstrap\";\nimport { DropdownMenuProps } from \"react-bootstrap/DropdownMenu\";\nimport * as ReactDOM from \"react-dom\";\nimport { ApplicationStatus, ApplicationStatusKeyValue } from \"../types\";\nimport { ResultListPagination } from \"./ResultListPagination\";\nimport { SortByLink } from \"./SortByLink\";\n\ninterface ApplicationsTableProps {\n selectedOutcome: number | null;\n selected: number[];\n selectedAll: boolean;\n totalCount: number;\n totalPages: number;\n page: number;\n pageSize: number;\n dataSource: T[];\n renderRow: (row: T) => React.ReactNode;\n onSelectAllPage: (event: React.ChangeEvent) => void;\n onSelectAllResults: (\n event: React.MouseEvent\n ) => void;\n onOutcomeSubmit: (event: React.FormEvent) => void;\n onOutcomeChange: (\n outcome: ApplicationStatusKeyValue,\n event: React.ChangeEvent\n ) => void;\n isOutcomeSubmitting: boolean;\n}\n\ntype ReactFormElementProps = React.DetailedHTMLProps<\n React.FormHTMLAttributes,\n HTMLFormElement\n>;\n\ninterface PortalDropdownFormMenuProps\n extends Omit,\n ReactFormElementProps {\n onShow: () => void;\n onSubmit: (e: React.FormEvent) => void;\n}\n\n// todo : figure out props from react-bootstrap dropdown\n// todo : figure out form submission for application outcome\nconst PortalDropdownFormMenu = React.forwardRef<\n HTMLElement,\n PortalDropdownFormMenuProps\n>(\n (\n { children, show, alignRight, onShow, onSubmit, onSelect, as, ...props },\n ref\n ) => {\n const nodeRef = React.useRef(null);\n const onShowRef = React.useRef(onShow);\n\n React.useEffect(() => {\n onShowRef.current = onShow;\n });\n\n React.useEffect(() => {\n if (show && onShowRef.current) {\n onShowRef.current();\n }\n }, [show]);\n\n return ReactDOM.createPortal(\n {\n (ref as (instance: HTMLElement) => void)(_ref);\n nodeRef.current = _ref;\n }}\n className={props.className}\n style={props.style}\n aria-labelledby={props[\"aria-labelledby\"]}\n >\n {children}\n ,\n document.getElementById(\"portal\")\n );\n }\n);\n\nconst generateOutcomeLabel = (value: ApplicationStatus): string | undefined => {\n switch (value) {\n case ApplicationStatus.Pending:\n return \"Pending\";\n case ApplicationStatus.UnderReview:\n return \"Under review\";\n case ApplicationStatus.Accepted:\n return \"Accepted\";\n case ApplicationStatus.NotSuitable:\n return \"Not suitable\";\n case ApplicationStatus.UnableToContact:\n return \"Unable to contact\";\n }\n};\n\nconst OUTCOMES = Array.from({ length: 5 }).map((_, idx) => {\n return {\n id: idx,\n name: generateOutcomeLabel(idx),\n } as ApplicationStatusKeyValue;\n});\n\nexport const ApplicationsTable = ({\n totalCount,\n totalPages,\n page,\n pageSize,\n dataSource,\n renderRow,\n selected,\n selectedAll,\n onSelectAllPage,\n onSelectAllResults,\n selectedOutcome,\n onOutcomeSubmit,\n onOutcomeChange,\n isOutcomeSubmitting,\n}: ApplicationsTableProps): JSX.Element => {\n const selectAllRef = React.useRef(null);\n\n const selectedLength = selected.length;\n const dataSourceLength = dataSource.length;\n\n const outcomeElsRef = React.useRef([]);\n\n React.useEffect(() => {\n if (selectedLength === 0) {\n selectAllRef.current.indeterminate = false;\n return;\n }\n\n if (selectedLength !== dataSourceLength) {\n selectAllRef.current.indeterminate = true;\n } else {\n selectAllRef.current.indeterminate = false;\n }\n }, [selectedLength, dataSourceLength, selectedAll]);\n\n return (\n <>\n
    \n \n \n \n \n \n Source\n \n \n \n Date applied\n \n \n \n {/* Select all alert */}\n {selected.length === dataSourceLength && totalPages > 1 && (\n \n \n \n )}\n \n\n {dataSource.map(renderRow)}\n
    \n
    \n
    \n
    \n \n \n Select all\n \n
    \n
    \n\n
    \n \n \n Change outcome\n \n\n {\n outcomeElsRef.current[0].focus();\n }}\n className=\"text-nowrap shadow p-3\"\n onSubmit={onOutcomeSubmit}\n >\n \n Outcome\n
    \n
      \n {OUTCOMES.map((n, idx) => (\n
    • \n (outcomeElsRef.current[idx] = el)}\n className=\"font-weight-normal\"\n custom\n type={\"radio\"}\n id={`outcome-${n.id}`}\n name=\"outcome\"\n label={n.name}\n onChange={(e) => {\n onOutcomeChange(n, e);\n }}\n checked={n.id === selectedOutcome}\n />\n
    • \n ))}\n
    \n \n {isOutcomeSubmitting ? \"Saving...\" : \"Apply changes\"}\n \n \n \n
    \n \n
    \n {selectedAll ? (\n
    \n All {totalCount} applications for this\n query are selected.\n
    \n ) : (\n
    \n All {selected.length} applications on\n this page are selected.{\" \"}\n \n Select all {totalCount} pending\n applications\n \n .\n
    \n )}\n
    \n
    \n \n \n );\n};\n","import classNames from \"classnames\";\nimport * as React from \"react\";\nimport { Link, LinkProps } from \"react-router-dom\";\nimport { AspectRatio } from \"./AspectRatio\";\nimport { SvgSprite } from \"./SvgSprite\";\n\nimport { StrapiArticle } from \"../types\";\n\ninterface ArticleCardProps\n extends Pick {\n asAnchor?: AsAnchor;\n to: AsAnchor extends false ? LinkProps[\"to\"] : string;\n className?: string;\n wrapperClassName?: string;\n\n imgUrl1x?: string;\n imgUrl2x?: string;\n}\n\nexport const ArticleCard = (\n props: ArticleCardProps\n): JSX.Element => {\n const {\n title,\n summary,\n to,\n type,\n imgUrl1x,\n imgUrl2x,\n className,\n asAnchor,\n wrapperClassName = \"mb-5\",\n } = props;\n\n return (\n \n p.theme.mdBreakpoint}) {\n width: 280px;\n }\n `}\n className={classNames(\"card h-100\", className)}\n >\n {imgUrl1x && imgUrl2x && (\n
    \n \n \n \n \n \n \n {type === \"video\" && (\n \n Video\n \n )}\n
    \n )}\n\n
    \n

    {title}

    \n

    {summary}

    \n {asAnchor === true ? (\n \n {type === \"video\" ? \"Watch\" : \"Read\"}\n \n \n ) : (\n \n {type === \"video\" ? \"Watch\" : \"Read\"}\n \n \n )}\n
    \n \n \n );\n};\n\ntype ImgProps = React.DetailedHTMLProps<\n React.ImgHTMLAttributes,\n HTMLImageElement\n>;\n\ninterface ArticleFeaturedCardProps\n extends Omit, \"imgUrl1x\" | \"imgUrl2x\" | \"title\"> {\n headline: string;\n\n desktopImgUrl1x?: string;\n desktopImgUrl2x?: string;\n\n mobileImgUrl1x?: string;\n mobileImgUrl2x?: string;\n\n imgProps?: Omit;\n}\n\nexport const ArticleFeaturedCard = ({\n headline,\n summary,\n desktopImgUrl1x,\n desktopImgUrl2x,\n mobileImgUrl1x,\n mobileImgUrl2x,\n imgProps,\n to,\n asAnchor,\n wrapperClassName = \"mb-5\",\n}: ArticleFeaturedCardProps): JSX.Element => {\n const areImagesProvided = !!(\n desktopImgUrl1x &&\n desktopImgUrl2x &&\n mobileImgUrl1x &&\n mobileImgUrl2x\n );\n\n return (\n \n
    \n {areImagesProvided && (\n
    \n \n \n \n p.theme.lgBreakpoint}) {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n }\n `}\n src={mobileImgUrl2x}\n alt=\"\"\n {...imgProps}\n />\n \n
    \n )}\n \n
    \n

    {headline}

    \n

    {summary}

    \n {asAnchor === true ? (\n \n Read\n \n \n ) : (\n \n Read\n \n \n )}\n
    \n
    \n \n \n );\n};\n","import { SvgSprite } from \"./SvgSprite\";\n\nimport { Link } from \"react-router-dom\";\n\nexport const BrowserUpgradeNotification = (): JSX.Element => {\n return (\n p.theme.mdBreakpoint}) {\n bottom: 3rem;\n right: 3rem;\n width: 500px;\n }\n\n @supports (display: none) {\n display: none;\n visibility: hidden;\n }\n `}\n >\n \n\n

    Browser upgrade recommended

    \n

    \n It looks like you may be using a web browser version that we don't\n support. Make sure you're using the most recent version of your\n browser, or try using Microsoft Edge or Google Chrome, to get the full\n SEEK Volunteer experience.\n

    \n \n Learn more\n \n \n \n );\n};\n\nexport const BrowserUpgradeNotificationNsw = (): JSX.Element => {\n return (\n p.theme.mdBreakpoint}) {\n bottom: 3rem;\n right: 3rem;\n width: 500px;\n }\n\n @supports (display: none) {\n display: none;\n visibility: hidden;\n }\n `}\n >\n

    Browser upgrade recommended

    \n

    \n It looks like you may be using a web browser version that we don't\n support. Make sure you're using the most recent version of your\n browser, or try using Microsoft Edge or Google Chrome, to get the full\n experience.\n

    \n \n Learn more\n \n \n \n );\n};\n","import certsyProfileImg from \"@skv/assets/gfx/certsy-profile.svg\";\nimport { AspectRatio, SvgSprite } from \".\";\n\ninterface CertsyCtaProps {\n certsyHirerLandingUrl: string;\n}\n\nexport const CertsyCta = ({\n certsyHirerLandingUrl,\n}: CertsyCtaProps): JSX.Element => {\n return (\n \n
    \n \n \n \n
    \n\n p.theme.smBreakpoint}) {\n width: 70%;\n }\n @media (min-width: ${(p): string => p.theme.mdBreakpoint}) {\n width: 50%;\n }\n `}\n >\n

    Hassle-free compliance checks

    \n

    \n Get early access to a simple way to conduct compliance checks and\n credential management.\n

    \n \n Learn more\n \n \n p.theme.smBreakpoint}) {\n margin: 0;\n max-width: 50%;\n position: absolute;\n bottom: -15%;\n right: -5%;\n }\n `}\n >\n \n \n \n );\n};\n","import { Form } from \"@skv/core\";\nimport { useRef } from \"react\";\nimport { useForm } from \"react-yup\";\nimport * as Yup from \"yup\";\n\nexport const NewOrganisation = ({ agencyName, agencyId }) => {\n const formRef = useRef(null);\n const { field, FormProvider, createSubmitHandler } =\n useForm({\n validationSchema: ENTITY_SCHEMA,\n });\n\n const handleSubmit = createSubmitHandler((values) => {\n window.location.replace(\n \"/register?agencyId=\" +\n agencyId +\n \"&email=\" +\n encodeURIComponent(values.contactEmail)\n );\n });\n\n return (\n \n
    \n

    \n Great! You'll need to register your organisation to be connected\n with {agencyName}.\n

    \n\n \n\n \n \n
    \n );\n};\n\nconst ENTITY_SCHEMA = Yup.object({\n contactEmail: Yup.string()\n .nullable()\n .email(\"Email address is invalid\")\n .required(\"Email address is required\"),\n}).defined();\n\ntype EntitySchemaType = Yup.InferType;\n","import { useState } from \"react\";\n\nexport const CsvImportForm = () => {\n const [isSubmitting, setSubmitting] = useState(false);\n const [hasFiles, setHasFiles] = useState(false);\n\n const handleSubmit = () => setSubmitting(true);\n const handleChange = (e) => setHasFiles(!!e.target.files.length);\n\n return (\n
    \n \n
    \n \n \n
    \n \n Import CSV\n \n \n {isSubmitting && (\n
    \n
    \n
    \n Loading...\n
    \n
    \n Uploading file\n Please wait. Do not leave this page.\n You will be redirected automatically.\n
    \n )}\n
    \n );\n};\n","import { SvgSprite } from \"@skv/core\";\n\ninterface ExternalLinkProps\n extends React.AnchorHTMLAttributes {\n href: string;\n iconSize?: number | null;\n children: React.ReactNode;\n}\n\nexport const ExternalLink = ({\n children,\n iconSize = 12,\n ...rest\n}: ExternalLinkProps) => {\n return (\n \n {children}\n {iconSize ? (\n \n ) : (\n Opens in a new tab\n )}\n \n );\n};\n","import * as React from \"react\";\n\nimport styled, { css } from \"styled-components\";\n\nconst DlWrapper = styled.div`\n margin: 0 -0.5rem;\n`;\n\nconst Dl = styled.dl`\n display: table;\n width: 100%;\n margin-bottom: 0;\n`;\n\nconst DlDiv = styled.div`\n display: table-row;\n`;\n\nconst SharedDtDdStyles = css`\n display: table-cell;\n padding: 0.25rem 0.5rem;\n`;\n\nconst Dt = styled.dt.attrs({\n className: \"text-muted small\",\n})`\n ${SharedDtDdStyles}\n font-weight: normal;\n width: 1%;\n min-width: 120px;\n text-align: right;\n`;\n\nconst Dd = styled.dd`\n ${SharedDtDdStyles}\n`;\n\nconst InlineDt = styled.dt.attrs({\n className: \"small\",\n})`\n display: inline;\n &:after {\n content: \": \";\n }\n`;\n\nconst InlineDd = styled.dd.attrs({\n className: \"small\",\n})`\n display: inline;\n`;\n\ninterface DefinitionListItemProps {\n term: React.ReactNode;\n definition: React.ReactNode;\n}\n\nexport const DefinitionListTableItem: React.FC = ({\n term,\n definition,\n}) => {\n return (\n \n
    {term}
    \n
    {definition}
    \n
    \n );\n};\n\nexport const DefinitionListTable: React.FC<{}> = ({ children }) => {\n return (\n \n
    {children}
    \n
    \n );\n};\n\nexport const DefinitionListInlineItem: React.FC = ({\n term,\n definition,\n}) => {\n return (\n
    \n {term}\n {definition}\n
    \n );\n};\n\nexport const DefinitionListInline: React.FC<{}> = ({ children }) => {\n return
    {children}
    ;\n};\n","import * as React from \"react\";\nimport { Link, LinkProps, useRouteMatch, Route } from \"react-router-dom\";\n\nimport { Analytics, VolunteerSearchLink } from \"./\";\n\nimport { opportunityStore, useThunkDispatch } from \"@skv/state\";\n\ntype HtmlDivAttributes = React.DetailedHTMLProps<\n React.HTMLAttributes,\n HTMLDivElement\n>;\n\ntype ErrorLayoutProps = React.DetailedHTMLProps<\n React.HTMLAttributes,\n HTMLDivElement\n>;\n\nconst ErrorLayout: React.FC = ({\n children,\n className,\n ...rest\n}) => {\n return (\n
    \n {children}\n
    \n );\n};\n\ninterface DotNetReactRouterStaticContext {\n status?: number;\n}\n\ntype PropertiesOf = {\n [Key in keyof T]: T[Key];\n};\n\ntype WithErrorLayoutProps = {\n wrapperProps?: ErrorLayoutProps;\n} & PropertiesOf;\n\nconst withErrorLayout = (\n Component: React.ComponentType<\n Pick, Exclude>\n >,\n statusCode = 200\n): typeof WithErrorLayout => {\n const displayName = Component.displayName || \"Component\";\n\n const WithErrorLayout = (props: WithErrorLayoutProps): JSX.Element => {\n const { wrapperProps, ...rest } = props;\n\n return (\n <>\n \n \n \n {\n if (props.staticContext) {\n (props.staticContext as DotNetReactRouterStaticContext).status =\n statusCode;\n }\n return null;\n }}\n />\n \n );\n };\n\n WithErrorLayout.displayName = displayName;\n\n return WithErrorLayout;\n};\n\ninterface ErrorContactUsFragmentProps {\n contactUsTo?: string;\n}\n\nexport const Error404Fragment: React.FC = ({\n contactUsTo = \"/help-and-support/contact-us\",\n}) => {\n const isExternal = contactUsTo.slice(0, 4) === \"http\";\n\n return (\n <>\n

    \n This page is missing.{\" \"}\n \n 🤷‍\n \n

    \n

    We can’t find the page you were looking for.

    \n
      \n
    • Check the web address for typos.
    • \n
    • Go back to the previous page.
    • \n
    \n

    \n If you're still stuck, let us know by{\" \"}\n {isExternal ? (\n contacting us\n ) : (\n contacting us\n )}\n .\n

    \n \n );\n};\n\nexport const Error404FragmentWithAnalytics = () => {\n return (\n <>\n \n \n \n );\n};\n\nexport const Error404 = withErrorLayout(\n Error404FragmentWithAnalytics,\n 404\n);\n\nexport const Error500Fragment = ({\n contactUsTo = \"/help-and-support/contact-us\",\n}: ErrorContactUsFragmentProps): JSX.Element => {\n const isExternal = contactUsTo.slice(0, 4) === \"http\";\n\n return (\n <>\n

    \n Something went wrong...{\" \"}\n \n 😞\n \n

    \n

    We're not sure what happened, but one of these might help:

    \n
      \n
    • Go back to the previous page.
    • \n
    • Reload the page.
    • \n
    • Use a different browser or device.
    • \n
    \n

    \n If you're still stuck, let us know by{\" \"}\n {isExternal ? (\n contacting us\n ) : (\n contacting us\n )}\n .\n

    \n \n );\n};\n\nexport const Error500 = withErrorLayout(\n Error500Fragment,\n 500\n);\n\nexport const OrganisationDetails404Fragment = (): JSX.Element => {\n return (\n <>\n

    This organisation isn’t here.

    \n
    \n 🎣\n
    \n

    Sorry this organisation is no longer available.

    \n

    \n You can{\" \"}\n \n search for other organisations\n \n .\n

    \n \n );\n};\n\nexport const OrganisationDetails404 = withErrorLayout>(\n OrganisationDetails404Fragment,\n 404\n);\n\nexport const OpportunityDetails404Fragment = (): JSX.Element => {\n return (\n <>\n

    \n This opportunity has gone. 🚢\n

    \n

    Sorry this opportunity is no longer available.

    \n

    \n You can{\" \"}\n \n search for current opportunities\n \n .\n

    \n \n );\n};\n\nexport const OpportunityDetails404 = withErrorLayout(\n OpportunityDetails404Fragment,\n 404\n);\n\nexport const ErrorEoiLimitReachedFragment = (): JSX.Element => {\n return (\n
    \n
    \n

    \n You’ve applied for too many applications.{\" \"}\n \n ✋\n \n

    \n\n

    \n To help our community organisations manage the volume applications, we\n limit the number of applications you can make in a day.\n

    \n

    Please come back tomorrow.

    \n
    \n
    \n );\n};\n\ninterface ErrorEoiAppliedFragmentProps {\n organisationTo: LinkProps[\"to\"];\n organisationName: React.ReactNode;\n}\n\nexport const ErrorEoiAppliedFragment: React.FC =\n ({ organisationTo, organisationName }) => {\n return (\n <>\n

    \n You’ve already applied.{\" \"}\n \n ✋\n \n

    \n\n

    \n Thanks for your application.\n
    \n To get an update on your application you can contact{\" \"}\n {organisationName} directly.\n

    \n \n );\n };\n\nexport const ErrorEoiApplied = (): JSX.Element => {\n const match = useRouteMatch<{\n id: string;\n }>();\n\n const { data } = opportunityStore.hooks.useOpportunity(match.params.id);\n\n const { organisation } = data || {};\n\n const dispatch = useThunkDispatch();\n\n React.useEffect(() => {\n return (): void => {\n dispatch({\n type: \"OPPORTUNITY:ERROR:RESET\",\n });\n };\n }, [dispatch]);\n\n return (\n \n \n \n );\n};\n\nexport const ErrorEoiLimitReached = (): JSX.Element => {\n const dispatch = useThunkDispatch();\n\n React.useEffect(() => {\n return (): void => {\n dispatch({\n type: \"OPPORTUNITY:ERROR:RESET\",\n });\n };\n }, [dispatch]);\n\n return (\n \n \n \n );\n};\n","import * as React from \"react\";\nimport { useLocation } from \"react-router-dom\";\n\nimport { Error500 } from \"./Errors\";\n\ninterface ErrorBoundaryState {\n hasError: boolean;\n}\n\nconst usePrevious = (value: T): T => {\n const ref = React.useRef();\n\n React.useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n};\n\ninterface LocationErrorResetProps {\n resetError: () => void;\n hasError: boolean;\n}\n\nconst LocationErrorReset: React.FC = ({\n resetError,\n hasError,\n}) => {\n const location = useLocation();\n const prevHasError = usePrevious(hasError);\n\n React.useEffect(() => {\n if (prevHasError) {\n resetError();\n }\n }, [location, prevHasError, resetError]);\n\n return null;\n};\n\nexport class ErrorBoundary extends React.Component<{}, ErrorBoundaryState> {\n constructor(props) {\n super(props);\n this.state = { hasError: false };\n\n this.resetError = this.resetError.bind(this);\n }\n\n resetError(): void {\n this.setState({\n hasError: false,\n });\n }\n\n static getDerivedStateFromError(error): ErrorBoundaryState {\n console.log(error);\n // Update state so the next render will show the fallback UI.\n return { hasError: true };\n }\n\n componentDidCatch(error, errorInfo): void {\n console.log(error);\n // You can also log the error to an error reporting service\n // logErrorToMyService(error, errorInfo);\n }\n\n render(): React.ReactNode {\n const { children } = this.props;\n\n return (\n <>\n \n {this.state.hasError ? : children}\n \n );\n }\n}\n","import dayjs from \"dayjs\";\n\ninterface EventBadgeProps {\n date: string;\n}\n\nexport const EventBadge = (props: EventBadgeProps) => {\n const now = new Date();\n const nowDate = `${now.getFullYear()}-${now.getMonth() + 1}-${now.getDate()}`;\n const daysToGo = dayjs(props.date).diff(nowDate, \"days\");\n\n let badgeContent: string;\n const badgeClass: string[] = [\"badge-event\"];\n\n switch (true) {\n case daysToGo < 0:\n badgeContent = \"Past event\";\n break;\n case daysToGo <= 7:\n badgeContent = \"Within 7 days\";\n badgeClass.push(\"badge-tertiary\");\n break;\n case daysToGo <= 30:\n badgeContent = \"Within a month\";\n badgeClass.push(\"badge-primary\");\n break;\n default:\n badgeContent = \"Over four weeks away\";\n badgeClass.push(\"badge-danger\");\n break;\n }\n\n if (badgeContent === \"Past event\") {\n return null;\n }\n\n return {badgeContent};\n};\n","import type { FriendlyKeyValueUrl, KeyValue, PageEnvelope } from \"@skv/core\";\nimport {\n EventBadge,\n EventCarousel,\n ResultMetaList,\n ResultMetaListItem,\n} from \"@skv/core\";\nimport { getDateRange, resizeImg } from \"@skv/util\";\nimport { format } from \"date-fns\";\nimport { useEffect, useState } from \"react\";\nimport { Dropdown } from \"react-bootstrap\";\n\ntype EventsViewModel = {\n events: EventData[];\n oneOffOpportunitiesUrl: string;\n eventOpportunitiesUrl: string;\n states: FriendlyKeyValueUrl[];\n};\n\ntype EventData = {\n id: number;\n name: string;\n startDate: string;\n endDate: string;\n location: string;\n friendlyName: string;\n url: string;\n organisationName: string;\n organisationLogoUrl: string | null;\n};\n\ninterface EventDiscoverySliderProps {\n country: \"Australia\" | \"New Zealand\";\n}\n\nasync function fetchCarouselData(stateId?: number) {\n const location = stateId ? `stateId=${stateId}&` : \"\";\n const date = format(new Date(), \"yyyy-MM-dd\");\n return await fetch(`/volunteering/events?${location}date=${date}`)\n .then>((res) => {\n if (res.ok) {\n return res.json();\n }\n throw new Error(\"Server Error\");\n })\n .then(({ data }) => data);\n}\n\nexport const EventDiscoverySlider = (props: EventDiscoverySliderProps) => {\n const [selectedState, setSelectedState] = useState();\n const [data, setData] = useState({\n events: [],\n oneOffOpportunitiesUrl: \"\",\n eventOpportunitiesUrl: \"\",\n states: [],\n });\n\n useEffect(() => {\n const getData = async () => {\n const res = await fetchCarouselData(selectedState?.id);\n setData(res);\n };\n\n getData();\n }, [selectedState]);\n\n const handleLocationChange = async (stateId?: number) => {\n if (stateId !== selectedState?.id) {\n setSelectedState(() => data.states.find((s) => s.id === stateId));\n }\n };\n\n if (data.events.length < 4 && !selectedState) {\n // Less than 4 events country wide => hide the carousel\n return null;\n }\n\n return (\n
    \n
    \n
    \n

    Get started

    \n Find an event in your local community\n
    \n
    \n \n Location\n \n\n \n
    \n
    \n {data.events.length > 0 ? (\n
    \n \n {data.events.map((item, idx) => (\n \n ))}\n \n
    \n \n Browse allevents\n \n
    \n
    \n ) : (\n selectedState && (\n \n )\n )}\n
    \n );\n};\n\nconst CarouselItem = ({ item }: { item: EventData }) => {\n return (\n
    \n e.stopPropagation()}\n >\n
    \n

    \n \n {item.name}\n \n

    \n {item.organisationName}\n
    \n \n
    \n
    \n \n \n {item.location}\n \n {item.startDate && (\n \n {getDateRange(item.startDate, item.endDate)}\n \n )}\n \n
    \n
    \n {item.organisationLogoUrl && (\n
    \n \n
    \n )}\n
    \n \n );\n};\n\ninterface NoEventsInStateProps {\n state: FriendlyKeyValueUrl;\n oneOffOpportunitiesUrl: string;\n}\n\nconst NoEventsInState = (props: NoEventsInStateProps) => {\n return (\n
    \n

    No upcoming events in the {props.state.name}

    \n

    \n Sorry, there are no upcoming events listed at the moment.\n
    \n Maybe try one of the following...\n

    \n \n
    \n );\n};\n\ninterface LocationDropdownProps extends EventDiscoverySliderProps {\n selectedState: KeyValue | undefined;\n onChange: (stateId?: number) => void;\n stateList: FriendlyKeyValueUrl[];\n}\n\nconst LocationDropdown = (props: LocationDropdownProps) => {\n return (\n \n \n {props.selectedState?.name || props.country}\n \n\n \n props.onChange()}\n >\n {props.country}\n \n {props.stateList.map(({ id, name }) => (\n props.onChange(id)}\n >\n {name}\n \n ))}\n \n \n );\n};\n","import * as React from \"react\";\n\nimport styled from \"styled-components\";\nimport { SvgSprite } from \"./SvgSprite\";\nimport { timingFunctions } from \"polished\";\n\nconst StyledSvgSprite = styled(SvgSprite)`\n transition: transform 0.2s ${timingFunctions(\"easeOutCubic\")};\n`;\n\ninterface FaceCtaProps {\n content: string;\n href: string;\n linkText: string;\n className?: string;\n}\n\nexport const FaceCta: React.FC = ({\n content,\n href,\n linkText,\n className,\n}) => {\n return (\n p.theme.infoColor};\n border-top-right-radius: 55px 50%;\n border-bottom-right-radius: 55px 50%;\n padding: 1rem;\n display: flex;\n align-items: center;\n position: relative;\n `}\n className={className}\n >\n \n

    {content}

    \n \n {linkText}\n \n \n \n\n \n p.theme.infoColor};\n `}\n />\n \n \n );\n};\n","import { easeExpOut } from \"d3-ease\";\nimport * as React from \"react\";\nimport styled, { keyframes } from \"styled-components\";\n\nimport classNames from \"classnames\";\n\nimport { animated, ForwardedProps, useTrail } from \"react-spring\";\n\nimport { useSelector } from \"react-redux\";\n\nimport { useAnalyticsUtil } from \"../\";\n\nimport { favouritesStore, useThunkDispatch } from \"@skv/state\";\nimport { FAVOURITES_ENUM } from \"@skv/state/src/state/favourites\";\n\nconst HoverAnimation = keyframes`\n 0% {\n transform: rotate(0deg) scale(1);\n }\n\n 100% {\n transform: rotate(0deg) scale(1.2);\n }\n`;\n\nconst ShakeAnimation = keyframes`\n 0% {\n transform: rotate(-10deg) scale(0.9);\n }\n\n 100% {\n transform: rotate(10deg) scale(0.9);\n }\n`;\n\nconst PopShrinkAnimation = keyframes`\n 0% {\n transform: rotate(0deg) scale(1.4);\n }\n\n 100% {\n transform: rotate(0deg) scale(1);\n }\n`;\n\nconst StyledFavBtn = styled.button`\n .heartSvg {\n transition: all 0.2s ${(p): string => p.theme.timingFnEaseOut};\n }\n\n &.mousedown {\n .heartSvg > path {\n fill: ${(p): string => p.theme.dangerColor};\n }\n }\n\n &.mouseup {\n .heartSvg {\n animation: ${PopShrinkAnimation} 0.5s\n ${(p): string => p.theme.timingFnEaseOut};\n }\n &:hover {\n .heartSvg {\n animation: ${PopShrinkAnimation} 0.5s\n ${(p): string => p.theme.timingFnEaseOut};\n }\n }\n }\n\n &:hover {\n .heartSvg {\n animation: ${HoverAnimation} 0.3s\n ${(p): string => p.theme.timingFnEaseOut} forwards;\n }\n }\n\n &:active {\n .heartSvg {\n animation: ${ShakeAnimation} 0.1s ease-in-out infinite alternate !important;\n }\n }\n`;\n\nconst StyledFavInner = styled.span<{\n $isFavourited: boolean;\n}>`\n position: relative;\n font-weight: 400;\n pointer-events: none;\n\n color: ${(p) => p.theme.dangerColor};\n\n .heartSvg > path {\n fill: ${(p) => (p.$isFavourited ? p.theme.dangerColor : \"transparent\")};\n }\n\n &:hover {\n .heartSvg > path {\n fill: ${(p) => (p.$isFavourited ? p.theme.dangerColor : \"transparent\")};\n }\n }\n`;\n\nconst HeartSvg = styled(animated.svg)`\n position: absolute;\n top: 0;\n left: 0;\n`;\n\nconst heartPath = (\n \n);\n\nexport interface BaseFavouriteBtnProps {\n animationDuration?: number;\n type: FAVOURITES_ENUM;\n isFavourited: boolean;\n onFavourite: () => void;\n onUnfavourite: () => void;\n}\n\ntype AnimationTrail = ForwardedProps<{\n config: {\n duration: number;\n easing: (t: number) => number;\n };\n opacity: 0 | 1;\n y: number;\n}>[];\n\nexport const BaseFavouriteBtn = ({\n animationDuration = 800,\n type,\n isFavourited,\n onFavourite,\n onUnfavourite,\n}: BaseFavouriteBtnProps) => {\n const animationRef = React.useRef(null);\n\n const [isAnimating, setIsAnimating] = React.useState(false);\n const [mouseDown, setMouseDown] = React.useState(false);\n const [mouseUp, setMouseUp] = React.useState(false);\n\n const trail: AnimationTrail = useTrail(3, {\n config: {\n duration: animationDuration,\n easing: easeExpOut,\n },\n opacity: isAnimating ? 0 : 1,\n y: isAnimating ? 1 : 0,\n });\n\n const handleMouseDown = () => setMouseDown(true);\n const handleMouseUp = () => setMouseDown(false);\n const handleMouseOut = () => {\n if (mouseDown) {\n setMouseDown(false);\n }\n };\n\n const handleToggleFavourite = React.useCallback(() => {\n if (isFavourited) {\n onUnfavourite();\n return;\n }\n\n onFavourite();\n\n if (isAnimating) {\n clearTimeout(animationRef.current);\n }\n\n setMouseUp(true);\n setIsAnimating(true);\n\n animationRef.current = setTimeout(() => {\n setIsAnimating(false);\n setMouseUp(false);\n }, animationDuration);\n }, [\n animationDuration,\n isAnimating,\n isFavourited,\n onFavourite,\n onUnfavourite,\n ]);\n\n const BtnInner = () => {\n return (\n \n {/* Animating hearts you see on click */}\n {isAnimating && }\n\n {/* Svg Heart icon */}\n \n {heartPath}\n \n\n {/* Text for the favourites button */}\n {type === FAVOURITES_ENUM.OPPORTUNITY ? (\n Favourite opportunity\n ) : (\n Favourite organisation\n )}\n \n );\n };\n\n return (\n \n \n \n );\n};\n\n// Container Favourites Btn\n\nexport interface FavouriteBtnProps {\n id: number;\n type: FAVOURITES_ENUM;\n onFavourite?: (isFavourited: boolean) => void;\n}\n\nexport const FavouriteBtn = ({ id, type, onFavourite }: FavouriteBtnProps) => {\n const dispatch = useThunkDispatch();\n const onFavouriteRef = React.useRef(onFavourite);\n const { trackPageLink } = useAnalyticsUtil();\n\n const isFavourited = useSelector(\n favouritesStore.selectors.isFavourite(id, type)\n );\n\n React.useEffect(() => {\n onFavouriteRef.current = onFavourite;\n });\n\n const handleFavourite = React.useCallback(() => {\n dispatch(favouritesStore.actions.addFavourite(id, type));\n\n trackPageLink(\n type === FAVOURITES_ENUM.OPPORTUNITY\n ? \"favourite-opportunity\"\n : \"favourite-organisation\"\n );\n\n if (onFavouriteRef.current) {\n onFavouriteRef.current(true);\n }\n }, [dispatch, id, trackPageLink, type]);\n\n const handleUnfavourite = React.useCallback(() => {\n dispatch(favouritesStore.actions.removeFavourite(id, type));\n trackPageLink(\n type === FAVOURITES_ENUM.OPPORTUNITY\n ? \"remove-favourite-opportunity\"\n : \"remove-favourite-organisation\"\n );\n\n if (onFavouriteRef.current) {\n onFavouriteRef.current(false);\n }\n }, [dispatch, id, trackPageLink, type]);\n\n return (\n \n );\n};\n\ninterface BtnAnimationProps {\n animationTrail: AnimationTrail;\n}\n\nconst BtnAnimation = (props: BtnAnimationProps) => {\n const seed1 = Math.random();\n const seed2 = Math.random();\n const seed3 = Math.random();\n\n return (\n p.theme.dangerColor};\n top: 0;\n left: 0;\n display: inline-block;\n `}\n >\n {props.animationTrail.map(({ y, ...rest }, idx) => (\n \n `translate3d(${\n idx !== 0\n ? y * Math.ceil(seed1 * 5 + 10) * (idx % 2 ? -1 : 1)\n : 0\n }px , -${idx !== 0 ? y * 20 : y * 30}px, 0) scale(${\n 0.2 + y * 0.8\n }) rotate(${\n idx !== 0\n ? 45 - Math.ceil((idx === 1 ? seed2 : seed3) * 90)\n : 0\n }deg)`\n ),\n }}\n width={18}\n height={16}\n aria-hidden\n >\n {heartPath}\n \n ))}\n \n );\n};\n","import { RootState } from \"../\";\nimport { FAVOURITES_ENUM } from \"./types\";\n\nexport function isFavourite(id: number, type: FAVOURITES_ENUM) {\n return (state: RootState): boolean => {\n const listName =\n type === FAVOURITES_ENUM.OPPORTUNITY ? \"opportunities\" : \"organisations\";\n\n return Object.keys(state.favourites[listName]).includes(`${id}`);\n };\n}\n","import * as React from \"react\";\nimport { Collapse } from \"react-bootstrap\";\nimport { SvgSprite } from \"./SvgSprite\";\n\ninterface FooterProps {\n copyright: string;\n featuredCategories?: React.ReactNode;\n hiddenCategories?: React.ReactNode;\n featuredCities?: React.ReactNode;\n socialMedia: React.ReactNode;\n volunteersSection: React.ReactNode;\n organisationsSection: React.ReactNode;\n legalSection: React.ReactNode;\n acknowledgementOfCountry?: React.ReactNode;\n showQuickSearch?: boolean;\n}\n\nexport const Footer: React.FC = ({\n copyright,\n featuredCategories,\n hiddenCategories,\n featuredCities,\n socialMedia,\n volunteersSection,\n organisationsSection,\n legalSection,\n acknowledgementOfCountry,\n showQuickSearch = true,\n}) => {\n const [categoriesExpanded, setCategoriesExpanded] = React.useState(false);\n\n const toggleExpandCategories = React.useCallback((e): void => {\n e.preventDefault();\n setCategoriesExpanded((state) => !state);\n }, []);\n\n return (\n
    \n
    \n {/* Quick Search */}\n {showQuickSearch === true && (\n
    \n

    Quick Search

    \n
      \n {typeof hiddenCategories !== \"undefined\" &&\n typeof featuredCategories !== \"undefined\" && (\n
    • \n

      Categories

      \n
        \n {featuredCategories}\n
      • \n \n View all\n p.theme.timingFnEaseOut};\n `}\n style={{\n transform: categoriesExpanded\n ? \"rotate3d(1,0,0,180deg)\"\n : \"rotate3d(0,0,0,0deg)\",\n }}\n />\n \n
      • \n
      \n {/* View all categories */}\n \n
      \n p.theme.timingFnEaseOut};\n `}\n >\n {hiddenCategories}\n
    \n
    \n \n \n )}\n {typeof featuredCities !== \"undefined\" && (\n
  • \n

    Major Cities

    \n
      {featuredCities}
    \n
  • \n )}\n \n \n )}\n
    \n
    \n
    \n
    \n
    \n

    SEEK Volunteer

    \n
      {volunteersSection}
    \n
    \n
    \n
    \n
    \n

    Organisations

    \n
      \n {organisationsSection}\n
    \n
    \n
    \n
    \n
    \n

    Social Media

    \n
      {socialMedia}
    \n
    \n
    \n
    \n
    \n
    \n\n {acknowledgementOfCountry}\n\n
    \n
    \n
    \n
      \n {legalSection}\n
    \n
    \n
    \n\n
    © {copyright}
    \n
    \n \n
    \n );\n};\n","import * as React from \"react\";\nimport classNames from \"classnames\";\n\nexport interface HelpTextProps {\n helpId: string;\n helpText: React.ReactNode;\n className?: React.HTMLAttributes[\"className\"];\n}\n\nexport const HelpText: React.FC = ({\n helpId,\n helpText,\n className,\n}) => {\n return (\n \n {helpText}\n \n );\n};\n","import classNames from \"classnames\";\n\nimport { SvgSprite } from \"../SvgSprite\";\n\ninterface FormValidationErrorProps {\n errorId: string;\n message: React.ReactNode;\n className?: string;\n}\n\nexport const ValidationError: React.FC = ({\n errorId,\n message,\n className,\n}) => {\n return (\n \n \n {message}\n \n );\n};\n","import * as React from \"react\";\nimport { useFormBag } from \"react-yup\";\nimport { HelpText, HelpTextProps } from \"./HelpText\";\nimport { ValidationError } from \"./ValidationError\";\n\nimport classNames from \"classnames\";\n\ninterface FieldsetProps {\n legend: React.ReactNode;\n optional?: boolean;\n helpText?: HelpTextProps[\"helpText\"];\n data: {\n name: string;\n id: number;\n }[];\n name: string;\n type: \"radio\" | \"checkbox\";\n disabled?: boolean;\n}\n\nexport const Legend: React.FC<\n React.DetailedHTMLProps<\n React.HTMLAttributes,\n HTMLLegendElement\n >\n> = ({ children, ...rest }) => {\n return (\n \n {children}\n \n );\n};\n\nexport const Fieldset: React.FC = ({\n legend,\n helpText,\n optional,\n name,\n data,\n type,\n disabled = false,\n}) => {\n const { isTouched, getError, isChecked, field } = useFormBag();\n\n const touched = isTouched(name);\n const error = getError(name);\n\n return (\n \n \n {legend}{\" \"}\n {optional ? (optional) : \"*\"}\n \n {helpText && (\n \n )}\n {error && touched && (\n \n )}\n p.theme.smBreakpoint}) {\n column-count: 2;\n }\n `}\n >\n {data.map((n) => (\n
    \n \n \n {n.name}\n \n
    \n ))}\n \n \n );\n};\n\ninterface FieldsetFlexColumnsProps extends Omit {\n data: {\n name: string;\n id: number;\n }[][];\n}\n\nexport const FieldsetFlexColumns: React.FC = ({\n legend,\n helpText,\n optional,\n name,\n data,\n type,\n disabled = false,\n}) => {\n const { isTouched, getError, isChecked, field } = useFormBag();\n\n const touched = isTouched(name);\n const error = getError(name);\n\n return (\n \n \n {legend} {optional && (optional)}\n \n {helpText && (\n \n )}\n {error && touched && (\n \n )}\n
    \n {data.map((col, idx) => (\n \n {col.map((n) => (\n
    \n \n \n {n.name}\n \n
    \n ))}\n
    \n ))}\n \n \n );\n};\n","import classNames from \"classnames\";\nimport dayjs from \"dayjs\";\nimport * as React from \"react\";\nimport { Legend } from \"./Fieldset\";\nimport { HelpText, HelpTextProps } from \"./HelpText\";\nimport { ValidationError } from \"./ValidationError\";\n\n// const CURRENT_DATE = new Date();\nconst CURRENT_DATE = dayjs();\nconst MONTHS = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n];\n\nconst DAYS = Array.from(Array(31).keys()).map((v) => v + 1);\n\ninterface DateFieldProps {\n id: string;\n name: string;\n label: string;\n optional?: boolean;\n helpText?: HelpTextProps[\"helpText\"];\n value: string;\n error?: string;\n touched?: boolean;\n onChange: (date: dayjs.Dayjs) => void;\n onBlur: (e: React.FocusEvent) => void;\n previousDate?: dayjs.Dayjs | null;\n maxDate: dayjs.Dayjs;\n disabled?: boolean;\n}\n\ntype DateFieldForwardedRef = null | {\n fieldsetRef: HTMLFieldSetElement;\n dayInputRef: HTMLSelectElement;\n monthInputRef: HTMLSelectElement;\n yearInputRef: HTMLSelectElement;\n};\n\nexport const DateField = React.forwardRef<\n DateFieldForwardedRef,\n DateFieldProps\n>(\n (\n {\n id,\n name,\n value,\n error,\n touched,\n optional,\n helpText,\n maxDate,\n onChange,\n onBlur,\n label,\n previousDate,\n disabled = false,\n },\n ref\n ) => {\n const fieldSetRef = React.useRef(null);\n const dayInputRef = React.useRef(null);\n const monthInputRef = React.useRef(null);\n const yearInputRef = React.useRef(null);\n\n React.useImperativeHandle(ref, () => ({\n fieldsetRef: fieldSetRef.current,\n dayInputRef: dayInputRef.current,\n monthInputRef: monthInputRef.current,\n yearInputRef: yearInputRef.current,\n }));\n\n const $onChange = React.useRef(onChange);\n const [date, setDate] = React.useState(() => {\n if (value) {\n return dayjs(value);\n }\n\n if (value === null) {\n return null;\n }\n\n return dayjs();\n });\n\n const { day, month, year, isoDate } = React.useMemo(() => {\n if (date === null) {\n return {\n day: 0,\n month: -1,\n year: 0,\n isoDate: \"\",\n };\n }\n\n return {\n day: date.date(),\n month: date.month(),\n year: date.year(),\n isoDate: date.toISOString(),\n };\n }, [date]);\n\n const handleDayChange = (e) => {\n const value = parseInt(e.target.value, 10);\n const _date = date || dayjs();\n\n setDate(value ? _date.set(\"date\", value) : null);\n };\n\n const handleMonthChange = (e) => {\n const value = parseInt(e.target.value, 10);\n const _date = date || dayjs();\n\n // Note: January is month 0, so -1 is the value for no month selected\n setDate(value >= 0 ? _date.set(\"month\", value) : null);\n };\n\n const handleYearChange = (e) => {\n const value = parseInt(e.target.value, 10);\n const _date = date || dayjs();\n\n setDate(value ? _date.set(\"year\", value) : null);\n };\n\n React.useEffect(() => {\n $onChange.current(date);\n }, [date, $onChange]);\n\n /* Note - Previous year is used for Dates in previous years so it doesn't\n * default to the first item in the dropdown (i.e. the current year)\n */\n const previousYear =\n previousDate && previousDate.year() < CURRENT_DATE.year()\n ? previousDate.year()\n : null;\n const yearsList = Array.from(\n { length: maxDate.year() - CURRENT_DATE.year() + 1 },\n (_, idx) => CURRENT_DATE.year() + idx\n );\n\n return (\n x != null)\n .join(\" \")}\n >\n \n {label ?? \"Expiry date\"}{\" \"}\n {optional ? (optional) : \"*\"}\n \n {helpText && (\n \n )}\n {error && touched && (\n \n )}\n
    \n
    \n \n x != null)\n .join(\" \")}\n >\n {optional && }\n {DAYS.map((v) => (\n \n ))}\n \n
    \n\n
    \n \n x != null)\n .join(\" \")}\n >\n {optional && }\n {MONTHS.map((month, idx) => (\n \n ))}\n \n
    \n\n
    \n \n\n x != null)\n .join(\" \")}\n >\n {optional && }\n {previousYear && (\n \n )}\n {yearsList.map((year) => (\n \n ))}\n \n
    \n \n
    \n \n );\n }\n);\n","import classNames from \"classnames\";\nimport * as React from \"react\";\nimport { useFormBag } from \"react-yup\";\nimport { HelpText, HelpTextProps } from \"./HelpText\";\nimport { ValidationError } from \"./ValidationError\";\n\ntype LabelProps = React.DetailedHTMLProps<\n React.LabelHTMLAttributes,\n HTMLLabelElement\n>;\n\ninterface BaseFieldProps {\n id: string;\n name: string;\n label: string;\n labelProps?: LabelProps;\n helpText?: HelpTextProps[\"helpText\"];\n optional?: boolean;\n wrapperProps?: React.DetailedHTMLProps<\n React.HTMLAttributes,\n HTMLElement\n >;\n isInvalid?: boolean;\n}\n\ninterface PureFieldProps extends FieldProps {\n error?: React.ReactNode;\n touched?: boolean;\n labelSimple?: boolean;\n}\n\nexport const PureField: React.FC = React.memo(\n ({\n id,\n name,\n label,\n labelProps,\n value,\n optional,\n error,\n touched,\n helpText,\n autoComplete,\n \"aria-describedby\": ariaDescribedBy,\n labelSimple,\n ...rest\n }) => {\n return (\n
    \n \n {helpText && (\n \n )}\n {error && touched && (\n \n )}\n x != null)\n .join(\" \")}\n {...rest}\n />\n
    \n );\n }\n);\n\ntype FieldPropsOmit = Omit<\n React.DetailedHTMLProps<\n React.InputHTMLAttributes,\n HTMLInputElement\n >,\n \"id\" | \"name\"\n>;\n\ninterface FieldProps extends FieldPropsOmit, BaseFieldProps {}\n\nexport const Field: React.FC = (props) => {\n const { name } = props;\n const { getValue, getError, isTouched } = useFormBag();\n\n const value = getValue(name) || \"\";\n const error = getError(name);\n const touched = isTouched(name);\n\n return (\n \n );\n};\n\ntype TextAreaPropsOmit = Omit<\n React.DetailedHTMLProps<\n React.TextareaHTMLAttributes,\n HTMLTextAreaElement\n >,\n \"id\" | \"name\"\n>;\n\ninterface TextAreaProps extends BaseFieldProps, TextAreaPropsOmit {}\n\ninterface PureTextAreaProps extends BaseFieldProps, TextAreaPropsOmit {\n error?: string;\n touched?: boolean;\n}\n\nexport const PureTextArea: React.FC = ({\n id,\n name,\n label,\n labelProps,\n helpText,\n optional,\n error,\n touched,\n value,\n ...rest\n}) => {\n return (\n
    \n \n {helpText && }\n {error && touched && (\n \n )}\n\n \n
    \n );\n};\n\nexport const TextArea: React.FC = (props) => {\n const { name } = props;\n const { getValue, getError, isTouched } = useFormBag();\n\n const value = getValue(name) || \"\";\n const error = getError(name);\n const touched = isTouched(name);\n\n return (\n \n );\n};\n\ntype SelectPropsOmit = Omit<\n React.DetailedHTMLProps<\n React.SelectHTMLAttributes,\n HTMLSelectElement\n >,\n \"id\" | \"name\"\n>;\n\ninterface SelectProps extends BaseFieldProps, SelectPropsOmit {}\n\nexport const Select: React.FC = ({\n name,\n id,\n label,\n labelProps,\n wrapperProps,\n helpText,\n optional,\n children,\n ...rest\n}) => {\n const { getValue, getError, isTouched } = useFormBag();\n\n const value = getValue(name) || \"\";\n const error = getError(name);\n const touched = isTouched(name);\n\n return (\n
    \n \n {helpText && }\n {error && touched && (\n \n )}\n \n {children}\n \n
    \n );\n};\n\ntype CheckPropsOmit = Omit<\n React.DetailedHTMLProps<\n React.InputHTMLAttributes,\n HTMLInputElement\n >,\n \"id\" | \"name\" | \"type\" | \"ref\"\n>;\ninterface CheckProps\n extends Omit,\n CheckPropsOmit {\n type: \"radio\" | \"checkbox\" | \"switch\";\n inline?: boolean;\n}\n\nexport const Check = React.forwardRef(\n (\n { id, name, type, label, inline = true, wrapperProps, isInvalid, ...rest },\n ref\n ) => {\n return (\n \n \n \n \n );\n }\n);\n\n/*\n TODO : This is a special case for when we want to do something on unmount\n Figure out potentially a better way/move to SKV.AdminAU/pages/Opportunity?\n*/\ninterface CheckWithUnmountProps extends CheckProps {\n onUnmount: () => void;\n}\n\nexport const CheckWithUnmount = React.forwardRef<\n HTMLInputElement,\n CheckWithUnmountProps\n>(({ onUnmount, ...props }, ref) => {\n React.useEffect(() => {\n return onUnmount;\n }, []);\n\n return ;\n});\n","import { Field } from \"react-yup\";\nimport { Form } from \"@skv/core\";\nimport { useState, useEffect } from \"react\";\nimport classNames from \"classnames\";\n\nexport interface PasteInputProps {\n id: string;\n value?: string;\n touched?: boolean;\n error?: string;\n field: Field;\n label: React.ReactFragment | string;\n helpText?: React.ReactFragment | string;\n onPaste: (fromClipboard: string) => void;\n className?: string;\n labelProps?: React.LabelHTMLAttributes;\n helpTextProps?: React.HTMLAttributes;\n inputProps?: React.InputHTMLAttributes;\n buttonProps?: React.ButtonHTMLAttributes;\n inputWrapperProps?: React.HTMLAttributes;\n customValidationError?: React.ReactNode;\n}\n\nexport const PasteInput = (props: PasteInputProps) => {\n const [canCopyText, setCanCopyText] = useState(false);\n useEffect(() => {\n if (\"readText\" in navigator.clipboard) {\n setCanCopyText(true);\n }\n }, []);\n\n const onPaste = async () => {\n if (\"readText\" in navigator.clipboard) {\n const fromClipboard = await navigator.clipboard.readText();\n if (fromClipboard) {\n props.onPaste(fromClipboard);\n }\n }\n };\n\n return (\n
    \n \n\n {props.helpText && (\n \n {props.helpText}\n \n )}\n\n {props.touched && props.error && !props.customValidationError && (\n \n )}\n\n
    \n \n {canCopyText && (\n
    \n \n
    \n )}\n
    \n {props.touched && props.error && props.customValidationError}\n
    \n );\n};\n","import React from \"react\";\n\ntype RadioSwitchProps = Omit<\n React.InputHTMLAttributes,\n \"type\" | \"name\"\n> & {\n name: string;\n label: string;\n};\n\nexport const RadioSwitch = (props: RadioSwitchProps) => {\n const radioSwitchId = props.id || props.name;\n\n return (\n
    \n \n \n
    \n );\n};\n","import { useEffect, useMemo, useRef, useState } from \"react\";\n\nimport {\n Select,\n SelectArrow,\n SelectItem,\n SelectItemCheck,\n SelectLabel,\n SelectPopover,\n SelectState,\n useSelectState,\n} from \"ariakit/select\";\n\nimport { SvgSprite, TooltipPopover } from \"@skv/core\";\nimport classNames from \"classnames\";\nimport { timingFunctions } from \"polished\";\n\ntype BaseItem = {\n id: string;\n name: string;\n};\n\ntype LabelProps = React.DetailedHTMLProps<\n React.LabelHTMLAttributes,\n HTMLLabelElement\n>;\n\ntype SelectProps = React.DetailedHTMLProps<\n React.SelectHTMLAttributes,\n HTMLSelectElement\n>;\n\ninterface SelectMultiProps {\n id: string;\n label: string;\n labelProps?: LabelProps;\n selectProps?: SelectProps;\n name?: string;\n items: T[];\n defaultValue?: string | string[] | undefined;\n categoryTitle?: string;\n categoryType?: string;\n className?: string;\n onUpdateField: (value: string) => void;\n onClear?: () => void;\n onDropdownOpen?: () => void;\n renderValue?: (\n selectState: SelectState,\n itemMap: Map\n ) => React.ReactNode;\n}\n\nexport const SelectMulti = ({\n id,\n label,\n labelProps,\n selectProps,\n items,\n name,\n className,\n categoryTitle = \"Nothing selected\",\n categoryType = \"items selected\",\n onUpdateField,\n renderValue,\n onClear,\n onDropdownOpen,\n defaultValue = [],\n}: SelectMultiProps) => {\n const selectState = useSelectState({\n value: defaultValue,\n sameWidth: true,\n });\n\n const itemMap = useMemo(() => {\n const map = new Map();\n items.forEach((item) => {\n map.set(item.id, item);\n });\n\n return map;\n }, [items]);\n\n const selectMultiButtonRef = useRef(null);\n const [isTooltipVisible, setIsTooltipVisible] = useState(false);\n\n useEffect(() => {\n if (selectState.mounted) {\n onDropdownOpen && onDropdownOpen();\n }\n }, [selectState.mounted, onDropdownOpen]);\n\n return (\n
    \n \n {label}\n \n
    \n \n \n {(() => {\n if (renderValue) {\n return renderValue(selectState, itemMap);\n }\n if (selectState.value.length === 0) {\n return categoryTitle;\n }\n if (selectState.value.length === 1) {\n return itemMap.get(selectState.value[0])?.name;\n }\n return `${selectState.value.length} ${categoryType}`;\n })()}\n \n\n \n \n {selectState.mounted && (\n \n {items.map((x) => (\n {\n onUpdateField(x.id);\n }}\n css={`\n cursor: pointer;\n line-height: 2;\n\n &[data-active-item] {\n background-color: #eee;\n }\n `}\n >\n \n {x.name}\n \n ))}\n \n )}\n {onClear && (\n // Note - this wrapping div is required for screens zoomed in >= 400% to prevent overflow from the clear button.\n \n setIsTooltipVisible(nextShow)}\n >\n .rounded-circle {\n background-color: ${(p): string => p.theme.gray200};\n box-shadow: 1px 1px 3px ${(p): string => p.theme.gray400};\n }\n `}\n onClick={() => {\n onClear();\n selectMultiButtonRef.current?.focus();\n }}\n onKeyDown={(e) => {\n if (e.key === \" \" || e.key === \"Enter\") {\n e.preventDefault();\n onClear();\n setIsTooltipVisible(false);\n selectMultiButtonRef.current?.focus();\n }\n }}\n >\n p.theme.gray200};\n box-shadow: 1px 1px 3px ${(p): string => p.theme.gray400};\n }\n `}\n >\n \n \n \n \n
    \n )}\n
    \n \n \n );\n};\n\nexport default SelectMulti;\n","import * as React from \"react\";\n\ninterface GlobalNavProps {\n active: \"au\" | \"nz\";\n}\n\ninterface GlobalNavLocaleProps {\n active?: boolean;\n href: string;\n}\n\nconst GlobalNavLocale: React.FC = ({\n active,\n href,\n children,\n}) => {\n if (active) {\n return (\n
  • \n \n {children} , current page\n \n
  • \n );\n }\n\n return (\n
  • \n \n {children}\n \n
  • \n );\n};\n\nexport const GlobalNav: React.FC = ({ active }) => {\n return (\n \n );\n};\n","import * as React from \"react\";\nimport { Link } from \"react-router-dom\";\n\nimport { AspectRatio, SvgSprite } from \".\";\n\ninterface HeaderProps {\n adminApplicationUrl: string;\n}\n\nexport const Header: React.FC = ({ adminApplicationUrl }) => {\n if (!adminApplicationUrl) {\n throw Error(\n \"No adminApplicationUrl passed to
    . This should be the url to either au/nz admin url\"\n );\n }\n\n return (\n
    \n
    \n
    \n
    \n \n \n \n \n SEEK Volunteer\n \n
    \n
    \n \n Find Volunteers\n \n
    \n
    \n
    \n
    \n );\n};\n","import * as React from \"react\";\nimport { Helmet } from \"react-helmet\";\n\ninterface HelmetCanonicalProps {\n url: string;\n}\n\n/**\n * @description\n * Wraps \\\n * and \\\n * inside a Helmet component from \"react-helmet\".\n *\n * Also removes trailing slash, and lowercases the pathname\n */\nexport const HelmetCanonical: React.FC = ({\n url: initialUrl,\n}) => {\n const parsedUrl = React.useMemo(() => {\n return new URL(initialUrl);\n }, [initialUrl]);\n\n const pathname = React.useMemo(() => {\n const pathname = parsedUrl.pathname.endsWith(\"/\")\n ? parsedUrl.pathname.substring(0, parsedUrl.pathname.length - 1)\n : parsedUrl.pathname;\n\n return pathname.toLocaleLowerCase();\n }, [parsedUrl]);\n\n const url = `${parsedUrl.origin}${pathname}${parsedUrl.search}`;\n\n return (\n \n \n \n \n );\n};\n","import { forwardRef } from \"react\";\nimport { Popover } from \"react-bootstrap\";\nimport { OverlayInjectedProps } from \"react-bootstrap/esm/Overlay\";\nimport { SvgSprite } from \"./SvgSprite\";\n\ninterface HotTipPopoverProps extends OverlayInjectedProps {\n id: string;\n hotTip: string;\n setCommitmentTooltip: React.Dispatch<\n React.SetStateAction<\"event\" | \"more-than-6-months\">\n >;\n}\n\nexport const HotTipPopover = forwardRef(\n (\n {\n hotTip,\n setCommitmentTooltip,\n placement,\n arrowProps,\n show,\n popper,\n ...rest\n },\n ref\n ) => {\n return (\n p.theme.infoColor};\n }\n }\n `}\n aria-hidden\n {...rest}\n >\n
    \n
    \n
    Hot tip:
    \n {\n e.preventDefault();\n setCommitmentTooltip(null);\n }}\n css={`\n position: absolute;\n top: 0;\n right: 0;\n `}\n className=\"btn btn-link btn-sm text-white p-3 mt-n1 mr-n1 mb-0 border-0\"\n >\n \n \n
    \n {hotTip}\n
    \n \n );\n }\n);\n","import * as React from \"react\";\n// import styled from \"styled-components\";\nimport classNames from \"classnames\";\n\nimport { SvgSprite } from \"./SvgSprite\";\n\ntype AnchorProps = React.DetailedHTMLProps<\n React.AnchorHTMLAttributes,\n HTMLAnchorElement\n>;\n\ninterface IconLinkProps extends AnchorProps {\n icon: string;\n}\n\nexport const IconLink: React.FC = ({\n icon,\n children,\n ...rest\n}) => {\n return (\n \n \n \n \n \n {children}\n \n \n );\n};\n\ntype ButtonProps = React.DetailedHTMLProps<\n React.ButtonHTMLAttributes,\n HTMLButtonElement\n>;\n\ninterface IconButtonProps extends ButtonProps {\n icon: string;\n}\n\nexport const IconLinkBtn: React.FC = ({\n icon,\n className,\n children,\n ...rest\n}) => {\n return (\n \n \n \n \n \n {children}\n \n \n );\n};\n","import * as React from \"react\";\n\nimport {\n addWeeks,\n differenceInCalendarDays,\n format,\n isSameMonth,\n isToday,\n parseISO,\n subWeeks,\n} from \"date-fns\";\n\nimport { useWeekView } from \"@skv/calendar\";\n\nimport { KeyValue } from \"@skv/core\";\nimport classNames from \"classnames\";\nimport { lighten } from \"polished\";\nimport qs from \"qs\";\nimport { Rotate360 } from \"../styles\";\nimport { SvgSprite } from \"./SvgSprite\";\n\nexport const mapFeaturedCalendarToOpportunities = (\n opp: InDemandCalendarApiResponse[\"featuredCalendarList\"][0]\n): InDemandOpportunity => {\n return {\n name: `${opp.name} - ${opp.organisationName} (#${opp.id})`,\n href: `/${opp.organisationId}/opportunity/${opp.id}`,\n end: parseISO(opp.endDate),\n start: opp.startDate ? parseISO(opp.startDate) : new Date(),\n };\n};\n\nexport type InDemandCalendarApiResponse = {\n featuredCalendarList: {\n endDate: string;\n id: number;\n name: string;\n organisationId: number;\n organisationName: string;\n startDate: string | null; // todo : can probably remove null, dev has bad data\n }[];\n};\n\ninterface LoadingBlockProps {\n absolute?: boolean;\n size?: number;\n}\n\nconst LoadingBlock: React.FC = ({\n absolute = true,\n size = 16,\n}) => (\n \n \n \n \n \n);\n\ninterface InDemandOpportunity {\n name: string;\n start: Date;\n end: Date;\n href: string;\n}\nexport interface InDemandCalendarFortnightProps {\n loading?: boolean;\n selectedDate: Date;\n onDateChange: (nextDate: Date) => void;\n onLocationChange: (value: string) => void;\n opportunities: InDemandOpportunity[];\n locations: KeyValue[];\n dates: Date[];\n}\n\nexport const InDemandCalendarFortnight: React.FC<\n InDemandCalendarFortnightProps\n> = ({\n loading,\n selectedDate,\n onDateChange,\n onLocationChange,\n opportunities = [],\n locations = [],\n dates,\n}) => {\n return (\n
    \n
    \n
    \n
    \n

    \n {format(dates[0], \"MMMM d\")} -{\" \"}\n {((): string => {\n const lastDate = dates[dates.length - 1];\n\n if (isSameMonth(dates[0], lastDate)) {\n return format(lastDate, \"d, yyyy\");\n }\n\n return format(lastDate, \"MMMM d, yyyy\");\n })()}\n

    \n\n {\n e.preventDefault();\n\n onDateChange(subWeeks(selectedDate, 1));\n }}\n aria-label=\"Previous week\"\n >\n \n \n {\n e.preventDefault();\n\n onDateChange(addWeeks(selectedDate, 1));\n }}\n aria-label=\"Next week\"\n >\n \n \n
    \n
    \n {\n onLocationChange(e.target.value);\n }}\n >\n \n {locations.map((n) => (\n \n ))}\n \n \n
    \n\n \n {loading && }\n p.theme.gray300};\n `}\n >\n div {\n position: relative;\n border-width: 1px;\n border-style: solid;\n border-color: inherit;\n border-radius: ${(p) => p.theme.borderRadiusSm}\n ${(p) => p.theme.borderRadiusSm} 0 0;\n padding: 0.5rem 0;\n }\n\n > div.is-active {\n background: ${(p) => lighten(0.45, p.theme.primaryColor)};\n border-color: ${(p) => lighten(0.15, p.theme.primaryColor)};\n\n color: ${(p) => p.theme.primaryColor};\n z-index: 1;\n }\n `}\n >\n {dates.map((n) => (\n \n p.theme.mutedColor};\n `}\n >\n {format(n, \"EEEEEE\")}\n
    \n \n {format(n, \"dd\")}\n
    \n \n ))}\n
    \n \n {/* begin decorative columns */}\n div {\n border-style: solid;\n border-color: inherit;\n border-width: 1px;\n border-radius: 0 0 ${(p) => p.theme.borderRadiusSm}\n ${(p) => p.theme.borderRadiusSm};\n position: relative;\n }\n\n > div.is-active {\n background: ${(p) => lighten(0.45, p.theme.primaryColor)};\n border-width: 1px;\n border-style: solid;\n border-color: ${(p) => lighten(0.15, p.theme.primaryColor)};\n color: ${(p) => p.theme.primaryColor};\n z-index: 1;\n }\n `}\n >\n {dates.map((n) => (\n \n {/* col */}\n \n ))}\n {/* decorative */}\n \n {/* end decorative columns */}\n {opportunities.map((n, i) => (\n p.theme.linkColor};\n color: ${(p) => p.theme.linkColor};\n margin-left: 0.25rem;\n margin-right: 0.25rem;\n /* todo : look in to dynamic title if overflowing */\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n `}\n title={`${n.name} - Start: ${format(\n n.start,\n \"dd/MM/yy\"\n )} | End: ${format(n.end, \"dd/MM/yy\")}`}\n style={{\n gridRow: i + 1,\n gridColumnStart:\n differenceInCalendarDays(n.start, dates[0]) <= 0\n ? 1\n : differenceInCalendarDays(n.start, dates[0]) + 1,\n gridColumnEnd: `span ${\n differenceInCalendarDays(\n n.end,\n n.start < dates[0] ? dates[0] : n.start\n ) + 1\n }`,\n }}\n >\n {n.name}\n \n ))}\n \n \n \n \n \n );\n};\n\nconst formatDisplayDates = (start: Date, end: Date): JSX.Element => {\n if (isSameMonth(start, end)) {\n return (\n <>\n {format(start, \"MMM d\")} → {format(end, \"d\")}\n \n );\n }\n\n return (\n <>\n {format(start, \"MMM d\")} → {format(end, \"MMM d\")}\n \n );\n};\n\ninterface InDemandCalendarCardProps {\n className?: string;\n fullCalendarUrl?: string;\n onNext: (event: React.MouseEvent) => void;\n onPrevious: (event: React.MouseEvent) => void;\n opportunities: InDemandOpportunity[];\n location?: string;\n loading: boolean;\n dates: Date[];\n}\n\nexport const InDemandCalendarCard: React.FC = ({\n className,\n fullCalendarUrl = \"/indemand\",\n onNext,\n onPrevious,\n opportunities,\n location,\n loading,\n dates,\n}) => {\n return (\n
    \n
    \n
    \n

    In Demand

    \n\n Full Calendar →\n
    \n\n \n \n \n {dates.map((n) => (\n \n {format(n, \"EEE\")}\n \n ))}\n \n \n \n \n {dates.map((n) => (\n lighten(0.45, p.theme.primaryColor)};\n border: 1px solid\n ${(p) => lighten(0.15, p.theme.primaryColor)};\n\n color: ${(p) => p.theme.primaryColor};\n border-radius: ${(p) => p.theme.borderRadiusSm};\n }\n `}\n key={n.toString()}\n >\n \n {format(n, \"dd\")}\n
    \n \n ))}\n \n \n \n\n
    \n \n {loading && !location ? null : (\n
    \n

    \n {location}\n

    \n
    \n \n \n \n \n \n \n
    \n
    \n )}\n {loading ? (\n \n ) : opportunities.length ? (\n
      \n {opportunities.map((opp, i) => (\n
    • \n
      \n \n {opp.name}\n
      \n
    • \n ))}\n
    \n ) : (\n

    \n No in demand opportunities to display\n

    \n )}\n \n
    \n \n );\n};\n\ninterface UseInDemandCalendarCardHookState {\n status: \"idle\" | \"loading\";\n activeIdx: number;\n locations: KeyValue[];\n opportunities: InDemandOpportunity[];\n date: Date;\n}\n\nexport const useInDemandCalendarCard = () => {\n /* InDemand card */\n const [state, setState] = React.useState(\n () => ({\n date: new Date(),\n status: \"loading\",\n activeIdx: 0,\n locations: [],\n opportunities: [],\n })\n );\n\n const dates = useWeekView({\n weekStartsOn: 1,\n date: state.date,\n });\n\n const FETCH_CACHE = React.useRef>(\n {}\n );\n\n const queryString = React.useMemo(() => {\n if (state.locations.length === 0) {\n return null;\n }\n\n return qs.stringify({\n startDate: dates[0],\n endDate: dates[dates.length - 1],\n stateId: state.locations[state.activeIdx].id,\n });\n }, [state.activeIdx, state.locations, dates]);\n\n React.useEffect(() => {\n fetch(\"/api/states\")\n .then((res) => {\n if (res.ok) {\n return res.json();\n }\n\n throw Error(\"Network error\");\n })\n .then((res) => {\n setState((prev) => ({\n ...prev,\n locations: res,\n }));\n });\n }, []);\n\n React.useEffect(() => {\n if (queryString === null) {\n return;\n }\n\n if (FETCH_CACHE.current[queryString]) {\n setState((prev) => ({\n ...prev,\n opportunities: FETCH_CACHE.current[\n queryString\n ].featuredCalendarList.map(mapFeaturedCalendarToOpportunities),\n }));\n\n return;\n }\n\n setState((prev) => ({\n ...prev,\n status: \"loading\",\n }));\n\n fetch(`/api/featuredcalendar?${queryString}`)\n .then((res) => {\n if (res.ok) {\n return res.json();\n }\n\n throw Error(\"Network error\");\n })\n .then((res) => {\n FETCH_CACHE.current[queryString] = res;\n\n setState((prev) => ({\n ...prev,\n status: \"idle\",\n opportunities: res.featuredCalendarList.map(\n mapFeaturedCalendarToOpportunities\n ),\n }));\n\n console.log(res);\n });\n }, [queryString]);\n\n return {\n currentLocation: state.locations[state.activeIdx],\n opportunities: state.opportunities,\n status: state.status,\n handleNext: (e: React.MouseEvent): void => {\n e.preventDefault();\n setState((prev) => {\n const locationsLength = prev.locations.length;\n const prevActiveIdx = prev.activeIdx;\n return {\n ...prev,\n activeIdx:\n prevActiveIdx + 1 > locationsLength - 1 ? 0 : prevActiveIdx + 1,\n };\n });\n },\n handlePrev: (e: React.MouseEvent): void => {\n e.preventDefault();\n setState((prev) => {\n const locationsLength = prev.locations.length;\n const prevActiveIdx = prev.activeIdx;\n return {\n ...prev,\n activeIdx:\n prevActiveIdx - 1 < 0 ? locationsLength - 1 : prevActiveIdx - 1,\n };\n });\n },\n loading: state.status === \"loading\",\n dates,\n };\n};\n","import * as React from \"react\";\n\nimport { ApplicationInsights } from \"@microsoft/applicationinsights-web\";\n\nconst appInsightsCache: Record = {};\n\nif (typeof window !== \"undefined\") {\n window.appInsightsCache = appInsightsCache;\n}\n\nconst APP_INSIGHTS_INDEXER = \"__APP_INSIGHTS_INSTRUMENTATION_KEY__\";\n\ndeclare const window: {\n [APP_INSIGHTS_INDEXER]?: string | null;\n appInsightsCache?: typeof appInsightsCache;\n};\n\nexport const useAppInsights = (): ApplicationInsights | null => {\n const [appInsights] = React.useState(() => {\n if (typeof window === \"undefined\") {\n return null;\n }\n\n if (\n APP_INSIGHTS_INDEXER in window &&\n window[APP_INSIGHTS_INDEXER] != null\n ) {\n if (appInsightsCache[window[APP_INSIGHTS_INDEXER]]) {\n return appInsightsCache[window[APP_INSIGHTS_INDEXER]];\n }\n\n const appInsights = new ApplicationInsights({\n config: {\n instrumentationKey: window[APP_INSIGHTS_INDEXER],\n },\n });\n\n appInsightsCache[window[APP_INSIGHTS_INDEXER]] = appInsights;\n\n return appInsights;\n }\n\n return null;\n });\n\n React.useEffect(() => {\n if (appInsights) {\n appInsights.loadAppInsights();\n }\n }, []);\n\n return appInsights;\n};\n","import * as React from \"react\";\n\ninterface UseAsyncTypeaheadSettings {\n url: (query: string) => string;\n onSuccess: (data: ServerResponse) => T[];\n defaultOptions?: T[];\n}\n\ninterface UseAsyncTypeaheadResults {\n isLoading: boolean;\n onSearch: (query: string) => Promise;\n options: T[];\n}\n\nexport const useAsyncTypeahead = ({\n url,\n onSuccess,\n defaultOptions = [],\n}: UseAsyncTypeaheadSettings): UseAsyncTypeaheadResults<\n T\n> => {\n const [loading, setLoading] = React.useState(false);\n const [options, setOptions] = React.useState(() => defaultOptions);\n\n const urlFnRef = React.useRef(url);\n const onSuccessFnRef = React.useRef(onSuccess);\n\n const cache = React.useRef>({});\n\n React.useEffect(() => {\n urlFnRef.current = url;\n onSuccessFnRef.current = onSuccess;\n });\n\n const handleSearch = React.useCallback(async (query: string): Promise<\n T[]\n > => {\n query = query.trim();\n\n if (cache.current[query]) {\n setOptions(cache.current[query]);\n return cache.current[query];\n }\n\n setLoading(true);\n\n return fetch(urlFnRef.current(query), {\n method: \"GET\",\n })\n .then((res) => {\n if (res.ok) {\n return res.json();\n }\n throw Error(\"Response not ok\");\n })\n .then(onSuccessFnRef.current)\n .then((result) => {\n setOptions(result);\n cache.current[query] = result;\n return result;\n })\n .finally(() => {\n setLoading(false);\n });\n }, []);\n\n return {\n isLoading: loading,\n onSearch: handleSearch,\n options,\n };\n};\n","import { MutableRefObject, useEffect, useRef } from \"react\";\n\n/**\n * Hook that sets the initial focus to the element when the component is mounted.\n * @param options for the hook allows the conditional focusing of the element.\n * @returns Ref object of the element to set focus.\n */\n\ninterface Options {\n shouldFocus?: boolean;\n}\n\nexport const useInitialFocus = (\n options?: Options\n): MutableRefObject => {\n const elementRef = useRef(null);\n\n useEffect(() => {\n if (options?.shouldFocus === undefined || options?.shouldFocus) {\n elementRef.current?.focus();\n }\n }, [elementRef, options?.shouldFocus]);\n\n return elementRef;\n};\n","import * as React from \"react\";\nimport { useLocation } from \"react-router-dom\";\nimport { OpportunitySearchQueryState } from \"@skv/state\";\n\nimport * as H from \"history\";\n\ninterface ReferrerState {\n searchQuery?: Partial;\n searchType?: \"opp\" | \"org\";\n children?: string;\n}\n\nexport const useReferrer = (): H.LocationDescriptorObject<\n ReferrerState\n> | null => {\n const location = useLocation<{\n referrer?: H.LocationDescriptorObject;\n }>();\n\n const [\n referrer,\n setReferrer,\n ] = React.useState>(null);\n\n React.useEffect(() => {\n if (location.state?.referrer) {\n setReferrer(location.state.referrer);\n }\n }, [location]);\n\n return referrer;\n};\n","import * as React from \"react\";\n\nimport { KeyValue } from \"@skv/core\";\nimport {\n OpportunitySearchQueryState,\n OrganisationSearchQueryState,\n useGlobal,\n} from \"@skv/state\";\n\ntype AvailableFilters =\n | \"categoryList\"\n | \"commitmentList\"\n | \"dayAndTimeList\"\n | \"suitableForList\"\n | \"typeOfWorkList\";\n\ninterface UseFiltersOptions {\n searchQuery: OpportunitySearchQueryState | OrganisationSearchQueryState;\n filters?: AvailableFilters[];\n filterKeyToLabel?: (filter: AvailableFilters) => string;\n filterKeyToName?: (filter: AvailableFilters) => string;\n onChange: (\n query: OpportunitySearchQueryState | OrganisationSearchQueryState\n ) => void;\n}\n\nexport type ResolvedFilter = {\n label: string;\n name: string;\n data: KeyValue[];\n};\n\ninterface UseFiltersReturn {\n filters: ResolvedFilter[];\n handleFiltersChange: (event: React.ChangeEvent) => void;\n handleSelectChange: (fieldName: string, value: number) => void;\n handleSelectClear: (fieldName: string) => void;\n}\n\ntype UseFiltersHook = (options: UseFiltersOptions) => UseFiltersReturn;\n\nexport type FilterName =\n | \"category\"\n | \"commitment\"\n | \"daytime\"\n | \"keyword\"\n | \"suitablefor\"\n | \"typeofwork\"\n | \"where\";\n\nconst defaultFilterKeyToLabel = (filter: AvailableFilters): string => {\n switch (filter) {\n case \"categoryList\":\n return \"Category\";\n case \"commitmentList\":\n return \"Commitment\";\n case \"dayAndTimeList\":\n return \"Day & Time\";\n case \"suitableForList\":\n return \"Suitable for\";\n case \"typeOfWorkList\":\n return \"Type of work\";\n default:\n throw Error(\"Unknown filter key passed\");\n }\n};\n\nconst defaultFilterKeyToName = (filter: AvailableFilters): string => {\n switch (filter) {\n case \"categoryList\":\n return \"category\";\n case \"commitmentList\":\n return \"commitment\";\n case \"dayAndTimeList\":\n return \"daytime\";\n case \"suitableForList\":\n return \"suitablefor\";\n case \"typeOfWorkList\":\n return \"typeofwork\";\n default:\n throw Error(\"Unknown filter key passed\");\n }\n};\n\nconst defaultFilters: AvailableFilters[] = [\n \"categoryList\",\n \"typeOfWorkList\",\n \"suitableForList\",\n \"commitmentList\",\n \"dayAndTimeList\",\n];\n\nexport const useSearchFilters: UseFiltersHook = ({\n searchQuery,\n filters = defaultFilters,\n filterKeyToLabel = defaultFilterKeyToLabel,\n filterKeyToName = defaultFilterKeyToName,\n onChange,\n}) => {\n const global = useGlobal();\n\n const resolvedFilters: ResolvedFilter[] = React.useMemo(() => {\n return filters.map((n) => {\n return {\n label: filterKeyToLabel(n),\n name: filterKeyToName(n),\n data: global[n],\n };\n });\n }, [filterKeyToLabel, filterKeyToName, filters, global]);\n\n const handleFiltersChange = (\n e: React.ChangeEvent\n ): void => {\n const target = e.target;\n const nextSearchQuery = Object.assign({}, searchQuery);\n delete nextSearchQuery.page;\n const value = parseInt(e.target.value, 10);\n\n if (e.target.checked) {\n switch (true) {\n case Array.isArray(nextSearchQuery[target.name]):\n nextSearchQuery[target.name] = [\n ...nextSearchQuery[target.name],\n value,\n ];\n break;\n case !nextSearchQuery[target.name]:\n default:\n nextSearchQuery[target.name] = [value];\n break;\n }\n } else {\n switch (true) {\n case Array.isArray(nextSearchQuery[target.name]):\n nextSearchQuery[target.name] = nextSearchQuery[target.name].filter(\n (val) => val !== value\n );\n break;\n default:\n nextSearchQuery[target.name] = [];\n break;\n }\n }\n\n onChange(nextSearchQuery);\n };\n\n const handleSelectChange = (fieldName: string, value: number): void => {\n const nextSearchQuery = Object.assign({}, searchQuery);\n delete nextSearchQuery.page;\n\n if (Array.isArray(nextSearchQuery[fieldName])) {\n if (nextSearchQuery[fieldName].includes(value)) {\n nextSearchQuery[fieldName] = nextSearchQuery[fieldName].filter(\n (n) => n !== value\n );\n } else {\n nextSearchQuery[fieldName] = [...nextSearchQuery[fieldName], value];\n }\n } else {\n nextSearchQuery[fieldName] = [value];\n }\n\n onChange(nextSearchQuery);\n };\n\n const handleSelectClear = (fieldName: string): void => {\n const nextSearchQuery = Object.assign({}, searchQuery);\n delete nextSearchQuery.page;\n\n nextSearchQuery[fieldName] = [];\n onChange(nextSearchQuery);\n };\n\n return {\n filters: resolvedFilters,\n handleFiltersChange,\n handleSelectChange,\n handleSelectClear,\n };\n};\n","import * as React from \"react\";\nimport { escapeRegExp } from \"lodash-es\";\n\nexport interface HighlighterProps {\n children: string;\n filter: string;\n}\n\nexport const Highlighter = ({\n children,\n filter,\n}: HighlighterProps): JSX.Element => {\n const filterLowerCase = filter.toLowerCase();\n\n const parts = children\n .split(new RegExp(`(${escapeRegExp(filter)})`, \"gi\"))\n .filter((n) => !!n)\n .map((n, idx) => {\n if (n.toLowerCase() === filterLowerCase) {\n return (\n \n {n}\n \n );\n }\n\n return n;\n });\n\n return <>{parts.map((n) => n)};\n};\n","import * as React from \"react\";\nimport classNames from \"classnames\";\n\ntype GeneratedListItemProps = {\n id: string;\n ref: React.MutableRefObject;\n className: string;\n style: React.CSSProperties;\n onClick: (event: React.MouseEvent) => void;\n role: string;\n \"aria-label\": string;\n \"aria-selected\": boolean;\n};\n\nexport interface ListItemProps {\n id: string;\n active: boolean;\n label: string;\n onClick: (event: React.MouseEvent) => void;\n value: T;\n children: React.ReactNode;\n listBoxRef: React.MutableRefObject;\n className?: string;\n\n render: (listItemProps: GeneratedListItemProps) => JSX.Element;\n}\n\nexport const ListItem = ({\n id,\n active,\n label,\n value,\n onClick,\n children,\n listBoxRef,\n className,\n\n render,\n}: ListItemProps): JSX.Element => {\n const ref = React.useRef(null);\n\n React.useEffect(() => {\n if (!active) {\n return;\n }\n\n if (ref.current) {\n const parentNode = listBoxRef.current;\n const currentNode = ref.current;\n\n /* - delta */\n if (currentNode.offsetTop < parentNode.scrollTop) {\n // scrollIntoView with top aligned\n currentNode.scrollIntoView({ block: \"nearest\" });\n // parentNode.scrollTop = currentNode.offsetTop;\n }\n\n /* + delta */\n if (\n currentNode.offsetTop + currentNode.clientHeight >\n parentNode.scrollTop + parentNode.clientHeight\n ) {\n // scrollIntoView with bottom aligned\n currentNode.scrollIntoView({ block: \"nearest\" });\n }\n }\n }, [active, value, listBoxRef]);\n\n const listItemProps: GeneratedListItemProps = {\n id,\n ref,\n className: classNames(\"dropdown-item\", className, {\n active: active,\n }),\n style: {\n cursor: \"pointer\",\n },\n onClick,\n role: \"option\",\n \"aria-label\": label,\n \"aria-selected\": active,\n };\n\n if (render) {\n return render(listItemProps);\n }\n\n return
  • {children}
  • ;\n};\n","import React from \"react\";\n\ninterface MenuProps {\n id: string;\n children: React.ReactNode;\n}\n\nexport const Menu = React.forwardRef<\n HTMLUListElement,\n MenuProps\n>(({ children, ...rest }, ref) => {\n return (\n
      \n {children}\n
    \n );\n});\n\ntype HTMLElementProps = React.DetailedHTMLProps<\n React.HTMLAttributes,\n HTMLElement\n>;\n\ninterface MenuHeaderProps extends HTMLElementProps {\n as?: \"li\" | \"div\";\n id: string;\n}\n\nexport const MenuHeader: React.FC = ({\n as = \"li\",\n children,\n ...rest\n}) => {\n return React.createElement(as, {\n role: \"presentation\",\n className: \"dropdown-header\",\n children,\n ...rest,\n });\n};\n","import classNames from \"classnames\";\nimport { timingFunctions } from \"polished\";\nimport * as React from \"react\";\n\nimport { SvgSprite, TooltipPopover } from \"..\";\nimport { Highlighter } from \"./Highlighter\";\nimport { ListItem, ListItemProps } from \"./ListItem\";\nimport { Menu, MenuHeader } from \"./Menu\";\n\ntype HtmlInputProps = React.DetailedHTMLProps<\n React.InputHTMLAttributes,\n HTMLInputElement\n>;\n\ntype HtmlDivProps = React.DetailedHTMLProps<\n React.HTMLAttributes,\n HTMLDivElement\n>;\n\ntype WrapperDivProps = HtmlDivProps;\n\nexport type AsyncTypeaheadMenuProps = {\n ref: React.MutableRefObject;\n id: string;\n role: string;\n \"aria-label\": string;\n className: string;\n style: React.CSSProperties;\n};\n\ntype MenuComponents = {\n Menu: typeof Menu;\n MenuItem: React.FC<{\n option: T;\n position: number;\n render?: ListItemProps[\"render\"];\n }>;\n MenuHeader: typeof MenuHeader;\n CurrentHighlighter: React.FC<{\n children: string;\n }>;\n};\n\nexport interface AsyncTypeaheadProps {\n id: string;\n isLoading: boolean;\n isValid?: boolean;\n isInvalid?: boolean;\n labelKey?: (option: T) => string;\n minLength?: number;\n onChange?: (option: T[], event?: React.ChangeEvent) => void;\n onClear?: () => void;\n onInputChange?: (\n text: string,\n event: React.ChangeEvent\n ) => void;\n onSearch: (query: string) => void;\n onBlur?: HtmlDivProps[\"onBlur\"];\n onFocus?: HtmlInputProps[\"onFocus\"];\n onClick?: HtmlDivProps[\"onClick\"];\n onKeyDown?: HtmlDivProps[\"onKeyDown\"];\n options?: T[];\n inputProps?: Omit;\n selected?: T[];\n autoFocus?: boolean;\n defaultInputValue?: string;\n onSearchDelay?: number;\n open?: boolean;\n wrapperProps?: WrapperDivProps;\n placeholder?: string;\n\n renderMenu?: (\n results: T[],\n menuProps: AsyncTypeaheadMenuProps,\n menuComponents: MenuComponents\n ) => JSX.Element;\n}\n\nexport interface AsyncTypeaheadState {\n selected: T[];\n value: string;\n query: string;\n activePosition: number;\n isFocused: boolean;\n lastInputType: InputEvent[\"inputType\"];\n}\n\nexport const AsyncTypeahead = ({\n id,\n isLoading,\n isInvalid = false,\n isValid = false,\n onInputChange,\n onSearch,\n onChange,\n onClear,\n onBlur = (e): void => void 0,\n onFocus = (e): void => void 0,\n onKeyDown = (e): void => void 0,\n options = [],\n labelKey = (n: T): string => n as string,\n minLength = 2,\n inputProps,\n selected = [],\n autoFocus = false,\n defaultInputValue = \"\",\n onSearchDelay = 400,\n open = undefined,\n wrapperProps,\n placeholder = \"\",\n renderMenu,\n}: AsyncTypeaheadProps): JSX.Element => {\n const wrapperRef = React.useRef(null);\n const listBoxRef = React.useRef(null);\n const inputRef = React.useRef(null);\n\n const stateRef = React.useRef>({\n selected,\n value: selected.length ? labelKey(selected[0]) : defaultInputValue,\n query: selected.length ? labelKey(selected[0]) : defaultInputValue,\n activePosition: -1,\n isFocused: false,\n lastInputType: null,\n });\n\n const [state, $setState] = React.useState(() => {\n if (!selected.length) {\n return {\n selected: [],\n value: defaultInputValue,\n query: defaultInputValue,\n activePosition: -1,\n isFocused: false,\n lastInputType: null,\n };\n }\n return stateRef.current;\n });\n\n const isMenuOpen =\n typeof open === \"undefined\"\n ? state.isFocused && state.query.length >= minLength\n : open;\n\n // store these functions in ref as they might change over time\n // we don't want to recreate event handlers\n const labelKeyRef = React.useRef(labelKey);\n const onChangeRef = React.useRef(onChange);\n const onSearchRef = React.useRef(onSearch);\n const onInputChangeRef = React.useRef(onInputChange);\n const optionsRef = React.useRef(options);\n const isMenuOpenRef = React.useRef(isMenuOpen);\n\n const clearBtnRef = React.useRef(null);\n\n React.useEffect(() => {\n onChangeRef.current = onChange;\n onSearchRef.current = onSearch;\n onInputChangeRef.current = onInputChange;\n labelKeyRef.current = labelKey;\n optionsRef.current = options;\n isMenuOpenRef.current = isMenuOpen;\n });\n\n const getState = React.useCallback(() => {\n return stateRef.current;\n }, []);\n\n const setState: typeof $setState = React.useMemo(() => {\n return (state): void => {\n const nextState =\n typeof state === \"function\" ? state(stateRef.current) : state;\n\n stateRef.current = nextState;\n $setState(nextState);\n };\n }, []);\n\n const showHideClearButton = (isVisible: boolean) => {\n if (isVisible) {\n clearBtnRef.current?.setAttribute(\"tabindex\", \"0\");\n clearBtnRef.current?.style.setProperty(\"right\", \"0.75rem\");\n clearBtnRef.current?.style.setProperty(\"opacity\", \"1\");\n } else {\n clearBtnRef.current?.setAttribute(\"tabindex\", \"-1\");\n clearBtnRef.current?.style.setProperty(\"right\", \"-100vw\");\n clearBtnRef.current?.style.setProperty(\"opacity\", \"0\");\n }\n };\n\n const handleChange = React.useMemo(() => {\n let timeout;\n\n return (event: React.ChangeEvent): void => {\n clearTimeout(timeout);\n\n const { target, nativeEvent } = event;\n const { value } = target;\n\n const inputType = (nativeEvent as InputEvent).inputType;\n\n if (onChangeRef.current) {\n onChangeRef.current([], event);\n }\n\n showHideClearButton(!!value);\n\n setState((prev) => {\n return {\n ...prev,\n selected: [],\n value,\n query: value,\n activePosition: -1,\n isFocused: true,\n lastInputType: inputType,\n };\n });\n\n if (onInputChangeRef.current) {\n onInputChangeRef.current(value, event);\n }\n\n if (value.length >= minLength) {\n timeout = setTimeout(() => {\n onSearchRef.current(value);\n }, onSearchDelay);\n }\n };\n }, [minLength, onSearchDelay, setState]);\n\n const handleClear = () => {\n setState((prev) => ({\n ...prev,\n selected: [],\n value: \"\",\n query: \"\",\n activePosition: -1,\n isFocused: false,\n }));\n\n if (onChangeRef.current) {\n onChangeRef.current([]);\n }\n\n if (inputRef.current) {\n inputRef.current.innerHTML = \"\";\n inputRef.current.focus();\n }\n\n showHideClearButton(false);\n };\n\n const handleFocus = (e) => {\n setState((prev) => ({\n ...prev,\n isFocused: true,\n }));\n onFocus(e);\n };\n\n const handleBlur = (e: React.FocusEvent): void => {\n if (e.currentTarget === e.target) {\n setState((prev) => ({\n ...prev,\n isFocused: false,\n activePosition: prev.query !== prev.value ? -1 : prev.activePosition,\n }));\n onBlur(e);\n }\n\n if (!e.currentTarget.contains(e.relatedTarget as Node)) {\n setState((prev) => ({\n ...prev,\n isFocused: false,\n activePosition: prev.query !== prev.value ? -1 : prev.activePosition,\n }));\n onBlur(e);\n }\n };\n\n const selectOption = React.useCallback(\n (position: number, focusMenu = false): void => {\n if (position === -1) {\n return;\n }\n\n const option = optionsRef.current[position];\n const inputValue = labelKeyRef.current(option);\n\n setState((prev) => ({\n ...prev,\n query: inputValue,\n value: inputValue,\n activePosition: position,\n isFocused: focusMenu,\n }));\n\n if (onChangeRef.current) {\n onChangeRef.current([option]);\n }\n },\n [setState]\n );\n\n /* Components Section */\n const menuProps: AsyncTypeaheadMenuProps = React.useMemo(() => {\n return {\n ref: listBoxRef,\n id: `${id}__listbox`,\n role: \"listbox\",\n \"aria-label\": \"Options\",\n className: \"dropdown-menu d-block\",\n style: {\n width: \"100%\",\n maxHeight: \"300px\",\n overflow: \"auto\",\n position: \"absolute\",\n background: \"#fff\",\n display: isMenuOpen ? \"block\" : \"none\",\n visibility: isMenuOpen ? \"visible\" : \"hidden\",\n },\n };\n }, [id, isMenuOpen]);\n\n const CurrentHighlighter = React.useMemo(() => {\n const CurrentHighlighter: React.FC<{ children: string }> = ({\n children,\n }): JSX.Element => {\n return {children};\n };\n\n return CurrentHighlighter;\n }, [getState]);\n\n const MenuItem = React.useMemo(() => {\n const MenuItem: React.FC<{\n option: T;\n position: number;\n render?: ListItemProps[\"render\"];\n }> = ({ option, position, render, children }) => {\n const label = labelKeyRef.current(option);\n const listItemId = `${id}__option-${position}`;\n const active = getState().activePosition === position;\n const onClick = () => {\n selectOption(position);\n showHideClearButton(true);\n };\n\n return (\n \n {children ?? (\n {label}\n )}\n \n );\n };\n\n return MenuItem;\n }, [id, selectOption, getState]);\n\n const menuComponents = React.useMemo(() => {\n return {\n Menu,\n MenuItem,\n MenuHeader,\n CurrentHighlighter,\n };\n }, [MenuItem, CurrentHighlighter]);\n\n /* */\n const handleKeyDown = (e: React.KeyboardEvent): void => {\n const { key } = e;\n\n switch (key) {\n case \"PageUp\":\n if (isMenuOpen) {\n listBoxRef.current.scrollTo({ top: 0 });\n e.preventDefault();\n }\n break;\n case \"PageDown\":\n if (isMenuOpen) {\n listBoxRef.current.scrollTo({ top: listBoxRef.current.scrollHeight });\n e.preventDefault();\n }\n break;\n case \"ArrowUp\":\n case \"ArrowDown\": {\n if (isLoading || !isMenuOpen) {\n break;\n }\n\n setState((prev) => {\n let nextIdx = -1;\n if (key === \"ArrowUp\") {\n nextIdx =\n prev.activePosition === -1\n ? options.length - 1\n : prev.activePosition - 1;\n } else {\n nextIdx =\n prev.activePosition < options.length - 1\n ? prev.activePosition + 1\n : -1;\n }\n\n return {\n ...prev,\n activePosition: nextIdx,\n isFocused: true,\n value: ((): string => {\n if (!options[nextIdx]) {\n return prev.value;\n }\n\n if (typeof options[nextIdx] === \"string\") {\n return options[nextIdx] as string;\n }\n\n return labelKey(options[nextIdx]);\n })(),\n };\n });\n\n e.preventDefault();\n break;\n }\n\n case \"Enter\": {\n if (isMenuOpen) {\n e.preventDefault();\n selectOption(getState().activePosition);\n }\n break;\n }\n\n case \"Backspace\": {\n break;\n }\n\n case \"Escape\": {\n if (isMenuOpen) {\n setState((prev) => ({\n ...prev,\n // value: prev.query,\n isFocused: !prev.isFocused,\n activePosition: -1,\n }));\n }\n\n break;\n }\n\n default: {\n break;\n }\n }\n\n onKeyDown(e);\n };\n\n React.useEffect(() => {\n // options changed\n\n const curState = getState();\n if (\n options.length &&\n curState.lastInputType != null &&\n isMenuOpenRef.current\n ) {\n let nextActiveIdx;\n\n switch (curState.lastInputType) {\n case \"deleteWordBackward\":\n case \"deleteContentBackward\":\n case \"deleteContent\": {\n nextActiveIdx = -1;\n break;\n }\n default: {\n const queryLowerCase = curState.query.toLocaleLowerCase();\n nextActiveIdx = options.findIndex((n) =>\n labelKeyRef\n .current(n)\n .toLocaleLowerCase()\n .startsWith(queryLowerCase)\n );\n }\n }\n\n const nextValue =\n nextActiveIdx === -1\n ? curState.query\n : labelKeyRef.current(options[nextActiveIdx]);\n\n setState((prev) => ({\n ...prev,\n value: nextValue,\n activePosition: nextActiveIdx,\n }));\n }\n }, [options, getState, setState]);\n\n React.useEffect(() => {\n if (inputRef.current && state.activePosition !== -1) {\n const queryLower = state.query.toLowerCase();\n const valueLower = state.value.toLowerCase();\n\n if (valueLower.indexOf(queryLower) !== -1) {\n inputRef.current.setSelectionRange(\n state.query.length,\n state.value.length\n );\n }\n }\n }, [state.value, state.activePosition, state.query]);\n\n const [autoComplete, setAutoComplete] = React.useState<\n HtmlInputProps[\"autoComplete\"]\n >(() => {\n if (inputProps?.autoComplete) {\n return inputProps.autoComplete;\n }\n return undefined;\n });\n\n React.useEffect(() => {\n // Focus on mount useEffect\n if (autoFocus && inputRef.current) {\n inputRef.current.focus();\n }\n\n /*\n Auto complete handling\n - set autocomplete to initialAutoComplete value from props\n - if no autoComplete prop passed through, set as undefined initially\n - when this useEffect runs, set it to \"off\"\n\n This allows chrome/any other browsers in the future to persist the inputs\n value on history changes on a server load or if js is disabled\n */\n setAutoComplete(\"off\");\n }, []);\n\n return (\n \n x != null)\n .join(\" \")}\n />\n \n Suggestions will appear below the field as you type\n \n\n {((): React.ReactNode => {\n // if (!isMenuOpen) {\n // return null;\n // }\n\n if (renderMenu) {\n return renderMenu(options, menuProps, menuComponents);\n }\n\n return (\n }\n >\n {((): React.ReactNode => {\n if (isLoading) {\n return
  • Loading...
  • ;\n }\n\n if (options.length) {\n return options.map((option, idx) => {\n return ;\n });\n }\n\n return (\n
  • No matches found.
  • \n );\n })()}\n \n );\n })()}\n {onClear && (\n \n {\n e.preventDefault();\n e.stopPropagation();\n handleClear();\n onClear();\n }}\n >\n p.theme.gray200};\n box-shadow: 1px 1px 3px ${(p): string => p.theme.gray400};\n }\n `}\n >\n \n \n \n \n )}\n \n );\n};\n","import classNames from \"classnames\";\nimport { timingFunctions } from \"polished\";\nimport * as React from \"react\";\n\nimport { SvgSprite, TooltipPopover } from \"..\";\nimport { AsyncTypeaheadProps } from \"./AsyncTypeahead\";\nimport { Highlighter } from \"./Highlighter\";\nimport { ListItem, ListItemProps } from \"./ListItem\";\nimport { Menu, MenuHeader } from \"./Menu\";\n\ntype HtmlInputProps = React.DetailedHTMLProps<\n React.InputHTMLAttributes,\n HTMLInputElement\n>;\n\ntype MenuProps = {\n ref: React.MutableRefObject;\n id: string;\n role: string;\n \"aria-label\": string;\n className: string;\n style: React.CSSProperties;\n};\n\nexport const AsyncTypeaheadSearch = ({\n id,\n isLoading,\n isInvalid = false,\n isValid = false,\n onInputChange,\n onSearch,\n onChange,\n onClear,\n onClick,\n onBlur = (e): void => void 0,\n onFocus = (e): void => void 0,\n onKeyDown = (e): void => void 0,\n options = [],\n labelKey = (n: T): string => n as string,\n minLength = 2,\n inputProps,\n selected = [],\n autoFocus = false,\n defaultInputValue = \"\",\n onSearchDelay = 300,\n open = undefined,\n wrapperProps,\n renderMenu,\n}: AsyncTypeaheadProps): JSX.Element => {\n const wrapperRef = React.useRef(null);\n const listBoxRef = React.useRef(null);\n const inputRef = React.useRef(null);\n\n const [state, setState] = React.useState({\n selected,\n value: defaultInputValue,\n query: defaultInputValue,\n activePosition: -1,\n isFocused: open || false,\n lastInputType: null,\n });\n\n const isMenuOpen =\n typeof open === \"undefined\"\n ? state.isFocused && state.query.length >= minLength\n : open;\n\n // store these functions in ref as they might change over time\n // we don't want to recreate event handlers\n const labelKeyRef = React.useRef(labelKey);\n const onChangeRef = React.useRef(onChange);\n const onSearchRef = React.useRef(onSearch);\n const onInputChangeRef = React.useRef(onInputChange);\n const optionsRef = React.useRef(options);\n const isMenuOpenRef = React.useRef(isMenuOpen);\n\n const clearBtnRef = React.useRef(null);\n\n React.useEffect(() => {\n onChangeRef.current = onChange;\n onSearchRef.current = onSearch;\n onInputChangeRef.current = onInputChange;\n labelKeyRef.current = labelKey;\n optionsRef.current = options;\n isMenuOpenRef.current = isMenuOpen;\n });\n\n const showHideClearButton = (isVisible: boolean) => {\n if (isVisible) {\n clearBtnRef.current?.setAttribute(\"tabindex\", \"0\");\n clearBtnRef.current?.style.setProperty(\"right\", \"0.75rem\");\n clearBtnRef.current?.style.setProperty(\"opacity\", \"1\");\n } else {\n clearBtnRef.current?.setAttribute(\"tabindex\", \"-1\");\n clearBtnRef.current?.style.setProperty(\"right\", \"-100vw\");\n clearBtnRef.current?.style.setProperty(\"opacity\", \"0\");\n }\n };\n\n React.useEffect(() => {\n const inputValue = selected.length\n ? labelKey(selected[0])\n : defaultInputValue;\n\n setState({\n selected,\n value: inputValue,\n query: inputValue,\n activePosition: -1,\n isFocused: open || false,\n lastInputType: null,\n });\n\n showHideClearButton(!!inputValue);\n // We only want this to rerender if the keyword or the selection changes\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [defaultInputValue, selected[0]]);\n\n const handleChange = React.useMemo(() => {\n let timeout;\n\n return (event: React.ChangeEvent): void => {\n clearTimeout(timeout);\n\n const { target, nativeEvent } = event;\n const { value } = target;\n\n const inputType = (nativeEvent as InputEvent).inputType;\n\n if (onChangeRef.current) {\n onChangeRef.current([], event);\n }\n\n showHideClearButton(!!value);\n\n setState((prev) => {\n return {\n ...prev,\n selected: [],\n value,\n query: value,\n activePosition: -1,\n isFocused: true,\n lastInputType: inputType,\n };\n });\n\n if (onInputChangeRef.current) {\n onInputChangeRef.current(value, event);\n }\n\n if (value.length >= minLength) {\n timeout = setTimeout(() => {\n onSearchRef.current(value);\n }, onSearchDelay);\n }\n };\n }, [minLength, onSearchDelay, setState]);\n\n const handleClear = () => {\n setState((prev) => ({\n ...prev,\n selected: [],\n value: \"\",\n query: \"\",\n activePosition: -1,\n isFocused: false,\n }));\n\n if (onChangeRef.current) {\n onChangeRef.current([]);\n }\n\n if (inputRef.current) {\n inputRef.current.innerHTML = \"\";\n inputRef.current.focus();\n }\n\n showHideClearButton(false);\n };\n\n const handleClick = (e) => {\n setState((prev) => ({\n ...prev,\n isFocused: true,\n }));\n onFocus(e);\n };\n\n const handleFocus = (e) => {\n setState((prev) => ({\n ...prev,\n isFocused: true,\n }));\n onFocus(e);\n };\n\n const handleBlur = (e: React.FocusEvent): void => {\n if (e.currentTarget === e.target) {\n setState((prev) => ({\n ...prev,\n isFocused: false,\n activePosition: prev.query !== prev.value ? -1 : prev.activePosition,\n }));\n onBlur(e);\n }\n\n if (!e.currentTarget.contains(e.relatedTarget as Node)) {\n setState((prev) => ({\n ...prev,\n isFocused: false,\n activePosition: prev.query !== prev.value ? -1 : prev.activePosition,\n }));\n onBlur(e);\n }\n };\n\n const selectOption = React.useCallback(\n (position: number, focusMenu = false): void => {\n if (position === -1) {\n return;\n }\n\n const option = optionsRef.current[position];\n const inputValue = labelKeyRef.current(option);\n\n setState((prev) => ({\n ...prev,\n query: inputValue,\n value: inputValue,\n activePosition: position,\n isFocused: focusMenu,\n }));\n\n if (onChangeRef.current) {\n onChangeRef.current([option]);\n }\n },\n [setState]\n );\n\n /* Components Section */\n const menuProps: MenuProps = React.useMemo(() => {\n return {\n ref: listBoxRef,\n id: `${id}__listbox`,\n role: \"listbox\",\n \"aria-label\": \"Options\",\n className: \"dropdown-menu d-block\",\n style: {\n width: \"100%\",\n maxHeight: \"300px\",\n overflow: \"auto\",\n position: \"absolute\",\n background: \"#fff\",\n display: isMenuOpen ? \"block\" : \"none\",\n visibility: isMenuOpen ? \"visible\" : \"hidden\",\n },\n };\n }, [id, isMenuOpen]);\n\n const CurrentHighlighter = React.useMemo(() => {\n const CurrentHighlighter: React.FC<{ children: string }> = ({\n children,\n }): JSX.Element => {\n return {children};\n };\n\n return CurrentHighlighter;\n }, [state.query]);\n\n const MenuItem = React.useMemo(() => {\n const MenuItem: React.FC<{\n option: T;\n position: number;\n render?: ListItemProps[\"render\"];\n }> = ({ option, position, render, children }) => {\n const label = labelKeyRef.current(option);\n const listItemId = `${id}__option-${position}`;\n const active = state.activePosition === position;\n const onClick = () => {\n selectOption(position);\n showHideClearButton(true);\n };\n\n return (\n \n {children ?? {label}}\n \n );\n };\n\n return MenuItem;\n }, [id, selectOption, state.activePosition, state.query]);\n\n const menuComponents = React.useMemo(() => {\n return {\n Menu,\n MenuItem,\n MenuHeader,\n CurrentHighlighter,\n };\n }, [MenuItem, CurrentHighlighter]);\n\n const handleKeyDown = (e: React.KeyboardEvent): void => {\n switch (e.key) {\n case \"PageUp\":\n if (isMenuOpen) {\n listBoxRef.current.scrollTo({ top: 0 });\n e.preventDefault();\n }\n break;\n case \"PageDown\":\n if (isMenuOpen) {\n listBoxRef.current.scrollTo({ top: listBoxRef.current.scrollHeight });\n e.preventDefault();\n }\n break;\n case \"ArrowUp\":\n case \"ArrowDown\": {\n if (isLoading || !isMenuOpen) {\n break;\n }\n\n setState((prev) => {\n let nextIdx = -1;\n if (e.key === \"ArrowUp\") {\n nextIdx =\n prev.activePosition === -1\n ? options.length - 1\n : prev.activePosition - 1;\n } else {\n nextIdx =\n prev.activePosition < options.length - 1\n ? prev.activePosition + 1\n : -1;\n }\n\n return {\n ...prev,\n activePosition: nextIdx,\n isFocused: true,\n value: ((): string => {\n if (!options[nextIdx]) {\n return prev.value;\n }\n\n if (typeof options[nextIdx] === \"string\") {\n return options[nextIdx] as string;\n }\n\n return labelKey(options[nextIdx]);\n })(),\n };\n });\n\n e.preventDefault();\n break;\n }\n\n case \"Enter\": {\n if (isMenuOpen) {\n e.preventDefault();\n selectOption(state.activePosition);\n }\n break;\n }\n\n case \"Escape\": {\n if (isMenuOpen) {\n setState((prev) => ({\n ...prev,\n // value: prev.query,\n isFocused: !prev.isFocused,\n activePosition: -1,\n }));\n }\n\n break;\n }\n\n case \"Backspace\":\n default: {\n break;\n }\n }\n\n onKeyDown(e);\n };\n\n React.useEffect(() => {\n // options changed\n if (\n options.length &&\n state.lastInputType != null &&\n isMenuOpenRef.current\n ) {\n let nextActiveIdx;\n\n switch (state.lastInputType) {\n case \"deleteWordBackward\":\n case \"deleteContentBackward\":\n case \"deleteContent\": {\n nextActiveIdx = -1;\n break;\n }\n default: {\n const queryLowerCase = state.query.toLocaleLowerCase();\n nextActiveIdx = options.findIndex((n) =>\n labelKeyRef\n .current(n)\n .toLocaleLowerCase()\n .startsWith(queryLowerCase)\n );\n }\n }\n\n const nextValue =\n nextActiveIdx === -1\n ? state.query\n : labelKeyRef.current(options[nextActiveIdx]);\n\n setState((prev) => ({\n ...prev,\n value: nextValue,\n activePosition: nextActiveIdx,\n }));\n }\n }, [options, setState, state.lastInputType, state.query]);\n\n React.useEffect(() => {\n if (inputRef.current && state.activePosition !== -1) {\n const queryLower = state.query.toLowerCase();\n const valueLower = state.value.toLowerCase();\n\n if (valueLower.indexOf(queryLower) !== -1) {\n inputRef.current.setSelectionRange(\n state.query.length,\n state.value.length\n );\n }\n }\n }, [state.value, state.activePosition, state.query]);\n\n const [autoComplete, setAutoComplete] = React.useState<\n HtmlInputProps[\"autoComplete\"]\n >(() => {\n if (inputProps?.autoComplete) {\n return inputProps.autoComplete;\n }\n return undefined;\n });\n\n React.useEffect(() => {\n // Focus on mount useEffect\n if (autoFocus && inputRef.current) {\n inputRef.current.focus();\n }\n\n /*\n Auto complete handling\n - set autocomplete to initialAutoComplete value from props\n - if no autoComplete prop passed through, set as undefined initially\n - when this useEffect runs, set it to \"off\"\n\n This allows chrome/any other browsers in the future to persist the inputs\n value on history changes on a server load or if js is disabled\n */\n setAutoComplete(\"off\");\n }, [autoFocus]);\n\n return (\n \n x != null)\n .join(\" \")}\n />\n \n Suggestions will appear below the field as you type\n \n\n {((): React.ReactNode => {\n if (renderMenu) {\n return renderMenu(options, menuProps, menuComponents);\n }\n\n return (\n }\n >\n {((): React.ReactNode => {\n if (isLoading) {\n return
  • Loading...
  • ;\n }\n\n if (options.length) {\n return options.map((option, idx) => {\n return ;\n });\n }\n\n return (\n
  • No matches found.
  • \n );\n })()}\n \n );\n })()}\n {onClear && (\n \n {\n e.preventDefault();\n e.stopPropagation();\n setTimeout(() => {\n handleClear();\n onClear();\n }, onSearchDelay);\n }}\n >\n p.theme.gray200};\n box-shadow: 1px 1px 3px ${(p): string => p.theme.gray400};\n }\n `}\n >\n \n Clear\n \n \n \n )}\n \n );\n};\n","import * as React from \"react\";\n\nimport { useAsyncTypeahead } from \"../hooks\";\nimport { ValidationError } from \"./Form\";\nimport { SvgSprite } from \"./SvgSprite\";\nimport { AsyncTypeahead, AsyncTypeaheadProps } from \"./Typeahead\";\n\nexport interface MultiLocationTypeaheadProps\n extends Omit, \"isLoading\" | \"onSearch\"> {\n idx: number;\n\n onRemove: (event: React.MouseEvent) => void;\n touched: boolean;\n error: string;\n defaultOptions?: T[];\n\n showRemoveBtn?: boolean;\n}\n\nexport const MultiLocationTypeahead = ({\n id,\n idx,\n onRemove,\n defaultOptions = [],\n touched,\n error,\n showRemoveBtn = true,\n inputProps,\n ...rest\n}: MultiLocationTypeaheadProps): JSX.Element => {\n const locationTypeahead = useAsyncTypeahead({\n url: (q) => `/api/locations?query=${q}`,\n onSuccess: (res) => {\n console.log(res);\n return res;\n },\n defaultOptions,\n });\n\n return (\n
    \n \n {touched && !!error && (\n \n )}\n\n
    \n \n id={id}\n isInvalid={touched && !!error}\n {...locationTypeahead}\n {...rest}\n inputProps={Object.assign({}, inputProps, {\n \"aria-describedby\": [\n touched && !!error ? `${id}-error-message` : null,\n inputProps?.[\"aria-describedby\"],\n ]\n .filter((x): x is string => x != null)\n .join(\" \"),\n })}\n />\n {showRemoveBtn && (\n \n \n \n )}\n
    \n
    \n );\n};\n","import { debounce } from \"lodash-es\";\nimport * as React from \"react\";\nimport { NavLink } from \"react-router-dom\";\nimport styled, { ThemeProvider, css } from \"styled-components\";\n\nimport { SvgSprite } from \"./SvgSprite\";\n\nimport patternLightBgImg from \"@skv/assets/gfx/pattern-light@2x.png\";\n\nconst CarouselPagingControl = styled.button`\n position: absolute;\n top: 0;\n height: ${(p): number =>\n ((p.theme.height as number) - (p.theme.borderBottomWidth as number)) /\n 16}rem;\n background-color: transparent;\n border: 0;\n color: ${(p) => p.theme.arrowColor as string};\n padding: 0 1rem;\n display: flex;\n align-items: center;\n transition: all 0.15s ${(p): string => p.theme.timingFnEaseOut};\n`;\n\ninterface NavBarState {\n clientWidth: number;\n scrollWidth: number;\n scrollLeft: number;\n}\n\ntype NavBarActions =\n | {\n type: \"UPDATE_SCROLL_LEFT\";\n payload: {\n scrollLeft: number;\n };\n }\n | {\n type: \"HANDLE_RESIZE\";\n payload: {\n clientWidth: number;\n scrollWidth: number;\n scrollLeft: number;\n };\n };\n\nconst reducer = (state: NavBarState, action: NavBarActions): NavBarState => {\n switch (action.type) {\n case \"UPDATE_SCROLL_LEFT\":\n return {\n ...state,\n scrollLeft: action.payload.scrollLeft,\n };\n case \"HANDLE_RESIZE\":\n return {\n ...state,\n clientWidth: action.payload.clientWidth,\n scrollWidth: action.payload.scrollWidth,\n scrollLeft: action.payload.scrollLeft,\n };\n default:\n return state;\n }\n};\n\nexport const NavBar = ({ children }): JSX.Element => {\n const [state, dispatch] = React.useReducer(reducer, {\n clientWidth: 0,\n scrollWidth: 0,\n scrollLeft: 0,\n });\n\n const scrollEl = React.useRef(null);\n\n const handleScroll = React.useMemo(() => {\n const handleScroll = (): void => {\n const { scrollLeft } = scrollEl.current;\n\n dispatch({\n type: \"UPDATE_SCROLL_LEFT\",\n payload: {\n scrollLeft,\n },\n });\n };\n\n return debounce(handleScroll, 300);\n }, []);\n\n /* Handle carousel clicks */\n const handlePreviousClick = React.useCallback(\n (e) => {\n e.preventDefault();\n scrollEl.current.scrollBy({ left: -100, behavior: \"smooth\" });\n },\n [scrollEl]\n );\n\n const handleNextClick = React.useCallback(\n (e) => {\n e.preventDefault();\n scrollEl.current.scrollBy({ left: 100, behavior: \"smooth\" });\n },\n [scrollEl]\n );\n\n /* Handle resize events */\n React.useEffect(() => {\n const handleResize = (e?: UIEvent): void => {\n const { clientWidth, scrollLeft, scrollWidth } = scrollEl.current;\n\n dispatch({\n type: \"HANDLE_RESIZE\",\n payload: {\n clientWidth,\n scrollLeft,\n scrollWidth,\n },\n });\n };\n\n const debouncedHandleResize = debounce(handleResize, 300);\n\n // run function on component load\n handleResize();\n\n window.addEventListener(\"resize\", debouncedHandleResize, false);\n\n return (): void => {\n window.removeEventListener(\"resize\", debouncedHandleResize, false);\n };\n }, []);\n\n return (\n ({\n ...rest,\n tabActiveColor: rest.tabActiveColor ?? \"#fff\",\n tabActiveBgColor: rest.tabActiveBgColor ?? primaryColor,\n tabColor: rest.tabColor ?? \"#fff\",\n tabBgColor: rest.tabBgColor ?? \"transparent\",\n tabBorderRadius: rest.tabBorderRadius ?? 0,\n barBgColor: rest.barBgColor ?? secondaryColor,\n arrowColor: rest.arrowColor ?? \"#fff\",\n arrowBgColor: rest.arrowBgColor ?? secondaryColor,\n height: 54,\n borderBottomWidth: rest.borderBottomWidth ?? 6,\n borderBottomColor: rest.borderBottomColor ?? primaryColor,\n barBorderRadius: rest.barBorderRadius ?? 0,\n isFluid: rest.isFluid ?? true,\n paddingX: rest.paddingX ?? \"1rem\",\n marginTop: rest.marginTop ?? 0,\n })}\n >\n p.theme.height / 16}rem;\n overflow: hidden;\n background-color: ${(p): string => p.theme.barBgColor};\n\n border-radius: ${(p) => p.theme.barBorderRadius};\n ${(p): string | void => {\n // TODO : sass-loader booleans are string types \"true\" instead of true. Figure out a better way to handle this?\n if (p.theme.enableBackgroundPatterns === \"true\") {\n return `\n\n &:before {\n content: \"\";\n background-image: url(${patternLightBgImg});\n background-size: 5rem;\n background-position: 50% 0;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n opacity: 0.1;\n }\n `;\n }\n }};\n\n margin-top: ${(p): number => p.theme.marginTop / 16}rem;\n\n &:after {\n content: \"\";\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100%;\n height: ${(p): number => p.theme.borderBottomWidth / 16}rem;\n background-color: ${(p): string => p.theme.borderBottomColor};\n }\n `}\n >\n `${p.theme.paddingX}`};\n padding-right: ${(p): string => `${p.theme.paddingX}`};\n\n @media (min-width: ${(p): string => p.theme.mdBreakpoint}) {\n max-width: ${(p): string => p.theme.mdMaxWidth};\n }\n\n @media (min-width: ${(p): string => p.theme.lgBreakpoint}) {\n max-width: ${(p): string => p.theme.lgMaxWidth};\n }\n\n @media (min-width: ${(p): string => p.theme.xlBreakpoint}) {\n max-width: ${(p): string => p.theme.xlMaxWidth};\n }\n `}\n >\n \n p.theme.isFluid &&\n css`\n margin-left: -${(p): string => `${p.theme.paddingX}`};\n margin-right: -${(p): string => `${p.theme.paddingX}`};\n\n @media (min-width: 768px) {\n margin: 0 0;\n }\n `}\n `}\n >\n \n {children}\n \n \n \n\n {/* Directional Arrows */}\n p.theme.arrowBgColor} 35%\n );\n left: 0;\n `}\n >\n \n \n p.theme.arrowBgColor} 35%\n );\n right: 0;\n `}\n >\n \n \n \n \n );\n};\n\nNavBar.ListItemLink = styled(NavLink)`\n position: relative;\n margin: 1px 2px 0;\n border: 1px solid transparent;\n padding: 0 3rem;\n height: ${(p): number =>\n ((p.theme.height as number) - (p.theme.borderBottomWidth as number)) /\n 16}rem;\n display: inline-flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n color: ${(p): string => `${p.theme.tabColor}`};\n background-color: ${(p): string => `${p.theme.tabBgColor}`};\n border-top-left-radius: ${(p): number =>\n (p.theme.tabBorderRadius as number) / 16}rem;\n border-top-right-radius: ${(p): number =>\n (p.theme.tabBorderRadius as number) / 16}rem;\n white-space: nowrap;\n z-index: 5;\n\n &:after {\n content: attr(data-text);\n height: 0;\n visibility: hidden;\n overflow: hidden;\n user-select: none;\n pointer-events: none;\n font-weight: 700;\n @media speech {\n display: none;\n }\n }\n\n &:hover {\n color: ${(p): string => `${p.theme.tabColor}`};\n text-decoration: none;\n font-weight: 700;\n }\n\n &.active {\n font-weight: 700;\n color: ${(p): string => `${p.theme.tabActiveColor}`};\n background-color: ${(p): string => `${p.theme.tabActiveBgColor}`};\n }\n`;\n\nNavBar.ListItem = styled.li`\n display: block;\n scroll-snap-coordinate: 50% 50%;\n scroll-snap-align: center;\n`;\n","import { generatePagination } from \"@skv/util\";\nimport classnames from \"classnames\";\nimport * as qs from \"qs\";\nimport * as React from \"react\";\nimport { useLocation, useRouteMatch } from \"react-router-dom\";\n\nimport type { SearchTypes } from \"../types\";\nimport { VolunteerSearchLink } from \"./\";\n\nimport {\n OpportunitySearchQueryState,\n OrganisationSearchQueryState,\n} from \"@skv/state\";\n\ntype UsePageLocationResult = readonly [\n (\n | (OpportunitySearchQueryState & {\n page: number;\n })\n | (OrganisationSearchQueryState & {\n page: number;\n })\n ),\n string\n];\n\nconst usePageLocation = (\n searchQuery: OpportunitySearchQueryState | OrganisationSearchQueryState,\n desiredPage: number\n): UsePageLocationResult => {\n const location = useLocation();\n\n const nextPageSearchQuery = React.useMemo(() => {\n return Object.assign({}, searchQuery, { page: desiredPage });\n }, [searchQuery, desiredPage]);\n\n const nextPageSearchQueryString = React.useMemo(() => {\n return qs.stringify(\n {\n ...qs.parse(location.search, {\n ignoreQueryPrefix: true,\n }),\n page: desiredPage,\n },\n {\n arrayFormat: \"repeat\",\n }\n );\n }, [location.search, desiredPage]);\n\n return [nextPageSearchQuery, nextPageSearchQueryString] as const;\n};\n\ninterface PaginationProps {\n currentPage: number;\n totalPages: number;\n searchQuery: OpportunitySearchQueryState | OrganisationSearchQueryState;\n searchType: SearchTypes;\n isNsw?: boolean;\n}\n\nconst PaginationListItem: React.FC<{\n isActive: boolean;\n isHiddenMobile: boolean;\n searchQuery: OpportunitySearchQueryState | OrganisationSearchQueryState;\n searchType: SearchTypes;\n page: number;\n}> = ({ isActive, isHiddenMobile, searchQuery, searchType, page }) => {\n const [pageQuery, pageQueryString] = usePageLocation(searchQuery, page);\n const { url } = useRouteMatch();\n\n return (\n \n {isActive ? (\n \n {page} , current page\n \n ) : (\n \n {page}\n \n )}\n \n );\n};\n\nexport const Pagination: React.FC = ({\n currentPage,\n totalPages,\n searchQuery,\n searchType,\n isNsw = false,\n}) => {\n const match = useRouteMatch();\n\n const pagesToShow = 5;\n const pagesToDisplay = generatePagination(\n currentPage,\n totalPages,\n pagesToShow\n );\n\n /* Previous button */\n const prevPage = currentPage > 1 ? currentPage - 1 : 1;\n\n const [prevSearchQuery, prevSearchQueryString] = usePageLocation(\n searchQuery,\n prevPage\n );\n\n /* Next button */\n const nextPage = currentPage < totalPages ? currentPage + 1 : totalPages;\n\n const [nextSearchQuery, nextSearchQueryString] = usePageLocation(\n searchQuery,\n nextPage\n );\n\n /*\n Actual page numbers\n TODO : This might need a rework\n */\n\n const activeIdx = pagesToDisplay.indexOf(currentPage);\n const spread = Math.floor(pagesToShow / 2);\n\n const paginationListItems = pagesToDisplay.map((page, idx) => {\n const isActive = activeIdx === idx;\n\n const isHiddenMobile = (() => {\n if (activeIdx < spread) {\n return idx > pagesToShow - 1 - spread;\n }\n\n if (activeIdx > spread) {\n return idx < pagesToShow - (spread + 1);\n }\n\n return idx === 0 || idx === pagesToShow - 1;\n })();\n\n return (\n \n );\n });\n\n return (\n \n );\n};\n","export function generatePagination(curPage, totalPages, pagesToShow): number[] {\n const spread = Math.floor(pagesToShow / 2);\n\n let pages = Array.from(\n { length: totalPages < pagesToShow ? totalPages : pagesToShow },\n (v, k) => k + (curPage - spread)\n );\n\n if (pages[0] < 1) {\n const difference = 1 + Math.abs(pages[0]);\n pages = pages.map((v) => v + difference);\n }\n\n if (pages[pages.length - 1] > totalPages) {\n const difference = pages[pages.length - 1] - totalPages;\n pages = pages.map((v) => v - difference);\n }\n\n return pages;\n}\n","import { darken } from \"polished\";\nimport * as React from \"react\";\nimport { Accordion } from \"react-bootstrap\";\nimport { Link, RouteProps, useRouteMatch } from \"react-router-dom\";\nimport * as store from \"store2\";\nimport { SvgSprite } from \"./SvgSprite\";\n\nconst STORE = store.local.namespace(\"peekdown\");\n\ntype OnCloseEvent = (\n e: React.MouseEvent\n) => void;\n\ninterface PeekdownState {\n handleClose: OnCloseEvent;\n}\n\nconst PeekdownContext = React.createContext(\n undefined\n);\n\ninterface PeekdownProps {\n id: string;\n storeKey?: string;\n match?: string | string[] | RouteProps;\n}\n\nexport const Peekdown: React.FC = ({\n id,\n storeKey = \"name\",\n match,\n children,\n}) => {\n const routeMatch = useRouteMatch(match);\n\n const [activeKey, setActiveKey] = React.useState(null);\n\n const handleClose: OnCloseEvent = React.useCallback(\n (e) => {\n e.preventDefault();\n setActiveKey(null);\n STORE.set(storeKey, id);\n },\n [id, storeKey]\n );\n\n React.useEffect(() => {\n const storedValue = STORE.get(storeKey);\n\n if (storedValue !== id) {\n setActiveKey(id);\n }\n }, [id, storeKey]);\n\n if (match !== undefined && routeMatch && !routeMatch.isExact) {\n return null;\n }\n\n return (\n \n \n \n {children as JSX.Element}\n \n \n \n );\n};\n\nexport const CloseBtn = (): JSX.Element => {\n const { handleClose } = React.useContext(PeekdownContext);\n\n return (\n p.theme.timingFnEaseOut};\n\n &:hover {\n color: ${darken(0.25, \"#fff\")};\n }\n `}\n >\n \n \n \n \n );\n};\n\nexport const CovidPeekdown = (): JSX.Element => {\n return (\n \n
    \n \n Covid-19 Update & Opportunities\n \n \n
    \n \n \n );\n};\n","import peopleAtDeskImg from \"@skv/assets/gfx/people-at-desk.png\";\nimport useMediaQuery from \"../hooks/useMediaQuery\";\n\nexport const RecruitmentAdviceCta = (): JSX.Element => {\n const isDesktop = useMediaQuery(\"(min-width: 992px)\");\n return (\n \n

    Recruitment Advice

    \n \n Your destination for recruitment resources and advice\n

    \n \n\n \n \n \n \n );\n};\n","import * as React from \"react\";\nimport { useHistory, LinkProps } from \"react-router-dom\";\n\nimport { SearchTypes } from \"../types\";\n\nimport {\n OpportunitySearchQueryState,\n OrganisationSearchQueryState,\n useThunkDispatch,\n opportunityResultStore,\n organisationResultStore,\n} from \"@skv/state\";\n\nexport interface VolunteerSearchLinkProps\n extends Omit {\n to?: Exclude;\n searchQuery: OpportunitySearchQueryState | OrganisationSearchQueryState;\n searchType?: SearchTypes;\n shouldUpdateSearchForm?: boolean;\n}\n\nexport const VolunteerSearchLink: React.FC = ({\n to,\n searchQuery,\n searchType = \"opp\",\n children,\n shouldUpdateSearchForm = false,\n ...rest\n}) => {\n const dispatch = useThunkDispatch();\n\n const history = useHistory();\n\n const queryString = React.useMemo(() => {\n return opportunityResultStore.util.opportunitySearchQueryToString(\n searchQuery\n );\n }, [searchQuery]);\n\n const action = React.useMemo(() => {\n switch (searchType) {\n case \"org\":\n return \"/volunteering-organisations\";\n case \"favourites\":\n return \"/favourites\";\n case \"opp\":\n default:\n return \"/volunteering\";\n }\n }, [searchType]);\n\n const href = React.useMemo(() => {\n switch (typeof to) {\n case \"undefined\":\n return history.createHref({\n pathname: action,\n search: queryString,\n });\n case \"string\":\n return to;\n default:\n return history.createHref(to);\n }\n }, [action, history, queryString, to]);\n\n const handleClick = React.useMemo(() => {\n return (e: React.MouseEvent): void => {\n e.preventDefault();\n\n history.push(href, {\n searchQuery,\n });\n\n if (searchType === \"opp\") {\n dispatch(\n opportunityResultStore.actions.fetchOpportunities(\n searchQuery as OpportunitySearchQueryState\n )\n ).then((data) => {\n history.replace(data.canonicalUrl, {\n searchQuery,\n shouldUpdateSearchForm,\n });\n });\n return;\n }\n\n if (searchType === \"org\") {\n dispatch(\n organisationResultStore.actions.fetchOrganisations(\n searchQuery as OrganisationSearchQueryState\n )\n ).then((data) => {\n history.replace(data.canonicalUrl, {\n searchQuery,\n shouldUpdateSearchForm,\n });\n });\n return;\n }\n\n if (searchType === \"favourites\") {\n /*\n Favourites is currently handled with a useEffect in it's own component\n so we don't do anything here.\n\n TODO : Look in to refactoring favourites so there's no ambiguity in the search flow\n */\n\n return;\n }\n };\n }, [\n dispatch,\n history,\n searchQuery,\n searchType,\n href,\n shouldUpdateSearchForm,\n ]);\n\n return (\n \n {children}\n \n );\n};\n","import * as React from \"react\";\nimport { Link, LinkProps } from \"react-router-dom\";\nimport styled, { css } from \"styled-components\";\n\nimport { SvgSprite } from \"./SvgSprite\";\n\nimport classNames from \"classnames\";\n\nimport { OpportunitySearchQueryState } from \"@skv/state\";\nimport { FAVOURITES_ENUM } from \"@skv/state/src/state/favourites\";\nimport { getDateRange, isInThePast, resizeImg } from \"@skv/util\";\nimport { formatDistanceToNow } from \"date-fns\";\nimport { BaseFavouriteBtn, BaseFavouriteBtnProps, EventBadge } from \"./\";\nimport {\n VolunteerSearchLink,\n VolunteerSearchLinkProps,\n} from \"./VolunteerSearchLink\";\n\nconst ResultListSvgSprite = styled(SvgSprite)`\n vertical-align: middle;\n`;\n\nexport const ResultCardHeader = styled.header.attrs((props) => ({\n ...props,\n className: props.className || \"mb-2\",\n}))``;\n\nexport const ResultCard = styled.article<{\n $isFeatured?: boolean;\n $isNew?: boolean;\n hover?: boolean;\n}>`\n position: relative;\n margin-top: -1px;\n overflow-wrap: break-word;\n\n li > & {\n border-top: 1px solid ${(p) => p.theme.gray300};\n }\n\n li:not(:last-child) > & {\n border-bottom: 1px solid ${(p) => p.theme.gray300};\n }\n\n ${(p) =>\n p.hover !== false &&\n css`\n &:hover {\n background-color: ${(p) => p.theme.gray100};\n margin-left: -1rem;\n margin-right: -1rem;\n padding-left: 1rem;\n padding-right: 1rem;\n }\n `}\n\n ${(p) => {\n if (p.$isFeatured) {\n return css`\n padding-left: 0.5rem;\n margin-left: -0.5rem;\n box-shadow: -2px 0 0 ${(p) => p.theme.primaryColor};\n\n @media (min-width: ${(p) => p.theme.mdBreakpoint}) {\n padding-left: 1rem;\n margin-left: -1rem;\n }\n\n ${ResultCardHeader}:before {\n content: \"In Demand\";\n display: inline-flex;\n float: right;\n padding: 0 0 0.5rem 0.5rem;\n font-size: 0.875rem;\n color: ${(p) => p.theme.primaryColor};\n }\n `;\n }\n\n if (p.$isNew) {\n return css`\n ${ResultCardHeader}:before {\n content: \"New\";\n display: inline-flex;\n float: right;\n padding: 0 0 0.5rem 0.5rem;\n font-size: 0.875rem;\n color: ${(p) => p.theme.dangerColor};\n }\n `;\n }\n }}\n`;\n\nconst SearchResultStretchedLink = styled(Link)<{\n to: LinkProps[\"to\"];\n}>`\n &:visited {\n color: ${(p) => p.theme.primaryColor};\n }\n &:after {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n }\n`;\n\nexport const ResultCardHeading = styled.h3.attrs(({ className, ...rest }) => ({\n ...rest,\n className: className || \"h4 mb-0\",\n}))``;\n\ntype HeadingProps = React.HTMLAttributes;\n\nexport interface ResultCardLinkHeadingProps\n extends Omit {\n title: React.ReactNode;\n to: LinkProps[\"to\"];\n stretchedLink?: boolean;\n agencyName?: string | null;\n}\n\nexport const ResultCardLinkHeading: React.FC = ({\n title,\n to,\n stretchedLink = true,\n agencyName,\n ...rest\n}) => {\n return (\n \n {stretchedLink ? (\n {title}\n ) : (\n {title}\n )}\n {!!agencyName && (\n
    \n \n supported by\n {\" \"}\n {agencyName}\n
    \n )}\n
    \n );\n};\n\nexport interface ResultCardVolunteerSearchLinkHeadingProps\n extends Omit {\n title: React.ReactNode;\n to: Exclude;\n searchQuery: OpportunitySearchQueryState;\n stretchedLink?: boolean;\n shouldUpdateSearchForm?: VolunteerSearchLinkProps[\"shouldUpdateSearchForm\"];\n}\n\nexport const ResultCardVolunteerSearchLinkHeading: React.FC<\n ResultCardVolunteerSearchLinkHeadingProps\n> = ({\n title,\n to,\n searchQuery,\n stretchedLink = true,\n shouldUpdateSearchForm,\n ...rest\n}) => {\n return (\n \n {stretchedLink ? (\n \n <>{title}\n \n ) : (\n \n <>{title}\n \n )}\n \n );\n};\n\nexport const ResultCardSubHeading = styled.p.attrs(\n ({ className, ...rest }) => ({\n ...rest,\n className: className || \"h5 mb-0\",\n })\n)``;\n\ninterface ResultCardLinkSubHeadingProps\n extends Omit {\n title: React.ReactNode;\n to?: LinkProps[\"to\"];\n agencyName?: string;\n organisationMemberName?: string;\n isOrgLinkedEntity?: boolean;\n}\n\nexport const ResultCardLinkSubHeading: React.FC<\n ResultCardLinkSubHeadingProps\n> = ({\n title,\n to,\n agencyName,\n organisationMemberName,\n isOrgLinkedEntity,\n ...rest\n}) => {\n return (\n \n {organisationMemberName || agencyName ? (\n <>\n {isOrgLinkedEntity === true ? (\n <>\n {title}{\" \"}\n \n supported by {agencyName}\n \n \n ) : (\n <>\n {organisationMemberName}{\" \"}\n \n managed by {title}\n \n \n )}\n \n ) : (\n <>{title}\n )}\n \n );\n};\n\nconst BaseResultMetaListItem = styled.li.attrs<{ small?: boolean }>(\n ({ small = true, className, ...props }) => ({\n className: classNames(\n \"list-inline-item\",\n {\n small: small,\n },\n className\n ),\n ...props,\n })\n)`\n margin-bottom: 0.5rem;\n`;\n\ntype LiElementProps = React.DetailedHTMLProps<\n React.LiHTMLAttributes,\n HTMLLIElement\n>;\n\ninterface ResultMetaListItemProps extends LiElementProps {\n icon?: \"marker\" | \"ribbon\" | \"briefcase\" | \"calendar\";\n small?: boolean;\n}\n\nexport const ResultMetaListItem: React.FC = ({\n children,\n icon,\n small,\n className,\n}) => {\n const altText =\n icon === \"marker\"\n ? \"Location: \"\n : icon === \"ribbon\"\n ? \"Category: \"\n : icon === \"briefcase\"\n ? \"Types of work: \"\n : \"Event date\";\n\n return (\n \n {icon && (\n \n )}\n {children}\n \n );\n};\n\ninterface ResultMetaListProps {\n $listItemSpacing?: string;\n}\n\nexport const ResultMetaList = styled.ul.attrs((props) => ({\n ...props,\n className: classNames(\"list-inline\", props.className),\n}))`\n ${BaseResultMetaListItem}:not(:last-child) {\n margin-right: ${(p) => p.$listItemSpacing || \"1rem\"};\n }\n\n margin-bottom: 0;\n`;\n\n/* TODO : Revisit this isolated ml-n3 class */\nexport const ResultCardFooter = styled.footer.attrs((props) => ({\n ...props,\n className: props.className || \"ml-n3 d-flex align-items-center\",\n}))``;\n\n/*\n Full components that are built from ResultCard\n*/\n\ninterface OpportunityResultCardProps {\n name: React.ReactNode;\n to: ResultCardLinkHeadingProps[\"to\"];\n\n organisationName: React.ReactNode;\n organisationTo: ResultCardLinkSubHeadingProps[\"to\"];\n\n agencyName?: string;\n organisationMemberName?: string;\n isOrgLinkedEntity?: boolean;\n\n locations?: React.ReactNode;\n category?: React.ReactNode;\n typesOfWork?: React.ReactNode;\n\n summary: React.ReactNode;\n\n logoUrl?: string;\n isFeatured?: boolean;\n isNew?: boolean;\n eventStartDate?: string;\n eventEndDate?: string;\n\n isFavourited: boolean;\n onFavourite: BaseFavouriteBtnProps[\"onFavourite\"];\n onUnfavourite: BaseFavouriteBtnProps[\"onUnfavourite\"];\n\n headingProps?: Partial[0]>;\n subHeadingProps?: Partial[0]>;\n}\n\nexport const OpportunityResultCard: React.FC = ({\n name,\n to,\n organisationName,\n organisationTo,\n organisationMemberName,\n agencyName,\n isOrgLinkedEntity,\n locations,\n category,\n typesOfWork,\n summary,\n logoUrl,\n isFeatured = false,\n isNew = false,\n eventStartDate,\n eventEndDate,\n\n isFavourited,\n\n headingProps,\n subHeadingProps,\n\n onFavourite,\n onUnfavourite,\n}) => {\n return (\n \n \n \n \n \n\n {eventStartDate && (\n \n {isInThePast(eventStartDate) === false && (\n \n \n \n )}\n \n {getDateRange(eventStartDate, eventEndDate)}\n \n \n )}\n\n \n {locations && (\n {locations}\n )}\n {category && (\n {category}\n )}\n {typesOfWork && (\n \n {typesOfWork}\n \n )}\n \n

    {summary}

    \n \n \n {logoUrl && (\n \n )}\n \n
    \n );\n};\n\ninterface OrganisationResultCardProps {\n organisationName: string;\n to: ResultCardLinkHeadingProps[\"to\"];\n category: React.ReactNode;\n headingProps?: Partial[0]>;\n agencyName?: string | null;\n}\n\nexport const OrganisationResultCard: React.FC = ({\n organisationName,\n to,\n category,\n headingProps,\n agencyName,\n}) => {\n return (\n \n \n \n \n \n {category && (\n {category}\n )}\n \n \n );\n};\n\ninterface OrganisationFavouriteResultCardProps {\n organisationName: React.ReactNode;\n to: ResultCardLinkHeadingProps[\"to\"];\n\n locations?: React.ReactNode;\n category?: React.ReactNode;\n\n isFavourited: boolean;\n onFavourite: BaseFavouriteBtnProps[\"onFavourite\"];\n onUnfavourite: BaseFavouriteBtnProps[\"onUnfavourite\"];\n\n logoUrl?: string;\n summary: React.ReactNode;\n\n headingProps?: Partial[0]>;\n}\n\nexport const OrganisationFavouriteResultCard: React.FC<\n OrganisationFavouriteResultCardProps\n> = ({\n to,\n isFavourited,\n onFavourite,\n onUnfavourite,\n organisationName,\n locations,\n category,\n logoUrl,\n summary,\n headingProps,\n}) => {\n return (\n \n \n \n \n \n {locations && (\n {locations}\n )}\n {category && (\n {category}\n )}\n \n

    {summary}

    \n\n \n \n {logoUrl && (\n \n )}\n \n
    \n );\n};\n\ninterface OpportunityFavouriteResultCardProps {\n name: React.ReactNode;\n to: ResultCardLinkHeadingProps[\"to\"];\n organisationName: React.ReactNode;\n\n locations?: React.ReactNode;\n category?: React.ReactNode;\n typesOfWork?: React.ReactNode;\n\n summary: React.ReactNode;\n\n logoUrl?: string;\n\n isFavourited: boolean;\n onFavourite: BaseFavouriteBtnProps[\"onFavourite\"];\n onUnfavourite: BaseFavouriteBtnProps[\"onUnfavourite\"];\n\n headingProps?: Partial[0]>;\n subHeadingProps?: Partial[0]>;\n date?: string;\n}\n\nexport const OpportunityFavouriteResultCard: React.FC<\n OpportunityFavouriteResultCardProps\n> = ({\n name,\n to,\n organisationName,\n locations,\n category,\n typesOfWork,\n summary,\n logoUrl,\n isFavourited,\n onFavourite,\n onUnfavourite,\n headingProps,\n subHeadingProps,\n date,\n}) => {\n const formatDateDistance = (dateString) => {\n const formattedDate = formatDistanceToNow(new Date(dateString), {\n addSuffix: true,\n });\n return formattedDate;\n };\n\n return (\n \n \n {date ? (\n
    \n \n {formatDateDistance(date)}\n
    \n ) : (\n \n )}\n \n
    \n \n {locations && (\n {locations}\n )}\n {category && (\n {category}\n )}\n {typesOfWork && (\n \n {typesOfWork}\n \n )}\n \n

    {summary}

    \n \n \n {logoUrl && (\n \n )}\n \n
    \n );\n};\n\ninterface OrganisationDetailsOpportunityResultCardProps {\n name: React.ReactNode;\n to: ResultCardLinkHeadingProps[\"to\"];\n\n locations?: React.ReactNode;\n category?: React.ReactNode;\n typesOfWork?: React.ReactNode;\n\n headingProps?: Partial[0]>;\n}\n\nexport const OrganisationDetailsOpportunityResultCard: React.FC<\n OrganisationDetailsOpportunityResultCardProps\n> = ({ name, to, locations, category, typesOfWork, headingProps }) => {\n return (\n \n \n \n \n \n {locations && (\n {locations}\n )}\n {category && (\n {category}\n )}\n {typesOfWork && (\n \n {typesOfWork}\n \n )}\n \n \n );\n};\n","import * as React from \"react\";\n\nimport { KeyValue } from \"@skv/core\";\n\nimport { Dropdown, Form } from \"react-bootstrap\";\n\nimport { DropdownMenuProps } from \"react-bootstrap/esm/DropdownMenu\";\n\nconst FilterToggle = React.forwardRef<\n HTMLButtonElement,\n React.DetailedHTMLProps<\n React.ButtonHTMLAttributes,\n HTMLButtonElement\n >\n>(({ children, className = \"btn btn-link\", onClick, ...rest }, ref) => {\n /*\n react-bootstrap adds the dropdown-toggle class via classNames\n see https://github.com/react-bootstrap/react-bootstrap/blob/master/src/DropdownToggle.tsx#L69\n so remove it here\n */\n const _className = React.useMemo(() => {\n let classNameArr = className.split(\" \");\n classNameArr = classNameArr.filter((n) => n !== \"dropdown-toggle\");\n return classNameArr.join(\" \");\n }, [className]);\n\n return (\n {\n onClick(e);\n }}\n >\n {children}\n \n );\n});\n\ntype FilterMenuProps = React.DetailedHTMLProps<\n React.HTMLAttributes,\n HTMLDivElement\n> &\n DropdownMenuProps;\n\nconst FilterMenu = React.forwardRef(\n (\n {\n children,\n style,\n className,\n \"aria-labelledby\": labelledBy,\n show,\n // close,\n alignRight,\n ...rest\n },\n ref\n ) => {\n const formRef = React.useRef(null);\n\n React.useEffect(() => {\n if (show) {\n const chkBox = formRef.current.querySelector(\n \"input[type='checkbox']\"\n );\n if (chkBox) {\n chkBox.focus();\n }\n }\n }, [show]);\n\n const handleRef = React.useCallback(\n (el: HTMLDivElement) => {\n (ref as (instance: HTMLDivElement) => void)(el);\n formRef.current = el;\n },\n [ref]\n );\n\n return (\n \n {children}\n \n );\n }\n);\n\ninterface FilterGroup {\n label: string;\n name: string;\n data: T[];\n labelKey: (node: T) => string;\n valueKey: (node: T) => React.InputHTMLAttributes[\"value\"];\n isChecked: (node: T) => boolean;\n onChange?: (e) => void;\n onBlur?: (e) => void;\n}\n\ninterface ResultFiltersDropdownProps {\n filters: FilterGroup[];\n renderExtra?: () => JSX.Element;\n btnProps?: Omit<\n React.DetailedHTMLProps<\n React.ButtonHTMLAttributes,\n HTMLButtonElement\n >,\n \"ref\"\n >;\n\n onReset?: (e: React.MouseEvent) => void;\n}\n\nexport const ResultFiltersDropdown = ({\n filters,\n renderExtra,\n btnProps = {},\n onReset = (e) => void 0,\n}: ResultFiltersDropdownProps): JSX.Element => {\n const activeFilters = React.useMemo(() => {\n return filters.reduce((acc, cur) => {\n const countInGroup = cur.data.reduce((acc2, cur2) => {\n if (cur.isChecked(cur2)) {\n acc2++;\n }\n\n return acc2;\n }, 0);\n\n acc = acc + countInGroup;\n return acc;\n }, 0);\n }, [filters]);\n\n return (\n \n \n Filters\n {activeFilters}\n \n\n \n {filters.map(\n (\n {\n label,\n data,\n isChecked,\n labelKey,\n name,\n valueKey,\n onChange,\n onBlur,\n },\n idx\n ) => {\n return (\n \n
      \n
    • {label}
    • \n {data.map((n) => (\n
    • \n \n
    • \n ))}\n
    \n {idx !== filters.length - 1 &&
    }\n
    \n );\n }\n )}\n {renderExtra && renderExtra()}\n
    \n
    \n \n Reset\n \n
    \n
    \n \n
    \n
    \n \n
    \n );\n};\n","import * as React from \"react\";\nimport { AspectRatio } from \"./\";\nimport { SvgSprite } from \"./SvgSprite\";\nimport { OpportunitySearchTypes } from \"../types\";\n\ninterface ResultSearchTypeBreakProps {\n opportunitySearchType: OpportunitySearchTypes;\n}\n\nexport const ResultSearchTypeBreak: React.FC = ({\n opportunitySearchType,\n}) => {\n const summary = React.useMemo(() => {\n if (process.env.TARGET_ENV === \"au\" || process.env.TARGET_ENV === \"nsw\") {\n switch (opportunitySearchType) {\n case OpportunitySearchTypes.NoLocation:\n default:\n return null;\n case OpportunitySearchTypes.LocationSuburb:\n return (\n

    \n We found more opportunities in the\n
    surrounding suburbs and areas\n

    \n );\n case OpportunitySearchTypes.LocationRegional:\n return (\n

    \n We found more opportunities that are\n
    state wide or remote\n

    \n );\n case OpportunitySearchTypes.LocationMetro:\n return (\n

    \n We found more opportunities in the\n
    surrounding areas\n

    \n );\n case OpportunitySearchTypes.LocationStateRegion:\n return (\n

    \n We found more opportunities that are\n
    remote\n

    \n );\n }\n }\n\n if (process.env.TARGET_ENV === \"nz\") {\n switch (opportunitySearchType) {\n case OpportunitySearchTypes.NoLocation:\n default:\n return null;\n case OpportunitySearchTypes.LocationSuburb:\n return (\n

    \n We found more opportunities in the\n
    surrounding suburbs and areas\n

    \n );\n case OpportunitySearchTypes.LocationRegional:\n return (\n

    \n We found more opportunities in the\n
    surrounding areas\n

    \n );\n case OpportunitySearchTypes.LocationMetro:\n return (\n

    \n We found more opportunities in the\n
    surrounding areas\n

    \n );\n case OpportunitySearchTypes.LocationStateRegion:\n return (\n

    \n We found more opportunities that are\n
    remote\n

    \n );\n }\n }\n }, [opportunitySearchType]);\n\n return (\n \n \n \n \n {summary}\n \n );\n};\n","import * as React from \"react\";\nimport { useLocation } from \"react-router-dom\";\n\nexport const ScrollSink: React.FC<{}> = () => {\n const cache = React.useRef>({});\n\n const location = useLocation<{\n scroll: boolean;\n }>();\n\n React.useEffect(() => {\n if (!location.key) {\n console.log(\"No location key found. Do nothing.\");\n return;\n }\n\n if (cache.current[location.key]) {\n console.log(\"Popstate page. Do nothing.\");\n return;\n }\n\n if (location.state?.scroll === false) {\n /*\n we can prevent scrolling on history.push by sending down state.scroll = false,\n this is used on tabbed navigation\n */\n return;\n }\n\n cache.current[location.key] = true;\n\n window.scrollTo(0, 0);\n }, [location.pathname, location.key, location.state, cache]);\n\n return null;\n};\n","import { ResultListPagination } from \"./\";\n\ninterface CreateColumnCssOptions {}\n\ninterface ResultTableProps {\n currentPage: number;\n dataSource: T[];\n totalCount: number;\n totalPages: number;\n renderHead: (rowProps: typeof headRowProps) => JSX.Element;\n renderBody: (dataSource: T[], rowProps: typeof bodyRowProps) => JSX.Element;\n renderEmpty: () => JSX.Element;\n}\n\nconst headRowProps = {\n className: \"d-none d-md-table-row text-nowrap\",\n};\n\nconst bodyRowProps = {\n className: \"d-flex flex-column d-md-table-row\",\n};\n\nexport const ResultTable = ({\n currentPage,\n totalCount,\n totalPages,\n dataSource,\n renderHead,\n renderBody,\n renderEmpty,\n}: ResultTableProps): JSX.Element => {\n if (totalCount > 0) {\n return (\n <>\n
    \n tbody td:not(:first-child) {\n @media (max-width: ${(p): string => p.theme.mdBreakpoint}) {\n border-top: 0 !important;\n padding-top: 0 !important;\n\n &:not(:last-child) {\n padding-bottom: 0 !important;\n }\n }\n }\n\n > tbody td:first-child {\n @media (max-width: ${(p): string => p.theme.mdBreakpoint}) {\n // border-top: 0 !important;\n padding-bottom: 0 !important;\n }\n }\n `}\n >\n {renderHead(headRowProps)}\n {renderBody(dataSource, bodyRowProps)}\n \n
    \n \n \n );\n }\n\n return renderEmpty();\n};\n","import { timingFunctions } from \"polished\";\nimport * as React from \"react\";\nimport { Collapse, Form } from \"react-bootstrap\";\nimport styled, { css } from \"styled-components\";\n\nimport { FilterName, KeyValue, SvgSprite, useInitialFocus } from \"@skv/core\";\n\nimport useOutsideClick from \"@skv/core/src/hooks/useOutsideClick\";\n\nconst FilterHeadingBtn = styled.button.attrs({\n type: \"button\",\n})<{ $isInactive: boolean }>`\n border: 0;\n background-color: transparent;\n line-height: 1;\n transition: color 150ms ${timingFunctions(\"easeOutCubic\")};\n\n ${(p) => css`\n color: ${p.theme.lightColor}${p.$isInactive ? \"4D\" : \"FF\"};\n `}\n`;\n\nconst FilterCheckboxLabel = styled.span<{ $isDisabled: boolean }>`\n position: relative;\n color: ${(p) => p.theme.gray900};\n top: ${1 / 16}rem;\n cursor: ${(p) => (p.$isDisabled ? \"default\" : \"pointer\")};\n\n &:hover {\n font-weight: ${(p) => p.$isDisabled === false && \"bold\"};\n }\n`;\n\ninterface AdditionalFilterProps {\n heading: string;\n name: FilterName;\n data: KeyValue[];\n openFilter: FilterName;\n setOpenFilter: React.Dispatch>;\n onChange: (event: React.ChangeEvent) => void;\n disabledCategory?: number;\n shouldFocus: boolean;\n selectedIds: number[];\n}\n\nexport const AdditionalFilter = ({\n heading,\n name,\n data,\n openFilter,\n setOpenFilter,\n onChange,\n disabledCategory,\n shouldFocus,\n selectedIds,\n}: AdditionalFilterProps) => {\n const type = React.useMemo(() => {\n switch (name) {\n case \"category\":\n return \"categories\";\n case \"commitment\":\n return \"commitments\";\n case \"daytime\":\n return \"availabilities\";\n case \"suitablefor\":\n return \"suitabilities\";\n case \"typeofwork\":\n return \"work types\";\n default:\n throw Error(\"Filter name is not defined.\");\n }\n }, [name]);\n\n const isOpen = openFilter === name;\n\n const displayHeading =\n selectedIds.length === 0\n ? `${type === \"suitabilities\" ? \"Any\" : \"All\"} ${type}`\n : selectedIds.length === 1\n ? data.find((n) => n.id === selectedIds[0])?.name || heading\n : `${selectedIds.length} ${type}`;\n\n const dropdownRef = React.useRef(null);\n const filterHeadingRef = useInitialFocus({\n shouldFocus,\n });\n\n const closeDropdown = () => {\n if (openFilter === name) {\n setOpenFilter(null);\n }\n };\n\n useOutsideClick(dropdownRef, closeDropdown);\n\n const toggleDropdown = (event) => {\n event.stopPropagation();\n isOpen ? setOpenFilter(null) : setOpenFilter(name);\n };\n\n return (\n p.theme.smBreakpoint}) {\n position: relative;\n\n &:first-of-type {\n border-left: 1px solid rgba(255, 255, 255, 0.3);\n }\n &:last-of-type {\n border-right: 1px solid rgba(255, 255, 255, 0.3);\n }\n }\n\n @media (min-width: ${(p) => p.theme.mdBreakpoint}) {\n flex: unset;\n }\n `}\n >\n
    \n p.theme.mdBreakpoint}) {\n line-height: 1;\n overflow: unset;\n }\n `}\n >\n {heading}\n :\n \n \n \n {displayHeading}\n \n\n \n \n\n \n p.theme.smBreakpoint}) {\n top: calc(100% + 0.5rem);\n width: 300px;\n }\n `}\n >\n
    \n {data.map((filter) => {\n const isDisabled =\n name === \"category\" && filter.id === disabledCategory;\n return (\n \n \n {filter.name}\n \n }\n onChange={(e) => {\n onChange(e);\n setOpenFilter(null);\n }}\n value={filter.id}\n disabled={isDisabled}\n checked={\n selectedIds ? selectedIds.includes(filter.id) : false\n }\n />\n \n );\n })}\n
    \n
    \n \n \n \n );\n};\n","import { useMachine } from \"@xstate/react\";\nimport * as React from \"react\";\nimport { useHistory, useLocation, useRouteMatch } from \"react-router-dom\";\nimport { useForm } from \"react-yup\";\nimport * as Yup from \"yup\";\n\nimport {\n opportunityResultStore,\n OpportunitySearchQueryState,\n SearchFormEvent,\n searchFormMachine,\n useGlobal,\n useOpportunitySearchQuery,\n useThunkDispatch,\n} from \"@skv/state\";\n\nimport {\n AdditionalFilter,\n AsyncTypeaheadProps,\n AsyncTypeaheadSearch,\n FilterName,\n Form,\n FriendlyKeyValueUrl,\n OpportunitySearchResults,\n SvgSprite,\n useSearchFilters,\n} from \"@skv/core\";\n\nconst SearchSchema = Yup.object({\n keyword: Yup.string().required().default(\"\").label(\"Keyword\"),\n where: Yup.string().required().default(\"\").label(\"Where\"),\n commitment: Yup.array()\n .of(Yup.number())\n .required()\n .default([])\n .label(\"Commitment\"),\n category: Yup.array()\n .of(Yup.number())\n .required()\n .default([])\n .label(\"Category\"),\n daytime: Yup.string().label(\"Day and time\"),\n suitablefor: Yup.array()\n .of(Yup.number())\n .required()\n .default([])\n .label(\"Suitable for\"),\n typeofwork: Yup.array()\n .of(Yup.number())\n .required()\n .default([])\n .label(\"Type of work\"),\n});\n\nexport const SearchFormWithFilters = (): JSX.Element => {\n const { push, replace } = useHistory();\n const formRef = React.useRef(null);\n const location = useLocation<{\n analytics?: {\n didKeywordAutoComplete: boolean;\n didWhereAutoComplete: boolean;\n };\n resetSearch?: boolean;\n searchQuery?: ReturnType;\n }>();\n\n const dispatch = useThunkDispatch();\n const searchQuery = useOpportunitySearchQuery();\n\n const { categoryList } = useGlobal();\n\n const match = useRouteMatch({\n path: [\"/*-volunteering\", \"/volunteering*\"],\n });\n\n const initialValues = React.useMemo(\n () => ({\n keyword: \"\",\n where: \"\",\n commitment: [] as number[],\n category: [] as number[],\n suitablefor: [] as number[],\n typeofwork: [] as number[],\n }),\n []\n );\n\n const {\n filters,\n handleFiltersChange,\n handleSelectChange,\n handleSelectClear,\n } = useSearchFilters({\n searchQuery,\n onChange: (nextQuery) => {\n dispatch(\n opportunityResultStore.actions.fetchOpportunities(nextQuery)\n ).then((data) => {\n push(data.canonicalUrl, {\n searchQuery: nextQuery,\n analytics: location.state?.analytics,\n });\n });\n },\n });\n\n const [isRepeatSearch, setIsRepeatSearch] = React.useState(() => {\n if (\n match?.isExact ||\n location.pathname.includes(\"/volunteering\") ||\n location.search\n ) {\n return true;\n }\n return !!searchQuery.category.length;\n });\n\n const [openFilter, setOpenFilter] = React.useState(null);\n const [showFilters, setShowFilters] = React.useState(isRepeatSearch);\n const [focusFilter, setFocusFilter] = React.useState();\n\n const form = useForm({\n defaultValues: initialValues,\n validationSchema: SearchSchema,\n });\n\n const { setValues } = form;\n const [current, send] = useMachine(searchFormMachine);\n\n React.useEffect(() => {\n // If the user clicks on the Opportunities tab, or the SEEK logo,\n // pass through the resetSearch flag to reset the search form.\n if (location.state?.resetSearch) {\n setShowFilters(location.pathname === \"/volunteering\");\n setIsRepeatSearch(location.pathname === \"/volunteering\");\n setValues(() => initialValues);\n send({\n type: \"CLEAR_ALL_INPUTS\",\n });\n return;\n }\n\n // On location change populate the WHAT input\n if (searchQuery.keyword) {\n send({ type: \"KEYWORD_INPUT_CHANGE\", value: searchQuery.keyword });\n } else if (searchQuery.category.length === 1) {\n send({\n type: \"KEYWORD_INPUT_SELECT\",\n value: categoryList.find(({ id }) => id === searchQuery.category[0]),\n });\n }\n\n // On location change populate the WHERE input\n if (searchQuery.where) {\n send({ type: \"LOCATION_INPUT_CHANGE\", value: searchQuery.where });\n }\n\n // On location change populate the COMMITMENT input\n if (searchQuery.commitment?.length) {\n const commitmentList = searchQuery.commitment;\n searchQuery[\"commitment\"] = commitmentList;\n setValues((prev) => ({\n ...prev,\n commitment: commitmentList,\n }));\n }\n\n // On location change populate the ADDITIONAL FILTERS\n const isAdditionalFiltersOpen =\n searchQuery.category?.length ||\n searchQuery.typeofwork?.length ||\n searchQuery.suitablefor?.length;\n\n if (isAdditionalFiltersOpen) {\n setShowFilters(true);\n setIsRepeatSearch(true);\n setValues((prev) => ({\n ...prev,\n category: searchQuery.category || [],\n suitablefor: searchQuery.suitablefor || [],\n typeofwork: searchQuery.typeofwork || [],\n }));\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [location.key]);\n\n const categoryOptions = React.useMemo(() => {\n return (categoryList || []).filter(\n (n) =>\n n.name\n .toLocaleLowerCase()\n .indexOf(form.values.keyword.toLocaleLowerCase()) > -1\n );\n }, [categoryList, form.values.keyword]);\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n setShowFilters(true);\n setIsRepeatSearch(true);\n\n const query: OpportunitySearchQueryState = {\n ...location.state?.searchQuery,\n keyword: current.context.didKeywordAutoComplete\n ? \"\"\n : current.context.keyword,\n category: isRepeatSearch\n ? location.state?.searchQuery.category || []\n : current.context.category,\n commitment: isRepeatSearch\n ? location.state?.searchQuery.commitment || []\n : form.values.commitment,\n where: current.context.where,\n };\n\n if (\"page\" in query) {\n delete query.page;\n }\n\n const createNextHistoryState = (data: OpportunitySearchResults) => ({\n searchQuery: {\n ...query,\n where: data.canonicalLocation || query.where,\n },\n analytics: {\n didKeywordAutoComplete: current.context.didKeywordAutoComplete,\n didWhereAutoComplete: current.context.didWhereAutoComplete,\n },\n });\n\n /*\n push to /volunteering url to show search page\n if current url is not on the search page.\n This is needed to show the loading states,\n otherwise on a slow connection for example,\n it would just stay on the home page and only change\n page when the request is finished, and the user will\n not see the loading indicator.\n */\n if (!match) {\n push(`/volunteering`, { searchQuery: query });\n dispatch(opportunityResultStore.actions.fetchOpportunities(query)).then(\n (data) => {\n replace(data.canonicalUrl, createNextHistoryState(data));\n }\n );\n } else {\n dispatch(opportunityResultStore.actions.fetchOpportunities(query)).then(\n (data) => {\n push(data.canonicalUrl, createNextHistoryState(data));\n }\n );\n }\n };\n\n const onOptionSelected = (\n selected: Array,\n field: FilterName\n ) => {\n const action: SearchFormEvent[\"type\"] =\n field === \"keyword\" ? \"KEYWORD_INPUT_SELECT\" : \"LOCATION_INPUT_SELECT\";\n\n if (selected.length) {\n Promise.resolve()\n .then(() => {\n send({\n type: action,\n value: selected[0],\n } as SearchFormEvent);\n })\n .then(() => {\n setOpenFilter(null);\n\n if (field === \"keyword\") {\n searchQuery[\"keyword\"] = \"\";\n const selectedId = (selected[0] as FriendlyKeyValueUrl).id;\n\n if (isRepeatSearch) {\n handleSelectChange(\"category\", selectedId);\n } else {\n if (!searchQuery[\"category\"].includes(selectedId)) {\n searchQuery[\"category\"].push(selectedId);\n const prevCategories = form.getValues().category as number[];\n form.setValue(\n \"category\",\n [...prevCategories, selectedId],\n true\n );\n }\n }\n }\n\n if (field === \"where\") {\n if (isRepeatSearch) {\n formRef.current?.requestSubmit();\n } else {\n searchQuery[field as string] = selected[0] as string;\n }\n }\n });\n }\n };\n\n const getWhatValueFromContext = () => {\n if (current.context.keyword) {\n return current.context.keyword;\n }\n\n if (current.context.category.length) {\n const selectedId = current.context.category[0];\n return categoryList.find((n) => n.id === selectedId)?.name || \"\";\n }\n\n return \"\";\n };\n\n const renderMenu = React.useCallback<\n AsyncTypeaheadProps[\"renderMenu\"]\n >(\n (results, menuProps, { Menu, MenuItem, MenuHeader }) => {\n if (\n current.matches(\"initialSuggestions.loading\") ||\n current.matches(\"relatedSuggestions.loading\")\n ) {\n return (\n }\n aria-labelledby=\"where-heading\"\n >\n Loading please wait...\n \n );\n }\n\n // render initial suggestions if where input is < 2 chars\n // for now, we know initialSuggestions[0] is online or remote,\n if (current.context.where.length <= 2) {\n return (\n }\n aria-labelledby=\"where-heading\"\n >\n Remote\n \n Suggested areas\n {results.map((result, idx) => {\n if (idx === 0) {\n return null;\n }\n\n return ;\n })}\n \n );\n }\n\n return (\n }\n aria-labelledby=\"where-heading\"\n >\n {results.length ? (\n results.map((result, idx) => (\n \n ))\n ) : (\n No results\n )}\n \n );\n },\n [current]\n );\n\n const commitmentList =\n filters\n .find((n) => n.name === \"commitment\")\n ?.data.map((n) => ({ id: `${n.id}`, name: n.name })) || [];\n\n return (\n
    \n \n \n
    \n
    \n \n \n What\n \n \n id=\"keyword\"\n inputProps={{\n name: \"keyword\",\n autoComplete: \"off\",\n placeholder: \"What are you interested in?\",\n className: \"focus-light\",\n }}\n labelKey={(option) => option.name}\n onInputChange={(text) => {\n const id = current.context.category?.[0] ?? null;\n if (id !== null && searchQuery.category.includes(id)) {\n // If the user has selected a category and is typing remove it from the categories list.\n if (isRepeatSearch) {\n handleSelectChange(\"category\", id);\n } else {\n searchQuery[\"category\"] = searchQuery.category.filter(\n (n) => n === id\n );\n }\n }\n\n send({ type: \"KEYWORD_INPUT_CHANGE\", value: text });\n searchQuery[\"keyword\"] = text;\n }}\n onSearch={() => {\n return;\n }}\n onChange={(selected) => onOptionSelected(selected, \"keyword\")}\n onClear={() => {\n Promise.resolve().then(() => {\n setOpenFilter(null);\n send({ type: \"KEYWORD_INPUT_CLEAR\" });\n\n const id = current.context.category?.[0] ?? null;\n if (id !== null && searchQuery.category.includes(id)) {\n const updatedCategories = searchQuery.category.filter(\n (n) => n === id\n );\n form.setValue(\"category\", updatedCategories, true);\n if (isRepeatSearch) {\n handleSelectChange(\"category\", id);\n } else {\n searchQuery[\"category\"] = updatedCategories;\n }\n } else {\n searchQuery[\"keyword\"] = \"\";\n if (isRepeatSearch) {\n formRef.current?.requestSubmit();\n }\n }\n });\n }}\n open={openFilter === \"keyword\" && categoryOptions.length > 0}\n onClick={() => {\n if (openFilter !== \"keyword\") {\n setOpenFilter(\"keyword\");\n }\n }}\n onFocus={() => setOpenFilter(\"keyword\")}\n onBlur={() => setOpenFilter(null)}\n onKeyDown={(e) => {\n switch (e.key) {\n case \"ArrowUp\":\n case \"ArrowDown\":\n if (openFilter !== \"keyword\") {\n setOpenFilter(\"keyword\");\n return false;\n }\n break;\n case \"Escape\":\n if (openFilter === \"keyword\") {\n setOpenFilter(null);\n }\n break;\n }\n }}\n isLoading={current.matches(\"relatedSuggestions.loading\")}\n options={categoryOptions}\n defaultInputValue={getWhatValueFromContext()}\n selected={\n current.context.keyword\n ? []\n : current.context.category\n .map((id) => categoryList.find((l) => l.id === id))\n .filter((n) => n != null)\n }\n minLength={0}\n renderMenu={(\n results,\n menuProps,\n { Menu, MenuItem, MenuHeader }\n ): JSX.Element => {\n return (\n \n }\n aria-labelledby=\"category-heading\"\n >\n \n Categories\n \n {results.map((n, idx) => (\n \n ))}\n \n );\n }}\n />\n
    \n\n
    \n {\n if (isRepeatSearch) {\n handleSelectClear(\"commitment\");\n } else {\n form.setValue(\"commitment\", [], true);\n searchQuery[\"commitment\"] = [];\n }\n }}\n onDropdownOpen={() => setOpenFilter(null)}\n onUpdateField={(value) => {\n const id = Number(value);\n if (isRepeatSearch) {\n handleSelectChange(\"commitment\", id);\n } else {\n const updatedList = form.values.commitment.includes(id)\n ? form.values.commitment.filter((n) => n !== id)\n : [...form.values.commitment, id];\n\n form.setValue(\"commitment\", updatedList, true);\n searchQuery[\"commitment\"] = updatedList;\n }\n }}\n />\n
    \n\n \n \n \n id=\"where\"\n inputProps={{\n name: \"where\",\n autoComplete: \"off\",\n placeholder: \"Enter suburb, town or city\",\n className: \"focus-light\",\n }}\n open={openFilter === \"where\"}\n onClick={() => {\n if (openFilter !== \"where\") {\n setOpenFilter(\"where\");\n }\n }}\n onFocus={() => setOpenFilter(\"where\")}\n onBlur={() => setOpenFilter(null)}\n onInputChange={(text) => {\n send({ type: \"LOCATION_INPUT_CHANGE\", value: text });\n searchQuery[\"where\"] = text;\n if (openFilter !== \"where\") {\n setOpenFilter(\"where\");\n }\n }}\n onSearch={(text) => {\n if (text.length > 2) {\n send({ type: \"FETCH_START_LOCATIONS\", value: text });\n }\n }}\n onChange={(selected) => onOptionSelected(selected, \"where\")}\n onClear={() => {\n Promise.resolve().then(() => {\n send({ type: \"LOCATION_INPUT_CLEAR\" });\n setOpenFilter(null);\n\n if (isRepeatSearch) {\n formRef.current?.requestSubmit();\n }\n });\n }}\n isLoading={current.matches(\"relatedSuggestions.loading\")}\n options={(() => {\n if (current.context.where.length <= 2) {\n return current.context.initialSuggestions;\n }\n\n return current.context.relatedSuggestions || [];\n })()}\n defaultInputValue={current.context.where}\n selected={\n current.context.where ? [current.context.where] : []\n }\n minLength={0}\n onKeyDown={(e) => {\n switch (e.key) {\n case \"Escape\":\n if (openFilter === \"where\") {\n setOpenFilter(null);\n }\n break;\n }\n }}\n renderMenu={renderMenu}\n />\n
    \n\n
    \n {\n if (isRepeatSearch) {\n formRef.current?.requestSubmit();\n }\n }}\n >\n SEEK\n \n
    \n \n {!showFilters && (\n
    \n {\n setFocusFilter(0);\n setShowFilters(true);\n }}\n >\n More options\n \n \n
    \n )}\n \n {showFilters && (\n
    \n
    \n
    \n {filters\n .filter(\n (n) => n.name !== \"commitment\" && n.name !== \"daytime\"\n )\n .map(({ data, label, name }, idx) => (\n \n ))}\n
    \n
    \n
    \n )}\n \n
    \n
    \n );\n};\n","import seekWidgetImg from \"@skv/assets/gfx/seek-widget.png\";\nimport useMediaQuery from \"../hooks/useMediaQuery\";\n\ninterface SeekWidgetCtaProps {\n isFullWidth?: boolean;\n ssaOrganisationId: number | null;\n}\n\nexport const SeekWidgetCta = ({\n isFullWidth,\n ssaOrganisationId,\n}: SeekWidgetCtaProps): JSX.Element => {\n // From bootstrap 4 Responsive breakpoints docs.\n // https://getbootstrap.com/docs/4.6/layout/overview/#responsive-breakpoints\n // Large devices (desktops, 992px and up)\n const isDesktop = useMediaQuery(\"(min-width: 992px)\");\n const isTablet = useMediaQuery(\"(min-width: 768px) and (max-width: 991px)\");\n const linkToWidget = ssaOrganisationId\n ? `/${ssaOrganisationId}/seek-widget`\n : \"/seek-widget\";\n\n if (isFullWidth) {\n return (\n
    \n
    \n
    \n

    Show your SEEK Volunteer opportunities on your own website

    \n \n Get started\n \n
    \n
    \n \n \n
    \n
    \n
    \n \n );\n }\n\n return (\n
    \n \n Show your SEEK Volunteer opportunities on your own website\n

    \n \n\n
    \n \n \n
    \n
    \n \n );\n};\n","import { Button, Modal } from \"react-bootstrap\";\n\ninterface ShareableLinkInfoModalProps {\n isNsw?: boolean;\n seekProfileUrl: string;\n show: boolean;\n onHide: () => void;\n}\n\nexport const ShareableLinkInfoModal = ({\n isNsw = false,\n seekProfileUrl,\n show,\n onHide,\n}: ShareableLinkInfoModalProps) => {\n const subtitleClasses = isNsw ? \"h4\" : \"h6\";\n\n return (\n \n \n {isNsw ? (\n

    SEEK Profile shareable link

    \n ) : (\n SEEK Profile shareable link\n )}\n
    \n \n
    \n

    What is a SEEK profile?

    \n

    \n A{\" \"}\n \n SEEK Profile\n {\" \"}\n is an individual's professional summary, housed on SEEK. It lets\n candidates present a personal summary, career history, education and\n their skills to organisations and makes the application process\n easier.\n

    \n
    \n
    \n

    What is a shareable link?

    \n

    \n A summary version of your SEEK Profile, if you have one, that is\n sharable with organisations outside of SEEK via a unique link.\n

    \n
    \n
    \n

    Why share your SEEK Profile?

    \n

    \n When you share your SEEK Profile you are showing organisations the\n skills, experience and credentials they need to see, so you can\n start volunteering sooner.\n

    \n
    \n
    \n

    How do I share my SEEK Profile

    \n

    \n You first must have a{\" \"}\n \n SEEK Profile\n \n . Then create a link by clicking the ‘Share’ button under your email\n address, at the top of your SEEK Profile page.\n

    \n {!isNsw && (\n

    \n For more information{\" \"}\n \n view our FAQs\n \n .\n

    \n )}\n
    \n
    \n

    \n Can I still apply for a volunteer opportunity without a SEEK\n Profile?\n

    \n

    \n Yes, sharing a SEEK Profile is completely optional. We know that not\n everyone has a SEEK Profile and it's not relevant for all\n volunteering opportunities.\n

    \n
    \n
    \n \n \n \n Get SEEK Profile link\n \n \n
    \n );\n};\n","import React from \"react\";\nimport { ShareableLinkInfoModal } from \".\";\nimport { ExternalLink } from \"../ui\";\nimport { PasteInput, PasteInputProps } from \"./Form\";\nimport { SvgSprite } from \"./SvgSprite\";\n\ninterface ShareablePasteInputProps\n extends Pick<\n PasteInputProps,\n | \"value\"\n | \"touched\"\n | \"error\"\n | \"field\"\n | \"onPaste\"\n | \"customValidationError\"\n > {\n application: \"AU\" | \"NZ\" | \"NSW\";\n}\n\nexport const ShareablePasteInput = ({\n application,\n ...rest\n}: ShareablePasteInputProps) => {\n const [showShareableModal, setShowShareableModal] =\n React.useState(false);\n\n const handleToggleShareableModal = () => {\n setShowShareableModal((prev) => !prev);\n };\n\n const handleCloseShareableModal = () => {\n setShowShareableModal(false);\n };\n\n const isNsw = application === \"NSW\";\n const baseUrl =\n application === \"NZ\" ? \"https://www.seek.co.nz\" : \"https://www.seek.com.au\";\n const seekProfileUrl = `${baseUrl}/profile/me/profile-visibility`;\n\n return (\n <>\n \n SEEK Profile shareable link{\" \"}\n (optional)\n \n \n \n \n }\n labelProps={isNsw ? { className: \"nsw-form__label mb-0\" } : undefined}\n helpText={\n <>\n Share your skills, experience and qualifications using your SEEK\n Profile\n \n Get link\n \n \n }\n helpTextProps={{\n className: isNsw\n ? \"nsw-form__helper\"\n : \"form-text text-muted mt-n1 mb-1\",\n }}\n inputWrapperProps={{\n className: isNsw\n ? \"d-flex flex-nowrap gap-3\"\n : \"input-group gap-3 mb-3\",\n }}\n inputProps={{\n className: isNsw ? \"nsw-form__input\" : \"form-control\",\n }}\n buttonProps={{\n className: isNsw\n ? \"flex-shrink-0 btn btn-outline-primary px-3\"\n : \"btn btn-outline-secondary\",\n }}\n {...rest}\n />\n \n \n );\n};\n","import qs from \"qs\";\n\nexport type EmailParams = {\n body?: string;\n subject?: string;\n separator?: string;\n};\n\ninterface EmailButtonProps {\n params: EmailParams;\n className?: string;\n children: React.ReactNode;\n}\n\nexport const EmailButton = ({\n params,\n className,\n children,\n}: EmailButtonProps) => {\n const handleClick = () => {\n window.location.href = `mailto:?${qs.stringify(params)}`;\n };\n\n return (\n \n {children}\n \n );\n};\n","import qs from \"qs\";\n\nexport type FacebookParams = {\n app_id: string;\n display: \"page\";\n redirect_uri: string;\n href: string;\n};\n\ninterface FacebookButtonProps {\n params: FacebookParams;\n className?: string;\n children: React.ReactNode;\n}\n\nconst DEFAULT_POPUP_OPTIONS = {\n height: 600,\n width: 750,\n location: \"no\",\n toolbar: \"no\",\n status: \"no\",\n directories: \"no\",\n menubar: \"no\",\n scrollbars: \"yes\",\n resizable: \"no\",\n centerscreen: \"yes\",\n chrome: \"yes\",\n};\n\nconst popupStyles = Object.entries(DEFAULT_POPUP_OPTIONS)\n .map(([key, value]) => `${key}=${value}`)\n .join(\",\");\n\nexport const FacebookButton = ({\n params,\n className,\n children,\n}: FacebookButtonProps) => {\n const handleClick = () => {\n const url = `https://www.facebook.com/dialog/share?${qs.stringify(params)}`;\n window.open(url, \"\", popupStyles);\n };\n\n return (\n \n {children}\n \n );\n};\n","import qs from \"qs\";\n\nexport type LinkedinParams = {\n url: string;\n};\n\ninterface LinkedinButtonProps {\n params: LinkedinParams;\n className?: string;\n children: React.ReactNode;\n}\n\nconst DEFAULT_POPUP_OPTIONS = {\n height: 600,\n width: 750,\n location: \"no\",\n toolbar: \"no\",\n status: \"no\",\n directories: \"no\",\n menubar: \"no\",\n scrollbars: \"yes\",\n resizable: \"no\",\n centerscreen: \"yes\",\n chrome: \"yes\",\n};\n\nconst popupStyles = Object.entries(DEFAULT_POPUP_OPTIONS)\n .map(([key, value]) => `${key}=${value}`)\n .join(\",\");\n\nexport const LinkedinButton = ({\n params,\n className,\n children,\n}: LinkedinButtonProps) => {\n const handleClick = () => {\n const url = `https://www.linkedin.com/sharing/share-offsite?${qs.stringify(\n params\n )}`;\n window.open(url, \"\", popupStyles);\n };\n\n return (\n \n {children}\n \n );\n};\n","import qs from \"qs\";\n\nexport type TwitterParams = {\n url?: string;\n text?: string;\n via?: string;\n hashtags?: string;\n related?: string;\n};\n\ninterface TwitterButtonProps {\n params: TwitterParams;\n className?: string;\n children: React.ReactNode;\n}\n\nconst DEFAULT_POPUP_OPTIONS = {\n height: 600,\n width: 750,\n location: \"no\",\n toolbar: \"no\",\n status: \"no\",\n directories: \"no\",\n menubar: \"no\",\n scrollbars: \"yes\",\n resizable: \"no\",\n centerscreen: \"yes\",\n chrome: \"yes\",\n};\n\nconst popupStyles = Object.entries(DEFAULT_POPUP_OPTIONS)\n .map(([key, value]) => `${key}=${value}`)\n .join(\",\");\n\nexport const TwitterButton = ({\n params,\n className,\n children,\n}: TwitterButtonProps) => {\n const handleClick = () => {\n const url = `https://twitter.com/intent/tweet?${qs.stringify(params)}`;\n window.open(url, \"\", popupStyles);\n };\n\n return (\n \n {children}\n \n );\n};\n","import Dropdown from \"react-bootstrap/Dropdown\";\nimport { useLocation } from \"react-router-dom\";\n\nimport { EmailButton, EmailParams } from \"./ShareSocialEmailButton\";\nimport { FacebookButton, FacebookParams } from \"./ShareSocialFacebookButton\";\nimport { LinkedinButton, LinkedinParams } from \"./ShareSocialLinkedinButton\";\nimport { TwitterButton, TwitterParams } from \"./ShareSocialTwitterButton\";\n\nimport { useAppSettings } from \"@skv/state\";\nimport { SvgSprite } from \"./SvgSprite\";\n\ninterface ShareSocialProps {\n showEmail?: boolean;\n showFacebook?: boolean;\n showLinkedin?: boolean;\n showTwitter?: boolean;\n emailOptions?: EmailParams;\n linkedinOptions?: LinkedinParams;\n facebookOptions?: FacebookParams;\n twitterOptions?: TwitterParams;\n}\n\nexport const ShareSocialInline = ({\n showEmail,\n emailOptions,\n showFacebook,\n facebookOptions,\n showLinkedin,\n linkedinOptions,\n showTwitter,\n twitterOptions,\n}: ShareSocialProps) => {\n const { pathname } = useLocation();\n const { applicationName, applicationUrl, facebookAppId } = useAppSettings();\n const shareBtnCss = `\n padding: 0.25rem;\n &:hover {\n background-color: #f4f6fe;\n }\n `;\n return (\n
    \n {showFacebook && (\n \n \n \n )}\n {showTwitter && (\n \n \n \n )}\n {showLinkedin && (\n \n \n \n )}\n {showEmail && (\n \n \n \n )}\n
    \n );\n};\n\nexport const ShareSocialDropdown = ({\n showEmail,\n emailOptions,\n showFacebook,\n facebookOptions,\n showLinkedin,\n linkedinOptions,\n showTwitter,\n twitterOptions,\n}: ShareSocialProps) => {\n const { pathname } = useLocation();\n const { applicationName, applicationUrl, facebookAppId } = useAppSettings();\n const shareBtnCss = `\n width: 100%;\n text-align: left;\n padding: 0.5rem;\n transition: all 100ms ease;\n\n &:hover {\n background-color: #f4f6fe;\n }\n `;\n\n return (\n \n \n \n \n Share\n \n \n \n {showEmail && (\n \n Email a friend\n \n )}\n {showFacebook && (\n \n Facebook\n \n )}\n {showTwitter && (\n \n Twitter\n \n )}\n {showLinkedin && (\n \n LinkedIn\n \n )}\n \n \n );\n};\n","import styled from \"styled-components\";\n\nexport const SidebarBox = styled.section`\n font-size: 87.5%;\n padding-top: 1rem;\n margin-top: -1px;\n border-top: 1px solid ${(p): string => p.theme.gray300};\n border-bottom: 1px solid ${(p): string => p.theme.gray300};\n`;\n","/**\n * NOTICE : This HOC will soon be deprecated.\n * You should not use this HOC for any future components.\n */\n\nimport * as React from \"react\";\nimport { BrowserRouter, StaticRouter, useLocation } from \"react-router-dom\";\nimport { StaticRouterProps } from \"react-router\";\nimport { PropsAreEqual } from \".\";\n\nconst Debugger = () => {\n const location = useLocation();\n\n return
    {JSON.stringify(location)}
    ;\n};\n\nexport const withInjectedRouter = (\n Component: {\n (props: Omit): Exclude<\n JSX.Element,\n undefined\n >;\n displayName?: string;\n },\n propsAreEqual?: PropsAreEqual | false,\n\n componentName = Component.displayName ?? Component.name\n) => {\n return (props: Props): JSX.Element => {\n const { location, basename, context, ...rest } = props;\n\n React.useEffect(() => {\n console.warn(\n \"[DEPRECATION NOTICE] withInjectedRouter will soon be deprecated next major. Avoid using this HOC.\"\n );\n }, []);\n\n if (typeof window === \"undefined\") {\n return (\n \n {/* */}\n \n \n );\n }\n\n return (\n \n \n \n );\n };\n};\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../SKV.NSW/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../SKV.NSW/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./au-variables.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../SKV.NSW/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../SKV.NSW/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./au-variables.scss\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../SKV.NSW/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../SKV.NSW/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./jsvariables.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../SKV.NSW/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../SKV.NSW/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./jsvariables.scss\";\n export default content && content.locals ? content.locals : undefined;\n","import auVariables from \"@skv/frontend/src/styles/au-variables.scss\";\nimport baseTheme from \"@skv/frontend/src/styles/jsvariables.scss\";\n\nimport { timingFunctions } from \"polished\";\n\nexport const auTheme = Object.assign({}, baseTheme, auVariables, {\n timingFnEaseOut: timingFunctions(\"easeOutCubic\"),\n});\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../SKV.NSW/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../SKV.NSW/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./jsvariables-nsw.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../SKV.NSW/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../SKV.NSW/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./jsvariables-nsw.scss\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../SKV.NSW/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../SKV.NSW/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./nsw-variables.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../SKV.NSW/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../SKV.NSW/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./nsw-variables.scss\";\n export default content && content.locals ? content.locals : undefined;\n","import baseTheme from \"@skv/frontend/src/styles/jsvariables-nsw.scss\";\nimport nswVariables from \"@skv/frontend/src/styles/nsw-variables.scss\";\n\nimport { timingFunctions } from \"polished\";\n\nexport const nswTheme = Object.assign({}, baseTheme, nswVariables, {\n timingFnEaseOut: timingFunctions(\"easeOutCubic\"),\n});\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../SKV.NSW/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../SKV.NSW/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./nz-variables.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../SKV.NSW/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../SKV.NSW/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./nz-variables.scss\";\n export default content && content.locals ? content.locals : undefined;\n","import baseTheme from \"@skv/frontend/src/styles/jsvariables.scss\";\nimport nzVariables from \"@skv/frontend/src/styles/nz-variables.scss\";\n\nimport { timingFunctions } from \"polished\";\n\nexport const nzTheme = Object.assign({}, baseTheme, nzVariables, {\n timingFnEaseOut: timingFunctions(\"easeOutCubic\"),\n});\n","import React from \"react\";\nimport { GlobalNav, Header, NavBar } from \"../components\";\n\nimport { AppSettings, ServerStaticProvider, useAppSettings } from \"@skv/state\";\n\nimport { compose } from \"recompose\";\n\nimport { withThemeProvider, withInjectedRouter } from \"../hocs\";\n\ninterface Static404Props {\n appSettings: AppSettings;\n}\n\ninterface StaticLayoutProps {\n site: \"au\" | \"nz\";\n footer: React.ReactNode;\n}\n\nexport const BaseStaticLayout: React.FC = ({\n site,\n children,\n footer,\n}) => {\n const { adminApplicationUrl } = useAppSettings();\n\n return (\n <>\n
    \n \n Skip to main content\n \n\n \n
    \n \n \n \n Opportunities\n \n \n \n \n Favourites\n \n \n \n \n Advice & Tips\n \n \n \n\n
    \n
    {children}
    \n
    \n {footer}\n
    \n \n );\n};\n\nexport const StaticLayout = compose<\n StaticLayoutProps & Static404Props,\n StaticLayoutProps & Static404Props\n>(\n withInjectedRouter,\n withThemeProvider\n)(({ appSettings, children, footer, site }) => {\n return (\n \n \n {children}\n \n \n );\n});\n","/**\n * NSW has an extra variable xlMaxWidth which doesn't exist on au/nz.\n * This trips up Typescript as we override styled-components DefaultTheme\n * per environment (au/nz/nsw). So cast each theme here as unknown.\n *\n * Because of this we can't get typescript intellisense in SKV.Core components\n * as SKV.Core has no concept of which environment it might be executed in.\n *\n * TODO : Look in to adding xlMaxWidth variable to au/nz so we don't have this issue\n * */\n\nimport * as React from \"react\";\nimport { nzTheme, auTheme, nswTheme } from \"../themes\";\nimport { ThemeProvider, DefaultTheme } from \"styled-components\";\nimport { PropsAreEqual } from \".\";\n\nexport const withThemeProviderNz = (\n Component: {\n (props: Props): Exclude;\n displayName?: string;\n },\n propsAreEqual?: PropsAreEqual | false,\n\n componentName = Component.displayName ?? Component.name\n): typeof WithThemeProviderNz => {\n const displayName = Component.displayName || \"Component\";\n\n const WithThemeProviderNz = (props: Props): JSX.Element => (\n \n \n \n );\n\n WithThemeProviderNz.displayName = displayName;\n\n return WithThemeProviderNz;\n};\n\nexport const withThemeProviderAu = (\n Component: {\n (props: Props): Exclude;\n displayName?: string;\n },\n propsAreEqual?: PropsAreEqual | false,\n\n componentName = Component.displayName ?? Component.name\n): typeof WithThemeProviderAu => {\n const displayName = Component.displayName || \"Component\";\n\n const WithThemeProviderAu = (props: Props): JSX.Element => (\n \n \n \n );\n\n WithThemeProviderAu.displayName = displayName;\n\n return WithThemeProviderAu;\n};\n\nexport const withThemeProviderNsw = (\n Component: {\n (props: Props): Exclude;\n displayName?: string;\n },\n propsAreEqual?: PropsAreEqual | false,\n\n componentName = Component.displayName ?? Component.name\n): typeof WithThemeProviderNsw => {\n const displayName = Component.displayName || \"Component\";\n\n const WithThemeProviderNsw = (props: Props): JSX.Element => (\n \n \n \n );\n\n WithThemeProviderNsw.displayName = displayName;\n\n return WithThemeProviderNsw;\n};\n\n/**\n * withThemeProvider will use whichever theme provider based on the TARGET_ENV variable.\n * On build, webpack's definePlugin will replace \"process.env.TARGET_ENV\" to it's resolved value\n * allowing us to remove whichever branch is not needed through dead code elimination via the minifier.\n * e.g TARGET_ENV = au,\n * if \"au\" === \"au\" -> withThemeProvider = return withThemeProviderAu\n * if \"au\" === \"nz\" = if false -> this if statement is removed (dead code)\n */\nexport const withThemeProvider = (\n Component: {\n (props: Props): Exclude;\n displayName?: string;\n },\n propsAreEqual?: PropsAreEqual | false,\n componentName = Component.displayName ?? Component.name\n) => {\n return (props: Props): JSX.Element => {\n if (process.env.TARGET_ENV === \"au\") {\n return withThemeProviderAu(Component)(props);\n }\n\n if (process.env.TARGET_ENV === \"nz\") {\n return withThemeProviderNz(Component)(props);\n }\n\n if (process.env.TARGET_ENV === \"nsw\") {\n return withThemeProviderNsw(Component)(props);\n }\n\n throw Error(\n \"withThemeProvider requires the TARGET_ENV variable to be set on process.env\"\n );\n };\n};\n","import * as React from \"react\";\nimport { StrapiPage } from \"./Page\";\n\ninterface DataProvider {\n data: T;\n status: string;\n error: null | Error;\n}\n\ntype StrapiPageState = DataProvider<{\n [slug: string]: StrapiPage;\n}>;\n\ntype StrapiArticleState = DataProvider<{\n [slug: string]: any; // replace with StrapiArticle\n}>;\n\nconst StrapiPageState = React.createContext(undefined);\nconst StrapiPageDispatch = React.createContext<\n React.Dispatch>\n>(undefined);\n\nconst StrapiArticleState = React.createContext(undefined);\n\nexport const Provider = ({ children }) => {\n const [pageState, setPageState] = React.useState({\n data: {},\n status: \"loading\",\n error: null,\n });\n return (\n \n \n {children}\n \n \n );\n};\n\nexport const useStrapiPage = (slug: string) => {\n const ctx = React.useContext(StrapiPageState);\n\n const ctxRef = React.useRef(ctx);\n\n React.useEffect(() => {\n ctxRef.current = ctx;\n });\n\n const setPageState = React.useContext(StrapiPageDispatch);\n\n if (!ctx) {\n throw Error(\"useStrapiPage used outside Provider\");\n }\n\n React.useEffect(() => {\n if (ctxRef.current.data[slug]) {\n return;\n }\n\n setPageState((prev) => ({\n ...prev,\n status: \"loading\",\n }));\n\n fetch(`http://localhost:1337/pages?slug=${slug}`)\n .then((res) => res.json())\n .then((data) => {\n setPageState((prev) => ({\n ...prev,\n status: \"idle\",\n data: {\n ...prev.data,\n [slug]: data,\n },\n }));\n });\n\n // fetch data\n }, [ctxRef, setPageState, slug]);\n\n return {\n ...ctx,\n data: ctx.data[slug],\n };\n};\n","import * as React from \"react\";\nimport {\n useTabState,\n Tab as BaseTab,\n TabList as BaseTabList,\n TabListOptions,\n TabPanel as BaseTabPanel,\n TabProps,\n TabPanelOptions,\n} from \"reakit/Tab\";\n\nimport classNames from \"classnames\";\n\nconst TabsContext = React.createContext<\n undefined | ReturnType\n>(undefined);\n\ntype TabsProps = Exclude[0], Function>;\n\nexport const Tabs: React.FC> = ({\n children,\n ...initialState\n}) => {\n const tab = useTabState(initialState);\n const value = React.useMemo(() => tab, Object.values(tab));\n return {children};\n};\n\nexport const Tab: React.FC> = (props) => {\n const tab = React.useContext(TabsContext);\n return ;\n};\n\nexport const TabList: React.FC> = (props) => {\n const tab = React.useContext(TabsContext);\n\n return (\n p.theme.gray300};\n `}\n // wrap={\"horizontal\"}\n {...props}\n />\n );\n};\n\nexport const TabPanel: React.FC> = (props) => {\n const tab = React.useContext(TabsContext);\n return ;\n};\n","import { useId } from \"@react-aria/utils\";\nimport type { OverlayTriggerProps } from \"react-bootstrap\";\nimport { OverlayTrigger, Tooltip } from \"react-bootstrap\";\n\ntype TooltipPopoverProps = Omit & {\n tooltipText?: string;\n};\n\nexport const TooltipPopover = ({\n children,\n placement = \"right\",\n tooltipText,\n ...rest\n}: TooltipPopoverProps): JSX.Element => {\n const tooltipId = useId();\n\n return (\n \n {tooltipText}\n \n }\n >\n {children}\n \n );\n};\n","import type { ErrorList } from \"../types/ErrorList\";\n\nexport class CustomError extends Error {\n errorCode: ErrorList[keyof ErrorList];\n meta: T;\n constructor(message, errorCode: ErrorList[keyof ErrorList], meta?: T) {\n super(message);\n this.errorCode = errorCode;\n this.meta = meta;\n }\n}\n\nexport class PageEnvelopeResponseError extends Error {\n res: Response;\n meta: T;\n text: string;\n constructor(message: string, res: Response, meta?: T) {\n super(message);\n this.res = res;\n this.meta = meta;\n }\n}\n\nexport const createPageEnvelopeResponseHandler = (\n meta: T\n) => {\n return async function pageEnvelopeResponseHandler(\n res: Response\n ): Promise {\n if (res.ok) {\n try {\n return res.json();\n } catch (e) {\n throw new PageEnvelopeResponseError(\"res.json failed\", res, meta);\n }\n }\n\n throw new PageEnvelopeResponseError(\n \"Unknown error occurs (res.ok = false)\",\n res,\n meta\n );\n };\n};\n","import * as React from \"react\";\nimport { Collapse } from \"react-bootstrap\";\n\nimport ChromeIconImg from \"@skv/assets/gfx/browser/chrome.png\";\nimport EdgeIconImg from \"@skv/assets/gfx/browser/edge.png\";\nimport { ExternalLink, SvgSprite } from \"@skv/core\";\n\nexport const BrowserUpgrade = (): JSX.Element => {\n const [open, setOpen] = React.useState(false);\n\n return (\n
    \n

    \n Time to upgrade your browser. ☝️\n

    \n
    \n
    \n

    Why am I seeing this page?

    \n

    \n You're seeing this page because your browser (the program you\n use to browse the web) needs to be upgraded.\n

    \n

    Why do I need to upgrade?

    \n

    \n If you're using an outdated browser it may prevent you from\n being able to see or access all the functionality on our website.\n

    \n\n {\n e.preventDefault();\n setOpen((prev) => !prev);\n }}\n >\n p.theme.timingFnEaseOut};\n `}\n />\n Learn more\n \n \n
    \n

    \n Here are 3 reasons why you need to update your browser or switch\n to a newer one:\n

    \n
      \n
    1. \n Website compatibility - new features are\n often only supported by newer browsers and when websites\n utilise these features, older browsers don't function\n properly.\n
    2. \n
    3. \n Security risks - newer browsers are\n continually updated to fix security issues so using an\n outdated browser can make you more vulnerable.\n
    4. \n
    5. \n A faster browsing experience - older browsers\n do not perform at the same speed as newer browsers. This makes\n your experience considerably slower and can sometimes cause\n your browser to crash or freeze.\n
    6. \n
    \n
    \n
    \n\n

    What about Internet Explorer?

    \n

    \n \n Internet Explorer is no longer supported by Microsoft\n {\" \"}\n and they are encouraging people to switch to their new browser\n called Edge.\n

    \n
    \n \n
    \n
    \n );\n};\n\nexport default BrowserUpgrade;\n","import * as Yup from \"yup\";\n\nconst yupEoiLocale = {\n mixed: {\n required: \"${path} is needed to apply\",\n },\n number: {\n lessThan: \"${path} must be before ${less}\",\n moreThan: \"${path} must be after ${more}\",\n },\n};\n\nYup.setLocale(yupEoiLocale);\n\nconst CURRENT_YEAR = new Date().getFullYear();\nconst MIN_YOB = CURRENT_YEAR - 101;\nconst MAX_YOB = CURRENT_YEAR;\nconst TEXT_FIELD_MAX_LENGTH = 50;\n\nexport const eoiSchema = Yup.object({\n firstName: Yup.string()\n .label(\"First name\")\n .min(1, \"This field is required\")\n .max(\n TEXT_FIELD_MAX_LENGTH,\n `Please limit your input to ${TEXT_FIELD_MAX_LENGTH} characters`\n )\n .matches(/^[a-zA-Z\\s-]+$/, \"Please enter only valid characters\")\n .required()\n .nullable(),\n lastName: Yup.string()\n .label(\"Last name\")\n .min(1, \"This field is required\")\n .max(\n TEXT_FIELD_MAX_LENGTH,\n `Please limit your input to ${TEXT_FIELD_MAX_LENGTH} characters`\n )\n .matches(/^[a-zA-Z\\s-]+$/, \"Please enter only valid characters\")\n .required()\n .nullable(),\n phone: Yup.string()\n .matches(/^[\\d ()+-]+$/, \"This is not a valid phone number\")\n .required()\n .label(\"Phone number\")\n .nullable(),\n email: Yup.string()\n .email(\"This is not a valid email address\")\n .required()\n .label(\"Email address\")\n .nullable(),\n gender: Yup.number().nullable(),\n qualification: Yup.string().max(500).label(\"Qualification\").nullable(),\n shareableLink: Yup.string()\n .label(\"Link\")\n .matches(\n /^((http(s?):\\/\\/)?w{3}\\.seek\\.((com\\.au)|(co\\.nz))\\/profile\\/[a-zA-Z0-9-]{3,}\\/?)$/,\n {\n excludeEmptyString: true,\n message: \"Link doesn't appear to be valid\",\n }\n )\n .notRequired()\n .nullable(),\n yearOfBirth: Yup.number()\n .moreThan(MIN_YOB)\n .lessThan(MAX_YOB)\n .transform((value, ogValue) => {\n if (typeof ogValue === \"string\" && ogValue === \"\") {\n return null;\n }\n return value;\n })\n .nullable()\n .typeError(\n `Year of Birth must be a number between ${MIN_YOB} and ${MAX_YOB}`\n )\n .label(\"Year of Birth\"),\n location: Yup.string()\n .required()\n .label(\"Location\")\n .typeError(\"Location is needed to apply\")\n .nullable(),\n}).defined();\n","import * as React from \"react\";\n\nimport { useSelector } from \"react-redux\";\nimport { RootState } from \"../\";\n\nimport { useAnalyticsUtil } from \"@skv/core\";\nimport { useThunkDispatch } from \"../\";\n\nimport { actions, FAVOURITES_ENUM } from \"./\";\n\nexport const useFavourites = () => {\n const dispatch = useThunkDispatch();\n const { trackPageLink } = useAnalyticsUtil();\n\n const favourites = useSelector((state: RootState) => state.favourites);\n\n const handleFavourite = React.useCallback(\n (id: number, type: FAVOURITES_ENUM) => {\n dispatch(actions.addFavourite(id, type));\n\n trackPageLink(\n type === FAVOURITES_ENUM.OPPORTUNITY\n ? \"favourite-opportunity\"\n : \"favourite-organisation\"\n );\n },\n [dispatch, trackPageLink]\n );\n\n const handleUnfavourite = React.useCallback(\n (id: number, type: FAVOURITES_ENUM) => {\n dispatch(actions.removeFavourite(id, type));\n trackPageLink(\n type === FAVOURITES_ENUM.OPPORTUNITY\n ? \"remove-favourite-opportunity\"\n : \"remove-favourite-organisation\"\n );\n },\n [dispatch, trackPageLink]\n );\n\n return { favourites, handleFavourite, handleUnfavourite };\n};\n","import { getFavouritesFromCookie } from \"./helpers\";\nimport { ActionTypes, State } from \"./types\";\n\nconst { opportunities, organisations } = getFavouritesFromCookie();\n\nexport const reducer = (\n state: State = {\n opportunities,\n organisations,\n loading: false,\n error: false,\n },\n action: ActionTypes\n): State => {\n let newState;\n\n switch (action.type) {\n case \"FAVOURITES:FETCH:START\":\n return {\n ...state,\n loading: true,\n error: false,\n };\n case \"FAVOURITES:FETCH:END\":\n return {\n ...state,\n loading: false,\n error: false,\n organisations: action.payload.organisations,\n opportunities: action.payload.opportunities,\n };\n case \"FAVOURITES:ORG:ADD\":\n return {\n ...state,\n organisations: {\n ...state.organisations,\n [action.payload.id]: Date.now(),\n },\n };\n case \"FAVOURITES:OPP:ADD\":\n return {\n ...state,\n opportunities: {\n ...state.opportunities,\n [action.payload.id]: Date.now(),\n },\n };\n case \"FAVOURITES:ORG:REMOVE\":\n newState = Object.assign({}, state);\n delete newState.organisations[action.payload.id];\n return newState;\n case \"FAVOURITES:OPP:REMOVE\":\n newState = Object.assign({}, state);\n delete newState.opportunities[action.payload.id];\n return newState;\n default:\n return state;\n }\n};\n","import type { Opportunity } from \"@skv/core\";\nimport { CustomError } from \"@skv/core\";\n\ntype OpportunityFetchStart = {\n type: \"OPPORTUNITY:FETCH:START\";\n};\n\ntype OpportunityFetchEnd = {\n type: \"OPPORTUNITY:FETCH:END\" | \"OPPORTUNITY:FETCH:END:FROMCACHE\";\n payload: {\n data: Opportunity;\n };\n};\n\ntype OpportunityFetchError = {\n type: \"OPPORTUNITY:FETCH:ERROR\";\n payload: {\n error: CustomError;\n id: string;\n };\n};\n\ntype OpportunityFetchErrorUnknown = {\n type: \"OPPORTUNITY:FETCH:ERROR:UNKNOWN\";\n payload: {\n error: CustomError;\n };\n};\n\ntype OpportunityErrorSet = {\n type: \"OPPORTUNITY:ERROR:SET\";\n payload: {\n error: CustomError;\n };\n};\n\ntype OpportunityErrorReset = {\n type: \"OPPORTUNITY:ERROR:RESET\";\n};\n\nexport type ActionTypes =\n | OpportunityFetchStart\n | OpportunityFetchEnd\n | OpportunityFetchError\n | OpportunityFetchErrorUnknown\n | OpportunityErrorSet\n | OpportunityErrorReset;\n\nexport interface State {\n loading: boolean;\n error: null | CustomError;\n data: {\n [key: string]: Opportunity | CustomError;\n };\n}\n\nexport const reducer = (\n state: State = {\n loading: false,\n error: null,\n data: {},\n },\n action: ActionTypes\n): State => {\n switch (action.type) {\n case \"OPPORTUNITY:FETCH:START\":\n return {\n ...state,\n loading: true,\n error: null,\n };\n case \"OPPORTUNITY:FETCH:END\":\n case \"OPPORTUNITY:FETCH:END:FROMCACHE\":\n return {\n ...state,\n loading: false,\n error: null,\n data: {\n ...state.data,\n [action.payload.data.id]: action.payload.data,\n },\n };\n case \"OPPORTUNITY:FETCH:ERROR\":\n return {\n ...state,\n loading: false,\n error: action.payload.error,\n data: {\n ...state.data,\n [action.payload.id]: action.payload.error,\n },\n };\n case \"OPPORTUNITY:FETCH:ERROR:UNKNOWN\":\n return {\n ...state,\n loading: false,\n error: action.payload.error,\n };\n case \"OPPORTUNITY:ERROR:SET\":\n return {\n ...state,\n error: action.payload.error,\n };\n case \"OPPORTUNITY:ERROR:RESET\":\n return {\n ...state,\n loading: false,\n error: null,\n };\n default:\n return state;\n }\n};\n","import type { AppThunk } from \"../\";\nimport type { Opportunity, PageEnvelope } from \"@skv/core\";\nimport { CustomError } from \"@skv/core\";\n\nexport const fetchOpportunity = (\n oppId\n): AppThunk> => async (\n dispatch,\n getState\n): Promise => {\n if (!oppId) {\n throw Error(\"No opportunity id passed as argument.\");\n }\n\n const currentState = getState();\n const cachedResult = currentState.opportunity.data[oppId];\n\n if (cachedResult) {\n if (cachedResult instanceof CustomError) {\n dispatch({\n type: \"OPPORTUNITY:FETCH:ERROR\",\n payload: {\n id: oppId,\n error: cachedResult,\n },\n });\n return;\n }\n\n dispatch({\n type: \"OPPORTUNITY:FETCH:END:FROMCACHE\",\n payload: {\n data: cachedResult,\n },\n });\n\n return cachedResult;\n }\n\n dispatch({\n type: \"OPPORTUNITY:FETCH:START\",\n });\n\n return fetch(`/api/opportunity/${oppId}`)\n .then>((res) => {\n if (res.ok) {\n return res.json();\n }\n\n throw new CustomError(\n \"Response from server was not 200\",\n \"error:opportunity\"\n );\n })\n .then(({ data, errorCode, errorMessage, success }) => {\n if (success) {\n dispatch({\n type: \"OPPORTUNITY:FETCH:END\",\n payload: {\n data: data.opportunity,\n },\n });\n\n return data.opportunity;\n }\n\n dispatch({\n type: \"OPPORTUNITY:FETCH:ERROR\",\n payload: {\n id: oppId,\n error: new CustomError(errorMessage, errorCode),\n },\n });\n })\n .catch((err: CustomError) => {\n console.log(err);\n\n dispatch({\n type: \"OPPORTUNITY:FETCH:ERROR:UNKNOWN\",\n payload: {\n error: err,\n },\n });\n\n return err;\n });\n};\n\nexport const resetErrors = () => ({\n type: \"OPPORTUNITY:ERROR:RESET\",\n});\n","import { useEffect } from \"react\";\nimport { CustomError } from \"@skv/core\";\nimport { useSelector } from \"react-redux\";\n\nimport { RootState, useThunkDispatch } from \"../\";\n\nimport { fetchOpportunity } from \"./actions\";\n\nexport const useOpportunity = (id: string) => {\n const dispatch = useThunkDispatch();\n const opportunityState = useSelector((state: RootState) => state.opportunity);\n\n const opportunity = id !== \"-1\" ? opportunityState.data[id] : null;\n\n useEffect(() => {\n if (!opportunity && id !== \"-1\") {\n dispatch(fetchOpportunity(id));\n }\n }, [id, opportunity, dispatch]);\n\n if (opportunity instanceof CustomError) {\n return {\n ...opportunityState,\n loading: false,\n error: opportunity,\n data: null,\n };\n }\n\n return {\n ...opportunityState,\n data: opportunity,\n };\n};\n","import type { PageEnvelope } from \"@skv/core\";\nimport * as React from \"react\";\n\nexport const defaultPageEnvelopeState = {\n success: false,\n data: null,\n errorCode: null,\n errorMessage: null,\n meta: null,\n};\n\ndeclare const window: {\n pageEnvelope: any;\n};\n\nexport const PageEnvelopeStateContext = React.createContext<\n PageEnvelope | undefined\n>(defaultPageEnvelopeState);\n\nexport const PageEnvelopeProvider: React.FC<{\n initialPageEnvelope: PageEnvelope;\n}> = ({ initialPageEnvelope, children }) => {\n const [state, setState] = React.useState(\n initialPageEnvelope || defaultPageEnvelopeState\n );\n\n const resetPageEnvelope = React.useCallback(() => {\n setState(defaultPageEnvelopeState);\n }, []);\n\n React.useEffect(() => {\n window.pageEnvelope = initialPageEnvelope;\n resetPageEnvelope();\n }, []);\n\n return (\n \n {children}\n \n );\n};\n\nexport const usePageEnvelope = (): {\n pageEnvelope: PageEnvelope;\n} => {\n const state = React.useContext(PageEnvelopeStateContext);\n\n /* Page envelope gets reset, so we store the initial value of pageEnvelope in a localised state before the context gets reset */\n const memoizedState = React.useMemo(() => {\n return state;\n }, []);\n\n return {\n pageEnvelope: memoizedState,\n };\n};\n\nexport default PageEnvelopeProvider;\n","import * as React from \"react\";\nimport { useLocation } from \"react-router-dom\";\nimport { usePageEnvelope } from \"./PageEnvelope\";\nimport { normalizeQuery } from \"../opportunityResult/util\";\n\nexport interface OpportunitySearchQueryState {\n keyword?: null | string;\n where?: null | string;\n radius?: number;\n category?: number[];\n typeofwork?: number[];\n commitment?: number[];\n suitablefor?: number[];\n daytime?: number[];\n organisationId?: null | string;\n page?: null | number;\n}\n\nexport const defaultOpportunitySearchQuery: OpportunitySearchQueryState = {\n keyword: null,\n where: null,\n radius: 0,\n category: [],\n typeofwork: [],\n commitment: [],\n suitablefor: [],\n daytime: [],\n organisationId: null,\n page: null,\n};\n\nexport const OpportunitySearchQueryStateContext = React.createContext<\n OpportunitySearchQueryState | undefined\n>(undefined);\n\nexport const OpportunitySearchQueryProvider = ({\n children,\n}: {\n children: React.ReactNode;\n}) => {\n const location = useLocation<{\n searchQuery?: OpportunitySearchQueryState;\n }>();\n\n const { pageEnvelope } = usePageEnvelope<{\n searchCriteria?: OpportunitySearchQueryState;\n }>();\n\n const searchQuery = React.useMemo(() => {\n // console.log(pageEnvelope.data?.searchCriteria);\n // console.log(location.state?.searchQuery);\n\n const query: OpportunitySearchQueryState = normalizeQuery(\n Object.assign(\n {},\n defaultOpportunitySearchQuery,\n location.state?.searchQuery || pageEnvelope.data?.searchCriteria\n )\n );\n\n return query;\n }, [location.state, pageEnvelope.data]);\n\n return (\n \n {children}\n \n );\n};\n\nexport const useOpportunitySearchQuery = (): OpportunitySearchQueryState => {\n const searchQuery = React.useContext(OpportunitySearchQueryStateContext);\n return searchQuery;\n};\n","import qs from \"qs\";\nimport {\n defaultOpportunitySearchQuery,\n OpportunitySearchQueryState,\n} from \"../context/OpportunitySearchQuery\";\n\nimport { pick } from \"lodash-es\";\n\nfunction alphabeticalSort(a: string, b: string): number {\n return a.localeCompare(b);\n}\n\nconst qsOptions: qs.IStringifyOptions = {\n arrayFormat: \"repeat\",\n // sorts keys, not values\n sort: alphabeticalSort,\n};\n\nconst KEYS: (keyof OpportunitySearchQueryState)[] = [\n \"category\",\n \"commitment\",\n \"daytime\",\n \"keyword\",\n \"organisationId\",\n \"page\",\n \"radius\",\n \"suitablefor\",\n \"typeofwork\",\n \"where\",\n];\n\nexport const normalizeQuery = (\n searchQuery?: OpportunitySearchQueryState\n): OpportunitySearchQueryState => {\n if (searchQuery === undefined) {\n return defaultOpportunitySearchQuery;\n }\n\n // remove all unused keys\n searchQuery = pick(searchQuery, KEYS);\n\n // normalize query with default from server\n // empty keyword on server is null\n if (searchQuery.keyword === \"\") {\n searchQuery.keyword = null;\n }\n\n // query.where make each word uppercase\n // and remove extraenous spaces\n if (searchQuery.where === \"\") {\n searchQuery.where = null;\n }\n\n // server page property default is null\n if (searchQuery.page === 1) {\n searchQuery.page = null;\n }\n\n // remove duplicate entries and\n // sort arrays from lowest to highest\n for (const key in searchQuery) {\n if (Array.isArray(searchQuery[key])) {\n searchQuery[key] = [...Array.from(new Set(searchQuery[key]))];\n searchQuery[key] = searchQuery[key].sort((a, b) => a - b);\n }\n }\n\n return searchQuery;\n};\n\nexport const opportunitySearchQueryToString = (\n searchQuery?: OpportunitySearchQueryState\n): string => {\n if (searchQuery === undefined) {\n return qs\n .stringify(defaultOpportunitySearchQuery, qsOptions)\n .toLocaleLowerCase();\n }\n\n return qs\n .stringify(\n { ...defaultOpportunitySearchQuery, ...normalizeQuery(searchQuery) },\n qsOptions\n )\n .toLocaleLowerCase();\n};\n","import type { AppThunk } from \"../\";\nimport type { PageEnvelope } from \"@skv/core\";\nimport { CustomError } from \"@skv/core\";\nimport { OpportunitySearchResults } from \"@skv/core\";\n\nimport { OpportunitySearchQueryState } from \"../context/OpportunitySearchQuery\";\nimport { opportunitySearchQueryToString } from \"./util\";\n\nexport const addResultsToCache = (\n results: OpportunitySearchResults,\n searchQuery: OpportunitySearchQueryState\n): AppThunk> => async (\n dispatch,\n getState\n): Promise => {\n const query = opportunitySearchQueryToString(searchQuery);\n\n dispatch({\n type: \"RESULT:FETCH:END\",\n payload: {\n data: results,\n searchQuery: query,\n },\n });\n\n return results;\n};\n\nexport const fetchOpportunities = (\n searchQuery?: OpportunitySearchQueryState\n): AppThunk> => async (\n dispatch,\n getState\n): Promise => {\n const query = opportunitySearchQueryToString(searchQuery);\n const { opportunityResult } = getState();\n\n dispatch({\n type: \"RESULT:FETCH:START\",\n });\n\n if (opportunityResult.data[query]) {\n dispatch({\n type: \"RESULT:FETCH:END:CACHE\",\n payload: {\n searchQuery: query,\n data: opportunityResult.data[query],\n },\n });\n return opportunityResult.data[query];\n }\n\n return fetch(`/api/opportunity/search?${query}`)\n .then>(\n (res) => {\n if (res.ok) {\n return res.json();\n }\n\n switch (res.status) {\n case 500:\n default:\n throw Error(\"Unhandled server error\");\n }\n }\n )\n .then(({ data, errorCode, errorMessage, success }) => {\n console.log(data);\n\n if (success) {\n /* save to cache the same result with the resolved canonicalLocation */\n if (\n data.opportunityResult.canonicalLocation !== null &&\n data.opportunityResult.canonicalLocation !== searchQuery?.where\n ) {\n dispatch(\n addResultsToCache(data.opportunityResult, {\n ...searchQuery,\n where: data.opportunityResult.canonicalLocation,\n })\n );\n }\n\n dispatch({\n type: \"RESULT:FETCH:END\",\n payload: {\n searchQuery: query,\n data: data.opportunityResult,\n },\n });\n\n return data.opportunityResult;\n }\n\n dispatch({\n type: \"RESULT:FETCH:ERROR\",\n payload: {\n error: new CustomError(errorMessage, errorCode),\n },\n });\n });\n};\n","import type { AppThunk } from \"../\";\nimport { CustomError, PageEnvelope } from \"@skv/core\";\n\nimport { Organisation } from \"./reducer\";\n\nexport const fetchOrganisation = (\n orgId: string\n): AppThunk> => async (\n dispatch,\n getState\n): Promise => {\n if (!orgId) {\n throw Error(\"No organisationId passed as argument.\");\n }\n\n const currentState = getState();\n const cachedResult = currentState.organisation.data[orgId];\n\n if (cachedResult) {\n if (cachedResult instanceof CustomError) {\n dispatch({\n type: \"ORGANISATION:FETCH:ERROR\",\n payload: {\n id: orgId,\n error: cachedResult,\n },\n });\n return;\n }\n\n dispatch({\n type: \"ORGANISATION:FETCH:END:FROMCACHE\",\n payload: {\n data: cachedResult,\n },\n });\n\n return cachedResult;\n }\n\n dispatch({\n type: \"ORGANISATION:FETCH:START\",\n });\n\n return fetch(`/api/organisation/${orgId}`)\n .then>((res) => {\n if (res.ok) {\n return res.json();\n }\n\n throw new CustomError(\n \"Response from server was not 200\",\n \"error:organisation\"\n );\n })\n .then(({ data, errorCode, errorMessage, success }) => {\n if (success) {\n dispatch({\n type: \"ORGANISATION:FETCH:END\",\n payload: {\n data: data.organisation,\n },\n });\n\n return data.organisation;\n }\n\n dispatch({\n type: \"ORGANISATION:FETCH:ERROR\",\n payload: {\n id: orgId,\n error: new CustomError(errorMessage, errorCode),\n },\n });\n })\n .catch((err: CustomError) => {\n dispatch({\n type: \"ORGANISATION:FETCH:ERROR:UNKNOWN\",\n payload: {\n error: err,\n },\n });\n\n return err;\n });\n};\n\nexport const resetErrors = () => ({\n type: \"ORGANISATION:ERROR:RESET\",\n});\n","import { useEffect } from \"react\";\nimport { CustomError } from \"@skv/core\";\nimport { useSelector } from \"react-redux\";\n\nimport { RootState, useThunkDispatch } from \"../\";\n\nimport { fetchOrganisation } from \"./actions\";\n\nexport const useOrganisation = (id: string) => {\n const dispatch = useThunkDispatch();\n const organisationState = useSelector(\n (state: RootState) => state.organisation\n );\n\n const organisation = organisationState.data[id];\n\n useEffect(() => {\n dispatch(fetchOrganisation(id));\n }, [id, dispatch]);\n\n if (organisation instanceof CustomError) {\n return {\n ...organisationState,\n loading: false,\n error: organisation,\n data: null,\n };\n }\n\n return {\n ...organisationState,\n data: organisation,\n };\n};\n","import type { CustomError, MetaSegment } from \"@skv/core\";\n\ntype Website = {\n name: string;\n url: string;\n};\n\nexport interface Organisation {\n id: number;\n name: string;\n description: string;\n category: string;\n website: Website | null;\n emailAddress: string;\n phoneNumber: string;\n managingVRC: string;\n logoUrl: string;\n primaryAddress: PrimaryAddress;\n canonicalUrl: string;\n opportunitySearchUrl: string;\n friendlyName: string;\n totalCount: number;\n opportunities: Opportunity[];\n isSocialEnterprise: boolean;\n agencyNames: string[];\n}\n\ninterface Opportunity {\n category: MetaSegment;\n friendlyName: string;\n id: number;\n locations: Location[];\n name: string;\n onlineRemoteVolunteers: boolean;\n organisation: OppOrganisation;\n summary: string;\n typesOfWork: MetaSegment[];\n url: string;\n}\n\ninterface Location {\n suburb: string;\n state: string;\n displayName: string;\n segments: MetaSegment[];\n}\n\ninterface OppOrganisation {\n logoUrl: string;\n id: number;\n name: string;\n friendlyName: string;\n url: string;\n}\n\ninterface PrimaryAddress {\n street: string;\n suburb: string;\n state: string;\n}\n\nexport interface State {\n loading: boolean;\n error: null | CustomError;\n data: {\n [key: string]: Organisation | CustomError;\n };\n}\n\nexport type ActionTypes =\n | {\n type: \"ORGANISATION:FETCH:START\";\n }\n | {\n type: \"ORGANISATION:FETCH:END\" | \"ORGANISATION:FETCH:END:FROMCACHE\";\n payload: {\n data: Organisation;\n };\n }\n | {\n type: \"ORGANISATION:FETCH:ERROR\";\n payload: {\n id: string;\n error: CustomError;\n };\n }\n | {\n type: \"ORGANISATION:FETCH:ERROR:UNKNOWN\";\n payload: {\n error: CustomError;\n };\n }\n | {\n type: \"ORGANISATION:ERROR:RESET\";\n };\n\nexport const reducer = (\n state: State = {\n loading: false,\n error: null,\n data: null,\n },\n action: ActionTypes\n): State => {\n switch (action.type) {\n case \"ORGANISATION:FETCH:START\":\n return {\n ...state,\n loading: true,\n error: null,\n };\n case \"ORGANISATION:FETCH:END\":\n case \"ORGANISATION:FETCH:END:FROMCACHE\":\n return {\n ...state,\n loading: false,\n error: null,\n data: {\n ...state.data,\n [action.payload.data.id]: action.payload.data,\n },\n };\n case \"ORGANISATION:FETCH:ERROR\":\n return {\n ...state,\n loading: false,\n error: action.payload.error,\n data: {\n ...state.data,\n [action.payload.id]: action.payload.error,\n },\n };\n case \"ORGANISATION:FETCH:ERROR:UNKNOWN\":\n return {\n ...state,\n loading: false,\n error: action.payload.error,\n };\n case \"ORGANISATION:ERROR:RESET\":\n return {\n ...state,\n loading: false,\n error: null,\n };\n default:\n return state;\n }\n};\n","import * as React from \"react\";\nimport { useLocation } from \"react-router-dom\";\nimport { normalizeQuery } from \"../organisationResult/util\";\nimport { usePageEnvelope } from \"./PageEnvelope\";\n\nexport interface OrganisationSearchQueryState {\n keyword?: null | string;\n where?: null | string;\n category?: number[];\n page?: null | number;\n}\n\nexport const defaultOrganisationSearchQuery = {\n keyword: null,\n where: null,\n category: [],\n page: null,\n};\n\nexport const OrganisationSearchQueryStateContext = React.createContext<\n OrganisationSearchQueryState | undefined\n>(undefined);\n\nexport const OrganisationSearchQueryProvider: React.FC<{}> = ({ children }) => {\n const location = useLocation<{\n searchQuery?: OrganisationSearchQueryState;\n }>();\n\n const { pageEnvelope } = usePageEnvelope<{\n searchCriteria?: OrganisationSearchQueryState;\n }>();\n\n const searchQuery = React.useMemo(() => {\n return normalizeQuery(\n Object.assign(\n {},\n defaultOrganisationSearchQuery,\n location.state?.searchQuery ||\n pageEnvelope.data?.searchCriteria ||\n defaultOrganisationSearchQuery\n )\n );\n }, [location.state, pageEnvelope.data]);\n\n return (\n \n {children}\n \n );\n};\n\nexport const useOrganisationSearchQuery = (): OrganisationSearchQueryState => {\n const searchQuery = React.useContext(OrganisationSearchQueryStateContext);\n return searchQuery;\n};\n\nexport default OrganisationSearchQueryStateContext;\n","import qs from \"qs\";\nimport {\n defaultOrganisationSearchQuery,\n OrganisationSearchQueryState,\n} from \"../context/OrganisationSearchQuery\";\n\nimport { pick } from \"lodash-es\";\n\nfunction alphabeticalSort(a: string, b: string): number {\n return a.localeCompare(b);\n}\n\nconst qsOptions: qs.IStringifyOptions = {\n arrayFormat: \"repeat\",\n // sorts keys, not values\n sort: alphabeticalSort,\n};\n\nconst KEYS: (keyof OrganisationSearchQueryState)[] = [\n \"category\",\n \"keyword\",\n \"page\",\n \"where\",\n];\n\nexport const normalizeQuery = (\n searchQuery?: OrganisationSearchQueryState\n): OrganisationSearchQueryState => {\n if (searchQuery === undefined) {\n return defaultOrganisationSearchQuery;\n }\n\n // remove all unused keys\n searchQuery = pick(searchQuery, KEYS);\n\n // normalize query with default from server\n // empty keyword on server is null\n if (searchQuery.keyword === \"\") {\n searchQuery.keyword = null;\n }\n\n // query.where make each word uppercase\n // and remove extraenous spaces\n if (searchQuery.where === \"\") {\n searchQuery.where = null;\n }\n\n // server page property default is null\n if (searchQuery.page === 1) {\n searchQuery.page = null;\n }\n\n // remove duplicate entries and\n // sort arrays from lowest to highest\n for (const key in searchQuery) {\n if (Array.isArray(searchQuery[key])) {\n searchQuery[key] = [...Array.from(new Set(searchQuery[key]))];\n searchQuery[key] = searchQuery[key].sort((a, b) => a - b);\n }\n }\n\n return searchQuery;\n};\n\nexport const organisationSearchQueryToString = (\n searchQuery?: OrganisationSearchQueryState\n): string => {\n if (searchQuery === undefined) {\n return qs\n .stringify(defaultOrganisationSearchQuery, qsOptions)\n .toLocaleLowerCase();\n }\n\n return qs\n .stringify(\n { ...defaultOrganisationSearchQuery, ...normalizeQuery(searchQuery) },\n qsOptions\n )\n .toLocaleLowerCase();\n};\n","import type { AppThunk } from \"../\";\nimport type { PageEnvelope } from \"@skv/core\";\n\nimport { OrganisationSearchResults } from \"./reducer\";\nimport { OrganisationSearchQueryState } from \"../context/OrganisationSearchQuery\";\nimport { organisationSearchQueryToString } from \"./util\";\n\nexport const fetchOrganisations = (\n searchQuery?: OrganisationSearchQueryState\n): AppThunk> => async (\n dispatch,\n getState\n): Promise => {\n const query = organisationSearchQueryToString(searchQuery);\n\n const currentState = getState();\n\n if (currentState.organisationResult.data[query]) {\n dispatch({\n type: \"ORG_RESULT:FETCH:END\",\n payload: {\n searchQuery: query,\n data: currentState.organisationResult.data[query],\n },\n });\n return currentState.organisationResult.data[query];\n }\n\n dispatch({\n type: \"ORG_RESULT:FETCH:START\",\n });\n\n return fetch(`/api/organisation/search?${query}`)\n .then>(\n (res) => {\n if (res.ok) {\n return res.json();\n }\n }\n )\n .then(({ data, errorCode, errorMessage, success }) => {\n if (!success) {\n throw Error(\"Failed to get orgnanisations\");\n }\n\n dispatch({\n type: \"ORG_RESULT:FETCH:END\",\n payload: {\n searchQuery: query,\n data: data.organisationResult,\n },\n });\n\n return data.organisationResult;\n });\n};\n","import { MetaSegment, WorldLocation, SearchResultStatus } from \"@skv/core\";\n\nexport interface OrganisationSearchResult {\n category: MetaSegment;\n location: WorldLocation;\n id: number;\n name: string;\n friendlyName: string;\n url: string;\n agencyName: string;\n}\n\nexport interface OrganisationSearchResults {\n totalCount: number;\n organisations: OrganisationSearchResult[];\n page: number;\n pageSize: number;\n totalPages: number;\n canonicalUrl: string;\n}\n\nexport interface State {\n loading: boolean;\n error: Error | null | false;\n data: { [searchQuery: string]: OrganisationSearchResults };\n status: SearchResultStatus;\n}\n\nexport type ActionTypes =\n | {\n type: \"ORG_RESULT:FETCH:START\";\n }\n | {\n type: \"ORG_RESULT:FETCH:END\";\n payload: {\n searchQuery: string;\n data: OrganisationSearchResults;\n };\n }\n | {\n type: \"ORG_RESTULT:FETCH:ERROR\";\n payload: {\n error: Error;\n };\n };\n\nexport const reducer = (\n state: State = {\n loading: false,\n error: false,\n data: {},\n status: SearchResultStatus.IDLE,\n },\n action: ActionTypes\n): State => {\n switch (action.type) {\n case \"ORG_RESULT:FETCH:START\":\n return {\n ...state,\n loading: true,\n status: SearchResultStatus.FETCHING_DATA,\n };\n case \"ORG_RESULT:FETCH:END\":\n return {\n ...state,\n loading: false,\n data: {\n ...state.data,\n [action.payload.searchQuery]: action.payload.data,\n },\n status: SearchResultStatus.IDLE,\n };\n case \"ORG_RESTULT:FETCH:ERROR\":\n return {\n ...state,\n error: action.payload.error,\n status: SearchResultStatus.FETCH_ERROR,\n };\n default:\n return state;\n }\n};\n","import * as React from \"react\";\n\nexport interface AppSettings {\n adminApplicationUrl: string;\n applicationName: string;\n applicationUrl: string;\n homeUrl: string;\n certsyHirerLandingUrl: string;\n certsySignInUrl: string;\n facebookAppId: string;\n omnitureScriptUrl: string;\n seekVolunteerUrl: string;\n supportEmail?: string;\n showAdviceTipsSubscribe?: boolean;\n showApplicationNudge?: boolean;\n showFiltersInSearch?: boolean;\n socialTradersFeatureFlag?: boolean;\n}\n\ninterface ServerStaticContext {\n appSettings: AppSettings;\n}\n\nexport const ServerStatic = React.createContext<\n ServerStaticContext | undefined\n>(undefined);\n\nexport const ServerStaticProvider: React.FC = ({\n appSettings,\n children,\n}) => {\n const value = React.useMemo(() => {\n return {\n appSettings,\n };\n }, []);\n\n return (\n {children}\n );\n};\n\nexport const useServerStatic = (): ServerStaticContext => {\n const context = React.useContext(ServerStatic);\n\n if (!context) {\n throw Error(\"useServerStatic used outside a global Provider\");\n }\n\n return context;\n};\n\nexport const useAppSettings = (): AppSettings => {\n const { appSettings } = useServerStatic();\n\n return appSettings;\n};\n","import { FriendlyKeyValueUrl, KeyValue, MetaSegment } from \"@skv/core\";\nimport * as React from \"react\";\n\nexport interface GlobalStaticProps {\n categoryList: FriendlyKeyValueUrl[];\n commitmentList: KeyValue[];\n dayAndTimeList: KeyValue[];\n genders: KeyValue[];\n majorCities: MetaSegment[];\n suitableForList: KeyValue[];\n typeOfWorkList: KeyValue[];\n\n staticRoutes?: string[]; // au + nz, todo figure out how to remove for nsw?\n adviceAndTipsCategoryRoutes?: (KeyValue & { slug: string })[];\n}\n\nconst GlobalStaticContext = React.createContext(\n undefined\n);\n\ninterface GlobalStaticProviderProps {\n value: GlobalStaticProps;\n}\n\nexport const GlobalStaticProvider: React.FC = ({\n children,\n value,\n}) => {\n return (\n \n {children}\n \n );\n};\n\nexport const useGlobal = (): GlobalStaticProps => {\n const ctx = React.useContext(GlobalStaticContext);\n\n if (!ctx) {\n throw Error(\n \"useGlobal hook called outside a component\"\n );\n }\n\n return ctx;\n};\n","import type { FriendlyKeyValueUrl, PageEnvelope } from \"@skv/core\";\nimport { Machine, assign } from \"xstate\";\n\ninterface SearchFormStateSchema {\n states: {\n initialSuggestions: {\n states: {\n idle: {};\n loading: {};\n loaded: {};\n failed: {};\n };\n };\n relatedSuggestions: {\n states: {\n idle: {};\n loading: {};\n loaded: {};\n failed: {};\n };\n };\n };\n}\n\nexport type SearchFormEvent =\n | {\n type: \"SELECT\";\n value: string[];\n }\n | {\n type: \"CLEAR_ALL_INPUTS\";\n }\n | {\n type: \"KEYWORD_INPUT_CLEAR\";\n }\n | {\n type: \"KEYWORD_INPUT_CHANGE\";\n value: string;\n }\n | {\n type: \"KEYWORD_INPUT_SELECT\";\n value: FriendlyKeyValueUrl;\n }\n | {\n type: \"LOCATION_INPUT_CLEAR\";\n }\n | {\n type: \"LOCATION_INPUT_CHANGE\";\n value: string;\n }\n | {\n type: \"LOCATION_INPUT_SELECT\";\n value: string;\n }\n | {\n type: \"FETCH_START_INITIAL_SUGGESTIONS\";\n }\n | {\n type: \"FETCH_START_LOCATIONS\";\n value: string;\n }\n | {\n type: \"\";\n };\n\ninterface SearchFormContext {\n keyword: string;\n where: string;\n category: number[];\n didKeywordAutoComplete: boolean;\n didWhereAutoComplete: boolean;\n initialSuggestions: string[];\n relatedSuggestions: string[];\n\n cache: {\n [key: string]: string[];\n };\n}\n\nlet INITIAL_SUGGESTIONS_CACHE = null;\nconst WHERE_STORE_NAME = \"searchFormWhere\";\n\n/* Guards */\nconst locationSearchValid = (ctx, event) => {\n if (\"value\" in event) {\n return event.value.length > 2;\n }\n\n return false;\n};\n\nconst idleLocationHasValidValue = (ctx, event) => {\n return ctx.where.length > 2;\n};\n\nexport const searchFormMachine = Machine<\n SearchFormContext,\n SearchFormStateSchema,\n SearchFormEvent\n>({\n id: \"typeahead\",\n type: \"parallel\",\n context: {\n keyword: \"\",\n where: \"\",\n category: [],\n didKeywordAutoComplete: false,\n didWhereAutoComplete: false,\n initialSuggestions: [],\n relatedSuggestions: [],\n cache: {},\n },\n states: {\n initialSuggestions: {\n initial: INITIAL_SUGGESTIONS_CACHE ? \"loaded\" : \"loading\",\n states: {\n idle: {\n on: {\n FETCH_START_INITIAL_SUGGESTIONS: \"loading\",\n },\n },\n loading: {\n invoke: {\n id: \"fetch_initial_suggestions\",\n src: (ctx) => {\n if (INITIAL_SUGGESTIONS_CACHE) {\n return Promise.resolve().then(() => INITIAL_SUGGESTIONS_CACHE);\n }\n\n return fetch(\"/api/majorcities\")\n .then>((res) =>\n res.json()\n )\n .then(({ data }) => {\n INITIAL_SUGGESTIONS_CACHE = data.locations;\n return data.locations;\n });\n },\n onDone: {\n target: \"loaded\",\n actions: assign({\n initialSuggestions: (ctx, event) => event.data,\n }),\n },\n onError: \"failed\",\n },\n },\n loaded: {},\n failed: {},\n },\n },\n relatedSuggestions: {\n initial: \"idle\",\n states: {\n idle: {\n always: [\n {\n target: \"loading\",\n cond: idleLocationHasValidValue,\n },\n ],\n },\n loading: {\n invoke: {\n id: \"fetch_location_suggestions\",\n src: (ctx) => {\n if (ctx.cache[ctx.where]) {\n return Promise.resolve().then(() => ctx.cache[ctx.where]);\n }\n\n const jsonCache =\n sessionStorage?.getItem(WHERE_STORE_NAME) || \"{}\";\n const whereCache = JSON.parse(jsonCache) as Record<\n string,\n string[]\n >;\n\n if (whereCache.hasOwnProperty(ctx.where)) {\n return Promise.resolve().then(() => whereCache[ctx.where]);\n }\n\n return fetch(`/api/locations?q=${ctx.where}`)\n .then>((res) =>\n res.json()\n )\n .then(({ data }) => {\n try {\n whereCache[ctx.where] = [...data.locations];\n sessionStorage?.setItem(\n WHERE_STORE_NAME,\n JSON.stringify(whereCache)\n );\n } catch (e) {\n console.error(\"Error storing search form where: \", e);\n }\n\n return data.locations;\n });\n },\n onDone: {\n target: \"loaded\",\n actions: assign({\n cache: (ctx, event) =>\n Object.assign({}, ctx.cache, {\n [ctx.where]: event.data,\n }),\n relatedSuggestions: (ctx, event) => event.data,\n }),\n },\n onError: \"failed\",\n },\n },\n loaded: {},\n failed: {},\n },\n },\n },\n on: {\n CLEAR_ALL_INPUTS: {\n actions: assign({\n keyword: (ctx) => \"\",\n category: (ctx) => [],\n where: (ctx) => \"\",\n didKeywordAutoComplete: (ctx) => false,\n didWhereAutoComplete: (ctx) => false,\n cache: (ctx) => {\n const tempCache = Object.assign({}, ctx.cache);\n delete tempCache[ctx.keyword];\n delete tempCache[ctx.where];\n return tempCache;\n },\n }),\n },\n KEYWORD_INPUT_CLEAR: {\n actions: assign({\n keyword: (ctx) => \"\",\n category: (ctx) => [],\n didKeywordAutoComplete: (ctx) => false,\n cache: (ctx) => {\n const tempCache = Object.assign({}, ctx.cache);\n delete tempCache[ctx.keyword];\n return tempCache;\n },\n }),\n },\n KEYWORD_INPUT_CHANGE: {\n actions: assign({\n keyword: (ctx, e) => e.value,\n category: (ctx) => [],\n didKeywordAutoComplete: (ctx) => false,\n }),\n },\n KEYWORD_INPUT_SELECT: {\n actions: assign({\n keyword: (ctx) => \"\",\n category: (ctx, e) => [e.value.id],\n didKeywordAutoComplete: (ctx) => true,\n }),\n },\n LOCATION_INPUT_CLEAR: {\n actions: assign({\n where: (ctx) => \"\",\n didWhereAutoComplete: (ctx) => false,\n }),\n },\n LOCATION_INPUT_CHANGE: {\n actions: assign({\n where: (ctx, e) => e.value,\n didWhereAutoComplete: (ctx) => false,\n }),\n },\n LOCATION_INPUT_SELECT: [\n {\n target: \"relatedSuggestions.loading\",\n cond: locationSearchValid,\n actions: assign({\n where: (ctx, e) => e.value || ctx.where || \"\",\n didWhereAutoComplete: (ctx) => true,\n }),\n },\n ],\n FETCH_START_LOCATIONS: {\n target: \"relatedSuggestions.loading\",\n cond: locationSearchValid,\n actions: assign({\n where: (ctx, e) => e.value || ctx.where || \"\",\n }),\n },\n },\n});\n","import {\n applyMiddleware,\n combineReducers,\n compose,\n createStore as createReduxStore,\n} from \"redux\";\n\nimport { Provider, useDispatch } from \"react-redux\";\nimport thunk, { ThunkAction, ThunkMiddleware } from \"redux-thunk\";\n\nimport * as favouritesStore from \"./favourites\";\nimport * as opportunityStore from \"./opportunity\";\nimport * as opportunityResultStore from \"./opportunityResult\";\nimport * as organisationStore from \"./organisation\";\nimport * as organisationResultStore from \"./organisationResult\";\n\nimport {\n OpportunitySearchQueryState,\n OrganisationSearchQueryState,\n} from \"./context\";\n\nimport * as React from \"react\";\n\nimport {\n CustomError,\n Opportunity,\n OpportunityResultStateEnums,\n OpportunitySearchResults,\n PageEnvelope,\n SearchResultStatus,\n} from \"@skv/core\";\n\nexport * from \"./context\";\n\nexport {\n favouritesStore,\n opportunityResultStore,\n opportunityStore,\n organisationResultStore,\n organisationStore,\n};\n\nexport const reducer = combineReducers({\n opportunityResult: opportunityResultStore.reducer,\n opportunity: opportunityStore.reducer,\n organisation: organisationStore.reducer,\n favourites: favouritesStore.reducer,\n organisationResult: organisationResultStore.reducer,\n});\n\nexport type RootState = ReturnType;\n\nexport type RootActions =\n | opportunityResultStore.ActionTypes\n | opportunityStore.ActionTypes\n | organisationStore.ActionTypes\n | favouritesStore.ActionTypes\n | organisationResultStore.ActionTypes;\n\ndeclare const window: {\n __REDUX_DEVTOOLS_EXTENSION__: any;\n};\n\nconst ReduxDevToolsMiddleware = ((): any => {\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof window !== \"undefined\" && window.__REDUX_DEVTOOLS_EXTENSION__) {\n return window.__REDUX_DEVTOOLS_EXTENSION__({ trace: true });\n }\n }\n\n return (f): any => f;\n})();\n\nexport const createStore = (initialState?: Partial) => {\n return createReduxStore(\n reducer,\n initialState,\n compose(\n applyMiddleware(thunk as ThunkMiddleware),\n ReduxDevToolsMiddleware\n )\n );\n};\n\ntype ThunkDispatch = ReturnType[\"dispatch\"];\n\nexport const useThunkDispatch = () => {\n return useDispatch();\n};\n\nexport type AppThunk = ThunkAction<\n ReturnType,\n RootState,\n unknown,\n RootActions\n>;\n\ntype InitialServerPageEnvelope = {\n opportunityResult?: OpportunitySearchResults;\n opportunity?: Opportunity;\n organisation?: organisationStore.Organisation;\n organisationResult?: organisationResultStore.OrganisationSearchResults;\n favourites?: any;\n\n searchCriteria?: OpportunitySearchQueryState | OrganisationSearchQueryState;\n};\n\ntype InitialServerMeta = {\n id?: number;\n} | null;\n\nconst handleError = (\n pageEnvelope: PageEnvelope,\n initialState: RootState\n): RootState => {\n const { meta } = pageEnvelope;\n\n // error:namespace:errordesc\n\n const err = pageEnvelope.errorCode.split(\":\");\n\n if (err[0] !== \"error\") {\n return initialState;\n }\n\n const key = err[1];\n const key2 = err[2];\n\n // if (!initialState[key]) {\n // return initialState;\n // }\n\n switch (key) {\n case \"application\":\n if (key2 === \"alreadyexists\") {\n initialState.opportunity.error = new CustomError(\n pageEnvelope.errorMessage,\n pageEnvelope.errorCode\n );\n initialState.opportunity.data = {\n [pageEnvelope.data.opportunity.id]: initialState.opportunity.error,\n };\n }\n\n break;\n case \"organisation\":\n case \"opportunity\": {\n initialState[key].error = new CustomError(\n pageEnvelope.errorMessage,\n pageEnvelope.errorCode\n );\n initialState[key].data = {\n [meta?.id]: initialState[key].error,\n };\n break;\n }\n }\n\n return initialState;\n};\n\nexport const createInitialState = <\n T extends InitialServerPageEnvelope,\n M extends InitialServerMeta\n>(\n pageEnvelope: PageEnvelope\n): RootState => {\n const { opportunities, organisations } =\n favouritesStore.getFavouritesFromCookie();\n\n let initialState: RootState = {\n opportunityResult: {\n loading: false,\n error: null,\n data: {},\n state: OpportunityResultStateEnums.IDLE,\n },\n opportunity: {\n loading: false,\n error: null,\n data: {},\n },\n organisation: {\n loading: false,\n error: null,\n data: {},\n },\n organisationResult: {\n loading: false,\n error: null,\n data: {},\n status: SearchResultStatus.IDLE,\n },\n favourites: {\n loading: false,\n error: null,\n opportunities,\n organisations,\n },\n };\n\n if (pageEnvelope) {\n if (pageEnvelope.errorCode) {\n initialState = handleError(pageEnvelope, initialState);\n }\n\n if (pageEnvelope.data) {\n if (\"opportunityResult\" in pageEnvelope.data) {\n initialState.opportunityResult = {\n ...initialState.opportunityResult,\n data: {\n [opportunityResultStore.util.opportunitySearchQueryToString(\n pageEnvelope.data.searchCriteria as OpportunitySearchQueryState\n )]: pageEnvelope.data.opportunityResult,\n },\n };\n }\n\n if (\"opportunity\" in pageEnvelope.data) {\n initialState.opportunity = {\n ...initialState.opportunity,\n data: {\n [pageEnvelope.data.opportunity.id]: pageEnvelope.data.opportunity,\n },\n };\n }\n\n if (\"organisation\" in pageEnvelope.data) {\n initialState.organisation = {\n ...initialState.organisation,\n data: {\n [pageEnvelope.data.organisation.id]: pageEnvelope.data.organisation,\n },\n };\n }\n\n if (\"organisationResult\" in pageEnvelope.data) {\n initialState.organisationResult = {\n ...initialState.organisationResult,\n data: {\n [organisationResultStore.util.organisationSearchQueryToString(\n pageEnvelope.data.searchCriteria\n )]: pageEnvelope.data.organisationResult,\n },\n };\n }\n }\n }\n\n return initialState;\n};\n\nexport const ReduxProvider: React.FC<{\n initialPageEnvelope: PageEnvelope;\n}> = ({ initialPageEnvelope, children }) => {\n const initialState = React.useMemo(() => {\n return createInitialState(initialPageEnvelope);\n }, [initialPageEnvelope]);\n\n const store = createStore(initialState);\n\n return {children};\n};\n\nexport * from \"./SearchForm.state\";\n","import {\n OpportunitySearchResults,\n OpportunityResultStateEnums,\n} from \"@skv/core\";\n\nimport { CustomError } from \"@skv/core\";\n\nexport interface State {\n loading: boolean;\n error: false | null | CustomError;\n data: { [searchQuery: string]: OpportunitySearchResults };\n state: OpportunityResultStateEnums;\n}\n\nexport type ActionTypes =\n | {\n type: \"RESULT:FETCH:START\";\n }\n | {\n type: \"RESULT:FETCH:END\" | \"RESULT:FETCH:END:CACHE\";\n payload: {\n searchQuery: string;\n data: OpportunitySearchResults;\n };\n }\n | {\n type: \"RESULT:FETCH:ERROR\";\n payload: {\n error: CustomError;\n };\n }\n | {\n type: \"RESULT:ERROR:RESET\";\n };\n\nexport const reducer = (\n state: State = {\n loading: false,\n error: false,\n data: {},\n state: OpportunityResultStateEnums.IDLE,\n },\n action: ActionTypes\n): State => {\n switch (action.type) {\n case \"RESULT:FETCH:START\":\n return {\n ...state,\n loading: true,\n error: false,\n state: OpportunityResultStateEnums.FETCHING_DATA,\n };\n case \"RESULT:FETCH:END\":\n case \"RESULT:FETCH:END:CACHE\":\n return {\n ...state,\n loading: false,\n error: false,\n data: {\n ...state.data,\n [action.payload.searchQuery]: action.payload.data,\n },\n state: OpportunityResultStateEnums.IDLE,\n };\n case \"RESULT:FETCH:ERROR\":\n return {\n ...state,\n loading: false,\n error: action.payload.error,\n state: OpportunityResultStateEnums.FETCH_ERROR,\n };\n case \"RESULT:ERROR:RESET\":\n return {\n ...state,\n loading: false,\n error: false,\n state: OpportunityResultStateEnums.IDLE,\n };\n default:\n return state;\n }\n};\n","import * as React from \"react\";\nimport { useThunkReducer } from \"../hooks/useThunkReducer\";\n\nexport type RootViewModel = {\n cache: {\n [url: string]: any;\n };\n};\n\ntype RootViewState = RootViewModel;\n\ntype RootViewDispatch = {\n (action: RootViewActions): void;\n (\n action: (\n dispatch: React.Dispatch,\n getState: () => RootViewModel\n ) => void\n ): void;\n};\n\nconst RootViewStateContext = React.createContext(\n undefined\n);\n\nconst RootViewGetStateContext = React.createContext<\n () => RootViewState | undefined\n>(undefined);\n\nconst RootViewDispatchContext = React.createContext<\n RootViewDispatch | undefined\n>(undefined);\n\ninterface ProviderProps {\n initialState: RootViewModel;\n}\n\ntype RootViewActions =\n | {\n type: \"ADD_VIEW_TO_CACHE\";\n payload: {\n url: string;\n data: any;\n };\n }\n | {\n type: \"UPDATE_CACHED_VIEW\";\n payload: {\n url: string;\n data: any;\n };\n }\n | {\n type: \"URL_VIEW_MODEL_ERROR\";\n payload: {\n url: string;\n error: Error;\n };\n }\n | {\n type: \"REMOVE_CACHED_VIEW\";\n payload: {\n url: string;\n };\n }\n | {\n type: \"REMOVE_CACHED_VIEWS\";\n payload: string[];\n };\n\nconst RootViewReducer = (state: RootViewModel, action: RootViewActions) => {\n switch (action.type) {\n case \"ADD_VIEW_TO_CACHE\":\n return {\n ...state,\n cache: {\n ...state.cache,\n [action.payload.url]: action.payload.data,\n },\n };\n case \"UPDATE_CACHED_VIEW\":\n return {\n ...state,\n cache: {\n ...state.cache,\n [action.payload.url]: Object.assign(\n {},\n state.cache[action.payload.url],\n action.payload.data\n ),\n },\n };\n case \"REMOVE_CACHED_VIEW\":\n return {\n ...state,\n cache: {\n ...state.cache,\n [action.payload.url]: undefined,\n },\n };\n case \"REMOVE_CACHED_VIEWS\": {\n return {\n ...state,\n cache: {\n ...state.cache,\n ...(() => {\n return action.payload.reduce((acc, cur) => {\n acc[cur] = undefined;\n return acc;\n }, {} as Record);\n })(),\n },\n };\n }\n case \"URL_VIEW_MODEL_ERROR\":\n return {\n ...state,\n cache: {\n ...state.cache,\n [action.payload.url]: action.payload.error,\n },\n };\n default:\n return state;\n }\n};\n\nexport const RootViewProvider: React.FC = ({\n initialState,\n children,\n}) => {\n if (!initialState) {\n throw Error(\"No initialState provided to RootViewStateContext.Provider\");\n }\n\n const [getState, dispatch] = useThunkReducer(RootViewReducer, initialState);\n\n // if (process.env.NODE_ENV !== \"production\") {\n // global.RootViewState = getState();\n // }\n\n return (\n \n \n \n {children}\n \n \n \n );\n};\n\nexport const useRootViewGetState = () => {\n const getState = React.useContext(RootViewGetStateContext);\n\n if (!getState) {\n throw Error(\n \"useRootViewGetState used outside a RootViewGetStateContext.Provider\"\n );\n }\n\n return getState;\n};\n\nexport const useRootViewState = () => {\n const state = React.useContext(RootViewStateContext);\n\n if (!state) {\n throw Error(\n \"useRootViewState hook used outside a RootViewStateContext.Provider\"\n );\n }\n\n return state;\n};\n\nexport const useRootViewDispatch = () => {\n const dispatch = React.useContext(RootViewDispatchContext);\n\n if (!dispatch) {\n throw Error(\n \"useRootViewDispatch hook used outside a RootViewDispatchContext.Provider\"\n );\n }\n\n return dispatch;\n};\n\nexport const useRootView = () => {\n const state = useRootViewState();\n const dispatch = useRootViewDispatch();\n const getState = useRootViewGetState();\n\n return [state, dispatch, getState] as const;\n};\n","import * as React from \"react\";\nimport { useRootView } from \"./RootView\";\nimport { PageEnvelope, CustomError } from \"@skv/core\";\nimport { useLocation } from \"react-router-dom\";\n\nexport const getPageData = (\n url: string,\n options?: RequestInit\n) => {\n return fetch(url, {\n headers: {\n \"Content-Type\": \"application/json\",\n ...options?.headers,\n },\n ...options,\n })\n .then>((res) => {\n if (res.ok) {\n return res.json();\n }\n\n throw Error(\"Unhandled network error\");\n })\n .then(({ data, success, errorCode, meta }) => {\n if (success) {\n return data;\n }\n\n throw new CustomError(`Error from server: ${errorCode}`, errorCode, meta);\n });\n};\n\ntype FetchStates = \"idle\" | \"loaded\" | \"loading\" | \"error\";\n\ninterface UseViewModelHookOptions {\n url?: string;\n onClientLoad?: (data: ViewModel) => void;\n cache?: boolean;\n noFetch?: boolean;\n}\n\nexport const useViewModel = (\n options?: UseViewModelHookOptions\n) => {\n const [rootState, rootDispatch, rootGetState] = useRootView();\n const location = useLocation();\n\n const { url, onClientLoad, cache = true, noFetch = false } = options || {};\n\n const onClientLoadRef = React.useRef(onClientLoad);\n\n const _url =\n typeof url === \"undefined\" ? location.pathname + location.search : url;\n\n const status: FetchStates = (() => {\n if (noFetch) {\n return \"idle\";\n }\n\n if (rootState.cache[_url]) {\n if (rootState.cache[_url] instanceof Error) {\n return \"error\";\n }\n\n return \"loaded\";\n }\n return \"loading\";\n })();\n\n // todo : maybe look at setting this to null instead of CustomError (potentially breaking)\n const data: ViewModel = rootState.cache[_url];\n\n const error: CustomError | Error =\n status === \"error\" ? rootState.cache[_url] : null;\n\n const updateViewModel = React.useMemo(() => {\n function updateViewModel(data: ViewModel): ViewModel;\n function updateViewModel(\n callback: (data: ViewModel) => ViewModel\n ): ViewModel;\n function updateViewModel(data: any): ViewModel {\n if (typeof data === \"function\") {\n const nextState = data(rootGetState().cache[_url]);\n rootDispatch((dispatch, getState) => {\n dispatch({\n type: \"UPDATE_CACHED_VIEW\",\n payload: {\n url: _url,\n data: nextState,\n },\n });\n });\n return nextState;\n }\n\n rootDispatch({\n type: \"UPDATE_CACHED_VIEW\",\n payload: {\n url: _url,\n data,\n },\n });\n return data;\n }\n\n return updateViewModel;\n }, [rootDispatch, rootGetState, _url]);\n\n const getViewModel = React.useMemo(() => {\n return () =>\n new Promise((resolve, reject) => {\n rootDispatch((dispatch, getState) => {\n getPageData(_url)\n .then((data) => {\n dispatch({\n type: \"ADD_VIEW_TO_CACHE\",\n payload: {\n url: _url,\n data,\n },\n });\n\n if (onClientLoadRef.current) {\n onClientLoadRef.current(data);\n }\n\n resolve(data);\n })\n .catch((err: Error | CustomError) => {\n dispatch({\n type: \"URL_VIEW_MODEL_ERROR\",\n payload: {\n url: _url,\n error: err,\n },\n });\n\n reject(err);\n });\n });\n });\n }, [_url, onClientLoadRef, rootDispatch]);\n\n React.useEffect(() => {\n rootDispatch((dispatch, getState) => {\n if (getState().cache[_url]) {\n return getState().cache[_url];\n }\n\n if (noFetch === false) {\n getViewModel();\n }\n });\n\n return () => {\n if (cache === false) {\n rootDispatch({\n type: \"REMOVE_CACHED_VIEW\",\n payload: {\n url: _url,\n },\n });\n }\n };\n }, [_url, rootDispatch, noFetch, cache, getViewModel]);\n\n return [\n { data, status, error },\n { updateViewModel, getViewModel },\n ] as const;\n};\n","/* todo : might abstract to @skv/state if other apps need it */\n\nimport * as React from \"react\";\nimport { useThunkReducer } from \"@skv/state\";\n\nexport interface AuthenticatedUserState {\n applicationCount: number;\n email: string | null;\n emailAlertCount: number;\n experienceCount: number;\n favouriteCount: number;\n isAuthenticated: boolean;\n}\n\nconst UserStateContext = React.createContext<\n AuthenticatedUserState | undefined\n>(undefined);\n\n// below is only used to get the dispatch type returned\nconst __DISPATCH__ = () => useThunkReducer(reducer, undefined);\n\ninterface UserDispatchContext {\n dispatch: ReturnType[1];\n updateUser: (\n user:\n | Partial\n | ((user: AuthenticatedUserState) => AuthenticatedUserState)\n ) => void;\n}\n\nconst UserDispatchContext = React.createContext<\n UserDispatchContext | undefined\n>(undefined);\n\ntype Actions = {\n type: \"UPDATE_USER\";\n payload: Partial;\n};\n\nconst reducer = (\n state: AuthenticatedUserState,\n action: Actions\n): AuthenticatedUserState => {\n switch (action.type) {\n case \"UPDATE_USER\":\n return {\n ...state,\n ...action.payload,\n };\n default:\n return state;\n }\n};\n\nexport const UserProvider: React.FC<{\n user: AuthenticatedUserState;\n}> = ({ user, children }) => {\n const [getState, dispatch] = useThunkReducer(reducer, user);\n\n const updateUser = React.useMemo(() => {\n function updateUser(\n cb: (user: AuthenticatedUserState) => AuthenticatedUserState\n ): void;\n function updateUser(user: Partial): void;\n function updateUser(user: any): void {\n if (typeof user === \"function\") {\n const nextState = user(getState()) as AuthenticatedUserState;\n dispatch({\n type: \"UPDATE_USER\",\n payload: nextState,\n });\n return;\n }\n\n dispatch({\n type: \"UPDATE_USER\",\n payload: user,\n });\n }\n\n return updateUser;\n }, [dispatch, getState]);\n\n return (\n \n {\n return { dispatch, updateUser };\n }, [dispatch, updateUser])}\n >\n {children}\n \n \n );\n};\n\nexport const useUserState = (): AuthenticatedUserState => {\n const ctx = React.useContext(UserStateContext);\n\n if (!ctx) {\n throw Error(\"useUser hook used outside a UserStateContextProvider\");\n }\n\n return ctx;\n};\n\nexport const useUserDispatch = (): UserDispatchContext => {\n const ctx = React.useContext(UserDispatchContext);\n\n if (!ctx) {\n throw Error(\"useUserDispatch hook used outside a UserStateContextProvider\");\n }\n\n return ctx;\n};\n\nexport const useUser = () => {\n const state = useUserState();\n const dispatch = useUserDispatch();\n\n return [state, dispatch] as const;\n};\n","import * as React from \"react\";\n\nexport interface EoiFormState {\n email?: string;\n firstName?: string;\n gender?: number;\n lastName?: string;\n location?: string;\n phone?: string;\n qualification?: string;\n yearOfBirth?: number;\n}\n\nconst EoiFormStateContext = React.createContext(\n undefined\n);\n\nconst EoiFormDispatchContext = React.createContext<\n React.Dispatch> | undefined\n>(undefined);\n\ninterface EoiFormProviderProps {\n initialState: null | EoiFormState;\n}\n\nexport const EoiFormProvider: React.FC = ({\n initialState,\n children,\n}) => {\n const [state, setState] = React.useState(() => initialState);\n\n return (\n \n \n {children}\n \n \n );\n};\n\nexport const useEoiFormState = () => {\n const ctx = React.useContext(EoiFormStateContext);\n\n if (!ctx) {\n throw Error(\"useEoiFormState used outside EoiFormProvider\");\n }\n\n return ctx;\n};\n\nexport const useEoiFormDispatch = () => {\n const ctx = React.useContext(EoiFormDispatchContext);\n\n if (!ctx) {\n throw Error(\"useEoiFormDispatch used outside EoiFormProvider\");\n }\n\n return ctx;\n};\n\nexport const useEoiForm = () => {\n const state = useEoiFormState();\n const setState = useEoiFormDispatch();\n\n return [state, setState] as const;\n};\n","import * as React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport styled from \"styled-components\";\nimport { useUserState } from \"~/state\";\n\nconst SignInCtaSection = styled.section`\n display: none;\n @media (min-width: ${(p) => p.theme.lgBreakpoint}) {\n display: block;\n margin-top: 1.5rem;\n margin-bottom: 1.5rem;\n }\n`;\n\nexport const SignInCta = (): JSX.Element => {\n const { isAuthenticated } = useUserState();\n\n return isAuthenticated ? null : (\n \n

    \n ({\n pathname: \"/signin\",\n state: loc.state,\n })}\n >\n Sign in\n {\" \"}\n to view your email alerts and activity\n

    \n
    \n );\n};\n","import classNames from \"classnames\";\n\ninterface FormValidationErrorProps {\n errorId: string;\n className?: string;\n message: React.ReactNode;\n}\n\nexport const ValidationError = (props: FormValidationErrorProps) => {\n return (\n \n \n error\n \n {props.message}\n \n );\n};\n","import * as React from \"react\";\nimport classNames from \"classnames\";\n\nexport interface HelpTextProps {\n helpId: string;\n helpText: React.ReactNode;\n className?: React.HTMLAttributes[\"className\"];\n}\n\nexport const HelpText: React.FC = ({\n helpId,\n helpText,\n className,\n}) => {\n return (\n \n {helpText}\n \n );\n};\n","import * as React from \"react\";\nimport { useFormBag } from \"react-yup\";\nimport { ValidationError } from \"./ValidationError\";\n\nimport classNames from \"classnames\";\nimport { HelpText, HelpTextProps } from \"./HelpText\";\n\ntype LabelProps = React.DetailedHTMLProps<\n React.LabelHTMLAttributes,\n HTMLLabelElement\n>;\n\nexport interface BaseFieldProps {\n id: string;\n name: string;\n label: string;\n labelProps?: LabelProps;\n helpText?: HelpTextProps[\"helpText\"];\n optional?: boolean;\n wrapperProps?: React.DetailedHTMLProps<\n React.HTMLAttributes,\n HTMLElement\n >;\n isInvalid?: boolean;\n}\n\ninterface PureFieldProps extends FieldProps {\n error?: React.ReactNode;\n touched?: boolean;\n}\n\nexport const PureField: React.FC = React.memo(\n ({\n id,\n name,\n label,\n labelProps,\n value,\n optional,\n error,\n touched,\n helpText,\n autoComplete,\n className,\n \"aria-describedby\": ariaDescribedBy,\n ...rest\n }) => {\n return (\n
    \n \n {helpText && (\n \n )}\n x != null)\n .join(\" \")}\n {...rest}\n />\n {error && touched && (\n \n )}\n
    \n );\n }\n);\n\ntype FieldPropsOmit = Omit<\n React.DetailedHTMLProps<\n React.InputHTMLAttributes,\n HTMLInputElement\n >,\n \"id\" | \"name\"\n>;\n\ninterface FieldProps extends FieldPropsOmit, BaseFieldProps {}\n\nexport const Field: React.FC = (props) => {\n const { name } = props;\n const { getValue, getError, isTouched } = useFormBag();\n\n const value = getValue(name) || \"\";\n const error = getError(name);\n const touched = isTouched(name);\n\n return (\n \n );\n};\n\ninterface SplitFieldProps extends PureFieldProps {\n append: JSX.Element | null;\n}\n\nexport const SplitField: React.FC = ({\n id,\n name,\n label,\n labelProps,\n value,\n optional,\n error,\n touched,\n helpText,\n autoComplete,\n append,\n \"aria-describedby\": ariaDescribedBy,\n ...rest\n}) => {\n return (\n
    \n \n {helpText && (\n \n )}\n \n x != null)\n .join(\" \")}\n {...rest}\n />\n {append}\n
    \n {error && touched && (\n \n )}\n \n );\n};\n\ntype TextAreaPropsOmit = Omit<\n React.DetailedHTMLProps<\n React.TextareaHTMLAttributes,\n HTMLTextAreaElement\n >,\n \"id\" | \"name\"\n>;\n\ninterface TextAreaProps extends BaseFieldProps, TextAreaPropsOmit {\n className?: string;\n}\n\ninterface PureTextAreaProps extends BaseFieldProps, TextAreaPropsOmit {\n error?: string;\n touched?: boolean;\n}\n\nexport const PureTextArea: React.FC = ({\n id,\n name,\n label,\n labelProps,\n helpText,\n optional,\n error,\n touched,\n value,\n className,\n ...rest\n}) => {\n return (\n
    \n \n {helpText && (\n \n )}\n\n \n {error && touched && (\n \n )}\n
    \n );\n};\n\nexport const TextArea: React.FC = (props) => {\n const { name } = props;\n const { getValue, getError, isTouched } = useFormBag();\n\n const value = getValue(name) || \"\";\n const error = getError(name);\n const touched = isTouched(name);\n\n return (\n \n );\n};\n\ntype CheckboxPropsOmit = Omit<\n React.DetailedHTMLProps<\n React.InputHTMLAttributes,\n HTMLInputElement\n >,\n \"id\" | \"name\" | \"type\" | \"ref\"\n>;\ninterface CheckboxProps\n extends Omit,\n CheckboxPropsOmit {\n type: \"radio\" | \"checkbox\" | \"switch\";\n inline?: boolean;\n}\n\nexport const Checkbox = React.forwardRef(\n (\n { id, name, type, label, inline = true, wrapperProps, isInvalid, ...rest },\n ref\n ) => {\n return (\n <>\n \n \n {label}\n \n \n );\n }\n);\n\n/*\n TODO : This is a special case for when we want to do something on unmount\n Figure out potentially a better way/move to SKV.AdminAU/pages/Opportunity?\n*/\ninterface CheckWithUnmountProps extends CheckboxProps {\n onUnmount: () => void;\n}\n\nexport const CheckWithUnmount = React.forwardRef<\n HTMLInputElement,\n CheckWithUnmountProps\n>(({ onUnmount, ...props }, ref) => {\n React.useEffect(() => {\n return onUnmount;\n }, []);\n\n return ;\n});\n","import classNames from \"classnames\";\nimport { timingFunctions } from \"polished\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { useFormBag } from \"react-yup\";\n\nimport { SvgSprite, TooltipPopover } from \"@skv/core\";\nimport { BaseFieldProps, HelpText, ValidationError } from \".\";\n\nimport {\n Select as AriaSelect,\n SelectItem,\n SelectItemCheck,\n SelectLabel,\n SelectPopover,\n SelectState,\n useSelectState,\n} from \"ariakit/select\";\n\ntype SelectPropsOmit = Omit<\n React.DetailedHTMLProps<\n React.SelectHTMLAttributes,\n HTMLSelectElement\n >,\n \"id\" | \"name\"\n>;\n\ninterface SelectProps extends BaseFieldProps, SelectPropsOmit {\n selectProps?: {\n className?: string;\n };\n}\n\nexport const Select: React.FC = ({\n name,\n id,\n label,\n labelProps,\n selectProps,\n helpText,\n optional,\n children,\n ...rest\n}) => {\n const { getValue, getError, isTouched } = useFormBag();\n\n const value = getValue(name) || \"\";\n const error = getError(name);\n const touched = isTouched(name);\n\n return (\n
    \n \n {label}{\" \"}\n {optional ? (optional) : \"*\"}\n \n {helpText && (\n \n )}\n \n {children}\n \n {error && touched && (\n \n )}\n
    \n );\n};\n\ntype BaseItem = {\n id: string;\n name: string;\n};\n\ntype LabelProps = React.DetailedHTMLProps<\n React.LabelHTMLAttributes,\n HTMLLabelElement\n>;\n\ninterface SelectMultiProps {\n id: string;\n label: string;\n labelProps?: LabelProps;\n name: string;\n items: T[];\n defaultValue?: string | string[] | undefined;\n categoryTitle?: string;\n categoryType?: string;\n className?: string;\n onUpdateField: (value: string) => void;\n onClear?: () => void;\n onDropdownOpen?: () => void;\n renderValue?: (\n selectState: SelectState,\n itemMap: Map\n ) => React.ReactNode;\n}\n\nexport const SelectMulti = ({\n id,\n label,\n labelProps,\n items,\n name,\n className,\n categoryTitle = \"Nothing selected\",\n categoryType = \"items selected\",\n onUpdateField,\n renderValue,\n onClear,\n onDropdownOpen,\n defaultValue = [],\n}: SelectMultiProps) => {\n const selectState = useSelectState({\n value: defaultValue,\n sameWidth: true,\n });\n\n const itemMap = useMemo(() => {\n const map = new Map();\n items.forEach((item) => {\n map.set(item.id, item);\n });\n\n return map;\n }, [items]);\n\n const [isTooltipVisible, setIsTooltipVisible] = useState(false);\n\n useEffect(() => {\n if (selectState.mounted) {\n onDropdownOpen && onDropdownOpen();\n }\n }, [selectState.mounted, onDropdownOpen]);\n\n return (\n
    \n \n {label}\n \n \n \n \n \n {(() => {\n if (renderValue) {\n return renderValue(selectState, itemMap);\n }\n\n if (selectState.value.length === 0) {\n return categoryTitle;\n }\n\n if (selectState.value.length === 1) {\n return itemMap.get(selectState.value[0])?.name;\n }\n\n return `${selectState.value.length} ${categoryType}`;\n })()}\n \n \n {selectState.mounted && (\n \n {items.map((x) => (\n {\n onUpdateField(x.id);\n }}\n css={`\n cursor: pointer;\n line-height: 2;\n font-size: 16px;\n font-weight: 400;\n\n text-decoration: underline;\n\n &[data-active-item] {\n background-color: #e5e9ef;\n }\n\n &:hover {\n background-color: #e5e9ef;\n }\n `}\n >\n \n {x.name}\n \n ))}\n \n )}\n
    \n {onClear && (\n // Note - this wrapping div is required for screens zoomed in >= 400% to prevent overflow from the clear button.\n \n setIsTooltipVisible(nextShow)}\n >\n .rounded-circle {\n background-color: ${(p): string => p.theme.gray200};\n box-shadow: 1px 1px 3px ${(p): string => p.theme.gray400};\n }\n `}\n onClick={onClear}\n onKeyDown={(e) => {\n if (e.key === \" \" || e.key === \"Enter\") {\n e.preventDefault();\n onClear();\n setIsTooltipVisible(false);\n }\n }}\n >\n p.theme.gray200};\n box-shadow: 1px 1px 3px ${(p): string => p.theme.gray400};\n }\n `}\n >\n \n \n \n \n \n )}\n \n \n \n );\n};\n","import * as React from \"react\";\nimport { useForm } from \"react-yup\";\nimport styled from \"styled-components\";\nimport * as Yup from \"yup\";\n\nimport { Analytics, CustomError, PageEnvelope, SvgSprite } from \"@skv/core\";\n\nimport { Alert, AlertProps } from \"react-bootstrap\";\nimport { useUserState } from \"~/state\";\nimport { SplitField } from \"~/ui/Form\";\n\nconst SCHEMA = Yup.object({\n email: Yup.string()\n .email(\"Please enter a valid email address.\")\n .required(\"Please enter an email address.\"),\n}).defined();\n\nconst AccountWrapper = styled.section`\n @media (min-width: ${(p) => p.theme.lgBreakpoint}) {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n }\n`;\n\nconst SignOutWrapper = styled.section`\n @media (min-width: ${(p) => p.theme.lgBreakpoint}) {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n }\n`;\nconst SignOutDiv = styled.div`\n border-bottom: 1px solid #e1e1e1;\n z-index: 1200;\n @media (min-width: ${(p) => p.theme.lgBreakpoint}) {\n position: absolute;\n top: 5rem;\n border-bottom: none;\n z-index: 1200;\n }\n`;\n\nconst SignInCard = styled.div`\n border-bottom: 1px solid #e1e1e1;\n border-radius: 0px;\n @media (min-width: ${(p) => p.theme.lgBreakpoint}) {\n position: absolute !important;\n top: 3rem;\n width: 376px;\n box-shadow: 0 2px 6px 0 rgba(28, 28, 28, 0.5);\n z-index: 1200;\n }\n`;\n\ninterface SignInPostViewModel {\n email: string;\n emailSent: boolean;\n}\n\nexport const SignInOutPanel = (): JSX.Element => {\n const { email, isAuthenticated } = useUserState();\n\n const alertRef = React.useRef(null);\n const formRef = React.useRef(null);\n\n const {\n values,\n errors,\n touched,\n createSubmitHandler,\n field,\n FormProvider,\n isSubmitting,\n setSubmitting,\n setTouched,\n } = useForm({\n validationSchema: SCHEMA,\n });\n\n const [emailData, setEmailData] = React.useState(() => ({\n email: null,\n emailSent: false,\n }));\n\n const [serverError, setServerError] = React.useState({\n show: false,\n variant: null,\n children: null,\n });\n\n const handleSubmit = React.useMemo(() => {\n return createSubmitHandler((v) => {\n setServerError((prev) => ({ ...prev, show: false }));\n\n fetch(\"/signin\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify(v),\n })\n .then>((res) => {\n if (res.ok) {\n return res.json();\n }\n\n throw Error(\"Response not ok\");\n })\n .then(({ success, data, errorCode, errorMessage }) => {\n if (success) {\n setEmailData({\n email: data.email,\n emailSent: data.emailSent,\n });\n return;\n }\n\n switch (errorCode) {\n case \"error:signin\":\n throw new CustomError(\"ERROR\", errorCode);\n default:\n throw Error(\n \"Response ok, but server did not respond with a known error code\"\n );\n }\n })\n .catch((err: Error | CustomError) => {\n // if (err instanceof CustomError) {\n // setServerError(true);\n // }\n setServerError((prev) => ({\n ...prev,\n show: true,\n variant: \"danger\",\n children: <>An unexpected error has occurred. Please try again.,\n }));\n });\n setSubmitting(false);\n });\n }, [createSubmitHandler, setSubmitting]);\n\n return (\n \n {isAuthenticated ? (\n \n \n \n \n \n {email}\n \n \n \n \n \n ) : (\n \n
    \n {emailData.emailSent ? (\n
    \n

    Email sent

    \n

    We have sent a sign-in email to:

    \n

    \n \n {emailData.email}\n

    \n \n
    \n ) : (\n <>\n

    Sign in

    \n

    \n To view your email alerts and activity.\n
    \n We will send you an email to confirm your email address.\n

    \n \n \n {\n setServerError((prev) => ({\n ...prev,\n show: false,\n }));\n }}\n {...serverError}\n />\n {\n field.onChange(e);\n setTouched((prev) => ({ ...prev, email: false }), true);\n }}\n onBlur={(e) => {\n field.onBlur(e);\n setTouched(\n (prev) => ({ ...prev, email: false }),\n false\n );\n }}\n append={\n \n {isSubmitting ? \"Sending...\" : \"Send email\"}\n \n }\n />\n \n \n \n )}\n
    \n
    \n )}\n
    \n );\n};\n","import * as React from \"react\";\nimport { useLocation } from \"react-router-dom\";\nimport { DefaultTheme, withTheme } from \"styled-components\";\n\nimport bloodLgImg from \"../assets/banner/blood-bikes-lg.jpg\";\nimport bloodLgImg2x from \"../assets/banner/blood-bikes-lg@2x.jpg\";\nimport bloodImg from \"../assets/banner/blood-bikes.jpg\";\nimport bloodImg2x from \"../assets/banner/blood-bikes@2x.jpg\";\n\nimport easterLgImg from \"../assets/banner/easter-show-lg.jpg\";\nimport easterLgImg2x from \"../assets/banner/easter-show-lg@2x.jpg\";\nimport easterImg from \"../assets/banner/easter-show.jpg\";\nimport easterImg2x from \"../assets/banner/easter-show@2x.jpg\";\n\nimport doctorLgImg from \"../assets/banner/royal-flying-doctor-service-lg.jpg\";\nimport doctorLgImg2x from \"../assets/banner/royal-flying-doctor-service-lg@2x.jpg\";\nimport doctorImg from \"../assets/banner/royal-flying-doctor-service.jpg\";\nimport doctorImg2x from \"../assets/banner/royal-flying-doctor-service@2x.jpg\";\n\nimport { CustomError } from \"@skv/core\";\nimport { opportunityStore, organisationStore } from \"@skv/state\";\nimport rescueLgImg from \"../assets/banner/volunteer-rescue-association-lg.jpg\";\nimport rescueLgImg2x from \"../assets/banner/volunteer-rescue-association-lg@2x.jpg\";\nimport rescueImg from \"../assets/banner/volunteer-rescue-association.jpg\";\nimport rescueImg2x from \"../assets/banner/volunteer-rescue-association@2x.jpg\";\n\ninterface BannerProps {\n theme: DefaultTheme;\n}\n\nconst images = [\n {\n img: rescueImg,\n img2x: rescueImg2x,\n imgLg: rescueLgImg,\n imgLg2x: rescueLgImg2x,\n },\n {\n img: bloodImg,\n img2x: bloodImg2x,\n imgLg: bloodLgImg,\n imgLg2x: bloodLgImg2x,\n },\n {\n img: easterImg,\n img2x: easterImg2x,\n imgLg: easterLgImg,\n imgLg2x: easterLgImg2x,\n },\n {\n img: doctorImg,\n img2x: doctorImg2x,\n imgLg: doctorLgImg,\n imgLg2x: doctorLgImg2x,\n },\n];\n\nconst getBannerImage = () => {\n return images[Math.floor(Math.random() * images.length)];\n};\n\nconst getOrgId = (pathname: string) => {\n const match = pathname.match(/\\/volunteering-organisations?\\/(\\d+)\\/\\w+/);\n return match ? match[1] : \"-1\";\n};\n\nconst getOppId = (pathname: string) => {\n const match = pathname.match(/\\/volunteering?\\/(\\d+)\\/\\w+/);\n return match ? match[1] : \"-1\";\n};\n\nconst shouldShowBanner = (\n pathname: string,\n opportunityError: CustomError,\n organisationError: CustomError\n) => {\n switch (true) {\n case !!pathname.match(/\\/volunteering-organisations?\\/(\\d+)\\/\\w+/):\n return !organisationError;\n case !!pathname.match(/\\/volunteering?\\/(\\d+)\\/\\w+/):\n return !opportunityError;\n default:\n return true;\n }\n};\n\nconst BaseBanner: React.FC = ({ theme }) => {\n const location = useLocation();\n const orgId = getOrgId(location.pathname);\n const oppId = getOppId(location.pathname);\n\n const { error: opportunityError } =\n opportunityStore?.hooks?.useOpportunity(oppId);\n const { error: organisationError } =\n organisationStore?.hooks?.useOrganisation(orgId);\n\n const showBanner = shouldShowBanner(\n location.pathname,\n opportunityError,\n organisationError\n );\n\n // Memoize the heroImg based on the route\n const heroImg = React.useMemo(() => {\n return getBannerImage();\n }, [location.pathname]);\n\n if (!showBanner) {\n return null;\n }\n\n return (\n \n \n \n \n );\n};\n\nexport const Banner = withTheme(BaseBanner);\n","export const ROUTE_MY_ACTIVITY = \"/my-activity\";\n\nexport const ROUTE_FAVOURITES = \"/favourites\";\nexport const ROUTES_FAVOURITES = [\n ROUTE_FAVOURITES,\n ROUTE_MY_ACTIVITY + ROUTE_FAVOURITES,\n];\n\nexport const ROUTE_EMAIL_ALERTS = ROUTE_MY_ACTIVITY + \"/subscriptions\";\nexport const ROUTE_EXPERIENCES = ROUTE_MY_ACTIVITY + \"/experiences\";\nexport const ROUTE_APPLICATIONS = ROUTE_MY_ACTIVITY + \"/applications\";\n\nexport const ROUTES_MY_ACTIVITY = [\n ROUTE_MY_ACTIVITY + ROUTE_FAVOURITES,\n ROUTE_EMAIL_ALERTS,\n ROUTE_EXPERIENCES,\n ROUTE_APPLICATIONS,\n ROUTE_MY_ACTIVITY,\n];\n\nexport const ROUTE_OPPORTUNITIES = \"/volunteering\";\nexport const ROUTES_OPPORTUNITIES_SEARCH = [\n \"/*-volunteering\",\n \"/volunteering/in-*\",\n \"/find-opportunities\",\n ROUTE_OPPORTUNITIES,\n];\nexport const ROUTES_OPPORTUNITIES = [\n ...ROUTES_OPPORTUNITIES_SEARCH,\n \"/volunteering/*\",\n];\n\nexport const ROUTE_ORGANISATIONS = \"/volunteering-organisations\";\nexport const ROUTES_ORGANISATIONS_SEARCH = [\n \"/*-volunteering-organisations\",\n \"/volunteering-organisations/in-*\",\n \"/find-organisations\",\n ROUTE_ORGANISATIONS,\n];\nexport const ROUTES_ORGANISATIONS = [\n ...ROUTES_ORGANISATIONS_SEARCH,\n \"/volunteering-organisations/*\",\n];\n\nexport const ROUTE_SIGN_IN = \"/signin\";\n","import { useAppSettings } from \"@skv/state\";\nimport * as React from \"react\";\nimport { Link, useLocation, useRouteMatch } from \"react-router-dom\";\n\nimport {\n ROUTE_APPLICATIONS,\n ROUTE_EMAIL_ALERTS,\n ROUTE_EXPERIENCES,\n ROUTE_OPPORTUNITIES,\n ROUTE_ORGANISATIONS,\n ROUTES_FAVOURITES,\n ROUTES_OPPORTUNITIES,\n ROUTES_ORGANISATIONS,\n} from \"~/constants\";\n\nexport const Breadcrumb: React.FC> = (props) => {\n const { applicationName, homeUrl } = useAppSettings();\n const location = useLocation();\n const isOpp = useRouteMatch(ROUTES_OPPORTUNITIES);\n const isOrg = useRouteMatch(ROUTES_ORGANISATIONS);\n const isFavourites = useRouteMatch(ROUTES_FAVOURITES);\n const isMyEmailAlerts = useRouteMatch(ROUTE_EMAIL_ALERTS);\n const isMyExperiences = useRouteMatch(ROUTE_EXPERIENCES);\n const isMyApplications = useRouteMatch(ROUTE_APPLICATIONS);\n\n const isMyActivity =\n isFavourites || isMyEmailAlerts || isMyExperiences || isMyApplications;\n\n const matchOppDetails = useRouteMatch(\"/volunteering/:id/*\");\n const matchOppApply = useRouteMatch(\"/volunteering/*/apply\");\n\n const isOppDetails = matchOppDetails && matchOppDetails.isExact;\n const isOppApplication = matchOppApply && matchOppApply.isExact;\n\n const matchOrgDetails = useRouteMatch(\"/volunteering-organisations/:id/*\");\n const isOrgDetails = matchOrgDetails && matchOrgDetails.isExact;\n\n function getTitleFromUrl(url: string) {\n const unformattedTitle = url.split(\"/\").pop();\n return unformattedTitle\n .split(\"-\")\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(\" \");\n }\n\n return (\n
    \n \n \n \n
    \n );\n};\n","import * as React from \"react\";\nimport { Link, LinkProps, useRouteMatch, Route } from \"react-router-dom\";\n\nimport { opportunityStore, useThunkDispatch } from \"@skv/state\";\nimport { Analytics, VolunteerSearchLink } from \"@skv/core\";\n\ntype HtmlDivAttributes = React.DetailedHTMLProps<\n React.HTMLAttributes,\n HTMLDivElement\n>;\n\ntype ErrorLayoutProps = React.DetailedHTMLProps<\n React.HTMLAttributes,\n HTMLDivElement\n>;\n\nconst ErrorLayout: React.FC = ({\n children,\n className,\n ...rest\n}) => {\n return (\n
    \n {children}\n
    \n );\n};\n\ninterface DotNetReactRouterStaticContext {\n status?: number;\n}\n\ntype PropertiesOf = {\n [Key in keyof T]: T[Key];\n};\n\ntype WithErrorLayoutProps = {\n wrapperProps?: ErrorLayoutProps;\n} & PropertiesOf;\n\nconst withErrorLayout = (\n Component: React.ComponentType<\n Pick, Exclude>\n >,\n statusCode = 200\n): typeof WithErrorLayout => {\n const displayName = Component.displayName || \"Component\";\n\n const WithErrorLayout = (props: WithErrorLayoutProps): JSX.Element => {\n const { wrapperProps, ...rest } = props;\n\n return (\n <>\n \n \n \n {\n if (props.staticContext) {\n (props.staticContext as DotNetReactRouterStaticContext).status =\n statusCode;\n }\n return null;\n }}\n />\n \n );\n };\n\n WithErrorLayout.displayName = displayName;\n\n return WithErrorLayout;\n};\n\ninterface ErrorContactUsFragmentProps {\n contactUsTo?: string;\n}\n\nexport const Error404Fragment: React.FC = ({\n contactUsTo = \"/help-and-support/contact-us\",\n}) => {\n const isExternal = contactUsTo.slice(0, 4) === \"http\";\n\n return (\n
    \n
    \n \n This page is missing\n \n

    We can’t find the page you were looking for.

    \n
      \n
    • \n {\" \"}\n Check the web address for typos.\n
    • \n
    • \n {\" \"}\n Go back to the previous page.\n
    • \n
    \n

    \n If you're still stuck, let us know by{\" \"}\n {isExternal ? (\n contacting us\n ) : (\n contacting us\n )}\n .\n

    \n
    \n
    \n );\n};\n\nexport const Error404FragmentWithAnalytics = () => {\n return (\n <>\n \n \n \n );\n};\n\nexport const Error404 = withErrorLayout(\n Error404FragmentWithAnalytics,\n 404\n);\n\nexport const Error500Fragment = ({\n contactUsTo = \"/help-and-support/contact-us\",\n}: ErrorContactUsFragmentProps): JSX.Element => {\n const isExternal = contactUsTo.slice(0, 4) === \"http\";\n\n return (\n
    \n
    \n \n Something went wrong...{\" \"}\n \n

    We're not sure what happened, but one of these might help:

    \n
      \n
    • \n Go back to the previous page.\n
    • \n
    • \n Reload the page.\n
    • \n
    • \n Use a different browser or device.\n
    • \n
    \n

    \n If you're still stuck, let us know by{\" \"}\n {isExternal ? (\n contacting us\n ) : (\n contacting us\n )}\n .\n

    \n
    \n
    \n );\n};\n\nexport const Error500 = withErrorLayout(\n Error500Fragment,\n 500\n);\n\nexport const OrganisationDetails404Fragment = (): JSX.Element => {\n return (\n
    \n
    \n \n This organisation isn’t here.\n \n

    Sorry this organisation is no longer available.

    \n

    \n You can{\" \"}\n \n search for other organisations\n \n .\n

    \n
    \n
    \n );\n};\n\nexport const OrganisationDetails404 = withErrorLayout>(\n OrganisationDetails404Fragment,\n 404\n);\n\nexport const OpportunityDetails404Fragment = (): JSX.Element => {\n return (\n
    \n
    \n \n This opportunity has gone.\n \n

    Sorry this opportunity is no longer available.

    \n

    \n You can{\" \"}\n \n search for current opportunities\n \n .\n

    \n
    \n
    \n );\n};\n\nexport const OpportunityDetails404 = withErrorLayout(\n OpportunityDetails404Fragment,\n 404\n);\n\nexport const ErrorEoiLimitReachedFragment = (): JSX.Element => {\n return (\n
    \n
    \n \n You’ve applied for too many applications.\n \n

    \n To help our community organisations manage the volume applications, we\n limit the number of applications you can make in a day.\n

    \n

    Please come back tomorrow.

    \n
    \n
    \n );\n};\n\ninterface ErrorEoiAppliedFragmentProps {\n organisationTo: LinkProps[\"to\"];\n organisationName: React.ReactNode;\n}\n\nexport const ErrorEoiAppliedFragment: React.FC<\n ErrorEoiAppliedFragmentProps\n> = ({ organisationTo, organisationName }) => {\n return (\n
    \n
    \n \n You’ve already applied.\n \n

    \n Thanks for your application.\n
    \n To get an update on your application you can contact{\" \"}\n {organisationName} directly.\n

    \n
    \n
    \n );\n};\n\nexport const ErrorEoiApplied = (): JSX.Element => {\n const match = useRouteMatch<{\n id: string;\n }>();\n\n const { data } = opportunityStore.hooks.useOpportunity(match.params.id);\n\n const { organisation } = data || {};\n\n const dispatch = useThunkDispatch();\n\n React.useEffect(() => {\n return (): void => {\n dispatch({\n type: \"OPPORTUNITY:ERROR:RESET\",\n });\n };\n }, [dispatch]);\n\n return (\n \n \n \n );\n};\n\nexport const ErrorEoiLimitReached = (): JSX.Element => {\n const dispatch = useThunkDispatch();\n\n React.useEffect(() => {\n return (): void => {\n dispatch({\n type: \"OPPORTUNITY:ERROR:RESET\",\n });\n };\n }, [dispatch]);\n\n return (\n \n \n \n );\n};\n","import * as React from \"react\";\nimport {\n Error500 as BaseError500,\n Error404 as BaseError404,\n} from \"./ServerResponse\";\nimport { useAppSettings } from \"@skv/state\";\n\nexport const Error500: React.FC = () => {\n const { seekVolunteerUrl } = useAppSettings();\n\n return (\n \n );\n};\n\nexport const Error404: React.FC = () => {\n const { seekVolunteerUrl } = useAppSettings();\n\n return (\n \n );\n};\n","import React from \"react\";\nimport { useLocation, useHistory } from \"react-router-dom\";\nimport qs from \"qs\";\nimport * as Yup from \"yup\";\nimport { useForm } from \"react-yup\";\nimport { Select } from \"~/ui\";\n\ninterface QueryParams {\n show?: Filter;\n}\n\ntype Filter = \"all\" | \"opp\" | \"org\";\n\nexport const FavouriteInlineSelectForm: React.FC<\n React.HTMLAttributes\n> = (props) => {\n const location = useLocation();\n const { replace } = useHistory();\n\n const currentQuery = React.useMemo(() => {\n return qs.parse(location.search, { ignoreQueryPrefix: true });\n }, [location.search]);\n\n const { FormProvider, field, values, setValue } = useForm({\n validationSchema: Yup.object({\n filter: Yup.string().nullable(),\n }),\n defaultValues: {\n filter: currentQuery.show || \"all\",\n },\n });\n\n React.useEffect(() => {\n setValue(\"filter\", location.search.split(\"=\").pop() || \"all\");\n }, [location.search, setValue]);\n\n const handleChangeFilter = (e: React.ChangeEvent) => {\n const name = \"show\";\n const nextQuery: QueryParams = { ...currentQuery };\n\n if (e.target.value === \"all\") {\n delete nextQuery[name];\n } else {\n nextQuery[name] = e.target.value as Filter;\n }\n\n replace({\n pathname: location.pathname,\n search: qs.stringify(nextQuery),\n });\n };\n\n return (\n \n
    \n \n \n \n \n \n \n
    \n );\n};\n","import { Link } from \"react-router-dom\";\n\nimport { useAppSettings } from \"@skv/state\";\n\nimport { useUserState } from \"~/state\";\n\nimport { ExternalLink } from \"@skv/core\";\nimport lockup from \"~/assets/lockup.svg\";\n\nconst CURRENT_YEAR = new Date().getFullYear();\n\nexport const Footer = (): JSX.Element => {\n const { seekVolunteerUrl } = useAppSettings();\n const { isAuthenticated } = useUserState();\n\n return (\n
    \n
    \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n
    \n

    \n We pay respect to the Traditional Custodians and First Peoples of\n NSW, and acknowledge their continued connection to their country and\n culture.\n

    \n
    \n
    \n
    \n © SEEK {CURRENT_YEAR}. All rights reserved.\n
    \n
    \n
    \n
    \n
    \n );\n};\n","// eslint-disable-next-line import/no-extraneous-dependencies\n// import { v4 as uuidv4 } from \"uuid\";\n\n// export const uniqueId = (prefix) => {\n// const prefixValue = prefix === undefined ? \"nsw\" : prefix;\n// const uuid = uuidv4();\n// return `${prefixValue}-${uuid}`;\n// };\n\nexport const focusObjectGenerator = (arr) => {\n const focusableElements = {\n all: arr,\n first: arr[0],\n last: arr[arr.length - 1],\n length: arr.length,\n };\n\n return focusableElements;\n};\n\nexport const getFocusableElement = (el) => {\n const elementArr = [].slice.call(\n el.querySelectorAll(`a[href],button:not([disabled]),\n area[href],input:not([disabled]):not([type=hidden]),\n select:not([disabled]),textarea:not([disabled]),\n iframe,object,embed,*:not(.is-draggabe)[tabindex],\n *[contenteditable]`)\n );\n\n return focusObjectGenerator(elementArr);\n};\n\nexport const getFocusableElementBySelector = (id, selectorArr) => {\n const elements = [];\n for (let i = 0; i < selectorArr.length; i += 1) {\n elements.push(\n [].slice.call(document.querySelectorAll(`#${id} ${selectorArr[i]}`))\n );\n }\n\n const mergedElementArr = [].concat(...elements);\n\n return focusObjectGenerator(mergedElementArr);\n};\n\nexport const trapTabKey = (event, focusObject) => {\n const { activeElement } = document;\n const focusableElement = focusObject;\n\n if (event.keyCode !== 9) return false;\n\n if (focusableElement.length === 1) {\n event.preventDefault();\n } else if (event.shiftKey && activeElement === focusableElement.first) {\n focusableElement.last.focus();\n event.preventDefault();\n } else if (!event.shiftKey && activeElement === focusableElement.last) {\n focusableElement.first.focus();\n event.preventDefault();\n }\n\n return true;\n};\n\nexport function whichTransitionEvent() {\n const el = document.createElement(\"fake-element\");\n\n const transitions = {\n transition: \"transitionend\",\n OTransition: \"oTransitionEnd\",\n MozTransition: \"transitionend\",\n WebkitTransition: \"webkitTransitionEnd\",\n };\n\n const found = Object.keys(transitions).filter(\n (key) => el.style[key] !== undefined\n );\n return transitions[found[0]];\n}\n\nexport const popupWindow = (url, width, height) => {\n const y = window.top.outerHeight / 2 + window.top.screenY - height / 2;\n const x = window.top.outerWidth / 2 + window.top.screenX - width / 2;\n\n window.open(\n url,\n \"\",\n `toolbar=no,location=no,directories=no, status=no,\n menubar=no, scrollbars=no, resizable=no, copyhistory=no,\n width=${width}, height=${height}, top=${y}, left=${x}`\n );\n};\n","import {\n trapTabKey,\n whichTransitionEvent,\n getFocusableElementBySelector,\n} from \".\";\n\nconst NAV_ID = \"main-nav\";\n\nexport function mobileHideMainNav({ propertyName }: { propertyName: string }) {\n const transitionEvent = whichTransitionEvent();\n const mainNav = document.getElementById(\"main-nav\");\n\n if (propertyName !== \"transform\") return;\n\n mainNav.classList.remove(\"active\");\n mainNav.classList.remove(\"closing\");\n\n // while (this.openSubNavElements.length > 0) {\n // const { submenu } = this.whichSubNavLatest();\n // submenu.removeEventListener(\n // \"keydown\",\n // this.mobileSubNavTrapTabKeyEvent,\n // false\n // );\n // submenu.classList.remove(\"active\");\n // submenu.classList.remove(\"closing\");\n // this.openSubNavElements.pop();\n // }\n\n mainNav.removeEventListener(transitionEvent, mobileHideMainNav, false);\n mainNav.removeEventListener(\"keydown\", mobileMainNavTrapTabs, false);\n}\n\nexport function mobileShowMainNav({ propertyName }: { propertyName: string }) {\n const transitionEvent = whichTransitionEvent();\n const mainNav = document.getElementById(\"main-nav\");\n\n if (propertyName !== \"transform\") return;\n getFocusableElementBySelector(\"main-nav\", [\n \"> div button\",\n \"> ul > li > a\",\n ]).all[1].focus();\n mainNav.classList.add(\"active\");\n mainNav.classList.remove(\"activating\");\n mainNav.removeEventListener(transitionEvent, mobileShowMainNav, false);\n mainNav.addEventListener(\"keydown\", mobileMainNavTrapTabs, false);\n}\n\nexport function mobileMainNavTrapTabs(event: KeyboardEvent) {\n const focusableElement = getFocusableElementBySelector(NAV_ID, [\n \"> div button\",\n \"> ul > li > a\",\n ]);\n trapTabKey(event, focusableElement);\n}\n\nexport function escapeClose(e) {\n if (e.key === \"Escape\") {\n // removes handleOutsideClick functionality from docs site\n if (this.nav.closest(\".nsw_app_body\")) return;\n\n const { link } = this.whichSubNavLatest();\n const isExpanded = link.getAttribute(\"aria-expanded\") === \"true\";\n if (isExpanded) {\n this.toggleSubNavDesktop(true);\n e.preventDefault();\n link.focus();\n }\n }\n}\n","import { useRef, useState } from \"react\";\nimport { Link, useRouteMatch } from \"react-router-dom\";\nimport {\n ROUTE_APPLICATIONS,\n ROUTE_EMAIL_ALERTS,\n ROUTE_EXPERIENCES,\n ROUTE_FAVOURITES,\n ROUTE_MY_ACTIVITY,\n ROUTE_OPPORTUNITIES,\n ROUTE_ORGANISATIONS,\n ROUTES_MY_ACTIVITY,\n ROUTES_OPPORTUNITIES,\n ROUTES_ORGANISATIONS,\n} from \"~/constants\";\nimport { useUserState } from \"~/state\";\n\nimport {\n mobileHideMainNav,\n mobileShowMainNav,\n whichTransitionEvent,\n} from \"~/utils\";\n\nimport classNames from \"classnames\";\n\ninterface NavBarProps {\n isMobileMenuOpen: boolean;\n setIsMobileMenuOpen: React.Dispatch>;\n}\n\nexport const NavBar = (props: NavBarProps) => {\n const isOppTab = useRouteMatch(ROUTES_OPPORTUNITIES);\n const isOrgTab = useRouteMatch(ROUTES_ORGANISATIONS);\n const isFavTab = useRouteMatch(ROUTE_FAVOURITES);\n\n const isMyActivityTab = useRouteMatch(ROUTES_MY_ACTIVITY);\n\n const mainNavTogglerRef = useRef(null);\n const { isAuthenticated, favouriteCount } = useUserState();\n const [isMyActivityOpen, setIsMyActivityOpen] = useState(false);\n\n const toggleMainNav = (e: React.MouseEvent) => {\n const { currentTarget } = e;\n const isExpanded = currentTarget.getAttribute(\"aria-expanded\") === \"true\";\n\n const transitionEvent = whichTransitionEvent();\n const mainNav = document?.getElementById(\"main-nav\");\n\n if (mainNav) {\n if (isExpanded) {\n document.body.classList.remove(\"main-nav-active\");\n mainNav.classList.add(\"closing\");\n mainNavTogglerRef.current?.focus();\n mainNav.addEventListener(transitionEvent, mobileHideMainNav, false);\n } else {\n document.body.classList.add(\"main-nav-active\");\n mainNav.classList.add(\"activating\");\n mainNav.addEventListener(transitionEvent, mobileShowMainNav, false);\n }\n }\n\n props.setIsMobileMenuOpen((prev) => !prev);\n };\n\n const hideMobileNav = () => {\n const transitionEvent = whichTransitionEvent();\n const mainNav = document?.getElementById(\"main-nav\");\n const isExpanded = mainNav?.classList.contains(\"active\");\n\n if (isExpanded) {\n document.body.classList.remove(\"main-nav-active\");\n mainNav.classList.add(\"closing\");\n mainNavTogglerRef.current?.focus();\n mainNav.addEventListener(transitionEvent, mobileHideMainNav, false);\n props.setIsMobileMenuOpen(false);\n }\n\n setIsMyActivityOpen(false);\n };\n\n return (\n <>\n
    \n
    \n
    \n
    \n
    \n \n \n \n \n \n \n \n \n NSW government, NSW Volunteering Home\n \n \n
    \n
    \n
    \n \n \n menu\n \n \n {props.isMobileMenuOpen ? \"Close\" : \"Open\"}\n {\" \"}\n Menu\n \n
    \n
    \n
    \n
    \n \n \n \n );\n};\n\ninterface MyActivityAccordionContentProps {\n isOpen: boolean;\n className?: string;\n hideMobileNav: () => void;\n}\n\nconst MyActivityAccordionContentMobile = (\n props: MyActivityAccordionContentProps\n) => {\n return (\n