{"version":3,"sources":["b2cEnvVariables.js","authConfig.js","components/Icons/index.js","const.js","utils/AppError/index.js","utils/hexToRgba/index.js","hooks/useTheme/theme.js","hooks/useTheme/index.js","components/ExternalLink/index.js","components/ExternalLink/styles.js","components/Link/index.js","components/Link/styles.js","components/Button/styles.js","components/Button/index.js","analyticsConsts.js","mocks/data/footer.js","mocks/data/the-fa-slavery-human-trafficking-statement-2020.pdf","components/Footer/index.js","components/Footer/styles.js","context/setHeaderHeight.js","hooks/useLocalStorage/index.js","hooks/useMediaQuery/index.js","context/scrollDirection.js","normaliser/homepage/index.js","utils/publicPath/index.js","mocks/data/clubPage.js","mocks/data/moRecommendations.js","mocks/data/questions/age.js","mocks/data/questions/disabilityOption.js","mocks/data/questions/disabilityType.js","mocks/data/questions/footballType.js","mocks/data/questions/location.js","mocks/data/questions/playWith.js","mocks/data/questions/postcode.js","mocks/data/questions/searchFor.js","mocks/data/questions/weekdays.js","mocks/data/onboarding.js","mocks/data/recommendations.js","mocks/data/venuePage.js","mocks/data/questions/ageGroupVolunteer.js","mocks/data/volunteerOnboarding.js","services/index.js","context/accessToken.js","components/LinkButton/index.js","components/LinkButton/styles.js","components/Text/index.js","components/Text/styles.js","components/AccountDetails/index.js","components/AccountDetails/styles.js","components/B2cSignIn/index.js","components/B2cSignIn/styles.js","components/MenuCard/index.js","components/MenuCard/styles.js","components/NavMenuFooter/index.js","components/NavMenuFooter/styles.js","components/MenuContent/index.js","components/MenuContent/styles.js","components/NavMenu/index.js","components/NavMenu/styles.js","components/Navigation/getHeaderMenu.js","components/Navigation/index.js","components/Navigation/styles.js","hooks/useScrollHeader/index.js","components/Page500/styles.js","components/Page404/index.js","components/Page500/index.js","components/ErrorBoundary/index.js","fonts/fs-dillon/FSDillonProBold.otf","fonts/fs-dillon/FSDillonProRegular.otf","components/GlobalStyles/index.js","context/filterPanelToggle.js","context/mlRecommendations.js","context/moRecommendations.js","context/nestedFilterPanel.js","context/OnboardingData.js","context/pageHistory.js","pageMetaInfo.js","context/pageInfo.js","context/preferences.js","context/recommendations.js","context/setContactFormDL.js","context/setPathInfo.js","context/setSelectedClubDetails.js","context/contextProviders.js","gtm.js","components/HiddenContent/index.js","components/HiddenContent/styles.js","components/Account/DontKnowMyFan.js","components/Account/SignInFan.js","components/Account/SignUp.js","hooks/useClubAccreditation/index.js","hooks/useClubContactDetails/index.js","hooks/useGeolocation/index.js","hooks/useClubVenueCoordination/index.js","hooks/useErrorBoundary/index.js","utils/formatAddress/index.js","utils/normaliseClubDetails/index.js","hooks/useElementHeight/index.js","utils/cleanUrl/index.js","utils/contactFormDataLayer/index.js","components/ContactDetails/index.js","components/ContactDetails/styles.js","components/InfoFacilities/index.js","components/InfoFacilities/styles.js","components/VenueDetails/styles.js","components/ClubDetails/styles.js","components/ClubDetails/index.js","components/ClubPage/styles.js","components/LinkDirection/index.js","components/LinkDirection/styles.js","utils/MapService/index.js","components/MapPageService/index.js","components/ContactMap/index.js","components/ContactMap/styles.js","components/AccredationLevel/index.js","components/AccredationLevel/styles.js","components/HeroProvider/styles.js","components/HeroProvider/index.js","components/Image/index.js","components/Loader/index.js","components/Loader/styles.js","components/SocialMedia/index.js","components/SocialMedia/styles.js","components/StickyScrollSpyNav/index.js","components/StickyScrollSpyNav/styles.js","components/StickyScrollSpyNav/lib/tools.js","mocks/data/questions/ageGroup.js","components/OnboardingModal/MiniOnboarding.js","utils/idFromString/index.js","components/SessionCard/index.js","components/SessionCard/styles.js","utils/fullBookingDataLayer/index.js","components/TeamCard/index.js","components/TeamCard/styles.js","components/ExpandableList/index.js","components/ExpandableList/styles.js","components/VenueClubList/index.js","components/VenueClubList/styles.js","formatters/weekdays/index.js","normaliser/sessionlogo/index.js","utils/normaliseProviderDetails/index.js","utils/normaliseVenueDetails/index.js","components/VenueEvents/index.js","components/VenueEvents/styles.js","components/FAInitiativeEvent/index.js","components/FAInitiativeEvent/styles.js","components/VenueDetails/index.js","components/MonthTabs/index.js","components/MonthTabs/styles.js","components/TabPanel/index.js","components/TabPanel/styles.js","utils/normaliseVenueDetails/formatDate.js","components/VenueCard/index.js","components/VenueCard/styles.js","components/VenueExpandableList/index.js","components/VenueExpandableList/styles.js","components/VenueList/index.js","components/VenueList/styles.js","components/VenuePage/conditionCheck.js","components/VenuePage/defaultPreferences.js","components/VenuePage/styles.js","components/VenuePage/index.js","components/ClubDetailsPage/index.js","components/ClubDetailsPage/styles.js","hooks/useModalOverflow/index.js","components/CheckboxAnswer/index.js","components/CheckboxAnswer/styles.js","components/CustomSelectDropDown/index.js","components/CustomSelectDropDown/styles.js","components/ContactForm/index.js","components/ContactForm/styles.js","components/ContactSuccess/index.js","components/ContactSuccess/styles.js","hooks/useKeyDown/index.js","components/Modal/index.js","components/Modal/styles.js","components/ContactFormModal/contactRequestPayload.js","components/ContactFormModal/index.js","components/ContactFormModal/styles.js","components/ClubPage/index.js","components/Tabs/index.js","components/Tabs/styles.js","components/ClubPageRef/index.js","components/ClubPageRef/styles.js","hooks/useImage/index.js","hooks/usePageLoadInfo/index.js","components/LinkTabs/index.js","components/LinkTabs/styles.js","components/MOFAInitiativeEvent/index.js","components/MOFAInitiativeEvent/styles.js","hooks/useMOFAInitiatives/index.js","hooks/useAgeTitle/index.js","hooks/useDisabilityTitle/index.js","formatters/disabilityFacility/index.js","formatters/location/index.js","formatters/playWith/index.js","formatters/sessionDuration/index.js","formatters/sessionPrice/index.js","formatters/surface/index.js","components/FiltersPanel/filtersConfig.js","components/MOOnboardingCriteria/index.js","components/MOOnboardingCriteria/styles.js","components/MOHero/index.js","components/MOHero/styles.js","components/MOTeamCard/index.js","components/MOTeamCard/styles.js","components/MORecommendationList/index.js","components/MORecommendationList/styles.js","components/MoreResultsSection/index.js","components/MoreResultsSection/styles.js","hooks/useOnboardingURL/index.js","components/NoResultsRecommendations/index.js","components/NoResultsRecommendations/styles.js","components/RecommendationFooter/index.js","components/RecommendationFooter/styles.js","components/MiniOnboardingDetailPage/index.js","components/MiniOnboardingDetailPage/styles.js","hooks/useBodyClass/index.js","reducers/trayState.js","utils/normaliseRecommendations/index.js","components/AlertHiddenRegion/index.js","components/MOProviderClubCard/styles.js","components/MOProviderCenterCard/index.js","components/MOProviderClubCard/index.js","components/ProvidersMap/index.js","components/MOMapPage/index.js","components/MOMapPage/styles.js","hooks/useScrollTop/index.js","utils/normaliseTeamDetails/index.js","components/MatchDetails/index.js","components/MatchDetails/styles.js","components/TeamInfo/index.js","components/TeamInfo/styles.js","utils/getNumberSuffix/index.js","components/LeaguePosition/index.js","components/LeaguePosition/styles.js","components/TeamStatus/index.js","components/TeamStatus/styles.js","components/TeamPage/index.js","hooks/useTeamPageAPI/index.js","components/TeamPage/styles.js","hooks/useStorageFilters/index.js","mocks/data/homepage.js","components/FootballTypeCard/index.js","components/FootballTypeCard/styles.js","components/OnboardingCriteria/index.js","components/OnboardingCriteria/styles.js","components/Hero/index.js","components/Hero/styles.js","components/InitiativeCard/index.js","components/InitiativeCard/styles.js","reducers/preferences.js","utils/onboardingDataLayer/index.js","utils/getCategoryDataLayer/index.js","components/ConfirmationQuestion/index.js","components/ConfirmationQuestion/styles.js","reducers/ageGroup.js","utils/getNextQuestionId/index.js","components/NextNav/index.js","components/NextNav/styles.js","components/AgeGroupQuestion/index.js","components/AgeGroupQuestion/styles.js","components/AgeQuestion/index.js","components/AgeQuestion/styles.js","components/GeolocationQuestion/index.js","components/GeolocationQuestion/styles.js","hooks/useOnboardingImage/index.js","components/ButtonAnswer/index.js","components/ButtonAnswer/styles.js","components/MultipleOptionalQuestion/index.js","components/MultipleOptionalQuestion/styles.js","reducers/disabilities.js","components/MultipleQuestion/index.js","components/MultipleQuestion/styles.js","components/LocationAutoSuggest/index.js","components/LocationAutoSuggest/styles.js","components/PostcodeQuestion/index.js","components/PostcodeQuestion/styles.js","components/ProgressBar/index.js","components/ProgressBar/styles.js","components/SingleQuestion/index.js","components/SingleQuestion/styles.js","components/Slider/index.js","components/Slider/styles.js","components/SliderQuestion/index.js","components/SliderQuestion/styles.js","components/Question/index.js","components/Question/styles.js","components/OnboardingModal/index.js","components/OnboardingModal/styles.js","utils/uuid/index.js","components/OnboardingModal/DefaultPreferences.js","components/QuickLinkCard/index.js","components/QuickLinkCard/styles.js","components/HomePage/index.js","hooks/useQueryParams/index.js","components/HomePage/styles.js","components/ProviderClubCard/styles.js","components/ProviderCenterCard/index.js","components/ProviderClubCard/index.js","components/MapPage/index.js","components/MapPage/styles.js","components/Page/index.js","utils/objectsDiff/index.js","components/FilterListItem/index.js","components/FilterListItem/styles.js","components/FilterWrapper/index.js","components/FilterWrapper/styles.js","components/FilterLocation/index.js","components/FilterLocation/styles.js","reducers/multiOptions.js","components/FilterMultiple/index.js","components/FilterMultiple/styles.js","components/FilterSessionDuration/index.js","components/FilterSessionDuration/styles.js","components/FilterUnsavedPanel/index.js","components/FilterUnsavedPanel/styles.js","components/ToggleSwitch/index.js","components/ToggleSwitch/styles.js","components/MixedFilterItem/index.js","components/MixedFilterItem/styles.js","components/FiltersPanel/styles.js","components/FiltersPanel/index.js","components/FiltersToggle/index.js","components/FiltersToggle/styles.js","components/PageWithFilters/index.js","components/PageWithFilters/styles.js","utils/normaliseProviderPage/index.js","components/ProviderDetails/index.js","components/ProviderPage/defaultPreferences.js","components/ProviderPage/index.js","components/ProviderPage/styles.js","mocks/data/categoryHero.js","components/CategoryHero/index.js","components/CategoryHero/styles.js","components/FootballTypeTabs/index.js","components/FootballTypeTabs/styles.js","components/MixedSignPost/index.js","components/MixedSignPost/styles.js","components/RecommendationCardLoading/index.js","components/RecommendationCardLoading/styles.js","components/NoDisabilityResults/index.js","components/NoDisabilityResults/styles.js","components/PanDisabilitySuggestion/index.js","components/PanDisabilitySuggestion/styles.js","components/CarouselCard/index.js","components/CarouselCard/styles.js","components/ClubCard/styles.js","components/CenterCard/index.js","components/ClubCard/index.js","components/MoreCard/index.js","components/MoreCard/styles.js","mocks/data/recommendationVideo.js","components/RecommendationCardVideo/index.js","components/RecommendationCardVideo/styles.js","components/RecommendationCard/index.js","components/RecommendationCard/styles.js","components/RecommendationsList/index.js","components/RecommendationsList/styles.js","hooks/useScrollFadeOut/index.js","components/RecommendationsPage/index.js","components/RecommendationsPage/styles.js","routes/index.js","App.js","authRedirect.js","reportWebVitals.js","index.js"],"names":["b2cEnvVariables","env","b2cSettings","toLowerCase","ClientId","GlobalLogout","AuthUrl","Tenant","SignUpPolicyId","SignInPolicyId","PasswordResetPolicyId","ForgottenEmailPolicyId","DontKnowMyFanPolicyId","ClientSecret","FAAppToken","MyAccountUrl","b2cScopes","ua","window","navigator","userAgent","msie","indexOf","msie11","msedge","firefox","isIE","isEdge","isFirefox","appConfig","process","msalConfig","auth","clientId","authority","redirectUri","location","origin","knownAuthorities","replace","validateAuthority","clientSecret","navigateToLoginRequestUrl","cache","cacheLocation","storeAuthStateInCookie","system","loggerOptions","loggerCallback","level","message","containsPii","LogLevel","Error","console","error","Info","info","Verbose","debug","Warning","warn","loginRequest","scopes","extraQueryParameters","PASSWORD_RESET_REQUEST","Chevron","color","props","width","height","viewBox","xmlns","fill","fillRule","d","CarIcon","clipPath","stroke","strokeMiterlimit","id","transform","CircleArrow","cx","cy","r","strokeWidth","strokeLinecap","strokeLinejoin","CircleX","clipRule","CircleCloseBanner","CircleCloseMobile","CircleClose","fillColor","Magnifier","CircleTick","Compass","Pin","Crest","RightArrow","CompassRounded","ExternalArrow","CircelTickIcon","Directions","Stripes","Tick","DarkIcon","rx","ry","AlertIcon","x1","y1","x2","y2","ResultAlertIcon","ExternalLinkIcon","VideoPlayIcon","CloseMenuIcon","PreviousArrow","NextArrow","FootballTypes","TrophyIcon","Person","FaInitiative","Disability","Pitch","x","y","DateIcon","ArrowTriangle","ShowMore","SpinningBadge","animationId","shapeRendering","textRendering","spreadMethod","gradientUnits","offset","stopColor","strokeDashoffset","EMPTY_STRING","HYPHEN","AGE_QUESTION","PRIMARY_CTA","BASIC_CTA","ONBOARDING_PREFERENCES","RECOMMENDATIONS_CLUB","RECOMMENDATIONS_CASUAL","RECOMMENDATIONS_ML_CLUB","RECOMMENDATIONS_ML_CASUAL","RECOMMENDATIONS_MO_CLUB","RECOMMENDATIONS_MO_CASUAL","FILTERS_APPLIED","FILTERS_APPLIED_CASUAL","SEARCH_FOR_ID","AGE_ID","AGE_GROUP_ID","PLAY_WITH_ID","FOOTBALL_TYPE_ID","WEEKDAYS_ID","DISABILITY_OPTION_ID","DISABILITY_TYPE_ID","OPT_CURRENT_LOCATION_ID","PAGE_NUMBER","PAGE_SIZE","SESSION_DURATION","SURFACE_TYPE","SELECTED_FOOTBALL_TYPE_ID","SELECTED_RECOMMENDATIONS_TYPE_ID","DISABILITY_TYPE","RECOMMENDATION_PROVIDER","VENUE_PROVIDER_INFORMATION","VENUE_NO_SESSION_INFORMATION","LATITUDE_ID","LONGITUDE_ID","MYSELF","MY_CHILD","SOMEONE_ELSE","SESSION","VENUE","EMAIL","PHONE_NUMBER","WEBSITE","MULTI_FILTER","LOCATION_FILTER","SLIDER_FILTER","WILDCATS","WEETABIX_WILDCATS","AGE_UK","LETGIRLSPLAY","JUST_PLAY","JUST_PLAY_PROTEIN","SQUAD","ADULT_CLUB","MAX_TEXT","SCROLL_UP","SCROLL_DOWN","DISABILITY_TYPES_MAPPING","Api404","Api500","RECOMMENDATIONS_PAGE_TITLE_MAPPING","CATEGORY_ICONS","EF_LOGO_HREF","MEN","GIRL","WOMEN","MIXED_VALUE","DISABILITY","CASUAL","CLUBS","AGE","SUBCATEGORY_TYPES","SURFACE_VALUES","ONBOARDING_IMAGE_URL","RECOMMENDATION_DESCRIPTION","CLUB_INTRO_TEXT","development","u11","u12","u13","u14","u15","u16","u17","u18","futsal","CASUAL_INTRO_TEXT","football","wildcats","DISABILITY_INTRO_TEXT","CLUB_LEARN_MORE_LINK","name","link","CASUAL_LEARN_MORE_LINK","CLUB_LINK","CASUAL_LINK","LET_GIRLS_PLAY_CANCEL_URL","AGE_UK_CANCEL_URL","YOUTH_CLUB_CANCEL_URL","ADULT_CLUB_CANCEL_URL","SQUAD_CANCEL_URL","MAP_PAGE","RECOMMENDATION_PAGE","DISABILITY_FACILITIES_MAPPING","ReceptionArea","Doorways","ChangingFacility","ActivityArea","Toilets","SocialAreas","SpectatorAreas","EmergencyExit","parking","DISABILITY_ID","AGEGROUP_YOUNGER","PREVIOUSPAGE","MATCH_AGEGROUP","CLUB_TAB","label","TEAMS_TAB","isHidden","ICONS_MEDIA","Facebook","X","Instagram","VENUE_TAB","PROVIDER_TAB","QUERYISABOUT_OPTIONS","option","QUERYISABOUT_OPTIONS_VOLUNTEER","FIRSTNAME","LASTNAME","QUERYISABOUT","DESCRIPTION","CONFIRMAGE","CONFIRMSAFEGUARD","MESSAGE_VOLUNTEER_TEXT","MESSAGE_TEXT","EVENT_ID","MINIONBOARDING_TABS","url","YOUTH_CLUBS_TYPE","AppError","hex3Characters","hex6Characters","hex","alpha","matches","match","length","map","seg","parseInt","repeat","g","b","screenSizes","s","m","l","xl","xxl","colors","white","black","blue","darkBlue","lightBlue","dodgerBlue","red","lightRed","navy","grey","greyShade1","greyShade2","lightGrey","darkGrey","darkRed","boldRed","headingStyle","fontFamily","fontWeight","fontStyle","letterSpacing","theme","breakpoints","borderRadius","heights","mainNav","mobile","desktop","filterNav","mediaQueries","zoomedIn","zoomedInL2","zoomedInL3","iphoneZoom","safariBrowser","spacing","xs","typography","body","fontSize","lineHeight","headings","utility","buttonDefault","css","checkboxHidden","overlay","hexToRgba","outline","externalLinkAttributes","target","rel","ExternalLink","children","href","rest","styles","useTheme","useStyles","isAbsoluteUrl","test","attributes","Link","to","btn","primary","Button","isExternal","BACK_TO_RESULTS","REMOVE_FILTERS","REAPPLY_FILTERS","homePageAnalytics","onBoardingModalAnalytics","recommendationsPageAnalytics","FOOTBALL_RECOMMENDATIONS_RESULTS_TABS","FOOTBALL_RECOMMENDATIONS_RESULT","RECOMMENDED_FOOTBALL_TYPE_TITLE","RECOMMENDED_FOOTBALL_TYPE_ML_TITLE","RECOMMENDED_FOOTBALL_TYPE_IMAGE","RECOMMENDED_FOOTBALL_TYPE_CTA_LEAR_MORE","RECOMMENDED_FOOTBALL_TYPE_CTA_VIEW_MAPS_OF","RECOMMENDED_FOOTBALL_TYPE_CTA_CLUB_CARD","RECOMMENDED_FOOTBALL_TYPE_CTA_VENUE_CARD","RECOMMENDED_FOOTBALL_TYPE_CTA_ML_CLUB_CARD","RECOMMENDED_FOOTBALL_TYPE_CTA_ML_VENUE_CARD","RECOMMENDED_FOOTBALL_TYPE_CTA_VIEW_MORE_CARDS","CTA_VIEW_MORE_RECOMMENDATIONS","RECOMMENDED_FOOTBALL_TYPE_CTA_START_SEARCH","RECOMMENDED_FOOTBALL_TYPE_CTA_LEARN_MORE","RECOMMENDED_FOOTBALL_TYPE_MIXED_CONTAINER","RECOMMENDED_FOOTBALL_TYPE_MIXED_WRAPPER","RECOMMENDED_FOOTBALL_TYPE_CTA_MIXED_RESULTS","RECOMMENDED_FOOTBALL_MIXED_IMAGE","RECOMMENDED_FOOTBALL_TYPE_MIXED_HEADING","RECOMMENDED_FOOTBALL_TYPE_CTA_EXPAND_SEARCH","RECOMMENDED_FOOTBALL_TYPE_LINK_FILTERS","RECOMMENDED_FOOTBALL_TYPE_LINK_NEW_SEARCH","RECOMMENDED_FOOTBALL_TYPE_NO_RESULTS_TITLE","RECOMMENDED_FOOTBALL_TYPE_NO_RESULTS_CONTAINER","RECOMMENDED_FOOTBALL_TYPE_NO_RESULTS_WRAPPER","RECOMMENDED_FOOTBALL_ONBOARDING_CTA_LEARN_MORE","RECOMMENDED_FOOTBALL_ONBOARDING_WRAPPER","RECOMMENDED_FOOTBALL_ONBOARDING_DAY_PREFERENCE","RECOMMENDED_FOOTBALL_ONBOARDING_LOCATION","RECOMMENDED_NO_RESULTS_DISABILITY_CTA_EXPAND_SEARCH","RECOMMENDED_NO_RESULTS_DISABILITY_LINK_FILTERS","RECOMMENDED_NO_RESULTS_DISABILITY_TITLE","RECOMMENDED_NO_RESULTS_DISABILITY_CONTAINER","RECOMMENDED_NO_RESULTS_DISABILITY_WRAPPER","RECOMMENDED_PAN_DISABILITY_SUGGESTION_WRAPPER","moRecommendationsPageAnalytics","recommendationsMapPageAnalytics","clubDetailsPageAnalytics","moTeamCardAnalytics","CLUB_TEAM_MO_CARD_TITLE","CLUB_TEAM_CARD_MO_CTA_CONTACT","teamDetailsPageAnalytics","venueDetailsPageAnalytics","filtersPanelAnalytics","FILTERS_PANEL_CTA_OPEN","FILTERS_PANEL_CTA_CLOSE","FILTERS_PANEL_CTA_BACK_TO","FILTERS_PANEL_CTA_APPLY","FILTERS_PANEL_CTA_SAVE_CHANGES","FILTERS_PANEL_CTA_NEW_SEARCH","FILTERS_PANEL_CTA_CURRENT_LOCATION","FILTERS_PANEL_CTA_DAY_PREFERENCE","FILTERS_PANEL_CTA_LOCATION_PREFERENCE","FILTERS_PANEL_SELECTED_SESSION_DURATION_PREFERENCE","FILTERS_PANEL_CTA_INCLUDE_MIXED_GENDER","FILTERS_PANEL_CTA_DISABILITY_FACILITY","FILTERS_PANEL_CTA_SESSION_PRICE","FILTERS_PANEL_CTA_SURFACE_TYPE","FILTERS_PANEL_FILTER_TYPES","FILTERS_PANEL_NESTED_FILTER","FILTERS_PANEL_UNSAVED_CHANGES","FILTERS_PANEL_UNSAVED_CHANGES_CTA_SAVE","FILTERS_PANEL_UNSAVED_CHANGES_CTA_EXIT","FILTERS_PANEL_UNSAVED_CHANGES_CTA_BACK","footerAnalytics","socialMediaAnalytics","contactFormModalAnalytics","footerData","links","text","isDownload","className","FOOTER_WRAPPER","FOOTER_CTA","Footer","footer","footerWrapper","leftContent","rightContent","list","pdfDownload","index","concat","download","Date","getFullYear","SetHeaderHeightContext","createContext","SetHeaderHeightProvider","useState","headerHeight","setHeaderHeight","setHeaderHeightValue","useCallback","value","Provider","useSetHeaderHeightContext","useContext","setLocalItem","item","sessionStorage","setItem","getLocalItem","getItem","removeLocalItem","removeItem","query","mediaQuery","useMemo","matchMedia","state","setState","useEffect","handleChange","addListener","removeListener","ScrollDirectionContext","setScrolldirectionContext","ScrollDirectionProvider","scrolldirectionContext","setScroll","useScrollDirectionContext","normaliseHomePageData","apiData","placeholder","sitecore","route","placeholders","Hero","heroFirstItemFields","fields","QuickLinks","FAInitiatives","BannerMessage","bannerInfo","hexacolor","CopyFont","CategoryValue","colorName","CategoryType","textColorCheck","hexaBgColor","BGColour","colorBgName","bgColorCheck","hero","main","Tittle","secondary","Description","ctaText","CTA_Text","images","src","Desktop_Image","Mobile_Image","desktopBgImage","DesktopBG","mobileBgImage","MobileBG","bgColor","bannerUrl","Url","desktopLogo","DesktopLogo","mobileLogo","MobileLogo","closeButton","IsCloseButton","bannerText","Copy","textColor","textLink","TextLink","textLinkUrl","banner","footballTypeHeadings","heading","description","CTA_Link","quickLinks","faInitiatives","initiativeLogo","Desktop_Logo","Mobile_Logo","path","clubPage","publicPath","moRecommendations","header","questionOrder","readableId","analyticsId","type","title","inputTitle","helpText","config","min","max","step","defaultValue","labelMin","labelMax","ageRanges","nextQuestionId","answerTypeQuestion","DisabilityId","answers","answerId","answerType","image","keylineVariant","multiOptional","mandate","combinedValue","mandatory","optional","infoLink","onboardingQuestions","searchForQuestions","ageQuestions","playWithQuestions","footballTypeQuestions","weekdaysQuestions","disabilityOptionQuestions","disabilityTypeQuestions","locationQuestions","postcodeQuestions","recommendations","FootballType","IntroText","Media","venuePage","age","ageOptions","options","volunteerOnboarding","ageGroupVolunteer","apiUrlMap","miniOnboardingApiUrlMap","errorMapping","baseURL","b2cURL","subscriptionKey","baseExternalURL","subscriptionKeyAccreditations","siteCoreBaseURL","baseHeaders","service","axios","create","headers","interceptors","response","use","undefined","status","toString","normalisePreferences","preferences","SessionDuration","getHomepageData","siteCoreAPIUrl","get","getVenuePageData","Promise","resolve","data","getClubPageData","getSessionLogo","getRecommendations","footballType","endpoint","normalisedPreferences","post","getMiniOnboardingRecommendations","getProviderDetails","providerId","PitchFinderId","ProviderId","PlayWith","Age","WeekDays","Disabilityoption","Latitude","Longitude","DisabilityType","PageNumber","PageSize","getVenueDetails","CentreId","getClubDetails","ClubId","getTeamDetails","getMatchDetails","WgsTeamID","WgsTeamIDs","submitContactForm","requestPayload","getSocialMediaData","WgsClubId","AccessTokenContext","AccessTokenProvider","token","setToken","setTokenID","accesstoken","useAccessTokenContext","LinkButton","linkBtn","Text","forwardRef","ref","as","Tag","size","AccountDetails","logOut","isDesktop","base","menu","externalArrow","role","onClick","B2cSignIn","isHamburgerMenu","accountDetailsClick","isB2cMenu","b2cNavContainer","signInDesktop","signIn","siteMyAccount","myAccount","authenticatedTemplate","displayNone","isMouseOver","setIsMouseOver","isAuthenticated","useIsAuthenticated","useMsal","instance","inProgress","accounts","setName","useMediaQuery","accountsClaims","idTokenClaims","given_name","charAt","family_name","handleLogin","localStorage","loginRedirect","accountUser","sub","itemtoken","userId","Authorization","revokeSignIn","then","revokeResponse","catch","logout","clear","onMouseOver","onMouseLeave","onFocus","onBlur","MenuCard","childrens","childIndex","keysForChildren","subTitleClicked","isMobile","nestedLink","isSubChild","collapseBtn","subTitle","line","subChild","collapseIcon","isOpened","dropdownBtn","childMenu","childrenIndex","prototype","PropTypes","string","object","func","bool","NavMenuFooter","stylingObjects","rightArrow","stylingFooter","DestinationLink","dangerouslySetInnerHTML","__html","arrowBtn","MenuContent","handleMouseEnter","handleMouseLeave","stateKeys","dropdownContainer","dropdown","activeMenu","dropdownContent","backgroundImg","dropdownMenu","grid","noChildGrid","rightArrowBtn","container","promoContainer","dropdownIcon","isExpanded","setKeysForChildren","BackgroundCrop","crypto","randomNumber","Math","round","getRandomValues","Uint8Array","reduce","acc","curr","selectedValue","Object","keys","forEach","slice","e","onKeyPress","menuItem","noChildRow","NavMenu","isMenuOpened","menuList","dropDownKeys","siteNavigation","menuContainer","isSubMenuClicked","menuWrapper","isBackMenu","topMenu","menuHeader","leftArrowBtn","keysForDropdown","setKeysForDropdown","backMenu","setBackMenu","setIsSubMenuClicked","hasUrl","navbarTitle","setNavbarTitle","tabIndex","key","selectedMenu","find","entry","GetHeaderMenu","isMounted","useRef","setMenuList","setDropDownKeys","setStylingObjects","getHeaderMenu","current","elements","navigationFields","formattedData","childrenArray","child2","isEmpty","push","Navigation","withBorder","isBanner","navlink","navigation","scrollDirection","logoWrapper","logoImage","globalText","textcolor","globalExternal","globalLogo","purpleBlue","logoImageGlobal","inner","innerGlobal","desktopImage","mobileImage","bgcolor","bannerClick","alignLogo","hamburger","navigationOpen","navIcon4","lastScrollTop","setLastScrollTop","setScrollDirection","listener","position","pageYOffset","document","documentElement","scrollTop","addEventListener","passive","removeEventListener","useScroll","setIsHamburgerMenu","setIsB2cMenu","closeBanner","setCloseBanner","useLocalStorage","isIframe","JSON","parse","isShowTopMenu","IsPodcastBanner","homeData","setHomeData","classList","toggle","ticketEngland","OfficialSegment","ticketEnglandHref","merchandise","PodcastSegment","merchandiseHref","HomepageData","isLogo","alt","pageWrapper","bgImage","textWrapper","mainText","cta","Page404","resetError","subText","bottom","Page500","ErrorBoundary","handleReset","errorInfo","this","Component","GlobalStyles","fsDillon","fsDillonBold","FilterPanelToggleContext","FilterPanelToggleProvider","isFilterPanelToggled","setIsFilterPanelToggled","isFilterEnabled","setIsFilterEnabledTab","setFilterPanelToggle","toggleValue","setFilterEnabledTab","resetFilterPanelToggle","useFilterPanelToggleContext","localKeyMapping","localMLClubRecommendations","mlClubRecommendationsValue","localMLCasualRecommendations","mlCasualRecommendationsValue","MLRecommendationsContext","MLRecommendationsProvider","clubMLRecommendationsContext","setClubMLRecommendationsContext","casualMLRecommendationsContext","setCasualMLRecommendationsContext","isMLCard","setIsMLCard","setMLRecommendations","localKey","stringify","clubMLRecommendations","casualMLRecommendations","resetMLRecommendations","setMLCard","useMLRecommendations","localClubRecommendations","clubRecommendationsValue","localCasualRecommendations","casualRecommendationsValue","MORecommendationsContext","mergeRecommendations","oldRecommendationss","newRecommendations","oldRecommendations","arrayKey","RecommendationClubCartDto","RecommendationCentreCartDto","arrayData","arrayKeyData","MORecommendationsProvider","clubRecommendationsContext","setClubRecommendationsContext","casualRecommendationsContext","setCasualRecommendationsContext","setMORecommendations","sortedData","addMORecommendations","newData","clubMORecommendations","casualMORecommendations","resetMORecommendations","useMORecommendations","NestedFilterPanelContext","NestedFilterPanelProvider","selectedFilterContext","setSelectedFilterContext","isNested","setIsNested","setSelectedFilters","setNested","resetNestedFilterPanel","useNestedFilterPanelContext","OnboardingDataContext","setOnboardingContext","OnboardingDataProvider","OnboardingContext","setOnboardingDataContext","useOnboardingDataContext","PageHistoryContext","PageHistoryProvider","history","useHistory","previousPage","currentPage","listen","pathname","includes","usePageHistory","home","pageType","onboardingModal","miniOnboardingResults","venue","club","team","PageInfoContext","PageInfoProvider","pageInfo","setPageInfo","isLoggedIn","navigationAssertive","Helmet","content","pageName","pageTitleTokens","pageMetaInfo","dataLayer","filter","hasOwnProperty","splice","page_name","page_type","page_url","loginId","extension_FANCode","loginStatus","logintype","userStatus","usePageInfo","localPreferences","preferencesValue","PreferencesContext","PreferencesProvider","setPreferencesContext","setPreferences","resetPreferences","usePreferencesContext","RecommendationsContext","oldType","newRecommendationsSection","findIndex","section","RecommendationsProvider","setRecommendations","addRecommendations","clubRecommendations","casualRecommendations","resetRecommendations","useRecommendations","SetContactFormDLContext","SetContactFormDLProvider","contactFormDL","setContactFormDL","setContactFormDLValue","useSetContactFormDLContext","SetPathInfoContext","SetPathInfoProvider","pathInfo","setPathInfo","setPathInformation","SetSelectedClubDetailsContext","SetSelectedClubDetailsProvider","selectedClubDetails","setSelectedClubDetails","setSelectedClubDetailsValue","useSetSelectedClubDetailsContext","ContextProviders","initGTagManager","REACT_APP_LOCAL","gTagManager","initialize","gtmId","REACT_APP_GTM_AUTH","REACT_APP_GTM_PREVIEW","preview","HiddenContent","hidden","DontKnowMyFan","ACCOUNT_RECOVERY","SignInFan","SIGNIN_FAN_REQUEST","SignUp","SIGNUP_REQUEST","accreditation","setAccreditation","getClubAccreditation","accreditationStatus","isAccreditation","accreditationLevel","getAccreditation","contactDetails","setContactDetails","getClubContactDetails","details","isAllowPublic","phone","email","website","individualName","isPublic","otherDetails","getContactDetails","LOADING_STATE","geolocationData","setGeolocationData","getGeolocationData","statusMessage","geolocation","getCurrentPosition","coords","latitude","longitude","coordinates","code","PERMISSION_DENIED","selectedRecommendationType","sourceLoction","setSourceLoction","useGeolocation","Category","setError","isAddressNullCheck","separator","trim","formatAddress","address","AddressLine1","AddressLine2","AddressLine3","City","CityOrTown","PostCode","toUpperCase","normaliseClubDetails","ClubName","DistanceFromUserLocation","ClubCounty","TeamsCount","GroundName","TeamsPreferenceCount","TeamsTab","Facility","PitchTypes","DisableFacility","TeamsInfo","Gender","clubid","contactAddress","county","accreditationid","distance","gender","footballtypes","values","icon","rows","facilities","CarPark","CarParkCapacity","ChangingRooms","Floodlit","facility","Boolean","totalteams","teams","teamsGroup","elementRef","resizeObserver","setHeight","useLayoutEffect","element","getBoundingClientRect","top","offsetHeight","ResizeObserver","observe","unobserve","disconnect","split","eventDetails","event","eventCategory","eventAction","eventLabel","eventparameter1","eventparameter2","eventparameter3","eventparameter4","eventparameter5","category_type","link_text","age_group","gender_group","club_name","team_name","item_list_name","form_name","event_name","submission_status","DETAILS_MAPPING","prefix","ContactDetails","isClubInfo","isVenueLocation","isProvider","organisername","sectionTitle","row","stickyContact","contactForm","contactFormWrapper","bgIcon","nameWrapper","venueDescription","detailKey","cleanUrl","normaliseContactDetails","detail","Icon","contactFormDataLayer","InfoFacilities","isTeamInfo","isVenuePage","infoFacilities","listFacilities","facilitiesItem","iconWrapper","iconName","iconWrapperClub","facilitiesWrapper","ind","Array","isArray","middle","wrapper","wrapText","venueFacilitiesWrapper","eventsWrapper","eventsTitle","events","imgWrapper","imgContent","isprovider","clubDescriptionWrapper","clubFacilitiesWrapper","ClubDetails","contact","stylesClub","useStylesClub","externalLink","footballLink","footballTypeWrapper","rightContents","card","navContent","arrowRotate","backLink","loader","LinkDirection","IconComponent","isInline","iconColor","existingUrl","sourceLocation","directionSpace","linkMobile","encodeURI","number","redIcon","baseConfig","showDashboard","padding","zoom","enableClickableLogo","pinBaseConfig","MapService","pushpins","currentlySelected","plottedPins","latestBound","hasMapViewChangedOnce","mouseDownOnPin","pushpinObjects","init","Microsoft","Maps","Location","Pushpin","LocationRect","createMap","setTimeout","pin","createLocation","pins","bind","getZoomLevel","center","bounds","fromLocations","Map","navigationBarMode","NavigationBarMode","minified","mapRect","createView","setMapListeners","addPins","handleMapMovement","Events","addHandler","handleClick","singlePin","newPin","createPin","entities","setView","setOptions","getBounds","pinIndex","pinToUpdate","entityToUpdate","radiusInMiles","rangeInMeters","limitBoundPixels","offsetWidth","floor","log","cos","PI","dispose","MapPageService","pushPins","mapOptions","selectedId","mapContainer","currentMap","reset","removePins","setSelected","style","ContactMap","titleHeader","locationDetails","centername","providerName","locationLink","locationLinkArrow","addressWrapper","detailsWrapper","locationDetailsWrapper","locationDetailsObject","AccredationLevel","accredite","ratingContainer","rating","getOverlayImagePath","breakpoint","variation","overlayVariation","providerWrapper","infoWrapper","hasPadding","titleHeight","isvenue","hasLoaded","isVenue","secondaryText","hasMoreInfo","moreInfo","imageWrap","backMobileLink","internalBackLink","HeroProvider","titleRef","hasPreferences","textSize","isInternalLink","previousPageData","backupUrl","isTeamPage","setHasLoaded","isTablet","heroWrapper","backUrl","goBack","Image","Loader","inline","hasText","labelId","SOCIAL_MEDIA_WRAPPER","SOCIAL_MEDIA_CTA","SocialMedia","socialLinks","socialMediaLinks","SocialMediaIcon","mediaType","mediaTypeId","prefixUrl","mediaLink","StickyScrollSpyNav","nav","onClickNav","navEl","navHeight","setNavHeight","prevIndex","setPrevIndex","currentIndex","setCurrentIndex","navItemStyle","navActiveItemStyle","navStyles","onScroll","fn","timer","wait","time","now","params","clearTimeout","throttle","scrollElement","scrollingElement","outerHeight","innerHeight","scrollHeight","firstEl","isEnd","offsetTop","el","clientHeight","navItem","viewPortHeight","extraSpace","scrollTo","behavior","helpTextSecondary","getPayloadData","answerData","SearchForUser","getRedirectUrl","getCategoryName","preference","categoryName","ageGroup","AgeGroup","str","VENUE_SESSION_CARD_TITLE","VENUE_SESSION_CARD_CTA_BOOKING","SessionCard","SessionId","SessionName","Price","SessionDateTime","SessionPercentageAvailable","AlternateBookingUrl","isMiniOnboarding","venueTitle","CategoryTypeId","logoDetails","footballtype","sessionCardWrapper","availableSession","titleWrapper","priceInfo","ageGroupWrapper","linkWrapper","sessionBookedWrapper","SpacesAvailable","sessionText","isFullyBooked","fullBooking","dateFormat","categoryStringId","idFromString","spaceAvailableText","setSpaceAvailableText","deskLogo","setDeskLogo","mobLogo","setMobLogo","categoryHasIcon","sessionDateTimeValue","setSessionDateTimeValue","spaceAvailable","percentageAvailable","availableSlots","getSessionText","date","hours","getHours","ampm","getMinute","getMinutes","minutes","formatTime","desktopLogoRef","mobLogoRef","session","categoryId","sessionId","sitecoreLogo","htmlFor","toFixed","Age_group","Category_type","Gender_group","venue_session","Venue_session","venue_name","Venue_name","journey","football_type","price","eventparamenter4","fullBookingDataLayer","isVenueDetails","CLUB_TEAM_CARD_TITLE","CLUB_TEAM_CARD_CTA_CONTACT","TeamCard","TeamName","League","Division","PlaysOnDay","clubname","isOpen","strongFormat","formatWrapper","infoAddress","infoValue","GroundAddressLine1","GroundAddressLine2","GroundAddressLine3","GroundCity","GroundPostCode","splitClub","spliTeam","trimClubName","trimTeamName","filterTeamTitle","join","filterMatched","matchTeams","modifiedTeam","removeRepeatedName","Set","v","has","add","filteredTeamName","ExpandableList","analyticsIndex","totalList","ariaLabel","cardAction","setIsExpanded","isTeamCard","buttonWrapper","button","buttonIcon","cardToFocus","hiddenCardsNumber","focus","preventScroll","Card","buttonText","TeamId","VenueClubList","titleAnalyticsId","subtitle","isFiltered","toggleFiltered","canToggle","filterButtonWrapper","animateSession","ref1","ref2","group","isLastElement","defaultTemplate","days","weekdays","weekends","any","arraysMatched","comparison","daysString","daysArray","normaliseSessionLogo","FA","SessionType_ID","sessionName","normaliseProviderDetails","CentreName","SessionInfo","ProviderInfo","EmailAddress","Website","TelephoneNumber","SessionTab","pitchCategory","isDisableFacilityAvailable","every","isFacilityAvailable","pitchfinderid","isempty","providerid","sessionsCount","SessionCount","venueTabs","Month","CntSessionMonth","sessions","sessionArr","sessionGroup","datevalue","getDate","normaliseVenueDetails","FA_EVENTS_FIND_MORE","VenueEvent","initiative","logos","faInitiativeDetails","eventId","venueSessions","pitchid","infoSection","imgSection","learnMore","faDeskImage","setFaDeskImage","faMobileImage","setFaMobileImage","faDescription","setFaDescription","ctaLink","setCtaLink","faImg","deskImg","deskImage","faImage","mobileImageWidth","deskImageWidth","initiativeDes","srcSet","sizes","EVENTS_MAPPING","FAInitiativeEvent","pageData","faEvents","eventContent","normaliseEventsImages","VENUE_ABOUT_TITLE","VenueDetails","handleKeyboardNavigation","elementToFocus","nextSibling","previousSibling","click","MonthTabs","selectedType","tabs","tabsCount","tab","isSelected","onKeyUp","TabPanel","tabPanel","dayMapping","monthMapping","dateObject","weekDay","getDay","day","month","getMonth","dayNumber","getSuffix","VenueCard","rowData","centerName","teamHeading","formatDate","teamList","VenueExpandableList","providerData","cancelBtn","isShowMore","setIsShowMore","isFiltersApplied","isRefreshingSessions","jumpSession","selectedTab","setSelectedTab","selected","gradientFeather","backURL","previousUrl","providerPreviousPageName","resultsCheck","mapLinkCheck","providerCardImage","categoryType","mobileImg","teamsRow","DivisionName","LeagueName","leagueSelect","divisionSelect","facilityRow","disabilityRow","linkUrl","providerMLCard","preferenceWithPagination","defaultPreferences","prefPage","mlCard","MLCheck","venueDetailsCond","venueDetails","setVenueDetails","normalisedDetails","recommendationListName","wrapperRef","backButton","border","venueInfo","alertIcon","VENUE_NAME_HEADING","VENUE_SESSIONS_TITLE","VENUE_DETAILS_WRAPPER","getWeekdays","weekdaysFormatter","VenuePage","useParams","throwError","useErrorBoundary","providerPageData","setProviderPageData","isLoadingPageData","setIsLoadingPageData","setLogoDetails","filteredSessions","setFilteredSessions","unfilteredSessions","setUnfilteredSessions","setisfiltersapplied","isLoading","setIsLoading","isVenueDetailsLoading","setIsVenueDetailsLoading","setVenueTabs","loadingRef","pitchfinderref","venueLoadingRef","listRef","providerRef","useElementHeight","titleElement","previousPageName","useClubVenueCoordination","providersData","setProvidersData","isProviderData","setIsProviderData","totalcenters","casualData","casualDataCal","providerValue","providerItem","casualItem","centerData","ProviderCartDto","prev","RecommendationProviderCartDto","venueData","venuePageDetails","logoData","all","filteredData","refreshingSession","titleName","venueSession","React","createRef","VenueList","providerCard","ProviderName","CLUB_NAME_HEADING","CLUB_TEAM_TITLE","CLUB_DETAILS_WRAPPER","getPreferenceValue","ClubDetailsPage","onTeamCardClick","clubDetails","isTeamDetailsLoading","filteredTeams","unfilteredTeams","setIsFilters","setBackUrl","score","isRefreshingTeams","totalTeams","clubTeams","previousValue","overflow","CheckboxAnswer","isChecked","onChange","hiddenInputs","checkmark","checked","CustomSelectDropDown","optionsList","selectedOptionValue","dropDownData","isOptionsOpen","setIsOptionsOpen","selectedOption","setSelectedOption","dropDownButton","arrow","optionstyle","selectWrapper","holder","onKeyDown","preventDefault","volunteer","getAgeText","getMessageText","contactFormOptions","firstName","required","maxLength","lastName","pattern","volunteerAge","queryIsAbout","ContactForm","handleContact","isAlreadyFormSent","closeBtn","question","formGroup","notes","checkBoxText","submitBtn","notesSafeguard","confirmCheck","textDanger","danger","labelDanger","inputField","recaptchaContainer","form","useForm","mode","register","handleSubmit","setValue","setFocus","getValues","formState","errors","isValid","isAbove16State","setIsAbove16State","ageError","setAgeError","isConfirmSafeGuard","setIsConfirmSafeGuard","prevIsQueryAbout","setPrevIsQueryAbout","reCaptchaValue","setReCaptchaValue","queryData","setQueryData","ageText","setAgeText","messageText","setMessageText","playerAge","checkvalue","signInName","onSubmit","autoComplete","minLength","cols","sitekey","disabled","CONTACT_FROM_MESSAGE_CONFIRMATION","ContactSuccess","confirmationHeader","smallTitle","linkHere","instructions","handler","Modal","onClose","skipInitialFocus","modalRef","overlayRef","useModalOverflow","useKeyDown","focusableElements","querySelectorAll","firstElement","lastElement","shiftKey","modalRoot","getElementById","createPortal","fallback","NOTIFICATION","getRequestPayload","WgsClubID","isYouth","isPlayerParent","EventId","NotificationType","EmailId","EmailSubjectData","Firstname","Subject","QueryFrom","Email","QueryIsAbout","PlayerAge","QueryDescription","CONTACT_FORM_CTA_EXIT","CONTACT_FORM_TITLE","CONTACT_FORM_DATA","ContactFormModal","isVisible","isClub","selectedTeamData","modalSize","fakeButtonOverlay","isContactSuccess","setIsContactSuccess","setIsAlreadyFormSent","isSaving","setIsSaving","clubId","queryAbtValue","setQueryAbtValue","accessedClubs","setContactFormDataLayer","queryValue","eventText","linkText","submitText","playerParentPayload","SaveDataToLocalStorage","proptype","ClubPage","setSelectedTeamData","setSocialLinks","setClubDetails","setFilteredTeams","setUnfilteredTeams","setIsOpen","useClubAccreditation","useClubContactDetails","setIsFiltersApplied","setIsTeamDetailsLoading","contactFormVisible","setContactFormVisible","clubPageDetails","selectedClub","selectedTeamDetails","isFilteredApply","Tabs","ClubPageRef","setSelectedType","isFirstLoad","getMixedImg","young","adult","imgPath","setImgPath","preferencesObj","SelectedFootballType","img","imagePath","pageId","pageTokens","LinkTabs","isMapPage","MOFAInitiativeEvent","faInititativeWrapper","setFilteredData","YOUTH_CLUB","initiatives","useMOFAInitiatives","getAgeTitle","youth","ageTitle","rule","prefDisabilityTypes","disability","disabilityString","disabilityArray","sort","a","locationStr","playWith","genderString","useAgeTitle","duration","durationValue","suffix","priceValue","surface","surfaceString","surfaceArray","FILTERS_SESSION_DURATION_PREFERENCE_CTA","filterFormatters","ReadableLocation","locationFormatter","sessionDurationFormatter","playWithFormatter","DisabilityFacility","disabilityFacilityFormatter","SurfaceType","surfaceFormatter","SessionPrice","sessionPriceFormatter","defaultFilters","preferenceKey","valueFormatter","hasNestedFilter","areOptionsMandatory","hasSuffix","MO_RECOMMENDED_FOOTBALL_ONBOARDING_CTA_LEARN_MORE","MO_RECOMMENDED_FOOTBALL_ONBOARDING_WRAPPER","MO_RECOMMENDED_FOOTBALL_ONBOARDING_DAY_PREFERENCE","MO_RECOMMENDED_FOOTBALL_ONBOARDING_LOCATION","MOOnboardingCriteria","MOPreferences","OnboardingWrapper","daysLink","disabilityTitle","useDisabilityTitle","category","externalUrl","ahref","buttonselector","listselector","imageselector","filteropen","datafilter","setAttribute","filterbtn","filtersConfig","MOHero","wrapperId","setMOPreferences","properties","youthClub","getMOHeroProperties","CLUB_TEAM_CARD_MO_TITLE","MOTeamCard","strongformat","format","getRedirectOption","TeamsCartDto","MO_RESULTS_FOOTBALL_VENUE_NAME","MO_RESULTS_FOOTBALL_TEAM_NAME","MO_RESULTS_FOOTBALL_TEAM_INFO","MO_RESULTS_FOOTBALL_VENUE_INFO","MO_MORE_RESULTS","MO_RESULTS_FOOTBALL_DISTANCE","DIRECTION","MORecommendationList","selectedFootballType","isClubPage","showmore","sessionContainer","cardsLength","linkDirSection","iconStyle","secondaryBtn","cards","totalSession","providerVenueUrl","totalProvider","totalPitchFinder","redirectUrl","cardLength","selectedCards","teamCardLength","cardId","cardurl","linkInfo","venues","venueborder","MO_RECOMMENDED_CLUB_fURTHER_AWAY","MO_RECOMMENDED_VENUE_fURTHER_AWAY","MoreResultsSection","NoResultsRecommendations","newSearch","getOnboardingURL","useOnboardingURL","isCasual","playWithID","updatedPreference","recommendationRecords","getMixedRecommendations","RecommendationFooter","linkWidth","normalisedCenterData","recommendationsGroup","SessionCartDto","sessionData","MiniOnboardingDetailPage","venueListContainer","noResultWrapper","venueRecommendWrapper","setPageData","isLoadingMore","setIsLoadingMore","numberShown","setNumberShown","isRecommendationSet","setIsRecommendationSet","totalRecommendations","setTotalRecommendations","useImage","normalisedData","checkData","currentData","nextData","TotalClubsRecords","TotalCentresRecords","usePageLoadInfo","imgData","SetImagePath","previouslyFocusedElement","activeElement","contains","showNext","matchPathname","useLocation","matched","querySelector","remove","EXPANDED","SHRUNK","STANDARD","EXPAND","EXPAND_MAP","SHRINK","EXPAND_ACTION","EXPAND_MAP_ACTION","SHRINK_ACTION","action","processLocationGroups","groupsArray","processedArray","getDirection","point","verticalSpace","horizontalSpace","generateClosePoint","normaliseRecommendations","dataArray","groupedLocations","copiedArray","AlertHiddenRegion","live","memoedText","clubName","isTeamAvailable","search","teamInfo","teamName","teamPlayDay","venueOfferWrapper","otherType","primaryBtn","CTA_PROVIDER_VENUE_CARD","PROVIDER_VENUE_CARD_TITLE","ProviderCenterCard","Address","OfferedCentres","cardRef","isSessionAvailable","scrollIntoView","behaviour","block","accessibleProps","which","CTA_PROVIDER_CLUB_CARD","PROVIDER_CLUB_CARD_TITLE","MOProviderClubCard","OfferedClubs","ProvidersMap","userLocation","handleSelect","momappage","idref","providerdetails","MAP_CTA_LOAD_MORE_RECOMMENDATIONS","RECOMMENDATIONS_RESULT_ON_MAP","CardMap","MOProviderCenterCard","MOMapPage","useBodyClass","headerTitle","mapAreaWrapper","providerCardWrapper","isListView","trayState","scrollContainer","providerCards","resultCard","totalResults","backToWrapper","loadMore","recommendationListWrapper","useReducer","trayStateReducer","dispatch","handlers","useSwipeable","onSwipedUp","onSwipedDown","preventDefaultTouchmoveEvent","nextLoadedFirstIndex","setNextLoadedFirstIndex","firstOfNewLoadedRef","setSelectedId","isListViewSection","setIsListViewSection","footballTitle","shownRecommendations","pageTitle","selectedFootballID","Number","ariaAnnouncement","isFirstOfNewLoaded","clearTimer","getGender","genderType","normaliseTeamDetails","CountyName","discoverFootballTeamList","Agegroup","primaryLeagueName","nextFixture","lastResult","standingsPosition","standingsPositionPreviousSeason","walkingFootball","teaminfo","agegroup","nextfixtures","leagueName","homeTeamName","roadTeamName","venueName","fixtureDate","hasAddress","lastresults","fixtureID","homeScore","roadScore","standingspositions","divisionName","seasonName","getformatFixtureDate","selectedDate","dateOj","substring","year","MatchDetails","matchDateTime","locationAddress","matchDetailsWrapper","fixturesTeam","matcTitle","mapIcon","addressContainer","ageGroupHome","roadNameAgeGroup","fixturesSplit","fixturesSplitVersus","nextFixtureName","fixturesSplitScore","roadNameWrapper","homeNameWrapper","homeNameFixture","homeName","setHomeName","roadName","setRoadName","TeamInfo","teamDetails","matchFacilitiesWrapper","LeaguePosition","positionWrapper","postion","seasonText","getNumberSuffix","TeamStatus","leagueFacilitiesWrapper","TEAM_NAME_HEADING","TEAM_DETAILS_WRAPPER","TEAM_DETAILS_TABS","TeamDetails","pageRef","useScrollTop","teamPageData","setTeamPageData","socialDataLinks","setSocialDataLinks","setTeamDetails","wgsClubID","random","WgsTeamId","teamDetailsRecord","matchDetailsRecord","useTeamPageAPI","menuTab","setMenuTab","teamPage","mapcheck","resultClubCheck","resultCheck","navigationCheck","venuePreviousPage","currentFiltersLocal","currentFiltersParsed","currentFiltersCasualLocal","currentFiltersCasualParsed","clearFiltersStorage","updateFiltersStorage","filtersApplied","normalised","obj","filterKey","normaliseFilterObject","updateFiltersCasualStorage","homepage","FootballTypeCard","ctaId","OnboardingCriteria","ctaOnClick","isOnBoardingCriteriaIncluded","isHomePage","isRec","hasCta","InitiativeCard","indexVal","savedPreferences","payload","onboardingDataLayer","ONBOARDING_CTA_NO","ONBOARDING_CTA_YES","ConfirmationQuestion","onClickYes","onClickNo","confirmation","AgeGroupId","selectedAge","selectedQuestion","selectedRange","range","ONBOARDING_CTA_NEXT_QUESTION","NextNav","onAnswer","AgeGroupQuestion","answer","checkbox","ageGroupReducer","answersState","selectedAnswer","ageData","changeData","optionId","getNextQuestionId","getCategoryDataLayer","age_youth_group","AgeQuestion","hasError","errorBox","setAge","validationError","setValidationError","startingRange","setStartingRange","setProperties","inputRef","configuration","startingAge","endingAge","validationErrorMsg","getInitialAgeLimit","searchFor","validateAge","RegExp","handleNextNav","isInvalidAge","getSelectedQuestion","GeolocationQuestion","inputWrapper","input","locationAnswer","postcodeAnswer","ageCriteria","ButtonAnswer","isGender","hasDescription","keylineImgPath","MultipleOptionalQuestion","bothAnswer","mixedTitle","darkgray","visibility","isAnswerSelected","setSelectedAnswer","optionalIsSelected","setOptionalIsSelected","setIsAnswerSelected","questions","setQuestions","prevAnswer","setPrevAnswer","notselect","setNotselectAnswer","setBothAnswer","dynamicImagePath","selectedAgeValue","useOnboardingImage","GetDynamicImages","selectAnswer","selectDeselectAnswer","filteranswer","MultipleQuestion","disabilitiesReducer","selectedAnswerValue","setSelectedAnswerValue","selectedAnswers","some","ans","ele","LocationAutoSuggest","onError","setLocationData","loadMapScenario","selectedSuggestion","suggestionResult","readableLocation","secondaryLocation","loadModule","callback","AutosuggestManager","maxResults","attachAutosuggest","errorCallback","PostcodeQuestion","locationInput","locationData","errorMessage","setErrorMessage","locationCaptured","ProgressBar","progress","progressBar","AnswerCtas","SingleQuestion","isPrimary","selectedGender","describeId","Cta","Slider","currentValue","slider","hasLabels","currentVal","sliderValue","setSliderValue","SliderQuestion","Questions","Question","totalSteps","fieldset","helpSecText","setHeaderTitle","questionTitle","genderHeaderTitle","ageHeaderTitle","CurrentQuestion","ONBOARDING_CTA_EXIT","ONBOARDING_CTA_PREVIOUS_QUESTION","OnboardingModal","isNarrowScreen","questionsHistory","setQuestionsHistory","currentQuestionIndex","setCurrentQuestionIndex","showOnboarding","setShowOnboarding","confirmationVisible","setConfirmationVisible","setSessionId","preferencesReducer","useStorageFilters","dataset","c","onboarding","selectedQuestions","filteredMiniOnboardingData","setDataLayer","actionName","linkTextName","isExiting","nextQuestionIndex","onboardingPayload","allPreferences","preferencesWithDefault","preferencesExtended","saveMiniOnboardingRecommendations","saveRecommendations","lastEntryIndex","secondLastId","nextCurrentIndex","currentQuestionReadableId","newHistory","_","i","QuickLinkCard","innerWrapper","FA_INITIATIVE_TYPES","FOOTBALL_CATEGORY_TYPES","QUICK_LINK_TYPES","CTA_START_SEARCHING","HERO_BANNER","FOOTBALL_CATEGORIES","QUICK_LINKS","FA_INITIATIVES","HomePage","URLSearchParams","useQueryParams","footballTypeSection","everyOneGameSection","everyOneGameContent","footballTypeContainer","initiativeContainer","count","quickLinkSection","quickLinkContent","quickLinkContainer","quickLinkHeader","quicklinkDescription","initiativeHeading","onboardingVisible","setOnboardingVisible","homePage","res","MORE_INFO","MAP_DIRECTION","mapCardLogo","selectId","navigate","sessionAvailable","teamInfoWrapper","teamData","CatergoryId","sessionDataId","OrganizationName","venueOffer","ProviderClubCard","TeamCount","currentDay","IsPlaysOnMonday","IsPlaysOnTuesday","IsPlaysOnWednesday","IsPlaysOnThursday","IsPlaysOnFriday","IsPlaysOnSaturday","CTA_BACK_TO_RECOMMENDATIONS","MapPage","btnWrapper","mapLogo","setMapLogo","selectedDisabilityID","centerProviders","firstDistance","secondDistance","providers","isInteger","Page","changes","result","isequal","isobject","FilterListItem","filterItem","hasValue","FilterWrapper","ctaWrapper","saveBtn","FilterLocation","onSave","filterWrapper","locationBtn","setCurrentValue","locationSelected","FilterMultiple","filterOptionWrapper","currentValueArray","optionsReducer","optionsState","noOptionsSelected","isLargeDesktop","isMenuScrollable","inOptions","filtersValue","optionValue","FilterSessionDuration","setDuration","isSliderClicked","setIsSliderClicked","FilterUnsavedPanel","onSaveExit","onExit","onGoBack","panel","ToggleSwitch","switchId","switch","MixedFilterItem","toggleCheckbox","isMixed","setIsMixed","timeout","setMixedValue","panelWidth","filtersMapping","FiltersPanel","isToggled","page","filters","column","columnFooter","noResults","scrollFilterData","setIsExiting","unsavedPreferences","setUnsavedPreferences","filteredRecommendations","setFilteredRecommendations","filtersRef","nestedRef","scrollDiv","filtersData","unsavedChanges","omit","Filter","preferencesTmp","restPreferences","onPanelBack","onFilterSave","unsavedPref","onMOFilterSaveAll","unsavedObj","diffPreferences","objectsDiff","onFilterSaveAll","unselectedType","backupData","selectedItem","unsavedPreferenceValue","FiltersToggle","filtersToggleBtnRef","toggleBtn","counter","valuesWrapper","currentFiltersKeys","currentFiltersLength","styleHeader","active","marginTop","PageWithFilters","OrganiserEmail","OrganiserFirstName","OrganiserLastName","MaxAge","MinAge","genderAge","PlaysOnDayPrice","providerfootballtypes","providercontact","ProviderDetails","ProviderPage","navSection","stylesVenue","useStylesVenue","idsplit","sliceid","normaliseProviderPage","providerPage","categoryHeroData","benefitsItems","CategoryHeroCard","middleWrapper","FootballTypeTabs","useImageValue","CategoryHero","MixedSignPost","signPostWrapper","signPostContainer","innerTextWrapper","RecommendationCardLoading","NoDisabilityResults","PanDisabilitySuggestion","CarouselCard","itemtoscroll","itemtoshow","itemspadding","carouselButton","isGradient","consts","PREV","arrowStyle","setIsGradient","myArrow","pointer","setActiveBtn","rollbackGradientEffect","setGradientEffect","itemsToScroll","itemsToShow","itemPadding","onNextStart","onPrevStart","renderArrow","isCenter","crest","crestDefault","CenterCard","CrestImage","SessionPlayDays","MlSessionCartDto","pitchFinder","centersCard","hasSessions","cardUrl","sessionProvider","ClubCard","TeamsPlayDays","MlTeamsCartDto","hasTeams","MoreCard","moreCard","moreLink","recommendationVideo","RecommendationCardVideo","videoPlayIconWrapper","videoWrapper","setIsToggled","categoryHasImage","frameBorder","allow","allowFullScreen","RecommendationClubCard","clubs","centers","TotalProvidersRecords","elementIndex","numberOfBackgrounds","remainder","alternateBackgrounds","circle","mapCta","clubCount","totalRecords","moreCards","categoryText","introDecription","mapUrl","venueType","analyticsIdOfCard","providerCenters","cardsTotal","sliceCount","categoryHasText","learnMoreLink","categoryHasLink","providerIdRef","providersCards","pitchFinderRef","CardLayout","selectRecommendationsPreference","getTotalStringCount","checkDisability","providersDetails","RecommendationsList","setCount","isDisabilityResultsExist","setIsDisabilityResultsExist","noPanDisability","setNoPanDisability","recommendationsList","heroText","isDisabilityResult","obj2","noPanDisabilityType","disable","selectedPanDisability","RecommendationCard","introText","types","RecommendationsPage","displayMLData","footballTypeFilter","setFootballTypeFilter","filterFootballType","AppRoutes","localStorageName","locationName","setLocalStorageUrl","exact","isLetsGoGirlsPlay","isWildCats","isJustPlay","TeamPage","App","accessState","setAccessState","accessTokenRequest","account","InteractionStatus","None","acquireTokenSilent","accessTokenResponse","lastLogOn","accessToken","lastLogonTime","lastLogOnTime","InteractionRequiredAuthError","acquireTokenRedirect","AuthRedirect","msalInstance","handleRedirectPromise","tokenResponse","idToken","errorInLocal","redirectIfForgotPassword","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","PublicClientApplication","ReactDOM","render","StrictMode"],"mappings":"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","file":"static/js/main.3918030d.chunk.js","sourcesContent":["const b2cEnvVariables = env => {\n let b2cSettings = {};\n const envVar = env && env.toLowerCase();\n switch (envVar) {\n case 'development':\n b2cSettings = {\n ClientId: '6b748580-64dd-4975-90fa-6a8533e76c90',\n GlobalLogout:\n 'https://zdevpffapimngt1.azure-api.net/b2cuseraccount-api-authz/v1/api/User',\n AuthUrl: 'https://b2cdevthefa.b2clogin.com',\n Tenant: 'B2CDevTheFa.onmicrosoft.com',\n SignUpPolicyId: 'B2C_1A_FASIGNUPCUSTOMOTPPFF_STRUIVERDYN',\n SignInPolicyId: 'B2C_1A_SIGNUP_SIGNINMFA',\n PasswordResetPolicyId: 'B2C_1A_PWRESETCUSTOMOTPPFF_STR', // Password Reset Policy Name\n ForgottenEmailPolicyId: 'b2c_1a_signup_signinprofileeditfancodev3js', // SignIn and Recovery Using FAN Code policy\n DontKnowMyFanPolicyId: 'b2c_1a_farecoverypff_struiver', // Policy for Account Recovery\n ClientSecret: 'gXB7Q~OsUJWP~BlR0ocOGTT.XjAfMIfB~Dgrm',\n FAAppToken: 'FIN',\n MyAccountUrl: 'https://zdevpffwebapp11.z6.web.core.windows.net/#/home',\n b2cScopes: [\n 'https://b2cdevthefa.onmicrosoft.com/ActScopeApp/WRITE',\n 'https://b2cdevthefa.onmicrosoft.com/ActScopeApp/READ',\n 'https://b2cdevthefa.onmicrosoft.com/ActScopeApp/user_impersonation',\n ],\n };\n break;\n case 'qa':\n b2cSettings = {\n ClientId: 'e9b66cc3-cba4-4de7-aab6-c8561df2463a',\n GlobalLogout:\n 'https://zqapffapimngt1.azure-api.net/b2cuseraccount-api-authz/v1/api/User',\n AuthUrl: 'https://b2cqathefa.b2clogin.com',\n Tenant: 'b2cqathefa.onmicrosoft.com',\n SignUpPolicyId: 'B2C_1A_FASIGNUPCUSTOMOTPPFF_STRUIVERDYN',\n SignInPolicyId: 'B2C_1A_SIGNUP_SIGNINMFA',\n PasswordResetPolicyId: 'B2C_1A_PWRESETCUSTOMOTPPFF_STR', // Password Reset Policy Name\n ForgottenEmailPolicyId:\n 'B2C_1A_SIGNUP_SIGNINPROFILEEDITCUSTOMOTPFANCODEV3JSENFORCEEMAILDYN', // SignIn and Recovery Using FAN Code policy\n DontKnowMyFanPolicyId: 'B2C_1A_FARECOVERYCUSTOMOTPPFF_STRUIVERDYN', // Policy for Account Recovery\n ClientSecret: 'PvQ7Q~_KrdZ9SMRptBLPx-hgxhlMkj6pp_PMz',\n FAAppToken: 'FIN',\n MyAccountUrl: 'https://zqapffwebapp11.z6.web.core.windows.net/#/home',\n b2cScopes: [\n 'https://b2cqathefa.onmicrosoft.com/ACTScopeApp/user_impersonation',\n 'https://b2cqathefa.onmicrosoft.com/ACTScopeApp/READ',\n 'https://b2cqathefa.onmicrosoft.com/ACTScopeApp/WRITE',\n ],\n };\n break;\n case 'staging':\n b2cSettings = {\n ClientId: '2c521b1e-3317-4dc6-940e-2f276e9269c1',\n GlobalLogout:\n 'https://zhcpppffapimngt1.azure-api.net/b2cuseraccount-api-authz/v1/api/User',\n AuthUrl: 'https://b2cppthefa.b2clogin.com',\n Tenant: 'b2cppthefa.onmicrosoft.com',\n SignUpPolicyId: 'B2C_1A_FASIGNUPCUSTOMOTPPFF_STRUIVER',\n SignInPolicyId: 'B2C_1A_SIGNUP_SIGNINMFA',\n PasswordResetPolicyId: 'B2C_1A_PWRESETCUSTOMOTPPFF_STR', // Password Reset Policy Name\n ForgottenEmailPolicyId:\n 'B2C_1A_SIGNUP_SIGNINPROFILEEDITCUSTOMOTPFANCODEV3JSENFORCEEMAIL', // SignIn and Recovery Using FAN Code policy\n DontKnowMyFanPolicyId: 'B2C_1A_FARECOVERYCUSTOMOTPPFF_STRUIVER', // Policy for Account Recovery\n ClientSecret: '.1d7Q~BSksmCkYxAOj6CaqdL.DfQ3P2qpd3SA',\n FAAppToken: 'FIN',\n MyAccountUrl: 'https://pffmyaccountpp.thefa.com/#/home',\n b2cScopes: [\n 'https://b2cppthefa.onmicrosoft.com/ACTScopeApp/user_impersonation',\n 'https://b2cppthefa.onmicrosoft.com/ACTScopeApp/READ',\n 'https://b2cppthefa.onmicrosoft.com/ACTScopeApp/WRITE',\n ],\n };\n break;\n default:\n // prod\n b2cSettings = {\n ClientId: 'c1523737-bddc-48f0-b96e-807306a8c506',\n GlobalLogout:\n 'https://zhcpffapimngt1.azure-api.net/b2cuseraccount-api-authz/v1/api/User',\n AuthUrl: 'https://login.thefa.com',\n Tenant: 'b2cthefa.onmicrosoft.com',\n SignUpPolicyId: 'B2C_1A_FASIGNUPCUSTOMOTPPFF_STRUIVER',\n SignInPolicyId: 'B2C_1A_SIGNUP_SIGNINMFA',\n PasswordResetPolicyId: 'B2C_1A_PWRESETCUSTOMOTPPFF_STR', // Password Reset Policy Name\n ForgottenEmailPolicyId:\n 'b2c_1a_signup_signinprofileeditcustomotpfancodev3js', // SignIn and Recovery Using FAN Code policy\n DontKnowMyFanPolicyId: 'B2C_1A_FARECOVERYCUSTOMOTPPFF_STRUIVER', // Policy for Account Recovery\n ClientSecret: '3xV7Q~CnizXt.iELkWy5Tqng6xZVsaCCWZjTN',\n FAAppToken: 'FIN',\n MyAccountUrl: 'https://myaccount.thefa.com/#/home',\n b2cScopes: [\n 'https://b2cthefa.onmicrosoft.com/ActScopeApp/WRITE',\n 'https://b2cthefa.onmicrosoft.com/ActScopeApp/READ',\n 'https://b2cthefa.onmicrosoft.com/ActScopeApp/user_impersonation',\n ],\n };\n break;\n }\n return b2cSettings;\n};\n\nexport default b2cEnvVariables;\n","import { LogLevel } from '@azure/msal-browser';\n\nimport b2cEnvVariables from './b2cEnvVariables';\n\nconst ua = window.navigator.userAgent;\nconst msie = ua.indexOf('MSIE ');\nconst msie11 = ua.indexOf('Trident/');\nconst msedge = ua.indexOf('Edge/');\nconst firefox = ua.indexOf('Firefox');\nconst isIE = msie > 0 || msie11 > 0;\nconst isEdge = msedge > 0;\nconst isFirefox = firefox > 0; // Only needed if you need to support the redirect flow in Firefox incognito\n\nconst appConfig = b2cEnvVariables(process.env.REACT_APP_ENVIRONMENT);\n\nexport const msalConfig = {\n auth: {\n clientId: appConfig.ClientId,\n authority: `${appConfig.AuthUrl}/${appConfig.Tenant}/${appConfig.SignInPolicyId}`,\n redirectUri: window.location.origin + '/recommendations',\n knownAuthorities: [appConfig.AuthUrl.replace(/(^\\w+:|^)\\/\\//, '')],\n validateAuthority: false,\n clientSecret: appConfig.ClientSecret,\n b2cScopes: appConfig.b2cScopes,\n navigateToLoginRequestUrl: false,\n },\n cache: {\n cacheLocation: 'localStorage',\n storeAuthStateInCookie: isIE || isEdge || isFirefox,\n },\n system: {\n loggerOptions: {\n loggerCallback: (level, message, containsPii) => {\n if (containsPii) {\n return;\n }\n switch (level) {\n case LogLevel.Error:\n console.error(message);\n return;\n case LogLevel.Info:\n console.info(message);\n return;\n case LogLevel.Verbose:\n console.debug(message);\n return;\n case LogLevel.Warning:\n console.warn(message);\n return;\n default:\n return;\n }\n },\n },\n },\n};\n\n// Add scopes here for ID token to be used at Microsoft identity platform endpoints.\nexport const loginRequest = {\n scopes: msalConfig.auth.b2cScopes,\n extraQueryParameters: { FAAppToken: appConfig.FAAppToken },\n};\n\n\n// for password reset request\nexport const PASSWORD_RESET_REQUEST = {\n ...loginRequest,\n authority: `${appConfig.AuthUrl}/${appConfig.Tenant}/${appConfig.PasswordResetPolicyId}`,\n};","import React from 'react';\n\nexport const Dots = ({ color = 'currentColor', ...props }) => (\n \n \n \n \n \n);\n\nexport const Chevron = ({ color = 'currentColor', ...props }) => (\n \n \n \n \n \n \n);\n\nexport const CoffeeIcon = ({ color = 'currentColor', ...props }) => (\n \n \n \n);\n\nexport const CarIcon = ({ color = 'currentColor', ...props }) => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nexport const CircleArrow = ({ color = 'currentColor', ...props }) => (\n \n \n \n \n);\n\nexport const CircleX = ({ color = 'currentColor', ...props }) => (\n \n \n \n \n);\n\n\nexport const CircleCloseBanner = ({\n color = 'currentColor',\n fill = '#ffffff',\n strokeWidth = '1.5',\n ...props\n}) => (\n \n \n \n \n \n \n);\n\nexport const CircleCloseMobile = ({\n color = 'currentColor',\n fill = '#ffffff',\n strokeWidth = '1.5',\n ...props\n}) => (\n \n \n \n \n \n \n \n \n \n \n \n \n);\n\n\nexport const CircleClose = ({\n color = 'currentColor',\n fillColor = '#ffffff',\n ...props\n}) => (\n \n \n \n \n \n);\n\nexport const Magnifier = ({ color = 'currentColor', ...props }) => (\n \n \n \n);\n\nexport const CircleTick = ({\n color = 'currentColor',\n width = '24',\n height = '25',\n ...props\n}) => (\n \n \n \n \n \n \n \n \n \n \n \n);\n\nexport const Compass = ({ color = 'currentColor', ...props }) => (\n \n \n \n);\n\nexport const Pin = ({ color = 'currentColor', ...props }) => (\n \n \n \n);\n\nexport const Crest = ({ color = 'currentColor', ...props }) => (\n \n \n \n \n \n \n \n \n \n);\n\nexport const RightArrow = ({ color = 'currentColor', ...props }) => (\n \n \n \n);\n\nexport const CompassRounded = ({ color = 'currentColor', ...props }) => (\n \n \n \n \n);\n\nexport const ExternalArrow = ({ color = 'currentColor', ...props }) => (\n \n \n \n);\n\nexport const CircelTickIcon = ({ color = 'currentColor', ...props }) => (\n \n \n \n);\n\nexport const Directions = ({ color = 'currentColor', ...props }) => (\n \n \n \n);\n\nexport const Stripes = ({ color = 'currentColor', ...props }) => (\n \n \n \n);\n\nexport const Tick = ({ color = 'currentColor', ...props }) => (\n \n \n \n);\n\nexport const Phone = ({ color = 'currentColor', ...props }) => (\n \n \n \n);\n\nexport const Website = ({ color = 'currentColor', ...props }) => (\n \n \n \n \n \n);\n\nexport const Email = ({ color = 'currentColor', ...props }) => (\n \n \n \n \n \n \n \n \n \n \n \n);\n\nexport const DarkIcon = ({\n color = 'currentColor',\n width = '24',\n height = '24',\n stroke = 'none',\n ...props\n}) => (\n \n \n \n \n \n \n);\n\nexport const AlertIcon = ({\n color = 'currentColor',\n width = '24',\n height = '24',\n stroke = 'none',\n ...props\n}) => (\n \n \n \n \n \n);\n\nexport const ResultAlertIcon = ({ width = '24', height = '24', ...props }) => (\n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nexport const ExternalLinkIcon = ({\n color = 'currentColor',\n width = 28,\n ...props\n}) => (\n \n \n \n \n);\n\nexport const VideoPlayIcon = ({ color = 'currentColor', ...props }) => (\n \n \n \n \n);\n\nexport const HamburgerMenu = ({ color = 'currentColor', ...props }) => (\n \n \n \n);\n\nexport const CloseMenuIcon = ({ color = 'currentColor', ...props }) => (\n \n \n \n \n);\n\nexport const PreviousArrow = ({ color = 'currentColor', ...props }) => (\n \n \n \n);\n\nexport const NextArrow = ({ color = 'currentColor', ...props }) => (\n \n \n \n);\n\nexport const FootballTypes = ({\n color = 'currentColor',\n height = 26,\n ...props\n}) => (\n \n \n \n \n \n \n \n \n);\n\nexport const TrophyIcon = ({\n color = 'currentColor',\n height = 32,\n ...props\n}) => (\n \n \n \n);\n\nexport const Person = ({ color = 'currentColor', height = 25, ...props }) => (\n \n \n \n \n);\n\nexport const FaInitiative = ({\n color = 'currentColor',\n height = 26,\n ...props\n}) => (\n \n \n \n \n \n);\n\nexport const Facilities = ({\n color = 'currentColor',\n height = 24,\n ...props\n}) => (\n \n \n \n \n \n \n \n);\n\nexport const Disability = ({\n color = 'currentColor',\n height = 26,\n ...props\n}) => (\n \n \n \n \n \n \n);\n\nexport const Pitch = ({ color = 'currentColor', height = 26, ...props }) => (\n \n \n \n \n \n \n \n);\n\nexport const Facebook = ({ color = 'currentColor', height = 26, ...props }) => (\n \n \n \n);\n\nexport const Twitter = ({ color = 'currentColor', height = 26, ...props }) => (\n \n \n \n);\n\nexport const Instagram = ({\n color = 'currentColor',\n height = 26,\n ...props\n}) => (\n \n \n \n);\n\nexport const DateIcon = ({ color = 'currentColor', height = 26, ...props }) => (\n \n \n \n);\n\nexport const CupIconNew = ({\n color = 'currentColor',\n height = 26,\n ...props\n}) => (\n \n \n \n);\n\nexport const ArrowTriangle = ({ color = 'currentColor', ...props }) => (\n \n \n \n);\n\nexport const ShowMore = ({ ...props }) => (\n \n \n \n \n);\n\nexport const SpinningBadge = ({ animationId, ...props }) => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n","import { Facebook, Instagram, Twitter } from './components/Icons';\n\n// Total number of steps of the onboarding\n// Fixed number to calculate progress\n// We can't rely on the questions array due to the dynamic nature\n// of the implementation\nexport const TOTAL_STEPS = 8;\nexport const EMPTY_STRING = '';\nexport const ZERO = 0;\nexport const HYPHEN = '-';\n\n//character limit\nexport const CHARLIMIT_HOMEPAGE = 100;\n\n// Question types\nexport const SINGLE_QUESTION = 'single';\nexport const MULTI_QUESTION = 'multiple';\nexport const MULTI_OPTIONAL_QUESTION = 'multi_optional';\nexport const SLIDER_QUESTION = 'slider';\nexport const GEOLOCATION_QUESTION = 'location';\nexport const POSTCODE_QUESTION = 'postcode';\nexport const AGE_QUESTION = 'age';\nexport const AGE_GROUP_QUESTION = 'age_group';\nexport const AGE_GROUP_VOLUNTEER_QUESTION = 'age_group_volunteer';\n\n// CTAs types\nexport const PRIMARY_CTA = 'primary';\nexport const SECONDARY_CTA = 'secondary';\nexport const BASIC_CTA = 'basic';\n\n// Local storage keys\nexport const ONBOARDING_PREFERENCES = 'onboarding_preferences';\nexport const RECOMMENDATIONS_CLUB = 'recommendations_club';\nexport const RECOMMENDATIONS_CASUAL = 'recommendations_casual';\nexport const RECOMMENDATIONS_ML_CLUB = 'recommendations_ml_club';\nexport const RECOMMENDATIONS_ML_CASUAL = 'recommendations_ml_casual';\nexport const RECOMMENDATIONS_MO_CLUB = 'recommendations_mo_club';\nexport const RECOMMENDATIONS_MO_CASUAL = 'recommendations_mo_casual';\nexport const FILTERS_APPLIED = 'filters_applied';\nexport const FILTERS_APPLIED_CASUAL = 'filters_applied_tmp_casual';\n\n// Questions readable Ids\nexport const SEARCH_FOR_ID = 'SearchForUser';\nexport const AGE_ID = 'Age';\nexport const AGE_GROUP_ID = 'AgeGroup';\nexport const GENDER_ID = 'Gender';\nexport const PLAY_WITH_ID = 'PlayWith';\nexport const FOOTBALL_TYPE_ID = 'FootballType';\nexport const WEEKDAYS_ID = 'WeekDays';\nexport const DISABILITY_OPTION_ID = 'Disabilityoption';\nexport const DISABILITY_TYPE_ID = 'DisabilityType';\nexport const OPT_CURRENT_LOCATION_ID = 'OptforCurrentLocation';\nexport const POSTCODE_ID = 'PostCode';\nexport const PAGE_NUMBER = 'PageNumber';\nexport const PAGE_SIZE = 'PageSize';\nexport const SESSION_DURATION = 'SessionDuration';\nexport const DISABILITY_FACILITY = 'DisabilityFacility';\nexport const SURFACE_TYPE = 'SurfaceType';\nexport const SESSION_PRICE = 'SessionPrice';\n\n// Helper preferences properties\nexport const SELECTED_FOOTBALL_TYPE_ID = 'SelectedFootballType';\nexport const SELECTED_RECOMMENDATIONS_TYPE_ID = 'SelectedRecommendationsType';\nexport const DISABILITY_TYPE = 'SelectedDisabilityType';\n\n//provider informations\nexport const RECOMMENDATION_PROVIDER =\n 'View provider details for session information';\nexport const VENUE_PROVIDER_INFORMATION =\n 'This venue also hosts FA approved providers who choose to manage their sessions outside of our system';\nexport const VENUE_NO_SESSION_INFORMATION =\n 'This venue hosts FA approved providers who choose to manage their sessions outside of our system';\nexport const VENUE_INFO =\n 'Click a provider name below for details and booking information';\n\n// Mapping Ids for API\n\n// Play with\nexport const BOYS_OR_MEN = 1;\nexport const GIRLS_OR_WOMEN = 2;\nexport const MIXED = 3;\nexport const BOYS_OR_MEN_MIXED = 4;\nexport const GIRLS_OR_WOMEN_MIXED = 5;\nexport const BOYS_AND_MEN = 6;\nexport const GIRLS_AND_WOMEN_MIXED = 7;\n\n// Football type\nexport const KICKABOUT_CASUAL = 1;\nexport const CLUB = 2;\nexport const DONT_MIND = 3;\n\n// Days\nexport const ALL_DAYS = '1,2,3,4,5,6,7';\nexport const WEEKDAYS = '1,2,3,4,5';\nexport const WEEKENDS = '6,7';\n\n// Disability options\nexport const YES = 1;\nexport const NO = 2;\nexport const NOT_SURE = 3;\n\n// Onboarding session Id\nexport const SESSION_ID = 'SearchId';\n\n// Location options\nexport const LATITUDE_ID = 'Latitude';\nexport const LONGITUDE_ID = 'Longitude';\n\nexport const PAGE_NUMBER_VALUE = 1;\nexport const PAGE_SIZE_VALUE = 10;\nexport const MO_PAGE_SIZE_VALUE = 5;\n\nexport const VENUE_PAGE_SIZE_VALUE = 3;\n\n// Search for variations\nexport const MYSELF = 'Myself';\nexport const MY_CHILD = 'My child';\nexport const SOMEONE_ELSE = 'Someone else';\nexport const LET_GO_GIRLS_PLAY = \"What's the player's age?\";\nexport const JUST_PLAY_AGE_QUESTION = 'How old is the player?';\nexport const ADULT_CLUB_AGE_QUESTION = 'How old is the player?';\n\nexport const YOUTH_AGE = 17;\n\n// Provider details\nexport const SESSION = 'Session';\nexport const VENUE = 'Venue';\nexport const CONTACT = 'Contact';\nexport const EMAIL = 'email';\nexport const PHONE_NUMBER = 'number';\nexport const WEBSITE = 'website';\n\n// Filter types\nexport const MULTI_FILTER = 'multiple';\nexport const LOCATION_FILTER = 'location';\nexport const SLIDER_FILTER = 'slider';\nexport const MIXED_GENDER_FILTER = 'mixed';\n\n// Filter data types\nexport const DAY_PREFERENCE_DATA = 0;\nexport const LOCATION_DATA = 1;\n\n// Event details\nexport const WILDCATS = 'Wildcats';\nexport const WEETABIX_WILDCATS = 'Weetabix Wildcats';\nexport const AGE_UK = 'Age UK Walking Football';\nexport const LETGIRLSPLAY = '#LetGirlsPlay Football Sessions';\nexport const JUST_PLAY = 'The FA Snickers Just Play';\nexport const JUST_PLAY_PROTEIN = 'Snickers Protein Just Play';\nexport const UNITE = 'Unite';\nexport const SQUAD = 'Squad Girls Football';\nexport const DISABILITY_RECREATION_CENTRES =\n 'England Football Disability Recreation Centres';\nexport const GIRLS_PILOT = 'The FA 12-14 Girls Football Pilot';\n\n// club event details\nexport const ADULT_CLUB = '11v11';\n\n// Session duration filter helpers\nexport const MAX_DURATION = 4;\nexport const MAX_DURATION_OVERRIDE = 168; // 7 days\n\n// Session duration filter helpers\nexport const MIN_SESSION_PRICE = 0;\nexport const MAX_SESSION_PRICE = 5;\n\nexport const MAX_TEXT = '(max)';\n\n// scroll events\nexport const SCROLL_UP = 'up';\nexport const SCROLL_DOWN = 'down';\n\nexport const DISABILITY_TYPES_MAPPING = {\n 1: 'Amputee',\n 2: 'Blind',\n 3: 'Cerebral Palsy',\n 4: 'Deaf/Hearing Impaired',\n 5: 'Downs syndrome',\n 6: 'Dwarf',\n 7: 'Frame',\n 8: 'Learning Disability',\n 9: 'Mental Health',\n 10: 'Pan-Disability',\n 11: 'Partially Sighted',\n 12: 'Powerchair',\n 13: 'Autism',\n};\n\n// Query parameters\nexport const ONBOARDING_PARAM = 'onboarding';\n\n// App Error types\nexport const UnspecifiedError = 'unspecified';\nexport const App404 = 'notFound';\nexport const Api404 = 'api404';\nexport const Api500 = 'api500';\n\n// page meta info - title map for dynamic values\nexport const RECOMMENDATIONS_PAGE_TITLE_MAPPING = {\n 1: 'Casual',\n 2: 'Clubs',\n 3: 'Clubs and Casual',\n};\n\nexport const CATEGORY_ICONS = [\n 'weetabix-wildcats',\n 'wildcats',\n 'the-fa-snickers-just-play',\n 'age-uk-walking-football',\n 'unite',\n 'snickers-protein-just-play',\n 'squad-girls-football',\n '-letgirlsplay-football-sessions',\n];\n\n// England Football Team Url\nexport const EF_LOGO_HREF = 'https://www.englandfootball.com';\n\n// captcha site key\nexport const CAPTCHA_SITE_KEY = '6Ldrj8UeAAAAANHPppzAW8uvUJxlxmK3UepBXTiv';\n\n// common folder name to set recommendation images dynamically\nexport const BOY = 'boy';\nexport const MEN = 'men';\nexport const GIRL = 'girl';\nexport const WOMEN = 'women';\nexport const MIXED_VALUE = 'mixed';\nexport const MIXED_CHILD = 'mixed_child';\nexport const MIXED_ADULT = 'mixed_adult';\nexport const DISABILITY = 'disability';\nexport const CASUAL = 'casual';\nexport const CLUBS = 'club';\nexport const AGE = 'age';\nexport const CLUB_ID = 'ClubId';\nexport const CENTER_ID = 'CentreId';\n\n// Gender for contact form analytics\nexport const MALE = 'Male';\nexport const FEMALE = 'Female';\nexport const GENDER_MIXED = 'Mixed';\nexport const MALE_MIXED = 'Male | Mixed';\nexport const FEMALE_MIXED = 'Female | Mixed';\n\nexport const SUBCATEGORY_TYPES = [\n '11v11',\n 'futsal',\n 'small-sided',\n 'walking-football',\n 'football',\n];\n\nexport const SURFACE_VALUES = ['3G or Astroturf', 'Grass', 'Indoor', 'Others'];\n\n//Gobal close banner link\nexport const BANNER_LINK =\n 'https://play.englandfootball.thefa.com/BigFootballDay';\n\n//onboarding modal cutout image path\nexport const ONBOARDING_IMAGE_URL = '/images/common/cutouts/';\n\nexport const RECOMMENDATION_DESCRIPTION = {\n 1: 'Venues offering casual sessions matching your search',\n 2: 'Clubs offering football teams that match your search',\n};\n\nexport const CLUB_INTRO_TEXT = {\n development: 'Reduced sized football for children aged 5-11',\n 'mini-soccer': 'Reduced size football for under-7s to under-10s',\n u11: '9-a-side football for children aged 11 and under',\n u12: '9-a-side football for children aged 12 and under',\n u13: 'Competitive 11-a-side football for those aged 13 and under',\n u14: 'Competitive 11-a-side football for those aged 14 and under',\n u15: 'Competitive 11-a-side football for those aged 15 and under',\n u16: 'Competitive 11-a-side football for those aged 16 and under',\n u17: 'Competitive 11-a-side football for those aged 17 and under',\n u18: 'Competitive 11-a-side football for those aged 18 and under',\n '11v11': 'The classic form the game with competitive 11-a-side leagues',\n 'small-sided':\n 'Competitive matches played with reduced number of players on smaller pitches.',\n futsal: 'Fast-paced five-a-side played with a smaller ball on hard courts',\n 'walking-football': 'Slower paced form of the game with reduced contact',\n};\n\nexport const CASUAL_INTRO_TEXT = {\n football:\n 'Informal games with team sizes adapting to the number of players on the day. Easy sign-up and open to all abilty levels.',\n futsal: 'Five-a-side played with a smaller ball on hard courts',\n 'walking-football': 'Slower paced form of the game with reduced contact',\n 'small-sided':\n 'Informal games with team sizes adapting to the number of players on the day. Easy sign-up and open to all abilty levels.',\n wildcats: 'Fun and friendly football sessions for girls aged 5-11',\n};\n\nexport const DISABILITY_INTRO_TEXT = {\n 'powerchair-football':\n 'Indoor matches tailored to powerchair users, featuring a smaller pitch and a larger ball.',\n 'pan-disability-futsal':\n 'A faster-paced form of the game played on hard courts with a smaller ball and team sizes.',\n};\n\n// learn more about link for club\nexport const CLUB_LEARN_MORE_LINK = {\n development: {\n name: 'youth club football',\n link: 'https://www.englandfootball.com/play/youth-football/Youth-Club-Football',\n },\n 'mini-soccer': {\n name: 'youth club football',\n link: 'https://www.englandfootball.com/play/youth-football/Youth-Club-Football',\n },\n u11: {\n name: 'U11 football',\n link: 'https://www.englandfootball.com/play/youth-football/Youth-Club-Football/U11-U12',\n },\n u12: {\n name: 'U12 football',\n link: 'https://www.englandfootball.com/play/youth-football/Youth-Club-Football/U11-U12',\n },\n u13: {\n name: 'U13 football',\n link: 'https://www.englandfootball.com/play/youth-football/Youth-Club-Football/U13-U14',\n },\n u14: {\n name: 'U14 football',\n link: 'https://www.englandfootball.com/play/youth-football/Youth-Club-Football/U13-U14',\n },\n u15: {\n name: 'U15 football',\n link: 'https://www.englandfootball.com/play/youth-football/Youth-Club-Football/U15-U16',\n },\n u16: {\n name: 'U16 football',\n link: 'https://www.englandfootball.com/play/youth-football/Youth-Club-Football/U15-U16',\n },\n u17: {\n name: 'U17 football',\n link: 'https://www.englandfootball.com/play/youth-football/Youth-Club-Football/U17-U18',\n },\n u18: {\n name: 'U18 football',\n link: 'https://www.englandfootball.com/play/youth-football/Youth-Club-Football/U17-U18',\n },\n '11v11': {\n name: '11-a-side',\n link: 'https://www.englandfootball.com/play/11-a-side-football',\n },\n 'small-sided': {\n name: 'small-sided',\n link: 'https://www.englandfootball.com/play/small-sided-football',\n },\n futsal: {\n name: 'Futsal',\n link: 'https://www.englandfootball.com/play/ways-to-play/futsal',\n },\n 'walking-football': {\n name: 'Walking Football',\n link: 'https://www.englandfootball.com/play/ways-to-play/walking-football',\n },\n};\n\n// learn more about link for casual\nexport const CASUAL_LEARN_MORE_LINK = {\n football: {\n name: 'casual football',\n link: 'https://www.englandfootball.com/play/casual-football',\n },\n futsal: {\n name: 'Futsal',\n link: 'https://www.englandfootball.com/play/ways-to-play/futsal',\n },\n 'walking-football': {\n name: 'Walking Football',\n link: 'https://www.englandfootball.com/play/ways-to-play/walking-football',\n },\n};\n\n// CLUB and CASUAL link\nexport const CLUB_LINK = 'https://www.englandfootball.com/play/club-football';\n\nexport const CASUAL_LINK =\n 'https://www.englandfootball.com/play/casual-football';\n\n// ONLINE FORM - HERE LINK\nexport const HERE_LINK =\n 'https://www.englandfootball.com/explore/county-football-associations';\n\n// CANCEL URLS OF MINI ONBOARDING\nexport const LET_GIRLS_PLAY_CANCEL_URL =\n 'https://www.englandfootball.com/play/in-education/letgirlsplay';\nexport const WILD_CATS_CANCEL_URL =\n 'https://www.englandfootball.com/play/womens-and-girls-football/weetabix-wildcats';\nexport const JUST_PLAY_CANCEL_URL =\n 'https://www.englandfootball.com/play/adult-football/just-play';\nexport const AGE_UK_CANCEL_URL =\n 'https://www.englandfootball.com/play/adult-football/age-uk';\nexport const YOUTH_CLUB_CANCEL_URL =\n 'https://www.englandfootball.com/play/youth-football';\nexport const ADULT_CLUB_CANCEL_URL =\n 'https://www.englandfootball.com/play/11-a-side-football';\nexport const VOLUNTEER_CLUB_CANCEL_URL =\n 'https://www.englandfootball.com/participate/volunteer';\nexport const SQUAD_CANCEL_URL =\n 'https://www.englandfootball.com/Women-and-Girls/Play/Squad-Girls-Football';\n\n// club event url\nexport const ADULT_FUTSAL_URL = 'https://www.englandfootball.com/play/futsal';\n\n// page name for filter page\nexport const MAP_PAGE = 'map';\nexport const RECOMMENDATION_PAGE = 'recommendation';\n\nexport const RECOMMENDATION_TYPE = {\n 0: 'RecommendationClubCartDto',\n 1: 'RecommendationCentreCartDto',\n 2: 'RecommendationMlClubCartDto',\n 3: 'RecommendationMlCentreCartDto',\n};\n\nexport const DISABILITY_FACILITIES_MAPPING = {\n ReceptionArea: 'Reception',\n Doorways: 'Doorways',\n ChangingFacility: 'Changing',\n ActivityArea: 'Activities',\n Toilets: 'Toilets',\n SocialAreas: 'Social',\n SpectatorAreas: 'Spectator Areas',\n EmergencyExit: 'Emergency Exits',\n parking: 'Parking',\n};\n\nexport const ONBOARDING_URL = '/?onboarding=true';\nexport const ONBOARDING_IFRAME_URL = '/onboarding/external';\nexport const LETGOGIRLSPLAY_URL = '/onboarding/letgirlsplay';\nexport const JUST_PLAY_URL = '/onboarding/justplay';\nexport const WILDCATS_URL = '/onboarding/wildcats';\nexport const YOUTH_CLUB_URL = '/onboarding/youthclub';\nexport const AGE_UK_URL = '/onboarding/ageuk';\nexport const ADULTCLUB_URL = '/onboarding/adultclub';\nexport const SQUAD_GIRLS_URL = '/onboarding/squadgirls';\nexport const VOLUNTEER_URL = '/onboarding/volunteer';\n\n// Onboarding disability ID\nexport const DISABILITY_ID = '191d8b36-171e-4227-836f-58a0b597744a';\n\n// agegroup array\nexport const AGEGROUP_ELDER = [\n 'open aged',\n 'walking football',\n 'u23',\n 'u21',\n 'u19',\n];\nexport const AGEGROUP_YOUNGER = [\n 'u5',\n 'u6',\n 'u7',\n 'u8',\n 'u9',\n 'u10',\n 'u11',\n 'u12',\n 'u13',\n 'u14',\n 'u15',\n 'u16',\n 'u17',\n 'u18',\n];\nexport const PREVIOUSPAGE = 'PREVIOUS_PAGE';\nexport const WALKING_FOOTBALL = 'walking football';\nexport const MATCH_AGEGROUP = ['U12', 'U11', 'U10', 'U9', 'U8', 'U7', 'U6'];\n\n// menu for club details page\nexport const CLUB_TAB = [\n {\n id: VENUE,\n label: 'CLUB INFO',\n },\n {\n id: SESSION,\n label: 'TEAMS',\n },\n {\n id: 'CONTACT',\n label: 'CONTACT',\n },\n];\n\nexport const TEAMS_TAB = [\n {\n id: 'TEAM_INFO',\n label: 'TEAM INFO',\n isHidden: false,\n },\n {\n id: 'TEAMS_STATS',\n label: 'TEAM STATS',\n isHidden: false,\n },\n {\n id: 'CONTACT',\n label: 'CONTACT',\n isHidden: false,\n },\n];\n\n// socialIcons\nexport const ICONS_MEDIA = {\n Facebook: Facebook,\n X: Twitter,\n Instagram: Instagram,\n};\n\nexport const VENUE_TAB = [\n {\n id: 'SESSIONS',\n label: 'SESSIONS',\n isHidden: false,\n },\n {\n id: 'VENUE_INFO',\n label: 'VENUE INFO',\n isHidden: false,\n },\n {\n id: 'CONTACT',\n label: 'CONTACT',\n isHidden: false,\n },\n];\n\nexport const PROVIDER_TAB = [\n {\n id: 'PROVIDER DETAILS',\n label: 'PROVIDER DETAILS',\n isHidden: false,\n },\n {\n id: 'VENUE_INFO',\n label: 'VENUE INFO',\n isHidden: false,\n },\n {\n id: 'CONTACT',\n label: 'CONTACT',\n isHidden: false,\n },\n];\n\nexport const QUERYISABOUT_OPTIONS = [\n {\n id: 1,\n option: 'Playing',\n },\n {\n id: 2,\n option: 'Coaching',\n },\n {\n id: 3,\n option: 'Volunteering',\n },\n {\n id: 4,\n option: 'Training',\n },\n];\n\nexport const QUERYISABOUT_OPTIONS_VOLUNTEER = [\n {\n id: 1,\n option: 'Volunteering',\n },\n {\n id: 2,\n option: 'Coaching',\n },\n {\n id: 3,\n option: 'Playing',\n },\n {\n id: 4,\n option: 'Training',\n },\n];\n\n// CONTACT FORM FIELDS\nexport const FIRSTNAME = 'firstName';\nexport const LASTNAME = 'lastName';\nexport const QUERYISABOUT = 'queryIsAbout';\nexport const DESCRIPTION = 'description';\nexport const CONFIRMAGE = 'confirmAge';\nexport const CONFIRMSAFEGUARD = 'confirmSafeGuard';\nexport const GOOGLECAPTCHA = 'googleCaptcha';\nexport const SUBMIT_BTN = 'SUBMIT';\nexport const CANCEL = 'Cancel';\nexport const MESSAGE_VOLUNTEER_TEXT =\n 'eg. Please could you contact me as I am interested in finding out about volunteering at your club.';\nexport const MESSAGE_TEXT =\n 'eg. what days are training on, what days are matches on?';\n\n// Event ID\nexport const EVENT_ID = {\n WELFARE_OFFICER: 4903,\n CLUB_CONTACT: 4904,\n PLAYER_PARENT: 4905,\n};\n\nexport const MINIONBOARDING_TABS = [\n {\n id: 'LISTVIEW',\n label: 'List View',\n url: '/results',\n },\n {\n id: 'MAPVIEW',\n label: 'Map View',\n url: '/results/map',\n },\n];\n\nexport const YOUTH_CLUBS_TYPE = ['Development', 'Mini Soccer', '9v9', '11v11'];\n","/**\n * Application Error class. An instance can be thrown with a member of the `AppErrorId` enum.\n */\nexport default class AppError extends Error {\n /**\n * Create a AppError instance\n *\n * @param id Expects a type of error\n */\n constructor(id) {\n super(id);\n this.id = id;\n }\n}\n","const hex3Characters = /\\w/g;\nconst hex6Characters = /\\w\\w/g;\n\nexport default (hex, alpha) => {\n const matches = hex.match(hex.length < 6 ? hex3Characters : hex6Characters);\n\n if (!matches) {\n return hex;\n }\n\n const [r, g, b] = matches.map((seg) =>\n parseInt(seg.repeat(2 / seg.length), 16)\n );\n\n return `rgba(${r},${g},${b},${alpha})`;\n};\n","import { css } from '@emotion/react';\n\nimport hexToRgba from '../../utils/hexToRgba';\n\nconst screenSizes = {\n s: '576px',\n m: '768px',\n l: '992px',\n xl: '1196px',\n xxl: '1600px',\n};\n\nconst breakpoints = {\n s: `@media screen and (min-width: ${screenSizes.s})`,\n m: `@media screen and (min-width: ${screenSizes.m})`,\n l: `@media screen and (min-width: ${screenSizes.l})`,\n xl: `@media screen and (min-width: ${screenSizes.xl})`,\n xxl: `@media screen and (min-width: ${screenSizes.xxl})`,\n};\n\nconst mediaQueries = {\n zoomedIn: `@media (min-aspect-ratio: 488/535) and (max-width: 767px)`, // 175% zoom level\n zoomedInL2: `@media (min-aspect-ratio: 488/535) and (max-width: 500px)`, // 300% zoom level\n zoomedInL3: `@media (min-aspect-ratio: 488/535) and (max-width: 420px)`, //400% zoom level\n iphoneZoom: `@media (min-aspect-ratio: 16/9) and (min-width: 375px) \n and (max-width: 812px) \n and (-webkit-min-device-pixel-ratio: 3)`, //for iphone-testing\n safariBrowser: `@media not all and (min-resolution:.001dpcm)`,\n};\n\nconst colors = {\n white: '#FFFFFF',\n black: '#1D1D1B',\n blue: '#0068B2',\n darkBlue: '#004d83',\n lightBlue: '#B7C5E9',\n dodgerBlue: '#004F9F',\n red: '#E1261C',\n lightRed: '#ce1124',\n navy: '#011E41',\n grey: '#c4c4c4',\n greyShade1: '#BBC1CE',\n greyShade2: '#f8f8f8',\n lightGrey: '#ECEEF3',\n darkGrey: '#5B6885',\n darkRed: '#A01E21',\n boldRed: '#c30024',\n};\n\nconst spacing = {\n xs: '0.5rem',\n s: '1rem',\n m: '2rem',\n l: '3rem',\n xl: '4rem',\n xxl: '5rem',\n};\n\nconst borderRadius = {\n s: '2px',\n m: '4px',\n l: '8px',\n xl: '12px',\n xxl: '24px',\n};\n\nconst heights = {\n mainNav: {\n mobile: '105px',\n desktop: '109px',\n },\n filterNav: '55px',\n};\n\nconst headingStyle = {\n fontFamily: 'FS Dillon Bold',\n fontWeight: 700,\n fontStyle: 'italic',\n letterSpacing: '-0.02em',\n};\n\nconst typography = {\n body: {\n desktop: {\n fontFamily: 'FS Dillon',\n fontSize: '1rem',\n lineHeight: '1.375rem',\n fontWeight: 400,\n },\n mobile: {\n fontFamily: 'FS Dillon',\n fontSize: '1rem',\n lineHeight: '1.375rem',\n fontWeight: 400,\n },\n },\n headings: {\n 1: {\n desktop: {\n fontSize: '8.25rem',\n lineHeight: '6.25rem',\n ...headingStyle,\n },\n mobile: {\n fontSize: '8.25rem',\n lineHeight: '6.25rem',\n ...headingStyle,\n },\n },\n 2: {\n desktop: {\n fontSize: '10.5rem',\n lineHeight: '7.5rem',\n ...headingStyle,\n },\n mobile: {\n fontSize: '7rem',\n lineHeight: '6rem',\n ...headingStyle,\n },\n },\n 3: {\n desktop: {\n fontSize: '4.875rem',\n lineHeight: '4.25rem',\n ...headingStyle,\n },\n mobile: {\n fontSize: '4rem',\n lineHeight: '3rem',\n ...headingStyle,\n },\n },\n 4: {\n desktop: {\n fontSize: '3rem',\n lineHeight: '2.625rem',\n ...headingStyle,\n },\n mobile: {\n fontSize: '2.4rem',\n lineHeight: '2.5rem',\n ...headingStyle,\n },\n },\n 5: {\n desktop: {\n fontSize: '2.5rem',\n lineHeight: '2rem',\n ...headingStyle,\n },\n mobile: {\n fontSize: '2rem',\n lineHeight: '1.5rem',\n ...headingStyle,\n },\n },\n 6: {\n desktop: {\n fontSize: '1.25rem',\n lineHeight: '1.375rem',\n ...headingStyle,\n fontFamily: 'FS Dillon',\n fontStyle: 'normal',\n },\n mobile: {\n fontSize: '1.25rem',\n lineHeight: '1.375rem',\n ...headingStyle,\n fontFamily: 'FS Dillon',\n fontStyle: 'normal',\n },\n },\n 7: {\n desktop: {\n fontSize: '1.5rem',\n lineHeight: '1.625rem',\n ...headingStyle,\n fontFamily: 'FS Dillon',\n fontStyle: 'normal',\n },\n mobile: {\n fontSize: '1.25rem',\n lineHeight: '1.375rem',\n ...headingStyle,\n fontFamily: 'FS Dillon',\n fontStyle: 'normal',\n },\n },\n },\n};\n\nconst utility = {\n buttonDefault: css`\n border: none;\n background: transparent;\n padding: 0;\n font: inherit;\n font-size: inherit;\n cursor: pointer;\n display: inherit;\n letter-spacing: inherit;\n line-height: inherit;\n `,\n checkboxHidden: css`\n clip: rect(0 0 0 0);\n clip-path: inset(50%);\n height: 1px;\n overflow: hidden;\n position: absolute;\n white-space: nowrap;\n top: 0;\n width: 1px;\n `,\n overlay: css`\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n position: fixed;\n overflow: hidden;\n z-index: 11;\n background-color: ${hexToRgba(colors.darkGrey, 0.6)};\n `,\n outline: css`\n outline: 1px solid ${colors.red};\n `,\n};\n\nexport const theme = {\n screenSizes,\n breakpoints,\n borderRadius,\n heights,\n colors,\n mediaQueries,\n spacing,\n typography,\n utility,\n};\n","import { theme } from \"./theme\";\n\nexport default () => {\n return theme;\n};\n","/** @jsxImportSource @emotion/react */\nimport useStyles from './styles';\n\nconst externalLinkAttributes = {\n target: '_blank',\n rel: 'nofollow noopener noreferrer',\n};\n\nconst ExternalLink = ({ children, href, ...rest }) => {\n const styles = useStyles();\n const isAbsoluteUrl = /^https?:\\/\\//i.test(href);\n\n const attributes = {\n ...(isAbsoluteUrl ? externalLinkAttributes : {}),\n ...rest,\n };\n\n return (\n \n {children}\n \n );\n};\n\nexport default ExternalLink;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { colors } = useTheme();\n\n return {\n link: css`\n display: block;\n color: ${colors.blue};\n text-decoration: underline;\n font-weight: 700;\n transition: color 0.5s;\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport { Link as LinkRouter } from 'react-router-dom';\n\nimport useStyles from './styles';\n\nconst Link = ({ children, to, ...rest }) => {\n const styles = useStyles();\n\n return (\n \n {children}\n \n );\n};\n\nexport default Link;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { colors } = useTheme();\n\n return {\n link: css`\n display: block;\n color: ${colors.blue};\n text-decoration: underline;\n font-weight: 700;\n transition: color 0.5s;\n `,\n };\n};\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { utility, colors, spacing, borderRadius } = useTheme();\n\n return {\n btn: primary => css`\n ${utility.buttonDefault};\n font-size: 0.875rem;\n font-weight: 400;\n width: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n color: ${colors.navy};\n background-color: ${colors.lightGrey};\n border-radius: ${borderRadius.s};\n padding: 0.85rem ${spacing.s};\n transition: all 0.3s ease-in;\n text-decoration: none;\n outline: 0;\n\n &:not(:disabled) {\n &:hover {\n background-color: ${colors.lightBlue};\n }\n }\n\n ${primary &&\n css`\n color: ${colors.white};\n background-color: ${colors.blue};\n\n &:not(:disabled) {\n &:hover {\n background-color: ${colors.darkBlue};\n }\n }\n `}\n\n &:disabled {\n background-color: ${colors.lightGrey};\n color: ${colors.darkGrey};\n }\n `,\n };\n};\n","/** @jsxRuntime classic */\n/** @jsx jsx */\nimport { jsx } from '@emotion/react';\n\nimport ExternalLink from '../ExternalLink';\nimport Link from '../Link';\nimport useStyles from './styles';\n\nconst Button = ({ children, primary, ...rest }) => {\n const styles = useStyles();\n\n return (\n \n );\n};\n\nconst ButtonLink = ({ children, primary, isExternal, to, ...rest }) => {\n const styles = useStyles();\n\n if (isExternal) {\n return (\n \n {children}\n \n );\n }\n\n return (\n \n {children}\n \n );\n};\n\nButton.Link = ButtonLink;\n\nexport default Button;\n","// general ids\nexport const BACK_TO_RESULTS = 'back_to_results';\nexport const REMOVE_FILTERS = 'remove_filters';\nexport const REAPPLY_FILTERS = 'reapply_filters';\nexport const SHOW_MORE = 'show_more';\nexport const SHOW_LESS = 'show_less';\n\n// home page\nexport const homePageAnalytics = {\n HERO_BANNER: 'hero_wrapper',\n FOOTBALL_CATEGORIES: 'football_categories_wrapper',\n QUICK_LINKS: 'quick_links_wrapper',\n FA_INITIATIVES: 'fa_initiatives_wrapper',\n\n CTA_START_SEARCHING: 'cta_start_searching_now',\n\n FOOTBALL_CATEGORY_TYPES: {\n 0: 'club_football_cta_learn_more',\n 1: 'casual_football_cta_learn_more',\n },\n QUICK_LINK_TYPES: {\n 0: 'traditional_football_cta_learn_more',\n 1: 'futsal_football_cta_learn_more',\n 2: 'walking_football_cta_learn_more',\n 3: 'small_sided_football_cta_learn_more',\n },\n FA_INITIATIVE_TYPES: {\n 0: 'initiative_cta_fun_friendly_5_11',\n 1: 'initiative_cta_casual_football_everyone',\n 2: 'initiative_cta_small_sided_over_50s',\n },\n};\n\n// on-boarding Modal\nexport const onBoardingModalAnalytics = {\n ONBOARDING_CTA_EXIT: 'onboarding_cta_exit',\n ONBOARDING_CTA_YES: 'onboarding_cta_exit_yes',\n ONBOARDING_CTA_NO: 'onboarding_cta_exit_no',\n ONBOARDING_CTA_PREVIOUS_QUESTION: 'onboarding_cta_previous_question',\n ONBOARDING_CTA_NEXT_QUESTION: 'onboarding_cta_next_question',\n};\n\n// recommendation page\nexport const recommendationsPageAnalytics = {\n FOOTBALL_RECOMMENDATIONS_RESULTS_TABS:\n 'football_recommendations_results_tabs_wrapper',\n FOOTBALL_RECOMMENDATIONS_RESULT: 'football_recommendations_result_wrapper',\n\n RECOMMENDED_FOOTBALL_TYPE_TITLE: 'recommended_football_type_title',\n RECOMMENDED_FOOTBALL_TYPE_ML_TITLE: 'recommended_football_type_ml_title',\n RECOMMENDED_FOOTBALL_TYPE_IMAGE: 'recommended_football_type_image',\n RECOMMENDED_FOOTBALL_TYPE_CTA_LEAR_MORE:\n 'recommended_football_type_cta_learn_more',\n\n RECOMMENDED_FOOTBALL_TYPE_CTA_VIEW_MAPS_OF:\n 'recommended_football_type_cta_view_maps_of',\n\n RECOMMENDED_FOOTBALL_TYPE_CTA_CLUB_CARD:\n 'recommended_football_type_cta_club_card',\n RECOMMENDED_FOOTBALL_TYPE_CTA_VENUE_CARD:\n 'recommended_football_type_cta_venue_card',\n\n RECOMMENDED_FOOTBALL_TYPE_CTA_ML_CLUB_CARD:\n 'recommended_football_type_cta_ml_club_card',\n RECOMMENDED_FOOTBALL_TYPE_CTA_ML_VENUE_CARD:\n 'recommended_football_type_cta_ml_venue_card',\n\n RECOMMENDED_FOOTBALL_TYPE_CTA_VIEW_MORE_CARDS:\n 'recommended_football_type_cta_view_more_cards',\n\n CTA_VIEW_MORE_RECOMMENDATIONS: 'cta_view_more_recommendations',\n\n RECOMMENDED_FOOTBALL_TYPE_CTA_START_SEARCH:\n 'recommended_football_type_cta_view_start_search',\n RECOMMENDED_FOOTBALL_TYPE_CTA_LEARN_MORE:\n 'recommended_football_type_cta_view_LEARN_MORE',\n\n RECOMMENDED_FOOTBALL_TYPE_MIXED_CONTAINER:\n 'recommended_football_type_mixed_container',\n RECOMMENDED_FOOTBALL_TYPE_MIXED_WRAPPER:\n 'recommended_football_type_mixed_wrapper',\n RECOMMENDED_FOOTBALL_TYPE_CTA_MIXED_RESULTS:\n 'recommended_football_type_cta_mixed_results',\n RECOMMENDED_FOOTBALL_MIXED_IMAGE: 'recommended_football_mixed_image',\n RECOMMENDED_FOOTBALL_TYPE_MIXED_HEADING:\n 'recommended_football_type_mixed_heading',\n\n RECOMMENDED_FOOTBALL_TYPE_CTA_EXPAND_SEARCH:\n 'recommended_football_type_cta_expand_search',\n RECOMMENDED_FOOTBALL_TYPE_LINK_FILTERS:\n 'recommended_football_type_link_filters',\n RECOMMENDED_FOOTBALL_TYPE_LINK_NEW_SEARCH:\n 'recommended_football_type_link_new_search',\n RECOMMENDED_FOOTBALL_TYPE_NO_RESULTS_TITLE:\n 'recommended_football_type_no_results_title',\n RECOMMENDED_FOOTBALL_TYPE_NO_RESULTS_CONTAINER:\n 'recommended_football_type_no_results_container',\n RECOMMENDED_FOOTBALL_TYPE_NO_RESULTS_WRAPPER:\n 'recommended_football_type_no_results_wrapper',\n\n RECOMMENDED_FOOTBALL_ONBOARDING_CTA_LEARN_MORE:\n 'recommended_football_onboarding_cta_learn_more',\n RECOMMENDED_FOOTBALL_ONBOARDING_WRAPPER:\n 'recommended_football_onboarding_wrapper',\n RECOMMENDED_FOOTBALL_ONBOARDING_DAY_PREFERENCE:\n 'recommended_football_onboarding_day_preference',\n RECOMMENDED_FOOTBALL_ONBOARDING_LOCATION:\n 'recommended_football_onboarding_location',\n\n //for no disability results\n RECOMMENDED_NO_RESULTS_DISABILITY_CTA_EXPAND_SEARCH:\n 'recommended_no_results_disability_cta_expand_search',\n RECOMMENDED_NO_RESULTS_DISABILITY_LINK_FILTERS:\n 'recommended_no_results_disability_link_filters',\n RECOMMENDED_NO_RESULTS_DISABILITY_TITLE:\n 'recommended_no_results_disability_title',\n RECOMMENDED_NO_RESULTS_DISABILITY_CONTAINER:\n 'recommended_no_results_disability_container',\n RECOMMENDED_NO_RESULTS_DISABILITY_WRAPPER:\n 'recommended_no_results_disability_wrapper',\n\n //for pan-disability suggestion\n RECOMMENDED_PAN_DISABILITY_SUGGESTION_WRAPPER:\n 'recommended_pan_disability-suggestion-wrapper',\n};\n\n// recommendation page\nexport const moRecommendationsPageAnalytics = {\n MO_RECOMMENDED_FOOTBALL_ONBOARDING_CTA_LEARN_MORE:\n 'mo_recommended_football_onboarding_cta_learn_more',\n MO_RECOMMENDED_FOOTBALL_ONBOARDING_WRAPPER:\n 'mo_recommended_football_onboarding_wrapper',\n MO_RECOMMENDED_FOOTBALL_ONBOARDING_DAY_PREFERENCE:\n 'mo_recommended_football_onboarding_day_preference',\n MO_RECOMMENDED_FOOTBALL_ONBOARDING_LOCATION:\n 'mo_recommended_football_onboarding_location',\n MO_RECOMMENDED_CLUB_fURTHER_AWAY: 'mo_recommended_club_further_away',\n MO_RECOMMENDED_VENUE_fURTHER_AWAY: 'mo_recommended_venue_further_away',\n\n MO_RESULTS_FOOTBALL_VENUE_NAME: 'mo_results_football_venue_name',\n MO_RESULTS_FOOTBALL_TEAM_NAME: 'mo_results_football_team_name',\n MO_RESULTS_FOOTBALL_TEAM_INFO: 'mo_results_football_team_info',\n MO_RESULTS_FOOTBALL_VENUE_INFO: 'mo_results_football_venue_info',\n MO_MORE_RESULTS: 'mo_more_results',\n MO_RESULTS_FOOTBALL_DISTANCE: 'mo_results_football_distance',\n};\n\n// recommendations map page\nexport const recommendationsMapPageAnalytics = {\n RECOMMENDATIONS_RESULT_ON_MAP: 'recommendations_result_on_map_wrapper',\n CTA_BACK_TO_RECOMMENDATIONS: 'cta_back_to_recommendations',\n\n CTA_PROVIDER_CLUB_CARD: 'cta_provider_club_card',\n PROVIDER_CLUB_CARD_TITLE: 'provider_club_card_title',\n\n CTA_PROVIDER_VENUE_CARD: 'cta_provider_venue_card',\n PROVIDER_VENUE_CARD_TITLE: 'provider_venue_card_title',\n\n MAP_CTA_LOAD_MORE_RECOMMENDATIONS: 'map_cta_load_more_recommendations',\n MORE_INFO: 'more_info',\n MAP_DIRECTION: 'map_direction',\n DIRECTION: 'directions',\n};\n\n// Club Details Page\nexport const clubDetailsPageAnalytics = {\n CLUB_DETAILS_WRAPPER: 'club_details_wrapper',\n CLUB_NAME_HEADING: 'club_name_heading',\n CLUB_TEAM_TITLE: 'club_team_title',\n CLUB_TEAM_FILTER: 'club_team_filter',\n CLUB_TEAM_CARD_TITLE: 'club_team_card_title',\n CLUB_TEAM_CARD_CTA_CONTACT: 'club_team_card_cta_contact',\n CLUB_TEAM_CARD_CTA_SHOW_MORE: 'club_team_card_cta_show_more',\n CLUB_DETAILS_TABS: 'club_details_tabs',\n};\n\n//Mo team card\nexport const moTeamCardAnalytics = {\n CLUB_TEAM_MO_CARD_TITLE: 'club_team_mo_card_title',\n CLUB_TEAM_CARD_MO_CTA_CONTACT: 'club_team_card_mo_cta_contact',\n};\n\n// Team Details Page\nexport const teamDetailsPageAnalytics = {\n TEAM_DETAILS_WRAPPER: 'team_details_wrapper',\n TEAM_NAME_HEADING: 'team_name_heading',\n TEAM_DETAILS_TABS: 'team_details_tabs',\n};\n\n// Venue Details Page\nexport const venueDetailsPageAnalytics = {\n VENUE_DETAILS_WRAPPER: 'venue_details_wrapper',\n VENUE_NAME_HEADING: 'venue_name_heading',\n VENUE_SESSIONS_TITLE: 'venue_sessions_title',\n VENUE_SESSION_FILTER: 'venue_session_filter',\n VENUE_SESSION_CARD_TITLE: 'venue_session_card_title',\n VENUE_SESSION_CARD_CTA_BOOKING: 'venue_session_card_cta_booking',\n VENUE_ABOUT_TITLE: 'about_the_venue_title',\n FA_EVENTS_FIND_MORE: 'fa_events_find_out_more',\n};\n\n// Filter Panel & Nested Filters\nexport const filtersPanelAnalytics = {\n FILTERS_PANEL_CTA_OPEN: 'filters_panel_cta_open',\n FILTERS_PANEL_CTA_CLOSE: 'filters_panel_cta_close',\n FILTERS_PANEL_CTA_BACK_TO: 'filters_panel_cta_back_to',\n FILTERS_PANEL_CTA_APPLY: 'filters_panel_cta_apply_filters',\n FILTERS_PANEL_CTA_SAVE_CHANGES: 'filters_panel_cta_save_changes',\n FILTERS_PANEL_CTA_NEW_SEARCH: 'filters_panel_cta_start_new_search',\n FILTERS_PANEL_CTA_CURRENT_LOCATION:\n 'filters_panel_cta_share_current_location',\n\n FILTERS_PANEL_CTA_DAY_PREFERENCE: 'filters_panel_cta_day_preference',\n FILTERS_PANEL_CTA_LOCATION_PREFERENCE:\n 'filters_panel_cta_location_preference',\n FILTERS_PANEL_SELECTED_SESSION_DURATION_PREFERENCE:\n 'filters_panel_selected_session_duration_preference',\n FILTERS_PANEL_CTA_INCLUDE_MIXED_GENDER:\n 'filters_panel_cta_include_mixed_gender',\n FILTERS_PANEL_CTA_DISABILITY_FACILITY:\n 'filters_panel_cta_disability_facility',\n FILTERS_PANEL_CTA_SESSION_PRICE: 'filters_panel_cta_session_price',\n FILTERS_PANEL_CTA_SURFACE_TYPE: 'filters_panel_cta_surface_type',\n\n FILTERS_PANEL_FILTER_TYPES: 'filters_panel_filter_types_wrapper',\n FILTERS_PANEL_NESTED_FILTER: 'filters_panel_nested_filter_wrapper',\n\n FILTERS_PANEL_UNSAVED_CHANGES: 'filters_panel_unsaved_changes_wrapper',\n FILTERS_PANEL_UNSAVED_CHANGES_CTA_SAVE:\n 'filters_panel_unsaved_changes_cta_save',\n FILTERS_PANEL_UNSAVED_CHANGES_CTA_EXIT:\n 'filters_panel_unsaved_changes_cta_exit',\n FILTERS_PANEL_UNSAVED_CHANGES_CTA_BACK:\n 'filters_panel_unsaved_changes_cta_go_back',\n};\n\n// Footer\nexport const footerAnalytics = {\n FOOTER_WRAPPER: 'footer_wrapper',\n FOOTER_CTA: 'footer_cta',\n};\n\n// Social Media\nexport const socialMediaAnalytics = {\n SOCIAL_MEDIA_WRAPPER: 'footer_wrapper',\n SOCIAL_MEDIA_CTA: 'footer_cta',\n};\n\nexport const contactFormModalAnalytics = {\n CONTACT_FORM_CTA_EXIT: 'contact_form_cta_exit',\n CONTACT_FORM_TITLE: 'contact_form_title',\n CONTACT_FROM_MESSAGE_CONFIRMATION: 'message_sent_confirmation',\n};\n","import pdfData from '../../mocks/data/the-fa-slavery-human-trafficking-statement-2020.pdf';\nconst footerData = {\n links: [\n {\n text: 'Contact Us',\n url: 'https://help.thefa.com/support/home',\n isDownload: false,\n },\n {\n text: 'Privacy Policy',\n url: 'https://www.thefa.com/public/privacy',\n isDownload: false,\n },\n {\n text: 'Terms of use',\n url: 'https://www.thefa.com/public/terms',\n isDownload: false,\n },\n {\n text: 'Anti-Slavery',\n url: pdfData,\n isDownload: true,\n },\n {\n text: 'Cookie Settings',\n isDownload: false,\n className: 'ot-sdk-show-settings',\n id: 'ot-sdk-btn ot-sdk-fnav',\n },\n ],\n};\n\nexport default footerData;\n","export default __webpack_public_path__ + \"static/media/the-fa-slavery-human-trafficking-statement-2020.c59a53cd.pdf\";","/** @jsxImportSource @emotion/react */\n\nimport { footerAnalytics } from '../../analyticsConsts';\nimport footerData from '../../mocks/data/footer';\nimport ExternalLink from '../ExternalLink';\nimport useStyles from './styles';\n\nconst { FOOTER_WRAPPER, FOOTER_CTA } = footerAnalytics;\n\nconst Footer = () => {\n const styles = useStyles();\n\n const { links } = footerData;\n return (\n
\n
\n
\n
    \n {links &&\n links.length > 0 &&\n links.map((link, index) => {\n return (\n
  • \n \n {link.text}\n {link.isDownload && (\n \n (downloads pdf file)\n \n )}\n \n
  • \n );\n })}\n
\n
\n
\n The Football Association © 2001 - {new Date().getFullYear()} - All\n Rights Reserved\n
\n
\n
\n );\n};\n\nexport default Footer;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { colors, spacing, breakpoints, screenSizes, utility } = useTheme();\n\n return {\n footer: css`\n background-color: ${colors.black};\n color: ${colors.white};\n position: relative;\n font-weight: normal;\n font-size: 0.875rem;\n line-height: 1.125rem;\n padding: 1.5rem 1.5rem ${spacing.xs};\n letter-spacing: 0.02em;\n\n ${breakpoints.m} {\n padding: ${spacing.s} ${spacing.m};\n }\n `,\n footerWrapper: css`\n display: grid;\n\n ${breakpoints.m} {\n grid-template-columns: auto 1fr;\n grid-column-gap: ${spacing.s};\n }\n `,\n leftContent: css`\n border-bottom: 1px solid ${colors.darkGrey};\n padding-bottom: ${spacing.s};\n ${breakpoints.m} {\n border-bottom: none;\n padding-bottom: 0;\n }\n `,\n rightContent: css`\n justify-self: center;\n padding: ${spacing.s} 0;\n\n ${breakpoints.m} {\n justify-self: end;\n padding: 0;\n }\n `,\n list: css`\n display: grid;\n\n ${breakpoints.m} {\n grid-auto-flow: column;\n }\n grid-gap: ${spacing.s};\n\n li > a {\n color: ${colors.white};\n font-weight: normal;\n text-decoration: none;\n cursor: pointer;\n }\n\n @media screen and (max-width: ${screenSizes.m}) {\n grid-template-columns: repeat(3, 1fr);\n }\n `,\n pdfDownload: utility.checkboxHidden,\n };\n};\n","import { createContext, useCallback, useContext, useState } from 'react';\n\nconst SetHeaderHeightContext = createContext();\n\nexport const SetHeaderHeightProvider = ({ children }) => {\n const [headerHeight, setHeaderHeight] = useState();\n\n // set header height click handler\n const setHeaderHeightValue = useCallback(value => {\n setHeaderHeight(value);\n }, []);\n\n return (\n \n {children}\n \n );\n};\n\nexport const useSetHeaderHeightContext = () =>\n useContext(SetHeaderHeightContext);\n","export const setLocalItem = (item, value) =>\n sessionStorage.setItem(item, value);\n\nexport const getLocalItem = item => sessionStorage.getItem(item);\n\nexport const removeLocalItem = item => sessionStorage.removeItem(item);\n\nexport default () => ({\n setLocalItem,\n getLocalItem,\n removeLocalItem,\n});\n","import { useEffect, useMemo, useState } from 'react';\n\nexport default query => {\n const mediaQuery = useMemo(() => window.matchMedia(query), [query]);\n const [state, setState] = useState(mediaQuery.matches);\n\n useEffect(() => {\n const handleChange = ({ matches }) => {\n setState(matches);\n };\n\n // Safari does not support newer syntax\n // `mediaQuery.addEventListener('change', handleChange)`\n mediaQuery.addListener(handleChange);\n\n return () => {\n // Safari does not support newer syntax\n // `mediaQuery.removeEventListener('change', handleChange)`\n mediaQuery.removeListener(handleChange);\n };\n }, [mediaQuery]);\n\n return state;\n};\n","import { createContext, useCallback, useContext, useState } from 'react';\n\nconst ScrollDirectionContext = createContext({\n setScrolldirectionContext: () => { },\n});\n\nexport const ScrollDirectionProvider = ({ children }) => {\n const [scrolldirectionContext, setScrolldirectionContext] = useState(\"down\");\n\n // Filter list item click handler\n const setScroll = useCallback(value => {\n if (!value) {\n return;\n }\n setScrolldirectionContext(value);\n }, []);\n\n return (\n \n {children}\n \n );\n};\n\nexport const useScrollDirectionContext = () =>\n useContext(ScrollDirectionContext);\n","const normaliseHomePageData = apiData => {\n const placeholder = apiData.sitecore.route.placeholders;\n const {\n Hero: [{ fields: heroFirstItemFields } = {}],\n FootballTypes,\n QuickLinks,\n FAInitiatives,\n BannerMessage,\n } = placeholder;\n const bannerInfo = BannerMessage[0].fields;\n const hexacolor = bannerInfo?.CopyFont?.fields?.CategoryValue?.value;\n const colorName = bannerInfo?.CopyFont?.fields?.CategoryType?.value;\n const textColorCheck = hexacolor ? hexacolor : colorName;\n const hexaBgColor = bannerInfo?.BGColour?.fields?.CategoryValue?.value;\n const colorBgName = bannerInfo?.BGColour?.fields?.CategoryType?.value;\n const bgColorCheck = hexaBgColor ? hexaBgColor : colorBgName;\n\n return {\n hero: {\n text: {\n main: heroFirstItemFields?.Tittle.value,\n secondary: heroFirstItemFields?.Description.value,\n },\n ctaText: heroFirstItemFields?.CTA_Text.value,\n images: {\n desktop: {\n src: heroFirstItemFields?.Desktop_Image.value.src,\n },\n mobile: {\n src: heroFirstItemFields?.Mobile_Image.value.src,\n },\n },\n },\n bannerInfo: {\n desktopBgImage: bannerInfo?.DesktopBG?.value?.src,\n mobileBgImage: bannerInfo?.MobileBG?.value?.src,\n bgColor: bgColorCheck,\n bannerUrl: bannerInfo?.Url?.value?.href,\n desktopLogo: bannerInfo?.DesktopLogo?.value?.src,\n mobileLogo: bannerInfo?.MobileLogo?.value?.src,\n closeButton: bannerInfo?.IsCloseButton?.value,\n bannerText: bannerInfo?.Copy?.value,\n textColor: textColorCheck,\n textLink: bannerInfo?.TextLink?.value?.text,\n textLinkUrl: bannerInfo?.TextLink?.value?.url,\n },\n banner: BannerMessage[0].fields,\n footballTypeHeadings: FootballTypes.map(({ fields }, index) => {\n return {\n id: index + 1,\n // can be used whenever safe checks are required.\n ...(fields?.Tittle.value && {\n heading: fields?.Tittle.value,\n }),\n description: fields?.Description.value,\n href: fields?.CTA_Link.value.href,\n images: {\n desktop: {\n src: fields?.Desktop_Image.value.src,\n },\n mobile: {\n src: fields?.Mobile_Image.value.src,\n },\n },\n };\n }),\n quickLinks: QuickLinks.map(({ fields }, index) => {\n return {\n id: index + 1,\n heading: fields?.Tittle.value,\n href: fields?.CTA_Link.value.href,\n description: fields?.Description.value,\n images: {\n desktop: {\n src: fields?.Desktop_Image.value.src,\n },\n mobile: {\n src: fields?.Mobile_Image.value.src,\n },\n },\n };\n }),\n faInitiatives: FAInitiatives.map(({ fields }, index) => {\n return {\n id: index + 1,\n description: fields?.Description.value,\n href: fields?.CTA_Link.value.href,\n initiativeLogo: {\n desktop: {\n src: fields?.Desktop_Logo.value.src,\n },\n mobile: {\n src: fields?.Mobile_Logo.value.src,\n },\n },\n images: {\n desktop: {\n src: fields?.Desktop_Image.value.src,\n },\n mobile: {\n src: fields?.Mobile_Image.value.src,\n },\n },\n };\n }),\n };\n};\n\nexport default normaliseHomePageData;\n","export default (path) => `${process.env.PUBLIC_URL}${path}`;\n","import publicPath from '../../utils/publicPath';\n\nconst clubPage = {\n hero: {\n images: {\n desktop: {\n src: publicPath(\n '/images/desktop/club/hero/1.jpg'\n ),\n },\n mobile: {\n src: publicPath(\n '/images/mobile/club/hero/1.jpg'\n ),\n },\n },\n },\n};\n\nexport default clubPage;\n","import {\n ADULT_CLUB_CANCEL_URL,\n ADULT_FUTSAL_URL,\n AGE_UK_CANCEL_URL,\n LET_GIRLS_PLAY_CANCEL_URL,\n SQUAD_CANCEL_URL,\n YOUTH_CLUB_CANCEL_URL,\n} from '../../const';\nimport publicPath from '../../utils/publicPath';\n\nconst moRecommendations = {\n hero: {\n 1: {\n text: {\n main: 'Casual football recommendations',\n },\n images: {\n desktop: {\n src: publicPath('/images/desktop/recommendations/casual-hero@x1.jpg'),\n },\n mobile: {\n src: publicPath('/images/mobile/recommendations/casual-hero@x1.jpg'),\n },\n },\n },\n 2: {\n text: {\n main: 'Club football recommendations',\n },\n images: {\n desktop: {\n src: publicPath('/images/desktop/recommendations/club-hero@x1.jpg'),\n },\n mobile: {\n src: publicPath('/images/mobile/recommendations/club-hero@x1.jpg'),\n },\n },\n },\n 3: {\n text: {\n main: 'Football recommendations',\n },\n images: {\n desktop: {\n src: publicPath('/images/desktop/recommendations/mixed-hero@x2.jpg'),\n },\n mobile: {\n src: publicPath('/images/desktop/recommendations/mixed-hero@x2.jpg'),\n },\n },\n },\n },\n faInitiatives: [\n {\n id: 1,\n description: 'Fun and friendly football for girls aged 5-11. ',\n href:\n 'https://www.englandfootball.com/play/womens-and-girls-football/weetabix-wildcats',\n initiativeLogo: {\n desktop: {\n src: publicPath('/images/desktop/home/wildcats-logo.svg'),\n },\n mobile: {\n src: publicPath('/images/desktop/home/wildcats-logo.svg'),\n },\n },\n images: {\n desktop: {\n src: publicPath('/images/desktop/venue/fa-events/wildcats.png'),\n width: 754,\n },\n mobile: {\n src: publicPath('/images/desktop/venue/fa-events/wildcats.png'),\n width: 754,\n },\n },\n },\n {\n id: 2,\n description:\n 'Casual football for everyone. Fancy a game? Just say, Just Play. ',\n href: 'https://www.englandfootball.com/play/adult-football/just-play',\n initiativeLogo: {\n desktop: {\n src: publicPath('/images/desktop/home/just-play-logo.svg'),\n },\n mobile: {\n src: publicPath('/images/desktop/home/just-play-logo.svg'),\n },\n },\n images: {\n desktop: {\n src: publicPath('/images/desktop/venue/fa-events/just-play.png'),\n width: 754,\n },\n mobile: {\n src: publicPath('/images/desktop/venue/fa-events/just-play.jpg'),\n width: 754,\n },\n },\n },\n {\n id: 3,\n description:\n 'Stay active with small-sided Walking Football for over 50s.',\n href: AGE_UK_CANCEL_URL,\n initiativeLogo: {\n desktop: {\n src: publicPath('/images/desktop/home/age-uk-logo.svg'),\n },\n mobile: {\n src: publicPath('/images/desktop/home/age-uk-logo.svg'),\n },\n },\n images: {\n desktop: {\n src: publicPath('/images/desktop/home/age-uk.png'),\n width: 752,\n },\n mobile: {\n src: publicPath('/images/desktop/home/age-uk.png'),\n width: 752,\n },\n },\n },\n {\n id: 4,\n description:\n \"Squad Girls' Football. Fun, non-competitive football for Girls aged 12-14.\",\n href: SQUAD_CANCEL_URL,\n images: {\n desktop: {\n src: publicPath('/images/desktop/home/squad.png'),\n width: 752,\n },\n mobile: {\n src: publicPath('/images/desktop/home/squad.png'),\n width: 752,\n },\n },\n },\n {\n id: 5,\n description:\n 'Let Girls Play. Find casual sessions for girls and women for all ages.',\n href: LET_GIRLS_PLAY_CANCEL_URL,\n images: {\n desktop: {\n src: publicPath('/images/desktop/home/letgirlsplay.png'),\n width: 752,\n },\n mobile: {\n src: publicPath('/images/desktop/home/letgirlsplay.png'),\n width: 752,\n },\n },\n },\n {\n id: 6,\n description:\n 'Youth club football.Paving the way for the next generation.',\n href: YOUTH_CLUB_CANCEL_URL,\n header: 'All youth club',\n images: {\n desktop: {\n src: publicPath('/images/desktop/home/youth-club-football.png'),\n width: 752,\n },\n mobile: {\n src: publicPath('/images/desktop/home/youth-club-football.png'),\n width: 752,\n },\n },\n },\n {\n id: 7,\n description: \"11-a-side football, the game we love in it's purist form.\",\n href: ADULT_CLUB_CANCEL_URL,\n header: 'Adult 11v11',\n images: {\n desktop: {\n src: publicPath('/images/desktop/home/adult-club.png'),\n width: 752,\n },\n mobile: {\n src: publicPath('/images/desktop/home/adult-club.png'),\n width: 752,\n },\n },\n },\n {\n id: 8,\n description: 'Get involved with Futsal to improve your technique ',\n href: ADULT_FUTSAL_URL,\n header: 'Adult Futsal',\n images: {\n desktop: {\n src: publicPath('/images/desktop/home/adult-futsal.png'),\n width: 752,\n },\n mobile: {\n src: publicPath('/images/desktop/home/adult-futsal.png'),\n width: 752,\n },\n },\n },\n {\n id: 9,\n description:\n 'Discover Walking Football and play the game you love for longer.',\n // href: WALKING_FOOTBALL_CASUAL_CANCEL_URL,\n header: 'Walking Football Sessions',\n images: {\n desktop: {\n src: publicPath('/images/desktop/home/age-uk.png'),\n width: 752,\n },\n mobile: {\n src: publicPath('/images/desktop/home/age-uk.png'),\n width: 752,\n },\n },\n },\n {\n id: 9,\n description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.',\n // href: WALKING_FOOTBALL_CLUB_CANCEL_URL,\n header: 'Walking Football',\n images: {\n desktop: {\n src: publicPath('/images/desktop/home/adult-futsal.png'),\n width: 752,\n },\n mobile: {\n src: publicPath('/images/desktop/home/adult-futsal.png'),\n width: 752,\n },\n },\n },\n ],\n};\n\nexport default moRecommendations;\n","import { AGE_ID, MYSELF, SOMEONE_ELSE } from '../../../const';\n\nexport default [\n {\n id: '346dbfab-03fa-4a3a-ab18-b461d0d56dc7',\n questionOrder: 2,\n readableId: AGE_ID,\n analyticsId: 'selected_age',\n type: 'age',\n title: {\n [MYSELF]: 'How old are you?',\n [SOMEONE_ELSE]: 'How old are they?',\n },\n inputTitle: {\n [MYSELF]: 'Enter your age (between 5 & 99)',\n [SOMEONE_ELSE]: 'Enter their age (between 5 & 99)',\n },\n helpText:\n 'Football types depend on age, so this just helps us give you the best options',\n config: {\n min: 5,\n max: 99,\n step: 1,\n defaultValue: 5,\n labelMin: '5',\n labelMax: '99+',\n },\n ageRanges: [\n {\n min: 5,\n max: 17,\n nextQuestionId: 'd9572be5-72f2-42af-87ea-a3298c6eacd7',\n },\n {\n min: 18,\n max: 99,\n nextQuestionId: 'd43569c8-1a01-4c53-9575-128698905fbc',\n },\n ],\n },\n];\n","import {\n DISABILITY_OPTION_ID,\n MYSELF,\n NO,\n NOT_SURE,\n SOMEONE_ELSE,\n YES,\n} from '../../../const';\n\nexport default [\n {\n id: '191d8b36-171e-4227-836f-58a0b597744a',\n questionOrder: 6,\n readableId: DISABILITY_OPTION_ID,\n type: 'single',\n title: {\n [MYSELF]: 'Are you looking for disability options?',\n [SOMEONE_ELSE]: 'Are they looking for disability options?',\n },\n answerTypeQuestion: [\n { DisabilityId: 1 },\n { DisabilityId: 2 },\n { DisabilityId: 3 },\n { DisabilityId: 4 },\n { DisabilityId: 5 },\n { DisabilityId: 6 },\n { DisabilityId: 7 },\n { DisabilityId: 8 },\n { DisabilityId: 9 },\n { DisabilityId: 10 },\n { DisabilityId: 11 },\n { DisabilityId: 12 },\n { DisabilityId: 13 },\n ],\n answers: [\n {\n answerId: 1,\n analyticsId: 'disability_yes',\n title: 'Yes',\n answerType: 'basic',\n value: YES,\n ageRanges: [\n {\n min: 0,\n max: 0,\n nextQuestionId: 'e1f34caf-2e24-4eb6-8134-1c27fec41aa4',\n },\n ],\n },\n {\n answerId: 2,\n analyticsId: 'disability_no',\n title: 'No',\n answerType: 'basic',\n value: NO,\n ageRanges: [\n {\n min: 0,\n max: 0,\n nextQuestionId: '703663f0-3c99-4c4e-ac80-62184ad0546f',\n },\n ],\n },\n {\n answerId: 3,\n analyticsId: 'disability_not_sure',\n title: 'Not sure',\n answerType: 'secondary',\n value: NOT_SURE,\n ageRanges: [\n {\n min: 0,\n max: 0,\n nextQuestionId: '703663f0-3c99-4c4e-ac80-62184ad0546f',\n },\n ],\n },\n ],\n },\n];\n","import { DISABILITY_TYPE_ID, MYSELF, SOMEONE_ELSE } from '../../../const';\n\nexport default [\n {\n id: 'e1f34caf-2e24-4eb6-8134-1c27fec41aa4',\n questionOrder: 7,\n readableId: DISABILITY_TYPE_ID,\n type: 'multiple',\n title: {\n [MYSELF]: 'Are you looking for disability options?',\n [SOMEONE_ELSE]: 'Are they looking for disability options?',\n },\n helpText:\n 'Choose one or more of the options below for football tailored to disabilities',\n answers: [\n { answerId: 1, value: 'Amputee' },\n { answerId: 2, value: 'Blind' },\n { answerId: 3, value: 'Cerebral Palsy' },\n { answerId: 4, value: 'Deaf/Hearing Impaired' },\n { answerId: 5, value: 'Downs syndrome' },\n { answerId: 6, value: 'Dwarf' },\n { answerId: 7, value: 'Frame' },\n { answerId: 8, value: 'Learning Disability' },\n { answerId: 9, value: 'Mental Health' },\n { answerId: 10, value: 'Pan-Disability' },\n { answerId: 11, value: 'Partially Sighted' },\n { answerId: 12, value: 'Powerchair' },\n { answerId: 13, value: 'Autism' },\n ],\n ageRanges: [\n {\n min: 0,\n max: 0,\n nextQuestionId: '703663f0-3c99-4c4e-ac80-62184ad0546f',\n },\n ],\n },\n];\n","import {\n CLUB,\n DONT_MIND,\n FOOTBALL_TYPE_ID,\n KICKABOUT_CASUAL,\n MYSELF,\n SOMEONE_ELSE,\n} from '../../../const';\nimport publicPath from '../../../utils/publicPath';\n\nexport default [\n {\n id: '61459727-eb01-4eff-96d6-d677fdc63e3d',\n questionOrder: 4,\n readableId: FOOTBALL_TYPE_ID,\n type: 'single',\n title: {\n [MYSELF]: 'What are you interested in playing?',\n [SOMEONE_ELSE]: 'What are they interested in playing?',\n },\n answers: [\n {\n answerId: 1,\n analyticsId: 'casual_football',\n title: 'Casual',\n description: 'Informal play, less commitment',\n value: KICKABOUT_CASUAL,\n answerType: 'primary',\n image: publicPath('/images/common/cutouts/kickabout.png'),\n keylineVariant: 3,\n ageRanges: [\n {\n min: 0,\n max: 0,\n nextQuestionId: '4760ff1b-41f2-4450-8bf4-83dc7384b594',\n },\n ],\n },\n {\n answerId: 2,\n analyticsId: 'club_football',\n title: 'Club',\n description: 'Regular team training and matches',\n value: CLUB,\n answerType: 'primary',\n image: publicPath('/images/common/cutouts/male.png'),\n keylineVariant: 3,\n ageRanges: [\n {\n min: 0,\n max: 0,\n nextQuestionId: '4760ff1b-41f2-4450-8bf4-83dc7384b594',\n },\n ],\n },\n {\n answerId: 3,\n analyticsId: 'do_not_mind',\n title: \"I don't mind\",\n answerType: 'secondary',\n value: DONT_MIND,\n ageRanges: [\n {\n min: 0,\n max: 0,\n nextQuestionId: '4760ff1b-41f2-4450-8bf4-83dc7384b594',\n },\n ],\n },\n ],\n },\n {\n id: '123735b9-f394-4e48-800b-a6fcfd9a479d',\n questionOrder: 4,\n readableId: FOOTBALL_TYPE_ID,\n type: 'single',\n title: {\n [MYSELF]: 'What are you interested in playing?',\n [SOMEONE_ELSE]: 'What are they interested in playing?',\n },\n answers: [\n {\n answerId: 1,\n analyticsId: 'casual_football',\n title: 'Casual',\n description: 'Casual play, just for fun',\n value: KICKABOUT_CASUAL,\n answerType: 'primary',\n image: publicPath('/images/common/cutouts/casual.png'),\n keylineVariant: 2,\n ageRanges: [\n {\n min: 0,\n max: 0,\n nextQuestionId: '4760ff1b-41f2-4450-8bf4-83dc7384b594',\n },\n ],\n },\n {\n answerId: 2,\n analyticsId: 'club_football',\n title: 'Club',\n description: 'Regular team training and matches',\n value: CLUB,\n answerType: 'primary',\n image: publicPath('/images/common/cutouts/female.png'),\n keylineVariant: 3,\n ageRanges: [\n {\n min: 0,\n max: 0,\n nextQuestionId: '4760ff1b-41f2-4450-8bf4-83dc7384b594',\n },\n ],\n },\n {\n answerId: 3,\n analyticsId: 'do_not_mind',\n title: \"I don't mind\",\n answerType: 'secondary',\n value: DONT_MIND,\n ageRanges: [\n {\n min: 0,\n max: 0,\n nextQuestionId: '4760ff1b-41f2-4450-8bf4-83dc7384b594',\n },\n ],\n },\n ],\n },\n {\n id: 'dde0352b-5420-494a-bdee-0a7e5260e617',\n questionOrder: 4,\n readableId: FOOTBALL_TYPE_ID,\n type: 'single',\n title: {\n [MYSELF]: 'What are you interested in playing?',\n [SOMEONE_ELSE]: 'What are they interested in playing?',\n },\n answers: [\n {\n answerId: 1,\n analyticsId: 'kickabout_football',\n title: 'Kickabout',\n description: 'Casual play, just for fun',\n value: KICKABOUT_CASUAL,\n answerType: 'primary',\n image: publicPath('/images/common/cutouts/casual-girl.png'),\n keylineVariant: 2,\n ageRanges: [\n {\n min: 0,\n max: 0,\n nextQuestionId: '4760ff1b-41f2-4450-8bf4-83dc7384b594',\n },\n ],\n },\n {\n answerId: 2,\n analyticsId: 'club_football',\n title: 'Club',\n description: 'Regular team training and matches',\n value: CLUB,\n answerType: 'primary',\n image: publicPath('/images/common/cutouts/club-girl.png'),\n keylineVariant: 3,\n ageRanges: [\n {\n min: 0,\n max: 0,\n nextQuestionId: '4760ff1b-41f2-4450-8bf4-83dc7384b594',\n },\n ],\n },\n {\n answerId: 3,\n analyticsId: 'do_not_mind',\n title: \"I don't mind\",\n answerType: 'secondary',\n value: DONT_MIND,\n ageRanges: [\n {\n min: 0,\n max: 0,\n nextQuestionId: '4760ff1b-41f2-4450-8bf4-83dc7384b594',\n },\n ],\n },\n ],\n },\n];\n","import { MYSELF, OPT_CURRENT_LOCATION_ID, SOMEONE_ELSE } from '../../../const';\n\nexport default [\n {\n id: '703663f0-3c99-4c4e-ac80-62184ad0546f',\n questionOrder: 8,\n readableId: OPT_CURRENT_LOCATION_ID,\n type: 'location',\n title: {\n [MYSELF]: 'Lets find what’s closest to you!',\n [SOMEONE_ELSE]: 'Lets find what’s closest to them!',\n },\n answers: [\n {\n answerId: 1,\n analyticsId: 'current_location',\n title: 'Use current location',\n ageRanges: [\n {\n min: 0,\n max: 0,\n nextQuestionId: null,\n },\n ],\n },\n {\n answerId: 2,\n analyticsId: 'enter_postcode',\n title: 'Enter postcode',\n ageRanges: [\n {\n min: 0,\n max: 0,\n nextQuestionId: '4651266c-f0eb-479e-a93e-49d7829adefe',\n },\n ],\n },\n ],\n },\n];\n","import {\n BOYS_AND_MEN,\n BOYS_OR_MEN,\n BOYS_OR_MEN_MIXED,\n GIRLS_AND_WOMEN_MIXED,\n GIRLS_OR_WOMEN,\n GIRLS_OR_WOMEN_MIXED,\n MIXED,\n MYSELF,\n PLAY_WITH_ID,\n SOMEONE_ELSE,\n} from '../../../const';\nimport publicPath from '../../../utils/publicPath';\n\nexport default [\n {\n id: 'd9572be5-72f2-42af-87ea-a3298c6eacd7',\n questionOrder: 3,\n readableId: PLAY_WITH_ID,\n type: 'multi_optional',\n title: {\n [MYSELF]: 'What type of football do you want to play?',\n [SOMEONE_ELSE]: 'What type of football do they want to play?',\n },\n helpText: 'Select your preferences',\n multiOptional: {\n mandate: [\n {\n answerId: 6,\n analyticsId: 'female_football',\n title: 'Female football',\n answerType: 'primary',\n value: BOYS_AND_MEN,\n combinedValue: GIRLS_AND_WOMEN_MIXED,\n image: publicPath('/images/common/cutouts/club-girl.png'),\n keylineVariant: 3,\n ageRanges: [\n {\n min: 0,\n max: 11,\n nextQuestionId: 'dde0352b-5420-494a-bdee-0a7e5260e617',\n },\n {\n min: 12,\n max: 14,\n nextQuestionId: '123735b9-f394-4e48-800b-a6fcfd9a479d',\n },\n {\n min: 15,\n max: 15,\n nextQuestionId: '4760ff1b-41f2-4450-8bf4-83dc7384b594',\n },\n {\n min: 16,\n max: 99,\n nextQuestionId: '123735b9-f394-4e48-800b-a6fcfd9a479d',\n },\n ],\n },\n ],\n },\n answers: {\n mandatory: [\n {\n answerId: 1,\n analyticsId: 'female_football',\n title: 'Female football',\n answerType: 'primary',\n value: GIRLS_OR_WOMEN,\n combinedValue: GIRLS_OR_WOMEN_MIXED,\n image: publicPath('/images/common/cutouts/club-girl.png'),\n keylineVariant: 3,\n ageRanges: [\n {\n min: 0,\n max: 11,\n nextQuestionId: 'dde0352b-5420-494a-bdee-0a7e5260e617',\n },\n {\n min: 12,\n max: 14,\n nextQuestionId: '123735b9-f394-4e48-800b-a6fcfd9a479d',\n },\n {\n min: 15,\n max: 15,\n nextQuestionId: '4760ff1b-41f2-4450-8bf4-83dc7384b594',\n },\n {\n min: 16,\n max: 99,\n nextQuestionId: '123735b9-f394-4e48-800b-a6fcfd9a479d',\n },\n ],\n },\n {\n answerId: 2,\n analyticsId: 'male_football',\n title: 'Male football',\n answerType: 'primary',\n value: BOYS_OR_MEN,\n combinedValue: BOYS_OR_MEN_MIXED,\n image: publicPath('/images/common/cutouts/boy.png'),\n keylineVariant: 1,\n ageRanges: [\n {\n min: 5,\n max: 99,\n nextQuestionId: '61459727-eb01-4eff-96d6-d677fdc63e3d',\n },\n ],\n },\n ],\n optional: {\n answerId: 3,\n analyticsId: 'mixed_football',\n title: 'Mixed football',\n answerType: 'primary',\n value: MIXED,\n image: publicPath('/images/common/cutouts/mixed-child.png'),\n ageRanges: [\n {\n min: 0,\n max: 15,\n nextQuestionId: '4760ff1b-41f2-4450-8bf4-83dc7384b594',\n },\n {\n min: 16,\n max: 17,\n nextQuestionId: '123735b9-f394-4e48-800b-a6fcfd9a479d',\n },\n {\n min: 18,\n max: 99,\n nextQuestionId: '4760ff1b-41f2-4450-8bf4-83dc7384b594',\n },\n ],\n },\n },\n infoLink: {\n text: 'Find out more on FA policy',\n href: '',\n },\n },\n {\n id: 'd43569c8-1a01-4c53-9575-128698905fbc',\n questionOrder: 3,\n readableId: PLAY_WITH_ID,\n type: 'multi_optional',\n title: {\n [MYSELF]: 'What type of football do you want to play?',\n [SOMEONE_ELSE]: 'What type of football do they want to play?',\n },\n helpText: 'Select your preferences',\n multiOptional: {\n mandate: [\n {\n answerId: 1,\n analyticsId: 'female_football',\n title: 'Female football',\n answerType: 'primary',\n value: BOYS_AND_MEN,\n combinedValue: GIRLS_AND_WOMEN_MIXED,\n image: publicPath('/images/common/cutouts/female.png'),\n keylineVariant: 3,\n ageRanges: [\n {\n min: 0,\n max: 0,\n nextQuestionId: '123735b9-f394-4e48-800b-a6fcfd9a479d',\n },\n ],\n },\n ],\n },\n answers: {\n mandatory: [\n {\n answerId: 1,\n analyticsId: 'female_football',\n title: 'Female football',\n answerType: 'primary',\n value: GIRLS_OR_WOMEN,\n combinedValue: GIRLS_OR_WOMEN_MIXED,\n image: publicPath('/images/common/cutouts/female.png'),\n keylineVariant: 3,\n ageRanges: [\n {\n min: 0,\n max: 0,\n nextQuestionId: '123735b9-f394-4e48-800b-a6fcfd9a479d',\n },\n ],\n },\n {\n answerId: 2,\n analyticsId: 'male_football',\n title: 'Male football',\n answerType: 'primary',\n value: BOYS_OR_MEN,\n combinedValue: BOYS_OR_MEN_MIXED,\n image: publicPath('/images/common/cutouts/male.png'),\n keylineVariant: 1,\n ageRanges: [\n {\n min: 0,\n max: 0,\n nextQuestionId: '61459727-eb01-4eff-96d6-d677fdc63e3d',\n },\n ],\n },\n ],\n optional: {\n answerId: 3,\n analyticsId: 'mixed_football',\n title: 'Mixed football',\n answerType: 'primary',\n value: MIXED,\n image: publicPath('/images/common/cutouts/mixed-adult.png'),\n ageRanges: [\n {\n min: 0,\n max: 0,\n nextQuestionId: '4760ff1b-41f2-4450-8bf4-83dc7384b594',\n },\n ],\n },\n },\n infoLink: {\n text: 'Find out more on FA policy',\n href: '',\n },\n },\n];\n","import { MYSELF, POSTCODE_ID, SOMEONE_ELSE } from '../../../const';\n\nexport default [\n {\n id: '4651266c-f0eb-479e-a93e-49d7829adefe',\n questionOrder: 8,\n readableId: POSTCODE_ID,\n type: 'postcode',\n title: {\n [MYSELF]: 'Lets find what’s closest to you!',\n [SOMEONE_ELSE]: 'Lets find what’s closest to them!',\n },\n placeholder: 'Enter your postcode',\n ageRanges: [\n {\n min: 0,\n max: 0,\n nextQuestionId: null,\n },\n ],\n },\n];\n","import { MY_CHILD, MYSELF, SEARCH_FOR_ID, SOMEONE_ELSE } from '../../../const';\nimport publicPath from '../../../utils/publicPath';\n\nexport default [\n {\n id: '588f380b-5900-4bc6-a771-88bfc61964ff',\n questionOrder: 1,\n readableId: SEARCH_FOR_ID,\n type: 'single',\n title: {\n [MYSELF]: 'Who are you searching for?',\n [SOMEONE_ELSE]: 'Who are you searching for?',\n },\n answers: [\n {\n answerId: 1,\n analyticsId: 'my_self',\n title: MYSELF,\n answerType: 'primary',\n value: MYSELF,\n image: publicPath('/images/common/cutouts/myself.png'),\n keylineVariant: 3,\n ageRanges: [\n {\n min: 0,\n max: 0,\n nextQuestionId: '346dbfab-03fa-4a3a-ab18-b461d0d56dc7',\n },\n ],\n },\n {\n answerId: 2,\n analyticsId: 'my_child',\n title: MY_CHILD,\n answerType: 'primary',\n value: SOMEONE_ELSE,\n image: publicPath('/images/common/cutouts/my-child.png'),\n keylineVariant: 2,\n ageRanges: [\n {\n min: 0,\n max: 0,\n nextQuestionId: '346dbfab-03fa-4a3a-ab18-b461d0d56dc7',\n },\n ],\n },\n {\n answerId: 3,\n analyticsId: 'someone_else',\n title: SOMEONE_ELSE,\n answerType: 'secondary',\n value: SOMEONE_ELSE,\n ageRanges: [\n {\n min: 0,\n max: 0,\n nextQuestionId: '346dbfab-03fa-4a3a-ab18-b461d0d56dc7',\n },\n ],\n },\n ],\n },\n];\n","import {\n ALL_DAYS,\n MYSELF,\n SOMEONE_ELSE,\n WEEKDAYS,\n WEEKDAYS_ID,\n WEEKENDS,\n} from '../../../const';\n\nexport default [\n {\n id: '4760ff1b-41f2-4450-8bf4-83dc7384b594',\n questionOrder: 5,\n readableId: WEEKDAYS_ID,\n type: 'single',\n title: {\n [MYSELF]: 'When do you want to play?',\n [SOMEONE_ELSE]: 'When do they want to play?',\n },\n answers: [\n {\n answerId: 1,\n analyticsId: 'alldays',\n title: 'All days',\n answerType: 'basic',\n value: ALL_DAYS,\n ageRanges: [\n {\n min: 0,\n max: 0,\n nextQuestionId: '191d8b36-171e-4227-836f-58a0b597744a',\n },\n ],\n },\n {\n answerId: 2,\n analyticsId: 'weekdays',\n title: 'Weekdays',\n answerType: 'basic',\n value: WEEKDAYS,\n ageRanges: [\n {\n min: 0,\n max: 0,\n nextQuestionId: '191d8b36-171e-4227-836f-58a0b597744a',\n },\n ],\n },\n {\n answerId: 3,\n analyticsId: 'weekends',\n title: 'Weekends',\n answerType: 'basic',\n value: WEEKENDS,\n ageRanges: [\n {\n min: 0,\n max: 0,\n nextQuestionId: '191d8b36-171e-4227-836f-58a0b597744a',\n },\n ],\n },\n ],\n },\n];\n","import ageQuestions from './questions/age';\nimport disabilityOptionQuestions from './questions/disabilityOption';\nimport disabilityTypeQuestions from './questions/disabilityType';\nimport footballTypeQuestions from './questions/footballType';\nimport locationQuestions from './questions/location';\nimport playWithQuestions from './questions/playWith';\nimport postcodeQuestions from './questions/postcode';\nimport searchForQuestions from './questions/searchFor';\nimport weekdaysQuestions from './questions/weekdays';\n\nconst onboardingQuestions = [\n ...searchForQuestions,\n ...ageQuestions,\n ...playWithQuestions,\n ...footballTypeQuestions,\n ...weekdaysQuestions,\n ...disabilityOptionQuestions,\n ...disabilityTypeQuestions,\n ...locationQuestions,\n ...postcodeQuestions,\n];\n\nexport default onboardingQuestions;\n","import publicPath from '../../utils/publicPath';\n\nconst recommendations = {\n hero: {\n 1: {\n text: {\n main: 'Casual football recommendations',\n },\n images: {\n desktop: {\n src: publicPath('/images/desktop/recommendations/casual-hero@x1.jpg'),\n },\n mobile: {\n src: publicPath('/images/mobile/recommendations/casual-hero@x1.jpg'),\n },\n },\n },\n 2: {\n text: {\n main: 'Club football recommendations',\n },\n images: {\n desktop: {\n src: publicPath('/images/desktop/recommendations/club-hero@x1.jpg'),\n },\n mobile: {\n src: publicPath('/images/mobile/recommendations/club-hero@x1.jpg'),\n },\n },\n },\n 3: {\n text: {\n main: 'Football recommendations',\n },\n images: {\n desktop: {\n src: publicPath('/images/desktop/recommendations/mixed-hero@x2.jpg'),\n },\n mobile: {\n src: publicPath('/images/desktop/recommendations/mixed-hero@x2.jpg'),\n },\n },\n },\n },\n recommendations: [\n {\n FootballType: '11v11',\n IntroText: 'Get involved in competitive or social team football',\n Media: {\n src: publicPath('/images/desktop/recommendations/result.png'),\n },\n },\n {\n FootballType: 'Small Sided',\n IntroText:\n 'Smaller formats of football for all ages, genders and abilities including matches up to 9-a-side and Mini-Soccer for kids',\n Media: {\n src: publicPath('/images/desktop/recommendations/result-2.png'),\n },\n },\n {\n FootballType: 'Futsal',\n IntroText: 'Get involved in competitive or social team football',\n Media: {\n src: publicPath('/images/desktop/recommendations/result.png'),\n },\n },\n {\n FootballType: 'Traditional',\n IntroText: 'Get involved in competitive or social team football',\n Media: {\n src: publicPath('/images/desktop/recommendations/result.png'),\n },\n },\n {\n FootballType: 'Futsal Extra',\n IntroText: 'Get involved in competitive or social team football',\n Media: {\n src: publicPath('/images/desktop/recommendations/result.png'),\n },\n },\n {\n FootballType: 'Futsal Extra 2',\n IntroText: 'Get involved in competitive or social team football',\n Media: {\n src: publicPath('/images/desktop/recommendations/result.png'),\n },\n },\n {\n FootballType: 'Futsal Extra 3',\n IntroText: 'Get involved in competitive or social team football',\n Media: {\n src: publicPath('/images/desktop/recommendations/result.png'),\n },\n },\n ],\n};\n\nexport default recommendations;\n","import publicPath from '../../utils/publicPath';\n\nconst venuePage = {\n hero: {\n images: {\n desktop: {\n src: publicPath(\n '/images/desktop/recommendations/provider-center-hero@x2.jpg'\n ),\n },\n mobile: {\n src: publicPath(\n '/images/mobile/recommendations/provider-center-hero@x2.jpg'\n ),\n },\n },\n },\n faInitiatives: [\n {\n id: 1,\n description: 'Fun and friendly football for girls aged 5-11. ',\n href: 'https://www.englandfootball.com/play/womens-and-girls-football/weetabix-wildcats',\n initiativeLogo: {\n desktop: {\n src: publicPath('/images/desktop/home/wildcats-logo.svg'),\n },\n mobile: {\n src: publicPath('/images/desktop/home/wildcats-logo.svg'),\n },\n },\n images: {\n desktop: {\n src: publicPath('/images/desktop/venue/fa-events/wildcats.png'),\n width: 754,\n },\n mobile: {\n src: publicPath('/images/desktop/venue/fa-events/wildcats.png'),\n width: 754,\n },\n },\n },\n {\n id: 2,\n description:\n 'Casual football for everyone. Fancy a game? Just say, Just Play. ',\n href: 'https://www.englandfootball.com/play/adult-football/just-play',\n initiativeLogo: {\n desktop: {\n src: publicPath('/images/desktop/home/just-play-logo.svg'),\n },\n mobile: {\n src: publicPath('/images/desktop/home/just-play-logo.svg'),\n },\n },\n images: {\n desktop: {\n src: publicPath('/images/desktop/venue/fa-events/just-play.png'),\n width: 754,\n },\n mobile: {\n src: publicPath('/images/desktop/venue/fa-events/just-play.jpg'),\n width: 754,\n },\n },\n },\n {\n id: 3,\n description:\n 'Stay active with small-sided Walking Football for over 50s.',\n href: 'https://www.englandfootball.com/play/age-uk',\n initiativeLogo: {\n desktop: {\n src: publicPath('/images/desktop/home/age-uk-logo.svg'),\n },\n mobile: {\n src: publicPath('/images/desktop/home/age-uk-logo.svg'),\n },\n },\n images: {\n desktop: {\n src: publicPath('/images/desktop/home/age-uk.png'),\n width: 752,\n },\n mobile: {\n src: publicPath('/images/desktop/home/age-uk.png'),\n width: 752,\n },\n },\n },\n ],\n};\n\nexport default venuePage;\n","import { AGE_GROUP_ID, MYSELF } from '../../../const';\n\nexport default [\n {\n id: '346dbfab-03fa-4a3a-ab18-b461d0d56dc8',\n questionOrder: 2,\n readableId: AGE_GROUP_ID,\n analyticsId: 'selected_age_group',\n type: 'age_group_volunteer',\n title: {\n [MYSELF]: 'For what age group would you like to volunteer?',\n Mychild: 'For what age group would you like to volunteer?',\n },\n helpText: 'Please choose the age group that best suits you',\n answers: [\n {\n age: 5,\n ageOptions: ['U6,U7'],\n options: ['U6-U7'],\n },\n {\n age: 8,\n ageOptions: ['U8,U9,U10'],\n options: ['U8-U10'],\n },\n {\n ageOptions: ['U11,U12'],\n age: 10,\n options: ['U11-U12'],\n },\n {\n age: 12,\n options: ['U13-U14'],\n ageOptions: ['U13,U14'],\n },\n {\n ageOptions: ['U15,U16'],\n age: 14,\n options: ['U15-U16'],\n },\n {\n age: 16,\n ageOptions: ['U17,U18'],\n options: ['U17-U18'],\n },\n {\n options: ['Open Aged'],\n ageOptions: ['Open Aged'],\n age: 21,\n },\n ],\n ageRanges: [\n {\n min: 0,\n max: 0,\n nextQuestionId: 'd9572be5-72f2-42af-87ea-a3298c6eacd7',\n },\n ],\n },\n];\n","import ageGroupVolunteer from './questions/ageGroupVolunteer';\nimport disabilityOptionQuestions from './questions/disabilityOption';\nimport disabilityTypeQuestions from './questions/disabilityType';\nimport footballTypeQuestions from './questions/footballType';\nimport locationQuestions from './questions/location';\nimport playWithQuestions from './questions/playWith';\nimport postcodeQuestions from './questions/postcode';\nimport searchForQuestions from './questions/searchFor';\nimport weekdaysQuestions from './questions/weekdays';\n\nconst volunteerOnboarding = [\n ...searchForQuestions,\n ...ageGroupVolunteer,\n ...playWithQuestions,\n ...footballTypeQuestions,\n ...weekdaysQuestions,\n ...disabilityOptionQuestions,\n ...disabilityTypeQuestions,\n ...locationQuestions,\n ...postcodeQuestions,\n];\n\nexport default volunteerOnboarding;\n","import axios from 'axios';\n\nimport b2cEnvVariables from '../b2cEnvVariables';\nimport {\n Api404,\n Api500,\n CLUB,\n KICKABOUT_CASUAL,\n MAX_DURATION,\n MAX_DURATION_OVERRIDE,\n SELECTED_RECOMMENDATIONS_TYPE_ID,\n SESSION_DURATION,\n UnspecifiedError,\n} from '../const';\nimport clubPage from '../mocks/data/clubPage';\nimport moRecommendations from '../mocks/data/moRecommendations';\nimport onboarding from '../mocks/data/onboarding';\nimport recommendations from '../mocks/data/recommendations';\nimport venuePage from '../mocks/data/venuePage';\nimport volunteerOnboarding from '../mocks/data/volunteerOnboarding';\nimport AppError from '../utils/AppError';\n\nconst apiUrlMap = {\n [KICKABOUT_CASUAL]: 'casualrecommendation',\n [CLUB]: 'clubrecommendation',\n};\n\nconst miniOnboardingApiUrlMap = {\n [KICKABOUT_CASUAL]: 'sessionrecommendation',\n [CLUB]: 'teamsrecommendation',\n};\n\n// const apiMLUrlMap = {\n// [KICKABOUT_CASUAL]: 'mlcasualrecommendation',\n// [CLUB]: 'mlclubrecommendation',\n// };\n\nconst errorMapping = {\n 404: Api404,\n 500: Api500,\n};\n\nconst appConfig = b2cEnvVariables(process.env.REACT_APP_ENVIRONMENT);\n\nconst baseURL = process.env.REACT_APP_API_URL;\nconst b2cURL = appConfig?.GlobalLogout;\nconst subscriptionKey = process.env.REACT_APP_SUBSCRIPTION_KEY;\nconst baseExternalURL = process.env.REACT_APP_API_URL_EXTERNAL;\nconst subscriptionKeyAccreditations =\n process.env.REACT_APP_SUBSCRIPTION_KEY_ACC;\nconst siteCoreBaseURL = process.env.REACT_APP_SITECORE_API_URL;\n\nconst baseHeaders = {\n 'Content-Type': 'application/json',\n 'Ocp-Apim-Subscription-Key': subscriptionKey,\n};\n\nconst service = axios.create({\n baseURL,\n headers: baseHeaders,\n});\n\nservice.interceptors.response.use(undefined, error => {\n const status = error.response?.status.toString();\n\n throw new AppError(\n status && status in errorMapping ? errorMapping[status] : UnspecifiedError\n );\n});\n\n// TODO: move normalisers to their specific files\n\n// Preferences normaliser\nconst normalisePreferences = preferences => {\n const { [SESSION_DURATION]: SessionDuration } = preferences;\n\n // TODO: Move this logic to the back-end\n // Please refer to this ticket https://the-fa.atlassian.net/browse/EF-444\n // for more details about this change\n if (SessionDuration === MAX_DURATION) {\n return {\n ...preferences,\n SessionDuration: MAX_DURATION_OVERRIDE,\n };\n }\n\n return preferences;\n};\n\n// GET\nexport const getOnboardingQuestions = dataset => {\n return new Promise(resolve => {\n resolve(dataset ? { data: volunteerOnboarding } : { data: onboarding });\n });\n};\n\nexport const getHomepageData = () => {\n const siteCoreAPIUrl = `${siteCoreBaseURL}/layout/render/jss?sc_site=discoverfootball-site&sc_apikey={68A451F8-7553-4D18-8C3D-4BDA0F132688}&item={352FCB53-6C93-4651-A54F-43EDA3890758}&sc_lang=en`;\n return service.get(siteCoreAPIUrl, {\n headers: {\n ...baseHeaders,\n 'Ocp-Apim-Subscription-Key': subscriptionKeyAccreditations,\n },\n });\n};\n\nexport const getRecommendationsPageData = () => {\n return new Promise(resolve => {\n resolve({ data: recommendations });\n });\n};\n\nexport const getVenuePageData = () => {\n return new Promise(resolve => {\n resolve({ data: venuePage });\n });\n};\n\nexport const getMORecommendationsPageData = () => {\n return new Promise(resolve => {\n resolve({ data: moRecommendations });\n });\n};\n\nexport const getClubPageData = () => {\n return new Promise(resolve => {\n resolve({ data: clubPage });\n });\n};\n\n// get menus\nexport const getHeaderMenu = () => {\n // return new Promise(resolve => {\n // resolve({ data: headerMenu });\n // });\n // const siteCoreAPIUrl = `${siteCoreBaseURL}/layout/placeholder/jss?placeholderName=header&item=/sitecore/content/EnglandFootball/home&sc_apikey={E2F3D43E-B1FD-495E-B4B1-84579892422A}`;\n const siteCoreAPIUrl = `${siteCoreBaseURL}/layout/placeholder/jss?placeholderName=header&item=/sitecore/content/EnglandFootball/Home&sc_apikey={E2F3D43E-B1FD-495E-B4B1-84579892422A}`;\n return service.get(siteCoreAPIUrl, {\n headers: {\n ...baseHeaders,\n 'Ocp-Apim-Subscription-Key': subscriptionKeyAccreditations,\n },\n });\n};\n\nexport const getSessionLogo = () => {\n const siteCoreAPIUrl = `${siteCoreBaseURL}/layout/placeholder/jss?placeholderName=FAInitiatives&item=/sitecore/content/DiscoverFootball/Home&sc_apikey={E2F3D43E-B1FD-495E-B4B1-84579892422A}`;\n return service.get(siteCoreAPIUrl, {\n headers: {\n ...baseHeaders,\n 'Ocp-Apim-Subscription-Key': subscriptionKeyAccreditations,\n },\n });\n};\n\nexport const getClubAccreditation = id => {\n return service.get(`${baseExternalURL}/${id}/accreditation`, {\n headers: {\n ...baseHeaders,\n 'Ocp-Apim-Subscription-Key': subscriptionKeyAccreditations,\n },\n });\n};\n\nexport const getClubContactDetails = id => {\n return service.get(`${baseExternalURL}/${id}/clubcontact`, {\n headers: {\n ...baseHeaders,\n 'Ocp-Apim-Subscription-Key': subscriptionKeyAccreditations,\n },\n });\n};\n\n// POST\nexport const getRecommendations = (footballType, preferences) => {\n const endpoint = apiUrlMap[footballType];\n const normalisedPreferences = normalisePreferences(preferences);\n\n return service.post(`/${endpoint}`, normalisedPreferences);\n};\n\n//POST\nexport const getMiniOnboardingRecommendations = (footballType, preferences) => {\n const endpoint = miniOnboardingApiUrlMap[footballType];\n const normalisedPreferences = normalisePreferences(preferences);\n\n return service.post(`/${endpoint}`, normalisedPreferences);\n};\n\n//Global log-out API\nexport const globalLogOut = (itemtoken, userId, lastLogOn) => {\n return service.post(\n `${b2cURL}/ValidateSignInSessions`,\n {\n userId: userId,\n lastLogOnTime: lastLogOn,\n },\n {\n headers: {\n Authorization: itemtoken,\n },\n }\n );\n};\n\n//Revoking after global log-out\nexport const revokeSignIn = (itemtoken, accountUser) => {\n return service.post(\n `${b2cURL}/RevokeSignInSessions`,\n {\n userId: accountUser,\n },\n {\n headers: {\n Authorization: itemtoken,\n },\n }\n );\n};\n\n// ML Api is removed temporarily\n// POST\n// export const getMLRecommendations = (footballType, preferences) => {\n// const endpoint = apiMLUrlMap[footballType];\n// const normalisedPreferences = normalisePreferences(preferences);\n\n// return service.post(`/${endpoint}`, normalisedPreferences);\n// };\n\nexport const getProviderDetails = (id, providerId, preferences) => {\n return service.post(`${baseURL}/provider`, {\n PitchFinderId: id,\n ProviderId:\n typeof providerId === 'string' ? providerId : providerId?.toString(),\n PlayWith: preferences.PlayWith,\n Age: preferences.Age,\n WeekDays: preferences.WeekDays,\n Disabilityoption: preferences.Disabilityoption,\n Latitude: preferences.Latitude,\n Longitude: preferences.Longitude,\n DisabilityType: preferences.DisabilityType,\n FootballType: preferences[SELECTED_RECOMMENDATIONS_TYPE_ID],\n PageNumber: preferences.PageNumber,\n PageSize: preferences.PageSize,\n });\n};\n\nexport const getVenueDetails = (id, preferences) => {\n return service.post(`${baseURL}/centre`, {\n CentreId: id,\n Age: preferences.Age,\n PlayWith: preferences.PlayWith,\n FootballType: preferences[SELECTED_RECOMMENDATIONS_TYPE_ID],\n WeekDays: preferences.WeekDays,\n Disabilityoption: preferences.Disabilityoption,\n DisabilityType: preferences.DisabilityType,\n Latitude: preferences.Latitude,\n Longitude: preferences.Longitude,\n PageNumber: preferences.PageNumber,\n PageSize: preferences.PageSize,\n });\n};\n\nexport const getClubDetails = (id, preferences) => {\n return service.post(`${baseURL}/club`, {\n ClubId: id,\n Age: preferences.Age,\n PlayWith: preferences.PlayWith,\n FootballType: preferences[SELECTED_RECOMMENDATIONS_TYPE_ID],\n WeekDays: preferences.WeekDays,\n Disabilityoption: preferences.Disabilityoption,\n DisabilityType: preferences.DisabilityType,\n Latitude: preferences.Latitude,\n Longitude: preferences.Longitude,\n });\n};\n\nexport const getTeamDetails = (id, preferences) => {\n const url = !preferences\n ? `${baseURL}/team?FadwTeamId=${id}`\n : `${baseURL}/team?FadwTeamId=${id}&Latitude=${preferences.Latitude}&Longitude=${preferences.Longitude}`;\n return service.get(url, {\n headers: {\n ...baseHeaders,\n 'Ocp-Apim-Subscription-Key': subscriptionKey,\n },\n });\n};\n\nexport const getMatchDetails = id => {\n const WgsTeamID = id.toString().toLowerCase();\n return service.post(\n `${baseExternalURL}/team`,\n { WgsTeamIDs: [WgsTeamID] },\n {\n headers: {\n ...baseHeaders,\n 'Ocp-Apim-Subscription-Key': subscriptionKeyAccreditations,\n },\n }\n );\n};\n\n// submit contact form\nexport const submitContactForm = requestPayload => {\n return service.post(`${baseURL}/notification`, requestPayload);\n};\n\nexport const getSocialMediaData = WgsClubId => {\n return service.get(`${baseExternalURL}/${WgsClubId}/socialmedia`, {\n headers: {\n ...baseHeaders,\n 'Ocp-Apim-Subscription-Key': subscriptionKeyAccreditations,\n },\n });\n};\n","import { createContext, useCallback, useContext, useState } from 'react';\n\nexport const AccessTokenContext = createContext();\n\nexport const AccessTokenProvider = ({ children }) => {\n const [token, setToken] = useState({});\n\n const setTokenID = useCallback(accesstoken => {\n setToken(accesstoken);\n }, []);\n\n return (\n \n {children}\n \n );\n};\n\nexport const useAccessTokenContext = () => useContext(AccessTokenContext);\n","/** @jsxRuntime classic */\n/** @jsx jsx */\nimport { jsx } from '@emotion/react';\n\nimport useStyles from './styles';\n\nconst LinkButton = ({ children, ...rest }) => {\n const styles = useStyles();\n\n return (\n \n );\n};\n\nexport default LinkButton;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { utility, colors, spacing } = useTheme();\n\n return {\n linkBtn: css`\n ${utility.buttonDefault};\n display: block;\n color: ${colors.blue};\n text-decoration: underline;\n font-weight: 700;\n padding: ${spacing.xs} ${spacing.m};\n transition: color 0.5s;\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\n\nimport { forwardRef } from 'react';\n\nimport useStyles from './styles';\n\nconst Text = forwardRef(({ as: Tag = 'p', size, children, ...rest }, ref) => {\n const styles = useStyles();\n\n return (\n \n {children}\n \n );\n});\n\nexport default Text;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { breakpoints, typography } = useTheme();\n\n return {\n text: size => {\n const styles = size ? typography.headings[size] : typography.body;\n\n return css`\n ${styles.mobile};\n\n ${breakpoints.l} {\n ${styles.desktop};\n }\n `;\n },\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport React from 'react';\n\nimport b2cEnvVariables from '../../b2cEnvVariables';\nimport ExternalLink from '../ExternalLink';\nimport { ExternalArrow } from '../Icons';\nimport LinkButton from '../LinkButton';\nimport Text from '../Text';\nimport useStyles from './styles';\n\nconst AccountDetails = ({ logOut, isDesktop }) => {\n const styles = useStyles();\n const appConfig = b2cEnvVariables(process.env.REACT_APP_ENVIRONMENT);\n\n return (\n \n );\n};\n\nexport default AccountDetails;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { borderRadius, breakpoints, colors } = useTheme();\n\n return {\n base: css`\n width: 100%;\n padding: 8px 20px 34px 20px;\n height: 100vh;\n z-index: 1;\n\n ${breakpoints.l} {\n position: absolute;\n box-shadow: 0 34px 34px rgb(0 0 0 / 25%),\n inset 0 1px 3px rgb(255 255 255 / 50%);\n backdrop-filter: blur(81px);\n border-radius: ${borderRadius.xl};\n right: 0;\n left: auto;\n width: auto;\n height: auto;\n min-width: 354px;\n min-height: 208px;\n top: 60px;\n height: 100%;\n }\n\n background: ${colors.greyShade2};\n background-blend-mode: hard-light;\n\n &::before {\n border: transparent;\n height: -29px;\n content: '';\n border-width: 1.25rem;\n border-style: solid;\n border-color: transparent transparent ${colors.greyShade2} transparent;\n position: absolute;\n top: -2rem;\n right: 0.8rem;\n }\n `,\n\n title: css`\n color: ${colors.darkGrey};\n text-align: left;\n padding-bottom: 1.6rem;\n border-bottom: 1px solid rgba(91, 104, 133, 0.1);\n font-size: 1.5rem;\n font-weight: 700;\n padding: 20px 0;\n font-style: italic;\n\n ${breakpoints.l} {\n font-size: 1.5rem;\n font-weight: 700;\n }\n `,\n link: css`\n padding: 0;\n `,\n menu: css`\n text-align: left;\n margin-top: 24px;\n border-bottom: 1px solid rgba(91, 104, 133, 0.1);\n\n li {\n border: ${borderRadius.s} solid transparent;\n\n &:last-child {\n padding-bottom: 24px;\n }\n\n a,\n button {\n text-decoration: none;\n color: ${colors.darkGrey};\n font-size: 1.125rem;\n padding: 0;\n text-decoration: none;\n font-weight: normal;\n padding: 10px 8px;\n\n &:hover,\n &:focus {\n color: ${colors.red};\n text-decoration: underline;\n }\n }\n }\n `,\n externalArrow: css`\n margin-left: 5px;\n padding: 1px;\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport { useIsAuthenticated, useMsal } from '@azure/msal-react';\nimport { useCallback, useEffect, useState } from 'react';\n\nimport { loginRequest } from '../../authConfig';\nimport { useAccessTokenContext } from '../../context/accessToken';\nimport useMediaQuery from '../../hooks/useMediaQuery';\nimport { revokeSignIn } from '../../services';\nimport AccountDetails from '../AccountDetails';\nimport Button from '../Button';\nimport ExternalLink from '../ExternalLink';\nimport Link from '../Link';\nimport useStyles from './styles';\n\nconst B2cSignIn = ({ isHamburgerMenu, accountDetailsClick, isB2cMenu }) => {\n const styles = useStyles();\n const [isMouseOver, setIsMouseOver] = useState(false);\n const isAuthenticated = useIsAuthenticated();\n const { instance, inProgress, accounts } = useMsal();\n const [name, setName] = useState(null);\n const isDesktop = useMediaQuery('screen and (min-width: 992px)');\n const { token } = useAccessTokenContext();\n\n useEffect(() => {\n if (accounts.length > 0) {\n const accountsClaims = accounts[0].idTokenClaims;\n const name =\n accountsClaims &&\n `${accountsClaims.given_name.charAt(\n 0\n )}${accountsClaims.family_name.charAt(0)}`;\n setName(name);\n } else {\n setName(null);\n }\n }, [accounts]);\n\n const handleLogin = useCallback(() => {\n localStorage.setItem('rootUrl', localStorage.getItem('pathInfomation'));\n instance.loginRedirect(loginRequest);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const logOut = useCallback(() => {\n const accountUser = accounts[0]?.idTokenClaims?.sub;\n //revoking before logout\n revokeSignIn(token, accountUser)\n .then(revokeResponse => {\n if (revokeResponse) {\n localStorage.setItem(\n 'rootUrl',\n localStorage.getItem('pathInfomation')\n );\n }\n })\n .catch(() => {});\n localStorage.setItem('rootUrl', localStorage.getItem('pathInfomation'));\n instance.logout(loginRequest);\n localStorage.clear();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [instance, accounts, token, inProgress]);\n\n return (\n
\n {!isAuthenticated && isDesktop && (\n
\n {' '}\n or\n \n Register Now\n \n
\n )}\n\n {!isAuthenticated && (\n handleLogin()}\n css={styles.signIn(isDesktop)}\n >\n {/* Sign in/Up */}\n \n )}\n\n {isAuthenticated && !isHamburgerMenu && (\n setIsMouseOver(true)}\n onMouseLeave={() => isDesktop && setIsMouseOver(false)}\n onFocus={() => setIsMouseOver(true)}\n onBlur={() => isDesktop && setIsMouseOver(false)}\n >\n \n {isDesktop && My Account}{' '}\n {name}\n \n {isMouseOver && isB2cMenu && (\n logOut()}\n isDesktop={isDesktop}\n >\n )}\n
\n )}\n \n );\n};\n\nexport default B2cSignIn;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { breakpoints, colors, spacing } = useTheme();\n\n return {\n b2cNavContainer: css`\n text-align: right;\n `,\n signInDesktop: css`\n padding: 0;\n background-color: transparent;\n text-decoration: underline;\n color: ${colors.darkGrey};\n font-size: ${spacing.s};\n padding-right: 4px;\n\n &:not(:disabled):hover {\n background-color: transparent;\n }\n `,\n signIn: isDesktop => css`\n font-size: ${spacing.s};\n line-height: 1.5rem;\n display: grid;\n color: ${colors.darkGrey};\n float: ${isDesktop ? 'right' : 'left'};\n padding: 8px 0;\n font-weight normal;\n cursor: pointer;\n \n ${\n !isDesktop &&\n css`\n position: absolute;\n top: 0;\n height: 70px;\n line-height: 70px;\n align-items: center;\n right: 1.5rem;\n `\n }\n\n a {\n display: inline-block;\n padding-left: 5px;\n color: ${colors.darkGrey};\n font-weight: normal;\n padding-right: 10px;\n\n &:hover {\n color: ${colors.navy};\n }\n }\n\n button {\n &:hover {\n color: ${colors.navy};\n }\n }\n\n &::after {\n content: '';\n background: url('/images/common/profile.svg') no-repeat;\n width: 24px;\n height: 24px;\n display: inline-block;\n position: relative;\n top: 0;\n right: 0;\n }\n\n ${breakpoints.l} {\n grid-auto-flow: column;\n }\n `,\n siteMyAccount: isDesktop => css`\n font-size: ${spacing.s};\n color: ${colors.dodgerBlue};\n font-weight: 500;\n text-align: right;\n display: inline-block;\n background: transparent;\n &:focus,\n &:hover,\n &:not(:disabled):hover {\n background: transparent;\n }\n\n span {\n cursor: pointer;\n }\n\n ${!isDesktop &&\n css`\n text-align: left;\n display: inline-block;\n position: absolute;\n width: 80px;\n height: 100px;\n top: -14px;\n left: 0;\n `}\n `,\n myAccount: css`\n color: ${colors.white};\n font-size: ${spacing.s};\n background-color: ${colors.dodgerBlue};\n border-radius: 7rem;\n width: 34px;\n height: 34px;\n display: inline-block;\n vertical-align: middle;\n text-align: center;\n line-height: 2.125rem;\n cursor: pointer;\n\n ${breakpoints.l} {\n margin-left: 10px;\n }\n `,\n authenticatedTemplate: isDesktop => css`\n ${isDesktop &&\n css`\n position: relative;\n `}\n `,\n displayNone: css`\n display: none;\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport PropTypes from 'prop-types';\nimport { Fragment } from 'react';\n\nimport { EF_LOGO_HREF, EMPTY_STRING } from '../../const';\nimport ExternalLink from '../ExternalLink';\nimport useStyles from './styles';\n\nconst MenuCard = ({\n title,\n childrens,\n id,\n childIndex,\n keysForChildren,\n subTitleClicked,\n isMobile,\n url,\n}) => {\n const styles = useStyles();\n const isExternal = /^https?:\\/\\//i.test(url);\n const href = isExternal ? url : `${EF_LOGO_HREF}${url}`;\n\n return (\n \n {childrens && (\n
  • \n \n {title}\n \n {childrens && childrens.length > 0 && isMobile && (\n isMobile && subTitleClicked(childIndex)}\n id={id}\n >\n
    \n \n \n
    \n \n )}\n {keysForChildren[id] && (\n \n {childrens &&\n childrens.map((childMenu, childrenIndex) => {\n const isExternal = /^https?:\\/\\//i.test(childMenu.url);\n const href = isExternal\n ? childMenu.url\n : `${EF_LOGO_HREF}${childMenu.url}`;\n return (\n
  • \n \n {childMenu.title}\n \n
  • \n );\n })}\n \n )}\n \n )}\n
    \n );\n};\n\nMenuCard.prototype = {\n title: PropTypes.string,\n childrens: PropTypes.object,\n id: PropTypes.string,\n childIndex: PropTypes.string,\n keysForChildren: PropTypes.object,\n subTitleClicked: PropTypes.func,\n isMobile: PropTypes.bool,\n url: PropTypes.string,\n};\n\nexport default MenuCard;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\nimport publicPath from '../../utils/publicPath';\n\nexport default () => {\n const { breakpoints, colors, spacing } = useTheme();\n\n return {\n nestedLink: css`\n display: block;\n text-align: left;\n\n ${breakpoints.l} {\n &:hover {\n span {\n &::after {\n transform: translateX(0) rotate(-90deg);\n opacity: 1;\n }\n }\n }\n }\n `,\n children: isSubChild => css`\n position: relative;\n padding: 20px 0 12px 0;\n &:first-of-type {\n padding: 10px 0 12px 0;\n }\n border-bottom: 1px solid ${isSubChild ? 'transparent' : colors.greyShade1};\n\n ${breakpoints.l} {\n margin-right: 0.4rem;\n border-bottom: 0;\n padding: 20px 0 12px 0;\n &:first-of-type {\n padding: 20px 0 12px 0;\n }\n display: unset;\n }\n `,\n collapseBtn: css`\n border: 0;\n width: 44px;\n height: 30px;\n float: right;\n background: transparent;\n display: grid;\n `,\n subTitle: css`\n display: initial;\n color: ${colors.navy};\n background: transparent;\n text-decoration: none;\n font-size: 1.125rem;\n line-height: 1.625rem;\n font-weight: 500;\n text-transform: uppercase;\n position: relative;\n margin-bottom: 1rem;\n font-weight: normal;\n\n ${breakpoints.l} {\n display: flex;\n justify-content: flex-start;\n padding-bottom: 13px;\n color: ${colors.navy};\n span {\n &::after {\n content: '';\n background: url(${publicPath('/images/common/triangle-arrow.svg')})\n no-repeat center center;\n transform: translateX(-2rem) rotate(-90deg);\n transition: transform 0.3s ease-in-out, opacity 0.3s ease-in-out;\n opacity: 0;\n height: 20px;\n width: 20px;\n position: absolute;\n display: inline-block;\n z-index: 1;\n top: 2px;\n }\n }\n &:hover,\n &:focus {\n span {\n color: ${colors.blue};\n &::after {\n transform: translateX(0) rotate(-90deg);\n opacity: 1;\n }\n }\n }\n }\n `,\n link: css`\n color: ${colors.darkGrey};\n text-decoration: none;\n display: block;\n font-weight: normal;\n font-size: 18px;\n line-height: 26px;\n padding: 0.625rem 0.5rem 0.625rem 0;\n position: relative;\n color: ${colors.darkGrey};\n\n &:focus {\n color: ${colors.blue};\n span::after {\n content: '';\n background: url(${publicPath('/images/common/triangle-arrow.svg')})\n no-repeat center center;\n transform: translateX(-2rem) rotate(-90deg);\n transition: transform 0.3s ease-in-out, opacity 0.3s ease-in-out;\n opacity: 0;\n height: 20px;\n width: 20px;\n position: absolute;\n display: inline-block;\n z-index: 1;\n transform: translateX(0) rotate(-90deg);\n opacity: 1;\n }\n }\n\n span {\n position: relative;\n &::after {\n content: '';\n background: url(${publicPath('/images/common/triangle-arrow.svg')})\n no-repeat center center;\n transform: translateX(-2rem) rotate(-90deg);\n transition: transform 0.3s ease-in-out, opacity 0.3s ease-in-out;\n opacity: 0;\n height: 20px;\n width: 20px;\n position: absolute;\n display: inline-block;\n z-index: 1;\n }\n }\n\n ${breakpoints.l} {\n font-size: 0.875rem;\n line-height: 20px;\n }\n `,\n line: css`\n position: relative;\n \n ${breakpoints.l} {\n &::before {\n content: '';\n position: absolute;\n left: 0;\n width: 46px;\n z-index: 1;\n border-bottom: 1px solid ${colors.darkGrey};\n bottom: 0;\n z-index: 1;\n transition: width 0.4s ease-in-out;\n }\n\n &::after {\n content: '';\n border-bottom: 1px solid ${colors.lightBlue};\n width: 100%;\n position: absolute;\n bottom: 0;\n left: 0;\n }\n\n &:hover {\n background: transparent;\n color: ${colors.blue};\n text-decoration: none;\n\n &::before {\n width: 100%;\n border-bottom: 1px solid #0068b2;\n }\n }\n }\n `,\n externalArrow: css`\n font-size: ${spacing.xs};\n margin-left: ${spacing.xs};\n `,\n subChild: isSubChild => css`\n margin: 17px 0;\n border-top: 1px solid ${colors.greyShade1};\n padding: 16px 0 0 16px;\n\n animation: fadeInAnimation ease 3s 1 forwards;\n\n @keyframes fadeInAnimation {\n 0% {\n opacity: ${isSubChild ? '0' : '1'};\n }\n 100% {\n opacity: ${isSubChild ? '1' : '0'};\n }\n }\n\n ${breakpoints.l} {\n margin: 0;\n border-top: 1px solid transparent;\n padding: 0;\n animation: none;\n }\n `,\n collapseIcon: isOpened => css`\n width: 13px;\n height: 13px;\n position: relative;\n transform: translateY(0px) rotate(0deg);\n transition: 0.5s ease-in-out;\n cursor: pointer;\n margin: 0 auto;\n\n span {\n display: block;\n position: absolute;\n height: 2px;\n width: 100%;\n background: ${colors.red};\n border-radius: 9px;\n opacity: 1;\n right: 0;\n transform: translateY(0px) rotate(0deg);\n transition: 0.25s ease-in-out;\n\n &:nth-of-type(1) {\n top: 8px;\n transform-origin: right center;\n }\n\n &:nth-of-type(2) {\n top: 8px;\n transform: translateY(0px) rotate(90deg);\n transform-origin: center center;\n }\n\n ${isOpened &&\n css`\n &:nth-of-type(1) {\n opacity: 0;\n }\n &:nth-of-type(2) {\n transform: rotate(180deg);\n }\n `}\n }\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport { RightArrow } from '../Icons';\nimport useStyles from './styles';\n\nconst NavMenuFooter = ({stylingObjects }) => {\n const styles = useStyles();\n const stylingFooter = stylingObjects?.DestinationLink?.value;\n\n return (\n \n \n \n \n );\n};\n\nexport default NavMenuFooter;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { colors, breakpoints } = useTheme();\n\n return {\n footer: css`\n background-color: ${colors.red};\n text-align: left;\n padding: 10px;\n height: 56px;\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100%;\n color: ${colors.white};\n text-decoration: none;\n float: left;\n\n div { \n display: inline-block;\n }\n\n span {\n font-weight: bold;\n display: block;\n font-size: 18px;\n }\n\n button {\n background: none;\n float: right;\n border: none;\n color: ${colors.white};\n margin-top: 12px;\n svg {\n transform: rotate(0deg);\n }\n }\n\n ${breakpoints.l} {\n position: relative;\n padding: 0.7rem 2rem;\n height: 40px;\n &:hover {\n svg {\n transition: 0.5s ease-in;\n transform: translateX(50%);\n }\n }\n span {\n display: inline-block;\n padding-left: 0.3rem;\n font-size: 16px;\n }\n button {\n float: none;\n margin: 5px;\n cursor: pointer;\n }\n }\n `,\n rightArrow: css`\n transform: rotate(270deg);\n display: block;\n width: 100%;\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport { useCallback, useEffect, useState } from 'react';\n\nimport { EF_LOGO_HREF, EMPTY_STRING } from '../../const';\nimport ExternalLink from '../ExternalLink';\nimport { ArrowTriangle } from '../Icons';\nimport MenuCard from '../MenuCard';\nimport NavMenuFooter from '../NavMenuFooter';\nimport useStyles from './styles';\n\nconst MenuContent = ({\n handleMouseEnter,\n handleMouseLeave,\n childrens,\n title,\n id,\n stateKeys,\n url,\n isMobile,\n stylingObjects,\n headerHeight,\n}) => {\n const styles = useStyles();\n const [keysForChildren, setKeysForChildren] = useState();\n const backgroundImg = stylingObjects?.BackgroundCrop?.value?.src;\n const stylingFooter = stylingObjects?.DestinationLink?.value;\n\n useEffect(() => {\n const keys = childrens.map(\n // creating values for existing id since value of id is null in API response\n (dropdown, index) => {\n const crypto = window.crypto;\n const randomNumber = Math.round(crypto.getRandomValues(new Uint8Array(10))[0] / 42)\n dropdown.id = `${index}_${randomNumber}`;\n return dropdown.id;\n }\n );\n const object = keys.reduce((acc, curr) => {\n // desktop - submenus should appear by default\n // mobile - submenus should be hidden initially\n acc[curr] = !isMobile;\n return acc;\n }, {});\n setKeysForChildren({ ...object });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const subTitleClicked = useCallback(\n selectedValue => {\n // set all the values of id as false before set value for selected id\n Object.keys(keysForChildren).forEach(data => {\n if (data !== selectedValue) {\n if (keysForChildren) {\n keysForChildren[data] = false;\n }\n }\n });\n setKeysForChildren({\n ...keysForChildren,\n [selectedValue]: keysForChildren\n ? !keysForChildren[selectedValue]\n : EMPTY_STRING,\n });\n },\n [keysForChildren]\n );\n const isExternal = /^https?:\\/\\//i.test(url);\n const href = isExternal ? url : `${EF_LOGO_HREF}${url}`;\n\n return (\n
  • \n \n \n {title}\n \n {childrens &&\n childrens.length > 0 &&\n !isMobile &&\n childrens.slice(0, 5) && (\n {\n handleMouseEnter(e);\n }}\n onKeyPress={handleMouseEnter}\n id={id}\n aria-label=\"click to open submenu\"\n >\n \n \n )}\n {childrens && childrens.length > 0 && isMobile && (\n {\n handleMouseEnter(e);\n }}\n aria-label=\"click to open submenu\"\n id={id}\n >\n )}\n {stateKeys[id] &&\n childrens &&\n childrens.length > 0 &&\n childrens.slice(0, 5) && (\n \n
    \n 5 ? 5 : childrens.length)}\n >\n {childrens.slice(0, 5).map(menuItem => {\n return (\n {\n subTitleClicked(value);\n }}\n key={menuItem.id}\n childIndex={menuItem.id}\n isMobile={isMobile}\n {...menuItem}\n />\n );\n })}\n \n
      \n {childrens &&\n childrens.length > 5 &&\n childrens\n .slice(5, childrens.length)\n .map((menuItem, index) => {\n const isExternal = /^https?:\\/\\//i.test(menuItem.url);\n const href = isExternal\n ? menuItem.url\n : `${EF_LOGO_HREF}${menuItem.url}`;\n return (\n
    • \n \n {menuItem.title}\n \n
    • \n );\n })}\n
    \n
    \n {stylingObjects && stylingFooter && !isMobile && (\n \n )}\n \n )}\n \n
  • \n );\n};\n\nexport default MenuContent;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\nimport publicPath from '../../utils/publicPath';\n\nexport default () => {\n const { breakpoints, colors, spacing } = useTheme();\n\n return {\n dropdownContainer: css`\n display: inline-block;\n text-align: left;\n border-bottom: 1px solid ${colors.grey};\n margin-left: 8px;\n\n ${breakpoints.l} {\n text-align: center;\n border-bottom: 1px solid transparent;\n padding-bottom: 0;\n position: unset;\n }\n `,\n dropdown: css`\n background: transparent;\n color: ${colors.navy};\n font-size: 18px;\n font-weight: 500;\n text-transform: uppercase;\n white-space: nowrap;\n border-bottom: ${spacing.xs} solid transparent;\n padding: 20px 0 12px 0;\n text-decoration: none;\n\n ${breakpoints.l} {\n display: inline; \n text-align: center;\n color: ${colors.darkGrey};\n font-size: 14px;\n height: 74px;\n svg {\n margin-left: 10px;\n }\n }\n\n &::before {\n content: '';\n position: absolute;\n left: 0;\n width: 0;\n border-radius: 2px;\n z-index: 1;\n border-bottom: 1px solid transparent;\n transition: width 0.4s ease-in-out;\n }\n\n &:not(:disabled):hover {\n background: transparent;\n position: relative;\n color: ${colors.navy};\n ${breakpoints.l} {\n &::before {\n width: 100%;\n }\n }\n }\n `,\n activeMenu: css`\n position: relative;\n ${breakpoints.l} {\n color: ${colors.navy};\n &::before {\n content: '';\n position: absolute;\n right: 0;\n width: 100%;\n top: 0;\n bottom: 0;\n border-bottom: 0.2rem solid ${colors.red};\n }\n }\n `,\n dropdownContent: (backgroundImg, isOpened, isDesktop, headerHeight) => css`\n position: absolute;\n margin: 0 auto;\n right: 0;\n left: 0;\n top: 0;\n width: 100%;\n padding: 0 1rem;\n z-index: 2;\n background: ${colors.lightGrey};\n height: calc(100vh - 212px);\n overflow-y: auto;\n\n ${isDesktop &&\n isOpened &&\n css`\n animation: sliding 0.4s ease-in-out 1 forwards;\n\n @keyframes sliding {\n 0% {\n transform: translateX(100%);\n }\n 100% {\n transform: translateX(0%);\n }\n }\n `}\n\n ${breakpoints.l} {\n position: absolute;\n backdrop-filter: blur(16px);\n text-align: center;\n box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);\n background: rgba(255, 255, 255, 0.9) url(${backgroundImg});\n top: ${headerHeight};\n padding: 0;\n height: auto;\n z-index: 1;\n overflow: hidden;\n }\n `,\n dropdownMenu: css`\n ${breakpoints.l} {\n display: grid;\n grid-auto-flow: column;\n justify-content: center;\n padding: ${spacing.s} ${spacing.m};\n }\n `,\n dropdownBtn: css`\n background: none;\n border: 1px solid transparent;\n vertical-align: middle;\n outline: 0;\n height: 74px;\n\n &:not(:disabled):focus {\n outline: 2px solid ${colors.navy};\n height: auto;\n }\n `,\n grid: length => css`\n display: grid;\n margin-left: 8px;\n\n @media screen and (min-width: 1024px) {\n grid-auto-flow: column;\n grid-column-gap: 2rem;\n margin-left: 0;\n grid-template-columns: repeat(${length}, 150px);\n }\n\n @media screen and (min-width: 1440px) {\n grid-template-columns: repeat(${length}, 160px);\n }\n `,\n noChildGrid: css`\n margin-left: 8px;\n position: relative;\n\n li {\n border-bottom: 1px solid ${colors.greyShade1};\n text-align: left;\n display: grid;\n }\n\n ${breakpoints.l} {\n padding-left: 2rem;\n margin-left: 0;\n li {\n position: relative;\n\n &:not(:disabled):hover {\n border-bottom: 1px solid ${colors.blue};\n a {\n color: ${colors.blue};\n display: initial;\n\n &::after {\n transform: translateX(0) rotate(-90deg);\n opacity: 1;\n }\n }\n }\n }\n }\n `,\n rightArrowBtn: isMobile => css`\n padding: 0;\n right: 0;\n top: 0;\n float: right;\n width: 44px;\n &:focus,\n &:not(:disabled):focus {\n outline: none;\n box-shadow: none;\n }\n svg {\n color: ${colors.darkGrey};\n }\n ${isMobile &&\n css`\n display: block;\n text-align: left;\n &::after {\n content: '';\n background: url(${publicPath('/images/common/accordion-arrow.svg')})\n no-repeat;\n float: right;\n height: 0.8rem;\n width: 30px;\n }\n `}\n `,\n container: isDesktop => css`\n ${isDesktop &&\n css`\n display: flex;\n grid-auto-flow: column;\n align-items: center;\n justify-content: space-between;\n `}\n `,\n promoContainer: css`\n ${breakpoints.m} {\n display: flex;\n flex-basis: 100%;\n grid-template-columns: repeat(4, 16.375rem);\n justify-content: center;\n max-width: 65.625rem;\n margin: 0 auto;\n padding: ${spacing.m} 0;\n grid-column-gap: ${spacing.s};\n }\n `,\n dropdownIcon: isExpanded => css`\n color: ${colors.red};\n transition: transform 0.3s ease-in-out;\n transform: rotate(${!isExpanded ? '1deg' : '180deg'});\n margin-bottom: 3px;\n `,\n subTitle: css`\n color: ${colors.navy};\n background: transparent;\n text-decoration: none;\n font-size: 1.125rem;\n line-height: 1.625rem;\n font-weight: normal;\n text-transform: uppercase;\n font-weight: normal;\n padding: 10px 0 6px 0;\n margin: 10px 0 6px 0;\n position: relative;\n\n ${breakpoints.l} {\n &::after {\n content: '';\n background: url(${publicPath('/images/common/triangle-arrow.svg')})\n no-repeat center center;\n transform: translateX(-2rem) rotate(-90deg);\n transition: transform 0.3s ease-in-out, opacity 0.3s ease-in-out;\n opacity: 0;\n height: 20px;\n width: 20px;\n position: absolute;\n display: inline-block;\n z-index: 1;\n }\n }\n\n &:focus {\n color: ${colors.blue};\n background-color: transparent;\n\n &::after {\n transform: translateX(0) rotate(-90deg);\n opacity: 1;\n }\n }\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport { Fragment, useState } from 'react';\n\nimport MenuContent from '../MenuContent';\nimport NavMenuFooter from '../NavMenuFooter';\nimport useStyles from './styles';\n\nconst NavMenu = ({\n isMobile,\n isMenuOpened,\n menuList,\n dropDownKeys,\n stylingObjects,\n isHamburgerMenu,\n headerHeight,\n}) => {\n const styles = useStyles();\n const [keysForDropdown, setKeysForDropdown] = useState(dropDownKeys);\n const [backMenu, setBackMenu] = useState(false);\n const [isSubMenuClicked, setIsSubMenuClicked] = useState(false);\n const [navbarTitle, setNavbarTitle] = useState({\n title: 'Home',\n hasUrl: false,\n });\n const stylingFooter = stylingObjects?.DestinationLink?.value;\n\n const handleMouseEnter = e => {\n setKeysForDropdown({\n ...keysForDropdown,\n [e.target.id]: true,\n });\n const selectedMenu = menuList.find(\n entry => entry.id === parseInt(e.target.id)\n );\n if (selectedMenu) {\n setNavbarTitle({\n id: selectedMenu.id,\n title: selectedMenu.title,\n hasUrl: true,\n });\n }\n };\n\n const handleMouseLeave = e => {\n setNavbarTitle({ title: 'Home', hasUrl: false });\n // set all the values of id as false before set value for selected id\n Object.keys(keysForDropdown).forEach(id => (keysForDropdown[id] = false));\n setKeysForDropdown({\n ...keysForDropdown,\n [e.target.id]: false,\n });\n };\n\n return (\n \n \n {isMobile && (\n
    \n {navbarTitle && navbarTitle.hasUrl ? (\n {\n handleMouseLeave(e);\n setBackMenu(true);\n setIsSubMenuClicked(false);\n }}\n id={navbarTitle.id}\n >\n {navbarTitle.title}\n \n ) : (\n {navbarTitle.title}\n )}\n
    \n )}\n \n
      \n {menuList.length > 0 &&\n menuList.map((menu, index) => (\n {\n handleMouseEnter(data);\n setBackMenu(false);\n setIsSubMenuClicked(true);\n }}\n handleMouseLeave={handleMouseLeave}\n isMobile={isMobile}\n stylingObjects={stylingObjects}\n headerHeight={headerHeight}\n />\n ))}\n
    \n \n {stylingObjects && stylingFooter && isMobile && (\n \n )}\n \n
    \n );\n};\n\nexport default NavMenu;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\nimport publicPath from '../../utils/publicPath';\n\nexport default () => {\n const { colors, breakpoints } = useTheme();\n\n return {\n siteNavigation: (\n isDesktop,\n isMenuOpened,\n isHamburgerMenu,\n headerHeight\n ) => css`\n text-align: center;\n transition: transform 0.4s ease-in-out;\n ${\n !isHamburgerMenu &&\n isDesktop &&\n css`\n transform: translateX(-100vw);\n `\n }\n ${\n isDesktop &&\n css`\n height: calc(100vh - ${headerHeight});\n background: ${colors.lightGrey};\n position: absolute;\n width: 100%;\n `\n }\n ${breakpoints.l} {\n display: ${isMenuOpened ? 'block' : 'none'};\n }\n `,\n menuContainer: (isSubMenuClicked) => css`\n height: calc(100% - 110px);\n -webkit-overflow-scrolling: touch;\n overflow-x: hidden;\n overflow-y: ${isSubMenuClicked ? 'hidden' : 'auto'};\n padding: 0 1rem 0 14px;\n position: absolute;\n width: 100%;\n\n ${breakpoints.l} {\n position: unset;\n overflow: hidden;\n height: 100%;\n padding: 0;\n }\n `,\n menuWrapper: (isDesktop, isBackMenu) => css`\n display: grid;\n grid-auto-flow: row;\n align-items: center;\n\n ${isDesktop &&\n isBackMenu &&\n css`\n animation: slide 0.4s ease-in-out 1 backwards;\n\n @keyframes slide {\n 0% {\n transform: translateX(-100vw);\n }\n 100% {\n transform: translateX(0%);\n }\n }\n `}\n\n ${breakpoints.l} {\n position: unset;\n overflow: hidden;\n height: 100%;\n grid-auto-flow: column;\n padding: 0;\n }\n `,\n topMenu: css`\n background-color: ${colors.navy};\n a {\n color: ${colors.white};\n text-decoration: none;\n }\n `,\n menuHeader: css`\n color: #e1261c;\n font-family: 'FS Dillon', arial, helvetica, sans-serif;\n font-size: 20px;\n line-height: 26px;\n text-transform: uppercase;\n padding: 12px 0;\n box-shadow: 0 2px 3px rgb(1 30 65 / 14%);\n background-color: #fff;\n text-align: left;\n padding-left: 1rem;\n\n span {\n margin: auto;\n display: flex;\n }\n\n button span {\n text-align: left;\n color: ${colors.red};\n font-size: 20px;\n display: inline-block;\n padding-left: 10px;\n text-transform: uppercase;\n font-family: 'FS Dillon', arial, helvetica, sans-serif;\n font-weight: 500;\n }\n `,\n leftArrowBtn: isMobile => css`\n padding: 0;\n right: 0;\n top: 0;\n border: 0;\n display: inline-block;\n background: transparent;\n margin-right: 1rem;\n svg {\n color: ${colors.darkGrey};\n }\n ${isMobile &&\n css`\n display: inline-block;\n text-align: left;\n &::after {\n content: '';\n background: url(${publicPath('/images/common/accordion-arrow.svg')})\n no-repeat;\n float: left;\n height: 13px;\n width: 0.625rem;\n transform: rotate(182deg);\n margin-top: 4px;\n }\n `}\n `,\n };\n};\n","import isEmpty from 'lodash.isempty';\nimport { useEffect, useRef, useState } from 'react';\n\nimport { getHeaderMenu } from '../../services';\n\nconst GetHeaderMenu = () => {\n const isMounted = useRef(true);\n const [menuList, setMenuList] = useState([]);\n const [dropDownKeys, setDropDownKeys] = useState({});\n const [stylingObjects, setStylingObjects] = useState();\n\n useEffect(() => {\n getHeaderMenu()\n .then(({ data }) => {\n if (isMounted.current && data) {\n const links = data.elements[0].fields.links;\n setStylingObjects(data.elements[0].fields.navigationFields);\n const formattedData = links[0].childrens.map((item, index) => {\n const childrenArray = [];\n item.childrens.map(child2 => {\n if (isEmpty(child2.childrens)) {\n childrenArray.push(child2);\n return { ...child2, childrenArray };\n }\n return child2;\n });\n return { ...item, ...{ id: index }, childrenArray };\n });\n setMenuList(formattedData);\n }\n })\n .catch(() => {});\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (isEmpty(menuList)) {\n return;\n }\n // set keys for dropdown\n const keys = menuList.map(dropdown => dropdown.id);\n const object = keys.reduce((acc, curr) => {\n acc[curr] = false;\n return acc;\n }, {});\n setDropDownKeys({ ...object });\n }, [menuList]);\n\n return { menuList, dropDownKeys, stylingObjects };\n};\n\nexport default GetHeaderMenu;\n","/** @jsxImportSource @emotion/react */\nimport { useCallback, useEffect, useState } from 'react';\n\nimport { EF_LOGO_HREF } from '../../const';\nimport { useSetHeaderHeightContext } from '../../context/setHeaderHeight';\nimport useLocalStorage from '../../hooks/useLocalStorage';\nimport useMediaQuery from '../../hooks/useMediaQuery';\nimport useScroll from '../../hooks/useScrollHeader';\nimport normaliseHomePageData from '../../normaliser/homepage';\nimport { getHomepageData } from '../../services';\nimport publicPath from '../../utils/publicPath';\nimport B2cSignIn from '../B2cSignIn';\nimport Button from '../Button';\nimport ExternalLink from '../ExternalLink';\nimport { CircleCloseBanner, CircleCloseMobile, CloseMenuIcon } from '../Icons';\nimport NavMenu from '../NavMenu';\nimport getHeaderMenu from './getHeaderMenu';\nimport useStyles from './styles';\n\nconst Navigation = ({ withBorder, onClick, isBanner = 'false' }) => {\n const styles = useStyles();\n const { scrollDirection } = useScroll();\n const isMobile = useMediaQuery(`screen and (max-width: 992px)`);\n const [isHamburgerMenu, setIsHamburgerMenu] = useState(false);\n const [isB2cMenu, setIsB2cMenu] = useState(false);\n const [closeBanner, setCloseBanner] = useState(true);\n const isMenuOpened =\n (!isHamburgerMenu && !isMobile) || (isHamburgerMenu && isMobile);\n const { getLocalItem } = useLocalStorage();\n const isIframe = JSON.parse(getLocalItem('ISIFRAME'));\n\n const { menuList, dropDownKeys, stylingObjects } = getHeaderMenu();\n const isShowTopMenu = stylingObjects?.IsPodcastBanner?.value;\n const { headerHeight, setHeaderHeightValue } = useSetHeaderHeightContext();\n const [homeData, setHomeData] = useState({});\n\n useEffect(() => {\n document.body.classList.toggle('navigationOpen', isHamburgerMenu);\n }, [isHamburgerMenu]);\n\n const accountDetailsClick = useCallback(() => {\n setIsB2cMenu(true);\n }, []);\n\n const ticketEngland = stylingObjects?.OfficialSegment?.value?.text;\n const ticketEnglandHref = stylingObjects?.OfficialSegment?.value?.href;\n const merchandise = stylingObjects?.PodcastSegment?.value?.text;\n const merchandiseHref = stylingObjects?.PodcastSegment?.value?.href;\n\n useEffect(() => {\n if (!stylingObjects) {\n return;\n }\n setHeaderHeightValue(\n stylingObjects?.IsPodcastBanner?.value\n ? isMobile\n ? '106px'\n : '105px'\n : isMobile\n ? '105px'\n : '74px'\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [stylingObjects, setHeaderHeightValue]);\n\n useEffect(() => {\n getHomepageData()\n .then(({ data }) => {\n if (data) {\n const HomepageData = normaliseHomePageData(data);\n setHomeData(HomepageData);\n }\n })\n .catch(() => {});\n }, []);\n\n const isLogo =\n homeData?.bannerInfo?.mobileLogo || homeData?.bannerInfo?.desktopLogo;\n\n const closeBannerAction = () => {\n setCloseBanner(!closeBanner);\n };\n\n return (\n \n {!isIframe && (\n
    \n {isShowTopMenu && (\n \n )}\n
    \n
    \n \n \n \n {isMobile && isB2cMenu && (\n {\n setIsB2cMenu(false);\n }}\n >\n \n \n )}\n {isMobile && !isB2cMenu && (\n {\n setIsHamburgerMenu(!isHamburgerMenu);\n }}\n >\n
    \n \n \n \n
    \n \n )}\n
    \n \n \n
    \n
    \n )}\n {homeData?.bannerInfo?.bannerText &&\n closeBanner &&\n isBanner === 'true' && (\n \n \n \n {isLogo && (\n \n )}\n \n
    \n {homeData?.bannerInfo?.bannerText}\n \n {homeData?.bannerInfo?.textLink}\n \n
    \n \n \n \n )}\n \n );\n};\n\nexport default Navigation;\n","import { css } from '@emotion/react';\n\nimport { SCROLL_UP } from '../../const';\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { colors, breakpoints, screenSizes } = useTheme();\n\n return {\n navlink: css`\n display: inline-block;\n margin: auto;\n\n ${breakpoints.l} {\n max-width: unset;\n }\n `,\n navigation: (withBorder, scrollDirection) => css`\n position: relative;\n width: 100%;\n text-align: center;\n box-shadow: 0px 2px 3px rgba(1, 30, 65, 0.14);\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n transition: transform 0.4s;\n z-index: 11;\n\n ${scrollDirection === SCROLL_UP\n ? css`\n visibility: visible;\n transition: all 0.5s;\n transform: translateY(-100%);\n `\n : css`\n // visibility: visible;\n transition: all 0.5s;\n `}\n\n ${withBorder &&\n css`\n ${breakpoints.l} {\n &::after {\n content: '';\n position: absolute;\n left: 0;\n bottom: 0;\n width: 100%;\n height: 1px;\n background: rgb(225, 38, 28);\n background: linear-gradient(\n 90deg,\n ${colors.greyShade1} 34%,\n ${colors.greyShade1} 65%\n );\n }\n `}\n\n img {\n display: block;\n width: 100%;\n }\n\n ${breakpoints.m} {\n text-align: left;\n background-color: ${colors.white};\n }\n `,\n logoWrapper: isMobile => css`\n ${isMobile &&\n css`\n min-height: 70px;\n display: grid;\n align-items: center;\n background-color: ${colors.white};\n `}\n `,\n logoImage: css`\n max-width: 92px;\n min-width: 92px;\n max-height: 32px;\n height: 100%;\n\n ${breakpoints.m} {\n max-width: 122px;\n min-width: 122px;\n max-height: 42px;\n }\n `,\n globalText: textcolor => css`\n font-size: 16px;\n color: ${textcolor};\n font-weight: 500;\n text-decoration: auto;\n line-height: 16px;\n text-align: left;\n padding-left: 8px;\n\n ${breakpoints.m} {\n font-weight: 500;\n line-height: 20px;\n padding-left: 0;\n }\n `,\n globalExternal: textcolor => css`\n color: ${textcolor};\n display: initial;\n padding-left: 2px;\n text-decoration: underline;\n\n ${breakpoints.m} {\n display: initial;\n }\n\n ${breakpoints.xl} {\n display: inline-block;\n }\n `,\n globalLogo: css`\n fill: ${colors.purpleBlue};\n max-height: 25px;\n `,\n logoImageGlobal: css`\n max-width: 83px;\n min-width: 60px;\n max-height: 54px;\n height: 100%;\n margin-top: 3px;\n\n ${breakpoints.m} {\n max-width: 122px;\n min-width: 122px;\n max-height: 61.27px;\n }\n\n ${breakpoints.l} {\n margin-left: 75px;\n }\n\n ${breakpoints.xl} {\n margin-left: 75px;\n }\n `,\n inner: css`\n position: relative;\n height: calc(100% - 110px);\n\n ${breakpoints.l} {\n display: grid;\n max-width: ${screenSizes.xl};\n margin: 0 auto;\n width: 90vw;\n grid-auto-flow: column;\n align-items: center;\n height: 74px;\n position: initial;\n grid-template-columns: 20% 2fr 20%;\n }\n `,\n innerGlobal: (desktopImage, mobileImage, bgcolor) => css`\n position: relative;\n height: 87px;\n ${\n mobileImage &&\n css`\n background: url(${mobileImage}) 0 0 repeat;\n `\n }\n ${\n !mobileImage &&\n css`\n background-color: ${bgcolor};\n `\n }\n display: grid;\n grid-template-columns: 86% auto;\n align-items: center;\n\n ${breakpoints.m} {\n padding: 0;\n display: grid;\n width: 100vw;\n grid-auto-flow: column;\n align-items: center;\n height: 80px;\n position: initial;\n grid-template-columns: 85% auto;\n ${\n desktopImage &&\n css`\n background: url(${desktopImage}) 0 0 no-repeat;\n `\n }\n ${\n !desktopImage &&\n css`\n background-color: ${bgcolor};\n `\n }\n background-size: cover;\n }\n }\n\n ${breakpoints.l} {\n grid-template-columns: 85% auto;\n }\n\n ${breakpoints.xl} {\n grid-template-columns: 84% auto;\n }\n `,\n bannerClick: css`\n display: grid;\n grid-template-columns: 25% 75%;\n height: 80px;\n align-items: center;\n text-decoration-color: transparent;\n\n ${breakpoints.m} {\n grid-template-columns: 25% 75%;\n }\n\n ${breakpoints.l} {\n grid-template-columns: 27% 73%;\n }\n\n ${breakpoints.xl} {\n grid-template-columns: 20% 80%;\n }\n `,\n alignLogo: css`\n display: grid;\n grid-template-columns: 22% auto;\n align-items: center;\n align-self: center;\n cursor: pointer;\n padding-left: 12px;\n width: 30px;\n background-color: transparent;\n border: none;\n\n ${breakpoints.m} {\n align-self: center;\n width: 60px;\n }\n\n ${breakpoints.xl} {\n grid-template-columns: 18% auto;\n }\n `,\n hamburger: css`\n border: none;\n position: absolute;\n left: 1.3rem;\n width: 28px;\n height: 28px;\n color: red;\n padding: 0;\n background-color: transparent;\n top: 25px;\n\n &:not(:disabled):hover,\n &:focus {\n background-color: transparent;\n }\n\n svg {\n color: ${colors.red};\n }\n `,\n navigationOpen: css`\n overflow: hidden;\n padding-top: 5.6rem;\n `,\n topMenu: css`\n background-color: ${colors.lightGrey};\n text-align: right;\n height: 36px;\n display: grid;\n grid-auto-flow: column;\n justify-content: flex-end;\n align-items: center;\n padding-right: 15px;\n li {\n margin-right: 0.5rem;\n &:not(:last-child):after {\n content: '';\n border-right: 1px solid ${colors.greyShade1};\n height: 2.1rem;\n width: 0.1rem;\n margin-left: 0.8rem;\n }\n }\n a {\n color: ${colors.darkGrey};\n text-decoration: none;\n font-size: 14px;\n line-height: 18px;\n }\n `,\n navIcon4: isOpened => css`\n width: 100%;\n height: 100%;\n position: relative;\n transform: translateY(0px) rotate(0deg);\n transition: 0.5s ease-in-out;\n cursor: pointer;\n\n span {\n display: block;\n position: absolute;\n height: 2px;\n width: 100%;\n background: ${isOpened ? colors.red : colors.darkGrey};\n border-radius: 9px;\n opacity: 1;\n right: 0;\n transform: translateY(0px) rotate(0deg);\n transition: 0.25s ease-in-out;\n\n &:nth-of-type(1) {\n top: 0px;\n transform-origin: right center;\n }\n\n &:nth-of-type(2) {\n top: 8px;\n transform-origin: right center;\n }\n &:nth-of-type(3) {\n top: 16px;\n transform-origin: right center;\n }\n\n ${isOpened &&\n css`\n &:nth-of-type(1) {\n transform: rotate(314deg);\n }\n &:nth-of-type(2) {\n width: 0%;\n opacity: 0;\n }\n &:nth-of-type(3) {\n top: 20px;\n transform: rotate(45deg);\n }\n `}\n }\n `,\n };\n};\n","\nimport { useCallback, useEffect, useState } from \"react\";\n\nimport { SCROLL_DOWN, SCROLL_UP } from \"../../const\";\nimport { useScrollDirectionContext } from \"../../context/scrollDirection\";\n\nexport default () => {\n // storing this to get the scroll direction\n const [lastScrollTop, setLastScrollTop] = useState(0);\n // scroll direction would be either up or down\n const [scrollDirection, setScrollDirection] = useState(SCROLL_DOWN);\n const { setScroll } = useScrollDirectionContext();\n\n const listener = useCallback(() => {\n let position = window.pageYOffset || document.documentElement.scrollTop;\n if (position > 100 && lastScrollTop <= position) {\n setScrollDirection(lastScrollTop > -position ? SCROLL_UP : SCROLL_DOWN);\n setScroll(lastScrollTop > -position ? SCROLL_UP : SCROLL_DOWN);\n setLastScrollTop(-position);\n return;\n }\n setScrollDirection(SCROLL_DOWN);\n setScroll(SCROLL_DOWN);\n setLastScrollTop(position <= 0 ? 0 : position);\n }, [lastScrollTop, setScroll]);\n\n useEffect(() => {\n window.addEventListener(\"scroll\", listener, { passive: true });\n return () => {\n window.removeEventListener(\"scroll\", listener);\n };\n }, [listener]);\n\n return {\n scrollDirection\n };\n}","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\nimport publicPath from '../../utils/publicPath';\n\nexport default () => {\n const { breakpoints, colors, screenSizes, spacing } = useTheme();\n\n return {\n pageWrapper: bgImage => css`\n background: url(${publicPath(\n '/images/desktop/errorPages/' + bgImage + '.png'\n )})\n center center / cover no-repeat;\n width: 100%;\n position: relative;\n display: grid;\n align-items: center;\n justify-items: center;\n // dynamic height set - footer - height\n height: calc(100vh - 70px);\n padding: 0 1.5rem;\n z-index: 1;\n\n &::after {\n content: '';\n background-color: rgba(1, 30, 65, 0.6);\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n width: 100%;\n }\n\n ${breakpoints.m} {\n // footer height\n height: calc(100vh - 50px);\n padding: 0;\n }\n\n ${breakpoints.l} {\n // footer height\n height: calc(100vh - 50px);\n }\n `,\n textWrapper: css`\n text-align: center;\n color: ${colors.white};\n z-index: 2;\n `,\n mainText: css`\n color: ${colors.white};\n letter-spacing: -0.02em;\n padding-bottom: ${spacing.s};\n\n @media screen and (max-width: ${screenSizes.m}) {\n font-size: 2.625rem;\n line-height: 2.5rem;\n }\n `,\n cta: css`\n background-color: ${colors.red};\n color: ${colors.white};\n text-transform: uppercase;\n width: 16rem;\n margin: ${spacing.s} auto;\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\n\nimport Button from '../Button';\nimport Footer from '../Footer';\nimport Navigation from '../Navigation';\nimport useStyles from '../Page500/styles';\nimport Text from '../Text';\n\nconst Page404 = ({ resetError }) => {\n const styles = useStyles();\n\n return (\n
    \n \n
    \n
    \n \n Sorry, we can’t find that page\n \n \n It may have been moved, or doesn’t exist. Not to worry, hit the\n button below to return to the Find Football homepage.\n \n
    \n \n Find football homepage\n \n
    \n
    \n
    \n
    \n
    \n );\n};\n\nexport default Page404;\n","/** @jsxImportSource @emotion/react */\n\nimport Button from '../Button';\nimport Footer from '../Footer';\nimport Navigation from '../Navigation';\nimport Text from '../Text';\nimport useStyles from './styles';\n\nconst Page500 = ({ resetError }) => {\n const styles = useStyles();\n\n return (\n
    \n \n
    \n
    \n \n Something’s gone wrong there\n \n \n Sorry, looks like we ran into a technical problem. Hit the button\n below and we’ll get you back to the Find Football homepage.\n \n
    \n \n Find football homepage\n \n
    \n
    \n
    \n
    \n
    \n );\n};\n\nexport default Page500;\n","import React, { Component } from 'react';\n\nimport { Api404, Api500 } from '../../const';\nimport AppError from '../../utils/AppError';\nimport Page404 from '../Page404';\nimport Page500 from '../Page500';\n\nclass ErrorBoundary extends Component {\n constructor(props) {\n super(props);\n\n this.state = {};\n }\n\n static getDerivedStateFromError(error) {\n return { error };\n }\n\n componentDidCatch(error, errorInfo) {\n console.error(error, errorInfo);\n }\n\n handleReset = () => {\n this.setState({ error: undefined });\n };\n\n render() {\n const { error } = this.state;\n\n // If we have an error, work out what it is and how to show it\n if (error) {\n if (error instanceof AppError) {\n switch (error.id) {\n case Api404:\n return ;\n case Api500:\n return ;\n default:\n return ;\n }\n }\n\n return ;\n }\n\n // If we have no error, render children\n return this.props.children;\n }\n}\n\nexport default ErrorBoundary;\n","export default __webpack_public_path__ + \"static/media/FSDillonProBold.f3410e3b.otf\";","export default __webpack_public_path__ + \"static/media/FSDillonProRegular.e94d12f3.otf\";","import { css, Global } from '@emotion/react';\nimport React from 'react';\n\nimport fsDillonBold from '../../fonts/fs-dillon/FSDillonProBold.otf';\nimport fsDillon from '../../fonts/fs-dillon/FSDillonProRegular.otf';\nimport useTheme from '../../hooks/useTheme';\nimport hexToRgba from '../../utils/hexToRgba';\n\nconst GlobalStyles = () => {\n const { colors, typography, breakpoints, screenSizes } = useTheme();\n\n return (\n \n );\n};\n\nexport default GlobalStyles;\n","import { createContext, useCallback, useContext, useState } from 'react';\n\nconst FilterPanelToggleContext = createContext();\n\nexport const FilterPanelToggleProvider = ({ children }) => {\n const [isFilterPanelToggled, setIsFilterPanelToggled] = useState(false);\n const [isFilterEnabled, setIsFilterEnabledTab] = useState(false);\n\n const setFilterPanelToggle = useCallback(toggleValue => {\n setIsFilterPanelToggled(toggleValue);\n }, []);\n\n const setFilterEnabledTab = useCallback(toggleValue => {\n setIsFilterEnabledTab(toggleValue);\n }, []);\n\n const resetFilterPanelToggle = () => {\n setIsFilterPanelToggled(false);\n };\n\n return (\n \n {children}\n \n );\n};\n\nexport const useFilterPanelToggleContext = () =>\n useContext(FilterPanelToggleContext);\n","import { createContext, useCallback, useContext, useState } from 'react';\n\nimport {\n CLUB,\n DONT_MIND,\n KICKABOUT_CASUAL,\n RECOMMENDATIONS_ML_CASUAL,\n RECOMMENDATIONS_ML_CLUB,\n} from '../const';\nimport {\n getLocalItem,\n removeLocalItem,\n setLocalItem,\n} from '../hooks/useLocalStorage';\n\nconst localKeyMapping = {\n [KICKABOUT_CASUAL]: RECOMMENDATIONS_ML_CASUAL,\n [CLUB]: RECOMMENDATIONS_ML_CLUB,\n [DONT_MIND]: RECOMMENDATIONS_ML_CLUB,\n};\n\nconst localMLClubRecommendations = getLocalItem(RECOMMENDATIONS_ML_CLUB);\nconst mlClubRecommendationsValue = localMLClubRecommendations\n ? JSON.parse(localMLClubRecommendations)\n : null;\nconst localMLCasualRecommendations = getLocalItem(RECOMMENDATIONS_ML_CASUAL);\nconst mlCasualRecommendationsValue = localMLCasualRecommendations\n ? JSON.parse(localMLCasualRecommendations)\n : null;\n\nexport const MLRecommendationsContext = createContext();\n\nexport const MLRecommendationsProvider = ({ children }) => {\n const [clubMLRecommendationsContext, setClubMLRecommendationsContext] =\n useState(mlClubRecommendationsValue);\n const [casualMLRecommendationsContext, setCasualMLRecommendationsContext] =\n useState(mlCasualRecommendationsValue);\n const [isMLCard, setIsMLCard] = useState(false);\n\n // set MLRecommedation details\n const setMLRecommendations = useCallback((data, type = CLUB) => {\n const localKey = localKeyMapping[type];\n setLocalItem(localKey, JSON.stringify(data));\n\n if (type === KICKABOUT_CASUAL) {\n setCasualMLRecommendationsContext(data);\n return;\n }\n\n setClubMLRecommendationsContext(data);\n }, []);\n\n // reset ML recommendation\n const resetMLRecommendations = () => {\n removeLocalItem(RECOMMENDATIONS_ML_CLUB);\n setClubMLRecommendationsContext(null);\n removeLocalItem(RECOMMENDATIONS_ML_CASUAL);\n setCasualMLRecommendationsContext(null);\n setIsMLCard(false);\n };\n\n // to check whether ML or recommendation card clicked\n const setMLCard = value => {\n setIsMLCard(value);\n };\n\n return (\n \n {children}\n \n );\n};\n\nexport const useMLRecommendations = () => useContext(MLRecommendationsContext);\n","import { createContext, useCallback, useContext, useState } from 'react';\n\nimport {\n CLUB,\n DONT_MIND,\n KICKABOUT_CASUAL,\n RECOMMENDATIONS_MO_CASUAL,\n RECOMMENDATIONS_MO_CLUB,\n} from '../const';\nimport {\n getLocalItem,\n removeLocalItem,\n setLocalItem,\n} from '../hooks/useLocalStorage';\n\nconst localKeyMapping = {\n [KICKABOUT_CASUAL]: RECOMMENDATIONS_MO_CASUAL,\n [CLUB]: RECOMMENDATIONS_MO_CLUB,\n [DONT_MIND]: RECOMMENDATIONS_MO_CLUB,\n};\n\nconst localClubRecommendations = getLocalItem(RECOMMENDATIONS_MO_CLUB);\nconst clubRecommendationsValue =\n localClubRecommendations !== 'undefined'\n ? JSON.parse(localClubRecommendations)\n : null;\nconst localCasualRecommendations = getLocalItem(RECOMMENDATIONS_MO_CASUAL);\nconst casualRecommendationsValue =\n localCasualRecommendations !== 'undefined'\n ? JSON.parse(localCasualRecommendations)\n : null;\n\nexport const MORecommendationsContext = createContext();\n\n// From the api we receive the next page of each football type\n// so we need to merge the results for each of them\nconst mergeRecommendations = (oldRecommendationss, newRecommendations) => {\n const oldRecommendations = [];\n oldRecommendations.push(oldRecommendationss);\n\n const arrayKey = oldRecommendations[0]?.RecommendationClubCartDto\n ? 'RecommendationClubCartDto'\n : oldRecommendations[0]?.RecommendationCentreCartDto?.length < 0\n ? 'RecommendationProviderCartDto'\n : 'NULL';\n const arrayData = `${\n arrayKey === 'NULL' ? 'RecommendationProviderCartDto' : arrayKey\n }`;\n const arrayKeyData = `${\n arrayKey === 'NULL'\n ? 'RecommendationCentreCartDto'\n : 'RecommendationClubCartDto'\n }`;\n\n return [\n {\n ...oldRecommendations[0],\n [arrayData]: [\n ...oldRecommendations[0][arrayData],\n ...(arrayKeyData === 'RecommendationCentreCartDto'\n ? newRecommendations[0][arrayKeyData]\n : []),\n ...newRecommendations[0][arrayData],\n ],\n },\n ];\n};\n\nexport const MORecommendationsProvider = ({ children }) => {\n const [clubRecommendationsContext, setClubRecommendationsContext] = useState(\n clubRecommendationsValue\n );\n const [casualRecommendationsContext, setCasualRecommendationsContext] =\n useState(casualRecommendationsValue);\n\n const setMORecommendations = useCallback((data, type = CLUB) => {\n const sortedData = [];\n sortedData.push(data);\n const localKey = localKeyMapping[type];\n setLocalItem(localKey, JSON.stringify(data));\n\n if (type === KICKABOUT_CASUAL) {\n setCasualRecommendationsContext(sortedData[0]);\n return;\n }\n\n setClubRecommendationsContext(data);\n }, []);\n\n // we export the add recommendations method to avoid\n // having the merging logic in each component\n const addMORecommendations = useCallback(\n (data, type) => {\n if (data.length === 0) {\n return;\n }\n\n if (type === KICKABOUT_CASUAL) {\n const newData = mergeRecommendations(\n casualRecommendationsContext,\n data\n );\n\n setCasualRecommendationsContext(newData[0]);\n setLocalItem(RECOMMENDATIONS_MO_CASUAL, JSON.stringify(newData[0]));\n return;\n }\n\n const newData = mergeRecommendations(clubRecommendationsContext, data);\n\n setClubRecommendationsContext(newData[0]);\n setLocalItem(RECOMMENDATIONS_MO_CLUB, JSON.stringify(newData[0]));\n },\n [casualRecommendationsContext, clubRecommendationsContext]\n );\n\n const resetMORecommendations = () => {\n removeLocalItem(RECOMMENDATIONS_MO_CLUB);\n setClubRecommendationsContext(null);\n removeLocalItem(RECOMMENDATIONS_MO_CASUAL);\n setCasualRecommendationsContext(null);\n };\n\n return (\n \n {children}\n \n );\n};\n\nexport const useMORecommendations = () => useContext(MORecommendationsContext);\n","import { createContext, useCallback, useContext, useState } from 'react';\n\nconst NestedFilterPanelContext = createContext();\n\nexport const NestedFilterPanelProvider = ({ children }) => {\n const [selectedFilterContext, setSelectedFilterContext] = useState();\n const [isNested, setIsNested] = useState(false);\n\n // Filter list item click handler\n const setSelectedFilters = useCallback(value => {\n setSelectedFilterContext(value);\n }, []);\n\n const setNested = useCallback((value = false) => {\n setIsNested(value);\n }, []);\n\n const resetNestedFilterPanel = () => {\n setSelectedFilterContext({});\n };\n\n return (\n \n {children}\n \n );\n};\n\nexport const useNestedFilterPanelContext = () =>\n useContext(NestedFilterPanelContext);\n","import { createContext, useCallback, useContext, useState } from 'react';\n\nconst OnboardingDataContext = createContext({\n setOnboardingContext: () => { },\n});\n\nexport const OnboardingDataProvider = ({ children }) => {\n const [OnboardingContext, setOnboardingContext] = useState({});\n\n const setOnboardingDataContext = useCallback(value => {\n if (!value) {\n return;\n }\n setOnboardingContext(value);\n }, []);\n\n return (\n \n {children}\n \n );\n};\n\nexport const useOnboardingDataContext = () =>\n useContext(OnboardingDataContext);\n","import { createContext, useContext, useEffect, useRef } from 'react';\nimport { useHistory } from 'react-router';\n\nimport { PREVIOUSPAGE } from '../const';\nimport { setLocalItem } from '../hooks/useLocalStorage';\n\nexport const PageHistoryContext = createContext();\n\nexport const PageHistoryProvider = ({ children }) => {\n const history = useHistory();\n const previousPage = useRef();\n const currentPage = useRef();\n\n useEffect(() => {\n history.listen(({ pathname }) => {\n // if the page was changed\n if (pathname !== currentPage.current) {\n if (pathname.includes('/team')) {\n return;\n }\n // add the current page to the history\n previousPage.current = currentPage.current;\n // to get previous url during page refresh\n setLocalItem(PREVIOUSPAGE, currentPage.current);\n\n // change the current page to the new page\n currentPage.current = pathname;\n }\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n {children}\n \n );\n};\n\nexport const usePageHistory = () => useContext(PageHistoryContext);\n","export default {\n home: {\n title: 'Home Page - Find Football',\n description: '',\n pageType: 'Home Page',\n },\n onboardingModal: {\n title: 'Onboarding - Find Football',\n description: '',\n pageType: 'Onboarding',\n },\n recommendations: {\n title: type => `${type} - Recommendations Pages - Find Football`,\n description: '',\n pageType: 'Recommendations Page',\n },\n miniOnboardingResults: {\n title: type => `${type} - Results Pages - Find Football`,\n description: '',\n pageType: 'Minionboarding Results Page',\n },\n map: {\n title: type => `${type} - Map Results - Find Football`,\n description: '',\n pageType: 'Map Results Page',\n },\n venue: {\n title: name => `${name} Venue and Sessions - Find Football`,\n description: '',\n pageType: 'Venue and Sessions Page',\n },\n club: {\n title: name => `${name} Club Details - Find Football`,\n description: '',\n pageType: 'Club Details Page',\n },\n team: {\n title: name => `${name} Team Details - Find Football`,\n description: '',\n pageType: 'Team Details Page',\n },\n};\n","import { useMsal } from '@azure/msal-react';\nimport { createContext, Fragment, useContext, useMemo, useState } from 'react';\nimport { Helmet } from 'react-helmet';\n\nimport pageMetaInfo from '../pageMetaInfo';\n\nexport const PageInfoContext = createContext();\n\nexport const PageInfoProvider = ({ children }) => {\n const [pageInfo, setPageInfo] = useState();\n const { accounts } = useMsal();\n const { title, description } = pageInfo || {};\n const isLoggedIn = accounts.length > 0;\n\n const setPageInfoFromDefault = (pageName, pageTitleTokens) => {\n const info = pageMetaInfo[pageName];\n\n if (!info) {\n return;\n }\n\n const pageInfo = {\n ...info,\n ...(typeof info.title === 'function' && {\n title: info.title(pageTitleTokens),\n }),\n };\n\n setPageInfo(pageInfo);\n\n if (pageInfo && pageInfo.title) {\n\n // remove duplicate pages from dataLayer\n window.dataLayer.filter((data, index) => {\n return data.hasOwnProperty('page_name') ? window.dataLayer.splice(index, 1) : data\n })\n\n // GTM dataLayer\n window.dataLayer.push({\n page_name: pageInfo?.title,\n page_type: pageInfo?.pageType,\n page_url: window.location.href,\n loginId: isLoggedIn ? accounts[0]?.idTokenClaims.extension_FANCode : \"Anonymous\",\n loginStatus: isLoggedIn ? \"yes\" : \"no\",\n logintype: \"FAN\",\n userStatus: (isLoggedIn && accounts[0]?.idTokenClaims?.hasOwnProperty('newUser')) ? \"New User\" :\n isLoggedIn ? \"Existing User\" : null,\n });\n }\n };\n\n const navigationAssertive = useMemo(\n () => (title ? `Navigated to ${title}` : ''),\n [title]\n );\n\n return (\n \n \n {title}\n \n \n {/* This region is used to announce route changes */}\n
    \n {navigationAssertive}\n
    \n \n {children}\n \n
    \n );\n};\n\nexport const usePageInfo = () => useContext(PageInfoContext);\n","import { createContext, useCallback, useContext, useState } from 'react';\n\nimport { ONBOARDING_PREFERENCES } from '../const';\nimport {\n getLocalItem,\n removeLocalItem,\n setLocalItem,\n} from '../hooks/useLocalStorage';\n\nconst localPreferences = getLocalItem(ONBOARDING_PREFERENCES);\nconst preferencesValue = localPreferences ? JSON.parse(localPreferences) : {};\n\nexport const PreferencesContext = createContext();\n\nexport const PreferencesProvider = ({ children }) => {\n const [preferences, setPreferencesContext] = useState(preferencesValue);\n\n const setPreferences = useCallback(preferences => {\n setLocalItem(ONBOARDING_PREFERENCES, JSON.stringify(preferences));\n setPreferencesContext(preferences);\n }, []);\n\n const resetPreferences = () => {\n setPreferencesContext({});\n removeLocalItem(ONBOARDING_PREFERENCES);\n };\n\n return (\n \n {children}\n \n );\n};\n\nexport const usePreferencesContext = () => useContext(PreferencesContext);\n","import { createContext, useCallback, useContext, useState } from 'react';\n\nimport {\n CLUB,\n DONT_MIND,\n KICKABOUT_CASUAL,\n RECOMMENDATIONS_CASUAL,\n RECOMMENDATIONS_CLUB,\n} from '../const';\nimport {\n getLocalItem,\n removeLocalItem,\n setLocalItem,\n} from '../hooks/useLocalStorage';\n\nconst localKeyMapping = {\n [KICKABOUT_CASUAL]: RECOMMENDATIONS_CASUAL,\n [CLUB]: RECOMMENDATIONS_CLUB,\n [DONT_MIND]: RECOMMENDATIONS_CLUB,\n};\n\nconst localClubRecommendations = getLocalItem(RECOMMENDATIONS_CLUB);\nconst clubRecommendationsValue = localClubRecommendations\n ? JSON.parse(localClubRecommendations)\n : null;\nconst localCasualRecommendations = getLocalItem(RECOMMENDATIONS_CASUAL);\nconst casualRecommendationsValue = localCasualRecommendations\n ? JSON.parse(localCasualRecommendations)\n : null;\n\nexport const RecommendationsContext = createContext();\n\n// From the api we receive the next page of each football type\n// so we need to merge the results for each of them\nconst mergeRecommendations = (oldRecommendations, newRecommendations) => {\n return oldRecommendations.reduce((acc, oldType) => {\n const newRecommendationsSection = newRecommendations.findIndex(\n section =>\n section.FootballType === oldType.FootballType &&\n section.DisabilityId === oldType.DisabilityId\n );\n\n // if the api didn't return results for one of the types do not update it\n if (newRecommendationsSection === -1) {\n return [...acc, oldType];\n }\n\n const arrayKey = oldType.RecommendationClubCartDto\n ? 'RecommendationClubCartDto'\n : oldType.RecommendationCentreCartDto.length < 0\n ? 'RecommendationProviderCartDto'\n : 'NULL';\n const arrayData = `${\n arrayKey === 'NULL' ? 'RecommendationProviderCartDto' : arrayKey\n }`;\n const arrayKeyData = `${\n arrayKey === 'NULL'\n ? 'RecommendationCentreCartDto'\n : 'RecommendationClubCartDto'\n }`;\n\n return [\n ...acc,\n {\n ...oldType,\n [arrayData]: [\n ...oldType[arrayData],\n ...(arrayKeyData === 'RecommendationCentreCartDto'\n ? newRecommendations[newRecommendationsSection][arrayKeyData]\n : []),\n ...newRecommendations[newRecommendationsSection][arrayData],\n ],\n },\n ];\n // eslint-disable-next-line\n }, []);\n};\n\nexport const RecommendationsProvider = ({ children }) => {\n const [clubRecommendationsContext, setClubRecommendationsContext] = useState(\n clubRecommendationsValue\n );\n const [casualRecommendationsContext, setCasualRecommendationsContext] =\n useState(casualRecommendationsValue);\n\n const setRecommendations = useCallback((data, type = CLUB) => {\n const localKey = localKeyMapping[type];\n setLocalItem(localKey, JSON.stringify(data));\n\n if (type === KICKABOUT_CASUAL) {\n setCasualRecommendationsContext(data);\n return;\n }\n\n setClubRecommendationsContext(data);\n }, []);\n\n // we export the add recommendations method to avoid\n // having the merging logic in each component\n const addRecommendations = useCallback(\n (data, type) => {\n if (data.length === 0) {\n return;\n }\n\n if (type === KICKABOUT_CASUAL) {\n const newData = mergeRecommendations(\n casualRecommendationsContext,\n data\n );\n\n setCasualRecommendationsContext(newData);\n setLocalItem(RECOMMENDATIONS_CASUAL, JSON.stringify(newData));\n return;\n }\n\n const newData = mergeRecommendations(clubRecommendationsContext, data);\n\n setClubRecommendationsContext(newData);\n setLocalItem(RECOMMENDATIONS_CLUB, JSON.stringify(newData));\n },\n [casualRecommendationsContext, clubRecommendationsContext]\n );\n\n const resetRecommendations = () => {\n removeLocalItem(RECOMMENDATIONS_CLUB);\n setClubRecommendationsContext(null);\n removeLocalItem(RECOMMENDATIONS_CASUAL);\n setCasualRecommendationsContext(null);\n };\n\n return (\n \n {children}\n \n );\n};\n\nexport const useRecommendations = () => useContext(RecommendationsContext);\n","import { createContext, useCallback, useContext, useState } from 'react';\n\nconst SetContactFormDLContext = createContext();\n\nexport const SetContactFormDLProvider = ({ children }) => {\n const [contactFormDL, setContactFormDL] = useState({});\n\n const setContactFormDLValue = useCallback(value => {\n setContactFormDL(value);\n }, []);\n\n return (\n \n {children}\n \n );\n};\n\nexport const useSetContactFormDLContext = () =>\n useContext(SetContactFormDLContext);\n","import { createContext, useCallback, useContext, useState } from 'react';\n\nconst SetPathInfoContext = createContext();\n\nexport const SetPathInfoProvider = ({ children }) => {\n const [pathInfo, setPathInfo] = useState(\"/\");\n\n // Filter list item click handler\n const setPathInformation = useCallback(value => {\n setPathInfo(value);\n }, []);\n\n return (\n \n {children}\n \n );\n};\n\nexport const useSetPathInfoContext = () =>\n useContext(SetPathInfoContext);\n","import { createContext, useCallback, useContext, useState } from 'react';\n\nimport { getLocalItem, setLocalItem } from '../hooks/useLocalStorage';\n\nconst SetSelectedClubDetailsContext = createContext();\n\nexport const SetSelectedClubDetailsProvider = ({ children }) => {\n const [selectedClubDetails, setSelectedClubDetails] = useState(\n JSON.parse(getLocalItem('clubDetails'))\n );\n\n const setSelectedClubDetailsValue = useCallback(value => {\n setLocalItem('clubDetails', JSON.stringify(value));\n setSelectedClubDetails(value);\n }, []);\n\n return (\n \n {children}\n \n );\n};\n\nexport const useSetSelectedClubDetailsContext = () =>\n useContext(SetSelectedClubDetailsContext);","import { AccessTokenProvider } from './accessToken';\nimport { FilterPanelToggleProvider } from './filterPanelToggle';\nimport { MLRecommendationsProvider } from './mlRecommendations';\nimport { MORecommendationsProvider } from './moRecommendations';\nimport { NestedFilterPanelProvider } from './nestedFilterPanel';\nimport { OnboardingDataProvider } from './OnboardingData';\nimport { PageHistoryProvider } from './pageHistory';\nimport { PageInfoProvider } from './pageInfo';\nimport { PreferencesProvider } from './preferences';\nimport { RecommendationsProvider } from './recommendations';\nimport { ScrollDirectionProvider } from './scrollDirection';\nimport { SetContactFormDLProvider } from './setContactFormDL';\nimport { SetHeaderHeightProvider } from './setHeaderHeight';\nimport { SetPathInfoProvider } from './setPathInfo';\nimport { SetSelectedClubDetailsProvider } from './setSelectedClubDetails';\n\nconst ContextProviders = ({ children }) => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {children}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default ContextProviders;\n","// Google tag manager\nimport gTagManager from 'react-gtm-module';\n\nconst initGTagManager = () => {\n // may be replace || with ?? in the future.\n window.dataLayer = window.dataLayer || [];\n\n if (!process.env.REACT_APP_LOCAL) {\n gTagManager.initialize({\n gtmId: process.env.REACT_APP_GTM_ID,\n ...(process.env.REACT_APP_GTM_AUTH && {\n auth: process.env.REACT_APP_GTM_AUTH,\n }),\n ...(process.env.REACT_APP_GTM_PREVIEW && {\n preview: process.env.REACT_APP_GTM_PREVIEW,\n }),\n });\n }\n};\n\nexport default initGTagManager;\n","/** @jsxImportSource @emotion/react */\n\nimport useStyles from './styles';\n\nconst HiddenContent = ({ children, ...rest }) => {\n const styles = useStyles();\n\n return (\n \n {children}\n \n );\n};\n\nexport default HiddenContent;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { utility } = useTheme();\n\n return {\n hidden: css`\n ${utility.checkboxHidden}\n\n padding: 0 !important;\n margin: 0 !important;\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport { useMsal } from '@azure/msal-react';\nimport React, { useEffect } from 'react';\n\nimport { loginRequest } from '../../authConfig';\nimport b2cEnvVariables from '../../b2cEnvVariables';\nimport HiddenContent from '../HiddenContent';\n\nconst DontKnowMyFan = () => {\n const { instance } = useMsal();\n const appConfig = b2cEnvVariables(process.env.REACT_APP_ENVIRONMENT);\n\n // for account recovery - don't know my fan\n const ACCOUNT_RECOVERY = {\n ...loginRequest,\n authority: `${appConfig.AuthUrl}/${appConfig.Tenant}/${appConfig.DontKnowMyFanPolicyId}`,\n };\n\n useEffect(() => {\n localStorage.setItem('rootUrl', localStorage.getItem('pathInfomation'));\n instance.loginRedirect(ACCOUNT_RECOVERY);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n return (\n Redirecting to don't know my fan page\n );\n};\n\nexport default DontKnowMyFan;\n","/** @jsxImportSource @emotion/react */\nimport { useIsAuthenticated, useMsal } from '@azure/msal-react';\nimport React, { useEffect } from 'react';\n\nimport { loginRequest } from '../../authConfig';\nimport b2cEnvVariables from '../../b2cEnvVariables';\nimport HiddenContent from '../HiddenContent';\n\nconst SignInFan = () => {\n const { instance } = useMsal();\n const appConfig = b2cEnvVariables(process.env.REACT_APP_ENVIRONMENT);\n const isAuthenticated = useIsAuthenticated();\n\n // for forgot email\n const SIGNIN_FAN_REQUEST = {\n ...loginRequest,\n authority: `${appConfig.AuthUrl}/${appConfig.Tenant}/${appConfig.ForgottenEmailPolicyId}`,\n };\n\n useEffect(() => {\n if (!isAuthenticated) {\n localStorage.setItem('rootUrl', localStorage.getItem('pathInfomation'));\n instance.loginRedirect(SIGNIN_FAN_REQUEST)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n return (\n Redirecting to forgot email page\n );\n};\n\nexport default SignInFan;\n","/** @jsxImportSource @emotion/react */\nimport { useIsAuthenticated, useMsal } from '@azure/msal-react';\nimport React, { useEffect } from 'react';\n\nimport { loginRequest } from '../../authConfig';\nimport b2cEnvVariables from '../../b2cEnvVariables';\nimport HiddenContent from '../HiddenContent';\n\nconst SignUp = () => {\n const { instance } = useMsal();\n const appConfig = b2cEnvVariables(process.env.REACT_APP_ENVIRONMENT);\n const isAuthenticated = useIsAuthenticated();\n\n // for signup request\n const SIGNUP_REQUEST = {\n ...loginRequest,\n authority: `${appConfig.AuthUrl}/${appConfig.Tenant}/${appConfig.SignUpPolicyId}`,\n };\n\n useEffect(() => {\n if (!isAuthenticated) {\n localStorage.setItem('rootUrl', localStorage.getItem('pathInfomation'));\n instance.loginRedirect(SIGNUP_REQUEST)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n return Redirecting to signUp page;\n};\n\nexport default SignUp;","import { useEffect, useState } from 'react';\n\nimport { getClubAccreditation } from '../../services';\n\nconst getAccreditation = accreditation => {\n if (!['Accredited'].includes(accreditation.accreditationStatus)) {\n if (!['In Progress'].includes(accreditation.accreditationStatus)) {\n return;\n }\n }\n return {\n isAccreditation: true,\n accreditationLevel: accreditation.accreditationLevel,\n };\n};\n\nexport default id => {\n const [accreditation, setAccreditation] = useState();\n\n useEffect(() => {\n if (!id) {\n return;\n }\n\n getClubAccreditation(id)\n .then(({ data }) => {\n setAccreditation(getAccreditation(data));\n })\n // don't throw an error if we don't have the accreditation\n // fail gracefully\n .catch(() => {});\n }, [id]);\n\n return accreditation;\n};\n","import { useEffect, useState } from 'react';\n\nimport { EMAIL, EMPTY_STRING, PHONE_NUMBER, WEBSITE } from '../../const';\nimport { getClubContactDetails } from '../../services';\n\nconst getContactDetails = details => {\n const { isAllowPublic, phone, email, website, individualName } = details;\n\n // check whether the website contains http or https\n const href = website\n ? /^https?:\\/\\//i.test(website) ? website\n : /^http?:\\/\\//i.test(website) ? website : `http://${website}`\n : EMPTY_STRING;\n\n if (!isAllowPublic || (!phone && !email)) {\n return {\n details: {\n ...(href && { [WEBSITE]: href }),\n },\n otherDetails: {\n ...(email && { [EMAIL]: email }),\n ...(phone && { [PHONE_NUMBER]: phone }),\n },\n isPublic: false,\n };\n }\n\n return {\n details: {\n ...(email && { [EMAIL]: email }),\n ...(phone && { [PHONE_NUMBER]: phone }),\n ...(href && { [WEBSITE]: href }),\n },\n name: individualName,\n isPublic: true,\n };\n};\n\nexport default id => {\n const [contactDetails, setContactDetails] = useState();\n\n useEffect(() => {\n if (!id) {\n return;\n }\n\n getClubContactDetails(id)\n .then(({ data }) => {\n setContactDetails(getContactDetails(data));\n })\n // don't throw an error if we don't have the accreditation\n // fail gracefully\n .catch(() => { });\n }, [id]);\n\n return contactDetails;\n};\n","import { useState } from 'react';\n\nexport const LOADING_STATE = 'loading';\n\nexport default () => {\n const [geolocationData, setGeolocationData] = useState();\n\n const getGeolocationData = () => {\n setGeolocationData({\n status: LOADING_STATE,\n statusMessage: 'Getting current location',\n });\n\n navigator.geolocation.getCurrentPosition(\n position => {\n const {\n coords: { latitude, longitude },\n } = position;\n\n if (latitude && longitude) {\n setGeolocationData({\n coordinates: { latitude, longitude },\n status: 'success',\n statusMessage: 'Current location saved successfully',\n });\n }\n },\n error => {\n if (error.code === error.PERMISSION_DENIED) {\n setGeolocationData({\n status: 'denied',\n statusMessage: 'Current location denied. Try entering a postcode',\n });\n }\n }\n );\n };\n\n return {\n geolocationData,\n getGeolocationData,\n };\n};\n","import { useEffect, useState } from 'react';\n\nimport { EMPTY_STRING } from '../../const';\nimport useGeolocation from '../../hooks/useGeolocation';\n\nexport default (selectedRecommendationType, preferences) => {\n const [sourceLoction, setSourceLoction] = useState();\n const { geolocationData, getGeolocationData } = useGeolocation();\n\n // if preference is not there call geolocation method\n useEffect(() => {\n const hasPreferences = !!selectedRecommendationType;\n if (hasPreferences || preferences?.Category) {\n return;\n }\n getGeolocationData();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedRecommendationType]);\n\n useEffect(() => {\n setSourceLoction(\n !!selectedRecommendationType\n ? {\n latitude: preferences.Latitude,\n longitude: preferences.Longitude,\n }\n : geolocationData?.coordinates\n ? {\n latitude: geolocationData.coordinates.latitude,\n longitude: geolocationData.coordinates.longitude,\n }\n : preferences\n ? {\n latitude: preferences.Latitude,\n longitude: preferences.Longitude,\n }\n : EMPTY_STRING\n );\n }, [selectedRecommendationType, preferences, geolocationData]);\n\n return sourceLoction;\n};\n","import { useCallback, useState } from 'react';\n\n/**\n * React Hook that rethrows an error during a re-render so it can be caught by an ErrorBoundary.\n */\nexport default () => {\n const [, setError] = useState();\n\n return useCallback(\n error => {\n setError(() => {\n throw error;\n });\n },\n [setError]\n );\n};\n","import { EMPTY_STRING } from '../../const';\n\nconst isAddressNullCheck = (value, separator) => {\n return value ? `${value.trim()}${separator || EMPTY_STRING}` : EMPTY_STRING;\n};\n\nconst formatAddress = (address, separator = ', ') => {\n return `${isAddressNullCheck(\n address.AddressLine1 || address.AddressLine2,\n separator\n ).toLowerCase()}${isAddressNullCheck(address.AddressLine3, separator).toLowerCase()}${isAddressNullCheck(\n address.City || address.CityOrTown,\n separator\n ).toLowerCase()}${isAddressNullCheck(address.PostCode).toUpperCase()}`;\n};\n\nexport default formatAddress;\n","import { CarIcon, Disability, FaInitiative, FootballTypes, Person, Pitch } from '../../components/Icons';\nimport { DISABILITY_FACILITIES_MAPPING,EMPTY_STRING } from '../../const';\nimport formatAddress from '../formatAddress';\n\nconst normaliseClubDetails = apiData => {\n const {\n ClubName,\n DistanceFromUserLocation,\n ClubCounty,\n GroundName,\n TeamsCount,\n TeamsPreferenceCount,\n TeamsTab,\n Latitude,\n Longitude,\n Facility,\n PitchTypes,\n DisableFacility,\n WgsClubId,\n TeamsInfo,\n ClubId,\n ...rest\n } = apiData;\n\n const { FootballType, Gender, DisabilityType } = TeamsInfo;\n \n return {\n title: ClubName,\n clubid: ClubId,\n address: formatAddress(rest),\n contactAddress: formatAddress(rest, '\\n'),\n county: ClubCounty,\n accreditationid: WgsClubId,\n distance: DistanceFromUserLocation,\n latitude: Latitude,\n longitude: Longitude,\n gender: Gender[0],\n footballtypes: {\n title: 'Football types played here',\n values: [\n {\n title: 'Teams football types',\n icon: FootballTypes,\n rows: FootballType,\n },\n {\n title: 'Teams gender groups',\n icon: Person,\n rows: Gender.map(gender => `${gender} Football`),\n },\n {\n title: 'Teams disability types',\n icon: FaInitiative,\n rows: DisabilityType,\n },\n ],\n },\n facilities: Facility ? {\n title: 'Club ground facilities',\n values: [\n {\n title: 'Facilities',\n icon: CarIcon,\n rows: [\n ...(Facility && Facility.CarPark && Facility.CarParkCapacity > 0\n ? [`${Facility.CarParkCapacity} Parking Spaces`]\n : []),\n ...(Facility && Facility.ChangingRooms ? ['Changing Rooms'] : []),\n ...(Facility && Facility.Floodlit ? ['Floodlights'] : []),\n ],\n },\n {\n title: 'Disability Facilities',\n icon: Disability,\n rows: DisableFacility && Object.keys(DisableFacility)\n .map(\n facility =>\n DisableFacility[facility] &&\n DISABILITY_FACILITIES_MAPPING[facility]\n )\n .filter(Boolean),\n },\n {\n title: 'Pitch types',\n icon: Pitch,\n rows: PitchTypes,\n },\n ],\n } : EMPTY_STRING,\n totalteams: TeamsPreferenceCount || TeamsCount,\n teams: TeamsTab.map(team => ({\n title: `${team.Gender} Football`,\n data: team.teamsGroup,\n })),\n };\n};\n\nexport default normaliseClubDetails;\n","import { useLayoutEffect, useRef, useState } from 'react';\n\nexport default () => {\n const elementRef = useRef();\n const resizeObserver = useRef();\n const [height, setHeight] = useState();\n\n useLayoutEffect(() => {\n if (!elementRef.current) {\n return;\n }\n\n const element = elementRef.current;\n\n setHeight(element?.getBoundingClientRect().top + element?.offsetHeight);\n\n const listener = () => {\n setHeight(element?.getBoundingClientRect().top + element?.offsetHeight);\n };\n\n if (typeof window !== 'undefined') {\n resizeObserver.current = new window.ResizeObserver(listener);\n resizeObserver.current.observe(element);\n window.addEventListener('resize', listener);\n }\n\n return () => {\n resizeObserver.current?.unobserve(element);\n resizeObserver.current?.disconnect();\n document.removeEventListener('resize', listener);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [elementRef.current]);\n\n return {\n height,\n elementRef,\n };\n};\n","// Clean URL - Cleans provided URL by removing protocol, www and everything after .com\nexport default url => {\n if (!url) {\n return;\n }\n\n return url.replace(/^(?:https?:\\/\\/)?(?:www\\.)?/i, '').split('/')[0];\n};\n","export default eventDetails => {\n window.dataLayer.push({\n event: 'All Events',\n eventCategory: eventDetails?.eventCategory,\n eventAction: 'click',\n eventLabel: eventDetails?.eventLabel,\n eventparameter1: eventDetails?.eventparameter1,\n eventparameter2: eventDetails?.eventparameter2,\n eventparameter3: eventDetails?.eventparameter3,\n eventparameter4: eventDetails?.eventparameter4,\n eventparameter5: eventDetails?.eventparameter5,\n category_type: eventDetails?.category_type?.toLowerCase(),\n link_text: eventDetails?.link_text?.toLowerCase(),\n age_group: eventDetails?.eventparameter4,\n gender_group: eventDetails?.eventparameter5,\n club_name: eventDetails?.eventparameter1?.toLowerCase(),\n team_name: eventDetails?.eventparameter2?.toLowerCase(),\n item_list_name: eventDetails?.item_list_name?.toLowerCase(),\n form_name: 'club contact form',\n event_name: eventDetails?.event_name?.toLowerCase(),\n submission_status: eventDetails?.submission_status?.toLowerCase(),\n });\n window.dataLayer.push({\n event: 'Removal Tag',\n eventparameter1: undefined,\n eventparameter2: undefined,\n eventparameter3: undefined,\n eventparameter4: undefined,\n eventparameter5: undefined,\n category_type: undefined,\n link_text: undefined,\n age_group: undefined,\n gender_group: undefined,\n club_name: undefined,\n team_name: undefined,\n item_list_name: undefined,\n form_name: undefined,\n event_name: undefined,\n submission_status: undefined,\n });\n};\n","/** @jsxImportSource @emotion/react */\nimport PropTypes from 'prop-types';\nimport { Fragment } from 'react';\n\nimport { EMAIL, PHONE_NUMBER, WEBSITE } from '../../const';\nimport { useSetContactFormDLContext } from '../../context/setContactFormDL';\nimport cleanUrl from '../../utils/cleanUrl';\nimport contactFormDataLayer from '../../utils/contactFormDataLayer';\nimport Button from '../Button';\nimport ExternalLink from '../ExternalLink';\nimport { AlertIcon, Email, Phone, Website } from '../Icons';\nimport Text from '../Text';\nimport useStyles from './styles';\n\nconst DETAILS_MAPPING = {\n [EMAIL]: { icon: Email, prefix: 'mailto:' },\n [WEBSITE]: { icon: Website },\n [PHONE_NUMBER]: { icon: Phone, prefix: 'tel:' },\n};\n\nconst normaliseContactDetails = details => {\n if (!Object.keys(details)) {\n return [];\n }\n\n return Object.keys(details).map(detailKey => ({\n icon: DETAILS_MAPPING[detailKey].icon,\n text: cleanUrl(details[detailKey]),\n href: `${DETAILS_MAPPING[detailKey].prefix || ''}${details[detailKey]}`,\n }));\n};\n\nconst ContactDetails = ({\n title,\n contactDetails,\n subTitle,\n isClubInfo = false,\n isVenueLocation = false,\n onClick,\n isProvider = false,\n organisername,\n}) => {\n const styles = useStyles();\n const { contactFormDL } = useSetContactFormDLContext();\n\n const details =\n contactDetails?.details && normaliseContactDetails(contactDetails.details);\n\n return (\n
    \n \n {title}\n \n {!isVenueLocation && (\n \n {subTitle}\n \n )}\n {details && details.length > 0 && (\n \n
    \n {contactDetails?.name && (\n \n {contactDetails.name}\n \n )}\n {organisername && (\n \n {organisername}\n \n )}\n
      \n {details.map(detail => {\n const { href: link, icon: Icon } = detail;\n return (\n
    • \n \n \n \n \n \n {detail.text}\n \n \n
    • \n );\n })}\n
    \n
    \n
    \n )}\n {!isVenueLocation &&\n !isProvider &&\n (contactDetails?.details?.email ||\n contactDetails?.otherDetails?.email) && (\n
    \n \n Or use our contact form\n \n {\n onClick();\n contactFormDataLayer({\n ...contactFormDL,\n eventLabel: 'FF Club Contact Form CTA - Contact Form',\n link_text: 'contact form',\n event_name: 'cta_primary_click',\n });\n }}\n >\n Contact form\n \n
    \n )}\n {isVenueLocation && (\n
    \n \n {subTitle}\n
    \n )}\n
    \n );\n};\n\nContactDetails.prototype = {\n title: PropTypes.string,\n contactDetails: PropTypes.object,\n subTitle: PropTypes.string,\n isClubInfo: PropTypes.bool,\n isVenueLocation: PropTypes.bool,\n onClick: PropTypes.func,\n isProvider: PropTypes.bool,\n};\n\nexport default ContactDetails;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { breakpoints, borderRadius, colors, spacing } = useTheme();\n\n return {\n title: isClubInfo => css`\n margin-bottom: ${spacing.xs};\n text-decoration: underline ${colors.red} 2px;\n -webkit-text-decoration-line: underline;\n -webkit-text-decoration-color: ${colors.red};\n -webkit-text-decoration-style: solid;\n -webkit-text-decoration-thickness: 2px;\n display: inine-block;\n font-size: 1.75rem;\n line-height: 1.625rem;\n font-weight: 700;\n\n ${breakpoints.l} {\n font-size: 1.75rem;\n line-height: 1.625rem;\n font-weight: 700;\n\n ${!isClubInfo &&\n css`\n font-size: 2.5rem;\n line-height: 2.25rem;\n `}\n }\n `,\n section: (isVenueLocation, isProvider) => css`\n margin-bottom: ${isVenueLocation ? '1.5rem' : spacing.s};\n border-bottom: 1px solid ${colors.lightGrey};\n padding-bottom: ${isVenueLocation ? '1.5rem' : spacing.s};\n\n ${breakpoints.l} {\n ${isVenueLocation &&\n css`\n margin-bottom: ${spacing.m};\n padding-bottom: ${spacing.m};\n `}\n }\n `,\n sectionTitle: css`\n margin-bottom: ${spacing.s};\n font-weight: bold;\n color: ${colors.navy};\n letter-spacing: 0.02em;\n font-size: 1.25rem;\n\n ${breakpoints.l} {\n font-weight: bold;\n font-size: 1.25rem;\n }\n `,\n info: isProvider => css`\n color: ${colors.darkGrey};\n\n ${isProvider &&\n css`\n padding-bottom: 2rem;\n `}\n `,\n row: css`\n margin-bottom: ${spacing.xs};\n\n &:last-of-type {\n margin-bottom: 0;\n }\n `,\n link: css`\n display: flex;\n align-items: center;\n text-decoration: none;\n\n &:focus {\n outline: 0;\n text-decoration: underline;\n color: ${colors.navy};\n svg {\n color: ${colors.navy};\n }\n }\n `,\n icon: css`\n color: ${colors.red};\n flex-shrink: 0;\n width: 1.4375rem;\n `,\n text: isProvider => css`\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n\n ${isProvider &&\n css`\n text-transform: lowercase;\n `}\n `,\n stickyContact: (isClubInfo, isVenueLocation, isProvider) => css`\n height: 100%;\n\n ${\n isProvider &&\n css`\n position: sticky;\n top: 200px;\n height: auto;\n padding: 2.5rem 2.125rem 1rem 2.125rem;\n border-radius: ${borderRadius.xxl};\n box-shadow: 0px 1px 11px rgba(1, 30, 65, 0.07),\n 0px 4px 20px rgba(1, 30, 65, 0.14);\n }\n `\n }\n\n h3 {\n display: inline-block;\n font-style: italic;\n margin-bottom: ${isVenueLocation ? spacing.m : spacing.s};\n color: ${colors.navy};\n }\n\n ${breakpoints.l} {\n padding-bottom: ${spacing.m};\n\n ${\n isClubInfo &&\n css`\n position: sticky;\n top: 200px;\n height: auto;\n\n ${breakpoints.l} {\n padding: 2.5rem 2.125rem;\n border-radius: ${borderRadius.xxl};\n box-shadow: 0px 1px 11px rgba(1, 30, 65, 0.07),\n 0px 4px 20px rgba(1, 30, 65, 0.14);\n }\n `\n }\n\n ${\n isProvider &&\n css`\n ${breakpoints.l} {\n padding: 2.5rem 2.125rem 1rem 2.125rem;\n `\n }\n }\n }\n `,\n contactForm: css`\n background-color: ${colors.red};\n color: ${colors.white};\n display: inline-block;\n `,\n contactFormWrapper: css`\n display: grid;\n grid-auto-flow: column;\n align-items: center;\n margin-top: ${spacing.s};\n grid-template-columns: auto 1fr;\n align-items: center;\n grid-gap: 0.75rem;\n font-family: FS Dillon;\n border-bottom: 1px solid ${colors.lightGrey};\n margin-bottom: ${spacing.s};\n padding-bottom: ${spacing.s};\n\n span {\n color: ${colors.darkGrey};\n padding: 0.625rem 0;\n }\n\n button {\n padding: 10px;\n font-size: ${spacing.s};\n }\n `,\n bgIcon: css`\n background-color: ${colors.darkGrey};\n margin-right: ${spacing.xs};\n border-radius: ${borderRadius.l};\n height: 100%;\n display: inline-block;\n padding: 0.25rem;\n svg {\n color: ${colors.white};\n padding: 0.125rem;\n vertical-align: middle;\n }\n `,\n nameWrapper: css`\n font-size: 1.25rem;\n line-height: 1.375rem;\n\n ${breakpoints.l} {\n font-size: 1.25rem;\n line-height: 1.375rem;\n }\n `,\n venueDescription: css`\n background-color: ${colors.darkGrey};\n color: ${colors.white};\n border-radius: ${borderRadius.l};\n padding: ${spacing.s};\n display: grid;\n grid-template-columns: 40px auto;\n align-items: center;\n p {\n line-height: 1.5rem;\n }\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport PropTypes from 'prop-types';\n\nimport useTheme from '../../hooks/useTheme';\nimport Text from '../Text';\nimport useStyles from './styles';\n\nconst InfoFacilities = ({\n title,\n values,\n isTeamInfo = false,\n isVenuePage = false,\n isProvider = false,\n}) => {\n const styles = useStyles();\n const { colors } = useTheme();\n\n return (\n
    \n \n {title}\n \n
    \n {values &&\n values.length > 0 &&\n values.map((selectedValue, ind) => {\n if (selectedValue?.rows && selectedValue?.rows.length === 0) {\n return null;\n }\n const Icon = selectedValue?.icon;\n return (\n
    \n
    \n \n
    \n \n {selectedValue?.rows &&\n selectedValue?.rows.length > 0 &&\n Array.isArray(selectedValue?.rows) ? (\n selectedValue?.rows.map((facility, index) => (\n
  • \n {facility}\n
  • \n ))\n ) : (\n
  • \n {selectedValue?.rows}\n
  • \n )}\n \n
    \n );\n })}\n
    \n
    \n );\n};\n\nInfoFacilities.prototype = {\n title: PropTypes.string,\n values: PropTypes.object,\n isTeamInfo: PropTypes.bool,\n isVenuePage: PropTypes.bool,\n isProvider: PropTypes.bool,\n};\n\nexport default InfoFacilities;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { breakpoints, colors, spacing } = useTheme();\n\n return {\n facilities: isTeamInfo => css`\n display: grid;\n grid-template-columns: 30px 1fr;\n align-items: flex-start;\n grid-column-gap: ${spacing.xs};\n border-top: 1px solid ${colors.lightGrey};\n padding: 6px 10px;\n\n ${breakpoints.m} {\n border-top: 0;\n padding: 0;\n\n ${isTeamInfo &&\n css`\n &:first-of-type {\n grid-row: 1;\n grid-column: 1 / 3;\n }\n `}\n }\n `,\n title: css`\n font-size: 20px;\n color: ${colors.navy};\n margin-bottom: ${spacing.s};\n\n ${breakpoints.l} {\n padding-top: ${spacing.s};\n font-family: 'FS Dillon';\n color: ${colors.navy};\n font-weight: bold;\n line-height: 1.1rem;\n font-size: 1.25rem;\n line-height: 1.625rem;\n }\n `,\n infoFacilities: (isTeamInfo, isVenuePage, isProvider) => css`\n display: grid;\n background-color: ${colors.lightGrey};\n padding: ${spacing.s} 0.625rem ${spacing.s} ${spacing.s};\n border-radius: 8px;\n grid-row-gap: ${spacing.xs};\n\n ${isProvider && css`\n grid-row-gap: 1.5rem;\n `}\n \n ${isVenuePage &&\n css`\n grid-template-rows: repeat(3, auto);\n grid-row-gap: ${spacing.s};\n `}\n\n ${breakpoints.m} {\n ${!isTeamInfo &&\n !isVenuePage &&\n css`\n grid-template-columns: 1fr 1fr;\n `}\n padding: 1.5rem 0.625rem 1.5rem 1.5rem;\n }\n `,\n listFacilities: css`\n padding-top: 6px;\n padding-left: ${spacing.xs};\n `,\n facilitiesItem: css`\n color: ${colors.darkGrey};\n float: left;\n position: relative;\n padding-bottom: 0.625rem;\n &:not(:last-child):after {\n content: '|';\n padding: 0 0.4375rem;\n color: ${colors.white};\n }\n `,\n iconWrapper: iconName => css`\n background: url(/images/desktop/venue/${iconName}.svg) no-repeat;\n height: 100%;\n `,\n iconWrapperClub: css`\n background-color: ${colors.darkGrey};\n padding: 0px 0.125rem;\n border-radius: 0.3125rem;\n height: ${spacing.m};\n margin: 0 auto;\n width: ${spacing.m};\n display: grid;\n justify-content: center;\n align-items: center;\n `,\n };\n};\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\nimport publicPath from '../../utils/publicPath';\n\nconst faEventsCrop = '/images/common/fa-events-crop.svg';\n\nexport default () => {\n const { breakpoints, colors, spacing, typography, borderRadius } = useTheme();\n\n return {\n base: css`\n height: 100%;\n display: grid;\n grid-template-rows: auto auto;\n grid-template-columns: 100%;\n `,\n hero: css`\n h1 {\n ${typography.headings[4].mobile};\n\n ${breakpoints.m} {\n ${typography.headings[3].desktop};\n }\n }\n `,\n top: css`\n // display: flex;\n // align-items: center;\n `,\n middle: css`\n padding-top: ${spacing.xs};\n margin-top: ${spacing.xs};\n display: grid;\n grid-gap: ${spacing.m};\n\n ${breakpoints.xl} {\n grid-template-columns: auto max(325px);\n }\n `,\n wrapper: css`\n padding-top: ${spacing.s};\n margin-top: ${spacing.xs};\n display: grid;\n grid-gap: ${spacing.s};\n\n ${breakpoints.xl} {\n padding-top: 0;\n grid-template-columns: repeat(2, 1fr);\n grid-gap: 1.5rem;\n }\n `,\n title: css`\n font-size: 1.75rem;\n color: ${colors.navy};\n position: relative;\n text-decoration: underline ${colors.red} 2px;\n -webkit-text-decoration-line: underline;\n -webkit-text-decoration-color: ${colors.red};\n -webkit-text-decoration-style: solid;\n -webkit-text-decoration-thickness: 2px;\n margin: ${spacing.s} 0;\n\n ${breakpoints.l} {\n ${typography.headings[4].desktop};\n margin: 0;\n }\n `,\n rightContent: css`\n border-top: ${borderRadius.s} solid ${colors.red};\n padding: ${spacing.s};\n background-color: ${colors.lightGrey};\n `,\n wrapText: css`\n white-space: pre-wrap;\n `,\n venueFacilitiesWrapper: css`\n padding: ${spacing.xs} 0;\n ${breakpoints.m} {\n padding: 0;\n }\n `,\n eventsWrapper: css`\n margin-top: 1.5rem;\n border: 1px solid ${colors.lightGrey};\n border-radius: ${borderRadius.l};\n padding: 1.5rem;\n padding-bottom: ${spacing.xl};\n background: url(${publicPath(faEventsCrop)}) bottom right no-repeat;\n\n ${breakpoints.m} {\n padding-left: ${spacing.m};\n padding-right: ${spacing.m};\n padding-bottom: 5rem;\n }\n `,\n eventsTitle: css`\n margin-bottom: ${spacing.s};\n `,\n venueDescription: css`\n color: ${colors.darkGrey};\n \n ${breakpoints.l} {\n max-width: 60%;\n }\n `,\n events: css`\n display: flex;\n flex-wrap: wrap;\n\n > div {\n width: 100%;\n margin-bottom: 1.5rem;\n\n ${breakpoints.m} {\n margin-right: ${spacing.s};\n margin-bottom: 0;\n flex: 1;\n max-width: 50%;\n\n &:last-of-type {\n margin-right: 0;\n }\n }\n }\n `,\n };\n};\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { breakpoints, colors, spacing, borderRadius } = useTheme();\n\n return {\n title: css`\n display: inline-block;\n font-size: 1.75rem;\n color: ${colors.navy};\n margin: ${spacing.xs} 0;\n text-decoration: underline ${colors.red} 2px;\n -webkit-text-decoration-line: underline;\n -webkit-text-decoration-color: ${colors.red};\n -webkit-text-decoration-style: solid;\n -webkit-text-decoration-thickness: 2px;\n\n ${breakpoints.m} {\n color: ${colors.navy};\n font-size: ${spacing.l};\n line-height: 2.62rem;\n }\n `,\n textWrapper: css`\n color: ${colors.white};\n padding: 6rem ${spacing.s} 1.5rem 1.5rem;\n\n h3 {\n margin-bottom: 0.3rem;\n color ${colors.navy};\n }\n\n button {\n background-color: ${colors.red};\n color: ${colors.white};\n max-width: 11rem;\n margin-top: ${spacing.s};\n }\n \n ${breakpoints.l}{\n padding: ${spacing.s} ${spacing.s} 1.5rem ${spacing.xl};\n }\n\n `,\n imgWrapper: css`\n position: relative;\n padding-top: ${spacing.s};\n // EF-2523 - remove ads\n display: none;\n `,\n imgContent: css`\n background: url(/images/common/partner-promo-mobile.jpg) 0 0 no-repeat;\n border-radius: ${borderRadius.l};\n\n ${breakpoints.m} {\n background: url(/images/common/partner-promo.jpg) 0 0 no-repeat;\n min-height: 14.1875rem;\n background-size: cover;\n display: grid;\n align-content: end;\n width: 100%;\n }\n `,\n middle: isprovider => css`\n padding-top: ${spacing.xs};\n display: grid;\n grid-gap: ${spacing.xl};\n ${isprovider &&\n css`\n grid-template-columns: repeat(auto-fill, minmax(186px, 1fr));\n `}\n\n ${breakpoints.l} {\n grid-template-columns: auto max(325px);\n }\n `,\n clubDescriptionWrapper: css`\n p {\n font-size: ${spacing.s};\n padding-bottom: 1.5rem;\n line-height: 1.375rem;\n letter-spacing: 0.02em;\n color: ${colors.darkGrey};\n }\n\n a {\n display: inline-block;\n color: ${colors.darkGrey};\n }\n `,\n clubFacilitiesWrapper: css`\n padding: ${spacing.xs} 0;\n margin-top: ${spacing.s};\n\n ${breakpoints.m} {\n padding: ${spacing.xs} 0;\n margin-top: 0.1rem;\n }\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport PropTypes from 'prop-types';\nimport { Fragment } from 'react';\n\nimport { CASUAL_LINK, CLUB_LINK } from '../../const';\nimport useMediaQuery from '../../hooks/useMediaQuery';\nimport Button from '../Button';\nimport ContactDetails from '../ContactDetails';\nimport ExternalLink from '../ExternalLink';\nimport InfoFacilities from '../InfoFacilities';\nimport Text from '../Text';\nimport useStyles from '../VenueDetails/styles';\nimport useStylesClub from './styles';\n\nconst ClubDetails = ({\n footballtypes,\n accreditation,\n facilities,\n contact,\n contactAddress,\n county,\n title,\n onClick,\n}) => {\n const styles = useStyles();\n const stylesClub = useStylesClub();\n const isDesktop = useMediaQuery('screen and (min-width: 768px)');\n\n return (\n \n
    \n
    \n
    \n \n About {title}\n \n
    \n
    \n {accreditation?.isAccreditation ? (\n

    \n {title} is a football club who affiliates to {county}. This club\n is England Football Accredited. Recognised by the FA and their\n County FA for offering a consistent standard on and off the\n pitch, creating the ideal environments to nurture players,\n coaches and volunteers whilst delivering inclusive football for\n their local community. Joining a club is perfect for those who\n want to play regular competitive football and potentially enjoy\n training sessions too.\n

    \n ) : (\n

    \n {title} is a football club who affiliates to {county}, which\n means it enters one or more teams into organised regional\n leagues. Joining a club is perfect for those who want to play\n regular competitive football and potentially enjoy training\n sessions too.\n

    \n )}\n

    \n {' '}\n To find out more on this club, get in touch via the contact\n details below. You can also learn more about{' '}\n \n Club football \n {' '}\n and{' '}\n \n Casual football\n {' '}\n opportunities on our football type pages.{' '}\n

    \n
    \n
    \n {footballtypes && (\n \n )}\n
    \n
    \n {facilities && }\n
    \n
    \n
    \n
    \n \n Become a coach\n \n Lorem ipsum dolor sit amet.\n \n Find out more\n \n
    \n
    \n
    \n
    \n {isDesktop && (\n
    \n \n {contactAddress}\n \n
    \n )}\n
    \n
    \n );\n};\n\nClubDetails.prototype = {\n footballtypes: PropTypes.object,\n facilities: PropTypes.object,\n contact: PropTypes.object,\n contactAddress: PropTypes.string,\n county: PropTypes.string,\n title: PropTypes.string,\n onClick: PropTypes.func,\n};\n\nexport default ClubDetails;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { breakpoints, borderRadius, colors, typography, spacing } = useTheme();\n\n return {\n base: css`\n height: 100%;\n display: grid;\n grid-template-rows: auto 1fr;\n grid-template-columns: 100%;\n `,\n hero: css`\n h1 {\n text-transform: capitalize;\n font-style: italic;\n text-align: center;\n font-size: 2.625rem;\n\n &::after {\n background: none;\n }\n\n ${breakpoints.l} {\n ${typography.headings[3].desktop};\n max-width: 100%;\n text-align: center;\n width: 85%;\n margin: 0 auto;\n }\n }\n `,\n card: css`\n position: relative;\n background-color: ${colors.white};\n border-radius: ${borderRadius.l};\n margin-bottom: ${spacing.m};\n box-shadow: 0px 4px 6px rgba(91, 104, 133, 0.1);\n\n ${breakpoints.xl} {\n grid-template-rows: unset;\n grid-gap: ${spacing.s};\n }\n `,\n navContent: css`\n margin-top: 0.0625rem;\n padding: ${spacing.m};\n\n &:not(:last-child) {\n border-bottom: 1px solid ${colors.lightGrey};\n }\n\n ${breakpoints.xl} {\n margin: 0 6rem;\n padding: ${spacing.m} 0;\n }\n `,\n arrowRotate: css`\n transform: rotate(180deg);\n margin-right: 0.3125rem;\n color: ${colors.navy};\n `,\n backLink: css`\n color: ${colors.darkGrey};\n margin: ${spacing.s} 0;\n text-decoration: none;\n display: inline-block;\n font-weight: normal;\n padding: 0;\n `,\n loader: css`\n padding: ${spacing.s};\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport PropTypes from 'prop-types';\nimport { Fragment } from 'react';\n\nimport { EMPTY_STRING } from '../../const';\nimport Button from '../Button';\nimport useStyles from './styles';\n\nconst LinkDirection = ({\n latitude,\n longitude,\n name,\n icon: IconComponent,\n children,\n isInline,\n iconColor = '#0068B2',\n existingUrl,\n sourceLocation,\n ...rest\n}) => {\n const styles = useStyles();\n\n return (\n \n \n {IconComponent && }\n {children}\n \n \n {IconComponent && }\n {children}\n \n \n );\n};\n\nLinkDirection.prototype = {\n latitude: PropTypes.number,\n longitude: PropTypes.number,\n name: PropTypes.string,\n IconComponent: PropTypes.func,\n children: PropTypes.object,\n isInline: PropTypes.bool,\n iconColor: PropTypes.string,\n existingUrl: PropTypes.string,\n sourceLocation: PropTypes.object,\n};\n\nexport default LinkDirection;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { breakpoints, colors, spacing } = useTheme();\n\n return {\n link: (isMobile, isInline) => css`\n text-align: center;\n text-transform: uppercase;\n color: ${colors.blue};\n font-size: 0.875rem;\n\n ${breakpoints.l} {\n display: ${isInline ? 'inline-block' : 'block'};\n font-size: ${spacing.s};\n }\n\n ${isMobile &&\n css`\n display: ${isInline ? 'inline-block' : 'block'};\n `};\n `,\n directionSpace: css`\n padding-left: ${spacing.xs};\n font-size: 0.875rem;\n `,\n linkMobile: css`\n // since geo location is not working\n display: none;\n `,\n };\n};\n","const redIcon = '/images/common/location-pin-red.svg';\nconst blueIcon = '/images/common/location-pin-blue.svg';\nconst userIcon = '/images/common/user-pin.svg';\n\nconst baseConfig = {\n showDashboard: true,\n padding: 43,\n zoom: 19,\n enableClickableLogo: false,\n};\n\nconst pinBaseConfig = {\n icon: redIcon,\n};\n\n/**\n * The map class constructor takes a config object and an array of locations\n * config: {\n * container: the element in which to render the map\n * center: a location object for the center pin\n * handleMapMovement: function to be executed when the map is moved\n * },\n * pushpins: [{ latitude, longitude }]\n */\nclass MapService {\n map = null;\n currentlySelected = null;\n plottedPins = [];\n latestBound = null;\n hasMapViewChangedOnce = false;\n mouseDownOnPin = false;\n\n constructor(config, pushpins) {\n this.config = config;\n this.pushpinObjects = pushpins || [];\n\n this.init();\n }\n\n init() {\n if (this.map) {\n return;\n }\n\n // we want to make sure we have the maps on the window\n // before we initiate\n if (\n !window?.Microsoft?.Maps ||\n !window?.Microsoft?.Maps?.Location ||\n !window?.Microsoft?.Maps?.Pushpin ||\n !window?.Microsoft?.Maps?.LocationRect\n ) {\n setTimeout(() => {\n this.init();\n }, 500);\n } else {\n this.createMap();\n }\n }\n\n createLocation(location) {\n return new window.Microsoft.Maps.Location(\n location.latitude,\n location.longitude\n );\n }\n\n createPin(pin) {\n const location = this.createLocation(pin);\n return new window.Microsoft.Maps.Pushpin(location, {\n ...pinBaseConfig,\n ...(pin.options || {}),\n });\n }\n\n createView() {\n const pins = this.pushpinObjects.map(this.createLocation.bind(this));\n\n if (pins.length === 1 && this.config.zoom) {\n return {\n zoom: this.getZoomLevel(\n this.config.zoom,\n this.pushpinObjects[0].latitude\n ),\n center: this.createLocation(this.pushpinObjects[0]),\n };\n }\n\n const rect = window.Microsoft.Maps.LocationRect.fromLocations(pins);\n\n return { bounds: rect };\n }\n\n createMap() {\n if (this.map instanceof window.Microsoft.Maps.Map) {\n return;\n }\n\n const config = {\n ...baseConfig,\n navigationBarMode: window.Microsoft.Maps.NavigationBarMode.minified,\n };\n\n const mapRect = this.createView();\n\n this.map = new window.Microsoft.Maps.Map(this.config.container, {\n ...config,\n ...mapRect,\n });\n\n this.setMapListeners();\n this.addPins();\n }\n\n setMapListeners() {\n if (!this.map || !this.config.handleMapMovement) {\n return;\n }\n\n window.Microsoft.Maps.Events.addHandler(this.map, 'mouseup', () => {\n if (this.mouseDownOnPin) {\n return;\n }\n\n this.config.handleMapMovement();\n });\n }\n\n addPins(pins) {\n if (pins) {\n this.pushpinObjects = [...pins];\n }\n\n if (!this.map || this.pushpinObjects.length === 0) {\n return;\n }\n\n // if the config has the user location we want to show it\n if (this.config.center) {\n // create a pushpin for the user location\n this.pushpinObjects.push({\n id: 'user-location',\n ...this.config.center,\n options: {\n icon: userIcon,\n },\n });\n }\n\n this.pushpinObjects.forEach(({ handleClick, id, ...singlePin }) => {\n const newPin = this.createPin(singlePin);\n\n this.plottedPins.push(newPin);\n this.map.entities.push(newPin);\n\n if (typeof handleClick === 'function') {\n window.Microsoft.Maps.Events.addHandler(newPin, 'click', handleClick);\n }\n\n // we need to discern between clicks on the map and clicks on the pins\n // not to trigger the map handler if a pushpin is clicked\n window.Microsoft.Maps.Events.addHandler(newPin, 'mousedown', () => {\n this.mouseDownOnPin = true;\n });\n window.Microsoft.Maps.Events.addHandler(newPin, 'mouseup', () => {\n setTimeout(() => {\n this.mouseDownOnPin = false;\n }, 100);\n });\n });\n\n const bounds = this.createView();\n this.map.setView(bounds);\n }\n\n removePins() {\n if (!this.map) {\n return;\n }\n\n this.pushpinObjects = [];\n this.plottedPins = [];\n this.map.entities.clear();\n }\n\n setSelected(id) {\n // if no id is passed we want to deselect the currently selected pin\n if (!id) {\n this.currentlySelected?.setOptions({ icon: redIcon });\n this.currentlySelected = null;\n\n if (this.latestBound) {\n this.map.setView({ bounds: this.latestBound });\n this.latestBound = null;\n }\n\n return;\n }\n\n // save the latest bound to move the user\n this.latestBound = this.map.getBounds();\n\n // get the index by id\n const pinIndex = this.pushpinObjects.findIndex(pin => pin.id === id);\n\n if (pinIndex === -1) {\n return;\n }\n\n // find the Pushpin object to compare to the one on the map\n const pinToUpdate = this.plottedPins[pinIndex];\n const entityToUpdate = this.map.entities.indexOf(pinToUpdate);\n\n // clear the previous selected state\n this.currentlySelected?.setOptions({ icon: redIcon });\n\n // update with the new selected state\n this.currentlySelected = this.plottedPins[pinIndex];\n this.map.entities.get(entityToUpdate)?.setOptions({ icon: blueIcon });\n\n // center the map\n const center = this.createLocation(this.pushpinObjects[pinIndex]);\n this.map.setView({ center });\n }\n\n // we're using a formula to calculate the zoom\n // using the space in miles\n // see: https://stackoverflow.com/a/50743144\n getZoomLevel(radiusInMiles, latitude) {\n const rangeInMeters = radiusInMiles * 1600;\n // we take the lower value of the bounding rect of the map, so the area will be best seen\n const limitBoundPixels = Math.min(\n this.config.container.offsetHeight,\n this.config.container.offsetWidth\n );\n\n // if the element is hidden we return a reasonable default\n if (!limitBoundPixels) {\n return 15;\n }\n\n const zoom = Math.floor(\n Math.log(\n (156543.03392 * Math.cos((latitude * Math.PI) / 180)) /\n (rangeInMeters / limitBoundPixels)\n ) / Math.log(2)\n );\n\n return zoom;\n }\n\n reset() {\n this.map?.dispose();\n }\n}\n\nexport default MapService;\n","import PropTypes from 'prop-types';\nimport React, { useLayoutEffect, useRef } from 'react';\n\nimport MapService from '../../utils/MapService';\n\nconst MapPageService = ({\n height = '100%',\n width = '100%',\n pushPins,\n mapOptions = {},\n selectedId,\n ...rest\n}) => {\n const mapContainer = useRef(null);\n const map = useRef(null);\n\n useLayoutEffect(() => {\n const currentMap = map.current;\n\n if (mapContainer.current !== null) {\n map.current = new MapService(\n {\n container: mapContainer.current,\n ...mapOptions,\n },\n pushPins\n );\n }\n\n return () => {\n currentMap?.reset();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useLayoutEffect(() => {\n if (!map.current) {\n return;\n }\n\n map.current.removePins();\n map.current.addPins(pushPins);\n }, [pushPins]);\n\n useLayoutEffect(() => {\n if (!map.current) {\n return;\n }\n\n map.current.setSelected(selectedId);\n }, [selectedId]);\n\n return (\n \n );\n};\n\nMapPageService.prototype = {\n height: PropTypes.string,\n width: PropTypes.string,\n pushPins: PropTypes.object,\n mapOptions: PropTypes.object,\n selectedId: PropTypes.number,\n};\n\nexport default MapPageService;\n","/** @jsxImportSource @emotion/react */\nimport PropTypes from \"prop-types\";\nimport { useMemo } from 'react';\n\nimport { EMPTY_STRING } from '../../const';\nimport useMediaQuery from '../../hooks/useMediaQuery';\nimport useTheme from '../../hooks/useTheme';\nimport Button from '../Button';\nimport ContactDetails from '../ContactDetails';\nimport { Directions } from '../Icons';\nimport LinkDirection from '../LinkDirection';\nimport Map from '../MapPageService';\nimport Text from '../Text';\nimport useStyles from './styles';\n\nconst ContactMap = ({\n contact,\n contactAddress,\n title,\n titleHeader,\n subTitle,\n locationDetails,\n sourceLoction,\n onClick,\n centername,\n isVenueLocation = false,\n providerName,\n ...rest\n}) => {\n const styles = useStyles();\n const isDesktop = useMediaQuery('screen and (min-width: 768px)');\n const { colors } = useTheme();\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const locationDetailsObject = useMemo(() => [locationDetails], [\n locationDetails.latitude,\n locationDetails.longitude,\n ]);\n\n return (\n
    \n \n {contactAddress}\n \n {locationDetails && (\n
    \n \n {providerName? providerName:centername? centername.toLowerCase() : title?.toLowerCase()} location\n \n \n \n \n
    \n
    \n \n Address\n \n {contactAddress}\n
    \n {!isDesktop && (\n
    \n \n Directions\n \n
    \n )}\n
    \n
    \n )}\n
    \n );\n};\n\nContactMap.prototype = {\n contact: PropTypes.object,\n contactAddress: PropTypes.string,\n title: PropTypes.string,\n titleHeader: PropTypes.string,\n subTitle: PropTypes.string,\n locationDetails: PropTypes.object,\n sourceLoction: PropTypes.object,\n onClick: PropTypes.func,\n centername: PropTypes.string,\n isVenueLocation: PropTypes.bool,\n providerName: PropTypes.string,\n}\n\nexport default ContactMap;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\nimport publicPath from '../../utils/publicPath';\n\nexport default () => {\n const {\n breakpoints,\n colors,\n spacing,\n } = useTheme();\n\n return {\n base: css`\n height: 100%;\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(298px, 1fr));\n\n ${breakpoints.l} {\n grid-template-columns: 1fr 1fr;\n grid-gap: ${spacing.m};\n }\n `,\n map: css`\n min-height: 154px;\n max-height: 154px;\n\n ${breakpoints.m} {\n min-height: 184px;\n max-height: 184px;\n }\n `,\n locationLink: css`\n width: auto;\n padding-left: 0;\n color: ${colors.white};\n background-color: ${colors.dodgerBlue};\n `,\n locationLinkArrow: css`\n margin-left: ${spacing.xs};\n color: ${colors.red};\n `,\n addressWrapper: css`\n p {\n white-space: pre-wrap;\n color: ${colors.darkGrey};\n text-transform: capitalize;\n }\n\n h4 {\n font-size: ${spacing.s};\n color: ${colors.navy};\n }\n `,\n sectionTitle: css`\n padding-bottom: ${spacing.s};\n color: ${colors.navy};\n text-transform: capitalize;\n `,\n iconColor: css`\n color: ${colors.white};\n `,\n link: css`\n // background: url(${publicPath('/images/mobile/club/map-placeholder.jpg')}) 0 0 no-repeat;\n background-size: contain;\n min-height: 154px;\n max-height: 154px;\n padding: 0;\n\n ${breakpoints.l} {\n // background: url(${publicPath('/images/desktop/club/map-placeholder.jpg')}) 0 0 no-repeat; \n background-size: cover;\n min-height: 184px;\n max-height: 184px;\n }\n `,\n detailsWrapper: css`\n display: grid;\n grid-template-columns: 1fr 1fr;\n align-items: flex-start;\n padding-top: ${spacing.s};\n\n ${breakpoints.m} {\n grid-template-columns: auto;\n }\n `,\n locationDetailsWrapper: css`\n padding: ${spacing.m} 0 ${spacing.m};\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport useStyles from './styles';\n\nconst AccredationLevel = ({ accreditationLevel }) => {\n const accredite = accreditationLevel;\n const styles = useStyles();\n\n return (\n
    \n {[...Array(accredite)].map((data, index) => {\n return
    ;\n })}\n
    \n );\n};\n\nexport default AccredationLevel;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { colors } = useTheme();\n return {\n ratingContainer: css`\n position: absolute;\n top: 0.6rem;\n padding-left: 3.75rem;\n `,\n rating: css`\n position: relative;\n \n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 0.9em;\n margin-right: 0.9em;\n margin-bottom: 1.2em;\n \n border-right: 0.3em solid transparent;\n border-bottom: 0.7em solid ${colors.white};\n border-left: 0.3em solid transparent;\n \n /* Controlls the size of the stars. */\n font-size: 0.25rem;\n\n \n &:before, &:after {\n content: '';\n \n display: block;\n width: 0;\n height: 0;\n \n position: absolute;\n top: 0.6em;\n left: -1em;\n \n border-right: 1em solid transparent;\n border-bottom: 0.7em solid ${colors.white};\n border-left: 1em solid transparent;\n \n transform: rotate(-35deg);\n }\n \n &:after { \n transform: rotate(35deg);\n }\n }\n `,\n displayNone: css`\n display: none;\n `\n };\n};\n","import { css } from '@emotion/react';\n\nimport { SCROLL_UP } from '../../const';\nimport useTheme from '../../hooks/useTheme';\nimport publicPath from '../../utils/publicPath';\n\nexport default () => {\n const {\n screenSizes,\n typography,\n breakpoints,\n spacing,\n colors,\n heights,\n borderRadius,\n } = useTheme();\n\n const getOverlayImagePath = (breakpoint, variation) =>\n publicPath(`/images/${breakpoint}/overlays/${variation}.svg`);\n\n return {\n hero: ({ mobile, desktop }, overlayVariation, scrollDirection) => {\n return css`\n display: grid;\n align-items: end;\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n grid-template-rows: minmax(75vh, 350px) auto;\n align-items: center;\n background: linear-gradient(\n to bottom,\n rgba(0, 0, 0, 0) 30%,\n rgba(1, 30, 65) 80%,\n rgba(1, 30, 65) 100%\n ),\n url('${mobile.src}') center center no-repeat;\n background-size: cover;\n\n align-content: space-around;\n padding: 0 ${spacing.s};\n margin-top: ${scrollDirection === SCROLL_UP\n ? 0\n : heights.mainNav.mobile};\n\n &::before {\n content: '';\n position: absolute;\n top: 30vh;\n left: 0;\n right: 60vh;\n width: 100%;\n height: Calc(100vw - 72vw);\n background: url(${getOverlayImagePath('mobile', overlayVariation)})\n left 0 no-repeat;\n background-size: cover;\n z-index: 1;\n }\n\n ${breakpoints.l} {\n display: block;\n background: url(${desktop.src}) 0 0 no-repeat;\n background-size: cover;\n background-position: top center;\n padding-top: ${spacing.l};\n margin-top: 0;\n\n &::before {\n top: 37vh;\n left: 0;\n width: 100%;\n // height: Calc(100vw - 60vw);\n height: 80vh;\n background: linear-gradient(\n to bottom,\n rgba(0, 0, 0, 0) 20%,\n rgba(1, 30, 65) 75%,\n rgba(1, 30, 65) 100%\n ),\n url(${getOverlayImagePath('desktop', overlayVariation)}) 0 0\n no-repeat;\n background-size: cover, contain;\n z-index: 1;\n outline: 0;\n\n ${breakpoints.l} {\n top: calc(100vh - 75vh);\n }\n }\n\n &::after {\n background: right 0 no-repeat;\n background-image: linear-gradient(\n to bottom,\n rgba(0, 0, 0, 0) 40%,\n rgba(1, 30, 65) 85%,\n rgba(1, 30, 65) 100%\n ),\n url(${publicPath(\n '/images/desktop/recommendations/keyline-provider.svg'\n )}),\n url(${publicPath('/images/common/play-watermark.svg')});\n background-position: right 20vh, right 20vh;\n background-repeat: no-repeat, no-repeat;\n }\n }\n `;\n },\n providerWrapper: css`\n display: flex;\n justify-content: center;\n grid-row-gap: 2.6rem;\n `,\n infoWrapper: (hasPadding, titleHeight, isvenue) => css`\n position: relative;\n max-width: 100%;\n margin-bottom: 4rem;\n\n ${breakpoints.m} {\n display: grid;\n grid-row-gap: ${spacing.xs};\n ${isvenue === 'false'\n ? css`\n margin-bottom: 5rem;\n `\n : css`\n margin: 0 auto calc(100vh - 88vh) auto;\n `}\n }\n\n ${breakpoints.l} {\n margin-top: calc(100vh - 24rem);\n // if title has 2 lines\n ${titleHeight < 550 &&\n css`\n margin-top: calc(100vh - 24rem);\n `}\n }\n\n ${breakpoints.xl} {\n top: 0;\n grid-template-columns: auto;\n width: 75%;\n padding: ${borderRadius.s};\n }\n `,\n textWrapper: (hasLoaded, isVenue) => css`\n @media screen and (min-width: 425px) {\n ${isVenue === 'true' &&\n css`\n margin-bottom: 4rem;\n `}\n }\n position: relative;\n z-index: 1;\n align-self: end;\n opacity: 0;\n transition: opacity 0.5s;\n width: 90vw;\n max-width: 390px;\n margin: 0 auto;\n\n ${hasLoaded &&\n css`\n opacity: 1;\n `}\n\n &.fadeOut {\n opacity: 0.3;\n }\n\n ${breakpoints.m} {\n max-width: ${screenSizes.xl};\n margin: 0 auto;\n }\n `,\n mainText: css`\n ${typography.headings[3].mobile};\n text-transform: capitalize;\n z-index: 2;\n text-align: center;\n position: relative;\n color: ${colors.white};\n transition: opacity 0.5s;\n padding-bottom: 6px;\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2; /* number of lines to show */\n -webkit-box-orient: vertical;\n max-width: 95%;\n margin: 0 auto;\n\n ${breakpoints.l} {\n ${typography.headings[1].desktop};\n max-width: 50%;\n padding-bottom: 7px;\n }\n `,\n secondaryText: css`\n color: ${colors.white};\n margin-top: 1.8rem;\n\n ${breakpoints.l} {\n margin-top: 0.7rem;\n }\n `,\n distance: css`\n margin-top: ${spacing.s};\n padding: 0;\n width: auto;\n color: ${colors.white};\n background: none;\n font-weight: normal;\n\n &::before {\n content: '|';\n padding: 0 ${spacing.xs};\n }\n\n &:not(:disabled):hover,\n &:not(:disabled):focus {\n background: none;\n }\n `,\n address: distance => css`\n color: ${colors.white};\n letter-spacing: 0.02em;\n font-weight: normal;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n float: left;\n margin-top: ${spacing.s};\n max-width: ${distance ? '65%' : '95%'};\n font-size: 0.875rem;\n text-transform: capitalize;\n\n ${breakpoints.m} {\n max-width: 100%;\n }\n `,\n info: hasMoreInfo => css`\n ${typography.body.mobile};\n display: flex;\n justify-content: center;\n margin: ${spacing.xs} auto;\n font-size: 0.875rem;\n\n ${hasMoreInfo &&\n css`\n > p,\n > a {\n text-align: center;\n border-bottom: ${borderRadius.s} solid rgba(255, 255, 255, 0.2);\n padding-bottom: ${spacing.xs};\n font-size: 0.875rem;\n\n ${breakpoints.l} {\n font-size: ${spacing.s};\n }\n }\n `}\n\n &::before {\n content: '';\n position: absolute;\n left: Calc(100% - 61%);\n width: 70px;\n border-bottom: ${borderRadius.s} solid #e1261c;\n\n ${breakpoints.l} {\n left: Calc(100% - 55%);\n }\n }\n\n ${breakpoints.m} {\n margin: 0 auto;\n max-width: 85%;\n }\n `,\n moreInfo: hasMoreInfo => css`\n display: flex;\n justify-content: center;\n color: ${colors.white};\n text-transform: capitalize;\n\n > :first-of-type {\n margin-right: ${spacing.s};\n font-size: 0.875rem;\n\n ${breakpoints.l} {\n font-size: ${spacing.s};\n }\n }\n\n ${breakpoints.l} {\n display: grid;\n width: 40%;\n margin: 0 auto;\n\n ${hasMoreInfo &&\n css`\n grid-auto-flow: column;\n grid-template-columns: auto auto;\n `}\n }\n `,\n imageWrap: css`\n position: relative;\n `,\n backLink: css`\n color: ${colors.white};\n font-weight: normal;\n letter-spacing: 0.02em;\n text-decoration: none;\n\n &:focus {\n outline: none;\n span {\n text-decoration: underline;\n display: inline-block;\n }\n }\n `,\n backMobileLink: css`\n font-weight: normal;\n letter-spacing: 0.02em;\n text-decoration: none;\n width: 100%;\n height: 48px;\n line-height: 48px;\n background-color: ${colors.white};\n position: relative;\n color: ${colors.navy};\n padding-left: ${spacing.s};\n z-index: 1;\n margin-top: ${heights.mainNav.mobile};\n `,\n internalBackLink: css`\n text-align: left;\n line-height: 22px;\n `,\n arrowRotate: css`\n transform: rotate(180deg);\n margin-right: 5px;\n color: ${colors.navy};\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport { forwardRef, Fragment, useEffect, useState } from 'react';\nimport { useHistory } from 'react-router-dom';\n\nimport { BACK_TO_RESULTS } from '../../analyticsConsts';\nimport { ZERO } from '../../const';\nimport { useScrollDirectionContext } from '../../context/scrollDirection';\nimport useMediaQuery from '../../hooks/useMediaQuery';\nimport publicPath from '../../utils/publicPath';\nimport AccredationLevel from '../AccredationLevel';\nimport { Pin, RightArrow } from '../Icons';\nimport Link from '../Link';\nimport LinkButton from '../LinkButton';\nimport LinkDirection from '../LinkDirection';\nimport Text from '../Text';\nimport useStyles from './styles';\n\nconst HeroProvider = forwardRef(\n (\n {\n hasPreferences,\n textSize = 1,\n images,\n overlayVariation = 4,\n title,\n address,\n distance,\n latitude,\n longitude,\n type,\n county,\n accreditation,\n analyticsId,\n titleHeight,\n isInternalLink = false,\n onClick,\n previousPageData,\n sourceLoction,\n Category,\n backupUrl,\n isTeamPage,\n ...rest\n },\n titleRef,\n isvenue=\"false\"\n ) => {\n const styles = useStyles();\n const [hasLoaded, setHasLoaded] = useState(false);\n const isTablet = useMediaQuery('screen and (min-width: 768px)');\n const { scrolldirectionContext } = useScrollDirectionContext();\n const history = useHistory();\n\n useEffect(() => {\n setTimeout(() => {\n setHasLoaded(true);\n }, 300);\n }, []);\n\n const hasMoreInfo =\n county || (accreditation && accreditation.isAccreditation);\n\n return (\n
    \n {(hasPreferences || Category) && !isTablet && !isInternalLink && (\n \n Back to{' '}\n {previousPageData?.name} view\n \n )}\n {(hasPreferences || Category) &&\n !isTablet &&\n isInternalLink &&\n !isTeamPage && (\n \n Back to{' '}\n {previousPageData?.name} view\n \n )}\n {(hasPreferences || Category) &&\n !isTablet &&\n isInternalLink &&\n isTeamPage && (\n \n Back to{' '}\n {previousPageData?.name} view\n \n )}\n \n
    \n
    \n \n {title && (\n \n {title.toLowerCase()}\n \n )}\n
    \n {address && (\n {address}\n )}\n {distance && (\n \n {distance !== ZERO && (\n \n {distance} Miles\n \n )}\n \n )}\n
    \n {hasMoreInfo && (\n
    \n {county && {county}}\n {accreditation && accreditation.isAccreditation && title && (\n
    \n \n {accreditation && (\n \n )}\n
    \n )}\n
    \n )}\n
    \n
    \n
    \n
    \n \n );\n }\n);\n\nexport default HeroProvider;\n","/** @jsxImportSource @emotion/react */\n\nconst Image = ({ src, alt, ...rest }) => {alt};\n\nexport default Image;\n","/** @jsxImportSource @emotion/react */\nimport { forwardRef } from 'react';\n\nimport { SpinningBadge } from '../Icons';\nimport Text from '../Text';\nimport useStyles from './styles';\n\nconst Loader = forwardRef(({ message, inline, ...rest }, ref) => {\n const styles = useStyles();\n\n const labelId = 'spinning-loader-text';\n\n return (\n
    \n \n \n {message || 'Loading'}\n \n
    \n );\n});\n\nexport default Loader;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { spacing, utility } = useTheme();\n\n return {\n loader: (isInline, id) => css`\n margin: 0 auto;\n text-align: center;\n align-self: center;\n\n svg {\n width: 100%;\n max-width: 85px;\n }\n\n ${isInline &&\n css`\n display: flex;\n align-items: center;\n justify-content: center;\n\n svg {\n padding-right: ${spacing.xs};\n max-width: 50px;\n }\n `}\n\n #${id} {\n animation: logo-animation 3000ms linear infinite normal forwards;\n }\n\n @keyframes logo-animation {\n 0% {\n transform: translate(45.669999px, 46.839997px) rotate(0deg);\n }\n\n 100% {\n transform: translate(45.669999px, 46.839997px) rotate(1800deg);\n }\n }\n `,\n text: (hasText, inline) => css`\n ${!hasText && utility.checkboxHidden}\n\n &:focus {\n outline: none;\n }\n\n ${hasText &&\n inline &&\n css`\n text-align: center;\n `}\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport { Fragment } from 'react';\n\nimport { socialMediaAnalytics } from '../../analyticsConsts';\nimport { EMPTY_STRING, ICONS_MEDIA } from '../../const';\nimport ExternalLink from '../ExternalLink';\nimport useStyles from './styles';\n\nconst { SOCIAL_MEDIA_WRAPPER, SOCIAL_MEDIA_CTA } = socialMediaAnalytics;\n\nconst SocialMedia = ({ title, socialLinks }) => {\n const styles = useStyles();\n\n return (\n \n {socialLinks?.isPublic && (\n
    \n
    \n
      \n
    • {title} social media
    • \n {socialLinks &&\n socialLinks.socialMediaLinks.length > 0 &&\n socialLinks.socialMediaLinks.slice(0, 3).map(link => {\n const SocialMediaIcon = ICONS_MEDIA[link.mediaType];\n return (\n
    • \n \n \n \n
    • \n );\n })}\n
    \n
    \n
    \n )}\n
    \n );\n};\n\nexport default SocialMedia;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { colors, spacing, breakpoints } = useTheme();\n\n return {\n footer: css`\n background-color: ${colors.lightGrey};\n color: ${colors.blue};\n position: relative;\n font-weight: normal;\n font-size: 0.875rem;\n line-height: 1.125rem;\n padding: 1rem 1.5rem;\n letter-spacing: 0.02em;\n display: grid;\n justify-content: center;\n\n ${breakpoints.m} {\n padding: ${spacing.s} ${spacing.m};\n }\n `,\n footerWrapper: css`\n display: grid;\n justify-content: center;\n\n ${breakpoints.m} {\n grid-template-columns: auto 1fr;\n grid-column-gap: ${spacing.s};\n }\n `,\n list: css`\n display: grid;\n grid-template-columns: repeat(4, auto);\n grid-gap: 1.5rem;\n\n li { \n color: ${colors.navy};\n font-weight: normal;\n font-size: 18px;\n font-weight: 500;\n display: grid;\n align-items: center;\n > a {\n color: ${colors.darkGrey};\n &:hover, &:focus {\n outline: 0;\n color: ${colors.blue};\n }\n }\n }\n\n ${breakpoints.m} {\n grid-auto-flow: column;\n }\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport { useEffect, useRef, useState } from \"react\";\n\nimport { useScrollDirectionContext } from \"../../context/scrollDirection\";\nimport { useSetHeaderHeightContext } from \"../../context/setHeaderHeight\";\nimport useMediaQuery from '../../hooks/useMediaQuery';\nimport { throttle } from \"./lib/tools\";\nimport useStyles from './styles';\n\nconst StickyScrollSpyNav = ({\n nav,\n children,\n onClickNav,\n offset = 0,\n style,\n titleHeight,\n title,\n isHidden = false,\n}) => {\n const navEl = useRef(null);\n const [navHeight, setNavHeight] = useState(0);\n const [prevIndex, setPrevIndex] = useState(0);\n const [currentIndex, setCurrentIndex] = useState(0);\n const { scrolldirectionContext } = useScrollDirectionContext();\n const { headerHeight } = useSetHeaderHeightContext();\n const isMobile = useMediaQuery(`screen and (max-width: 992px)`);\n const styles = useStyles();\n\n const onScroll = throttle((e) => {\n const scrollElement = document.scrollingElement || document.documentElement;\n const outerHeight = window.innerHeight;\n const scrollTop = scrollElement.scrollTop;\n const scrollHeight = scrollElement.scrollHeight;\n const firstEl = children[0]?.ref?.current;\n\n const isNotStart = firstEl && firstEl.offsetTop > scrollTop;\n const isEnd = scrollTop + outerHeight >= scrollHeight;\n\n if (isNotStart) {\n setCurrentIndex(0);\n } else if (isEnd) {\n setCurrentIndex(children.length - 1);\n } else {\n children.forEach((el, index) => {\n const target = el?.ref?.current;\n if (target) {\n const visibleVertical =\n target.offsetTop >= 0 &&\n scrollElement.scrollTop + navHeight >= target.offsetTop - offset + titleHeight - 180 &&\n scrollElement.scrollTop + navHeight < target.offsetTop + target.offsetHeight - offset + titleHeight - 180;\n\n if (visibleVertical) {\n setCurrentIndex(index);\n }\n }\n });\n }\n });\n\n const handleClick = (index) => {\n const offsetTop = children[index]?.ref?.current.offsetTop || 0;\n const viewPortHeight = isMobile ? prevIndex < index ? 10 : 80 : prevIndex < index ? 100 : 200;\n const extraSpace = isMobile ? 80 : title?.length > 33 ? 128 : 200;\n setPrevIndex(index);\n if (index !== 0) {\n window.scrollTo({ top: offsetTop - navHeight - offset + (titleHeight - viewPortHeight + extraSpace), behavior: \"smooth\" });\n return;\n }\n window.scrollTo({ top: offsetTop - navHeight - offset + (titleHeight - viewPortHeight), behavior: \"smooth\" });\n onClickNav && onClickNav(index);\n };\n\n useEffect(() => {\n setNavHeight(navEl?.current?.clientHeight || 0);\n window.addEventListener(\"scroll\", onScroll);\n return () => {\n window.removeEventListener(\"scroll\", onScroll);\n };\n }, [onScroll]);\n\n return (\n
    \n \n {nav.map((navItem, index) => (\n handleClick(index)}\n key={navItem.id}\n css={[styles.navItemStyle(navItem.isHidden), currentIndex === index && styles.navActiveItemStyle]}\n >\n {navItem.label}\n \n ))}\n \n {children}\n
    \n );\n}\n\nexport default StickyScrollSpyNav;\n","import { css } from '@emotion/react';\n\nimport { SCROLL_UP } from '../../const';\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { colors, heights, borderRadius, breakpoints, spacing } = useTheme();\n\n return {\n navItemStyle: isHidden => css`\n padding: 16px 0;\n margin: 5px 5px 0;\n font-size: ${spacing.s};\n background: transparent;\n z-index: 1;\n border: 0;\n border-bottom: ${borderRadius.s} solid transparent;\n text-align: center;\n cursor: pointer;\n font-family: 'FS Dillon';\n color: ${colors.darkGrey};\n\n ${isHidden &&\n css`\n display: none;\n `}\n\n ${breakpoints.m} {\n margin: 15px 5px 0;\n font-size: 1.25rem;\n font-family: 'FS Dillon';\n font-style: normal;\n color: ${colors.darkGrey};\n }\n `,\n navActiveItemStyle: css`\n font-weight: bold;\n border-bottom: ${borderRadius.s} solid ${colors.red};\n color: ${colors.navy};\n\n ${breakpoints.m} {\n color: ${colors.navy};\n }\n `,\n navStyles: (scrolldirectionContext, isMobile, offset, headerHeight) => css`\n position: sticky;\n background-color: ${colors.white};\n text-align: center;\n z-index: 1;\n display: flex;\n justify-content: center;\n grid-gap: ${spacing.m};\n border-radius: ${borderRadius.xxl} ${borderRadius.xxl} 0 0;\n top: ${scrolldirectionContext === SCROLL_UP\n ? offset\n : `${isMobile ? heights.mainNav.mobile : headerHeight}`};\n border-bottom: 1px solid ${colors.lightGrey};\n border-radius: ${borderRadius.l} ${borderRadius.l} 0 0;\n\n ${breakpoints.l} {\n grid-gap: ${spacing.xl};\n }\n `,\n };\n};\n","export const throttle = (fn, wait = 100) => {\n let timer;\n let time = Date.now();\n\n return (params) => {\n clearTimeout(timer);\n\n if (time + wait - Date.now() < 0) {\n fn(params);\n time = Date.now();\n } else {\n timer = setTimeout(fn, wait / 5);\n }\n };\n};\n","import { AGE_GROUP_ID, MYSELF } from '../../../const';\n\nexport default [\n {\n id: '346dbfab-03fa-4a3a-ab18-b461d0d56dc8',\n questionOrder: 2,\n readableId: AGE_GROUP_ID,\n analyticsId: 'selected_age_group',\n type: 'age_group',\n title: {\n [MYSELF]: 'Which age group are you interested in?',\n Mychild: 'Which age group are you interested in?',\n },\n helpText:\n 'Youth players need to compete within permitted age groups so that games are fair and fun.',\n helpTextSecondary:\n 'Choose one age group so we can show you the right recommendations for you',\n answers: [\n {\n age: 5,\n options: ['U6', 'U7'],\n },\n {\n age: 6,\n options: ['U6', 'U7', 'U8'],\n },\n {\n age: 7,\n options: ['U7', 'U8', 'U9'],\n },\n {\n age: 8,\n options: ['U8', 'U9', 'U10'],\n },\n {\n age: 9,\n options: ['U9', 'U10', 'U11'],\n },\n {\n age: 10,\n options: ['U10', 'U11', 'U12'],\n },\n {\n age: 11,\n options: ['U11', 'U12', 'U13'],\n },\n {\n age: 12,\n options: ['U12', 'U13', 'U14'],\n },\n {\n age: 13,\n options: ['U13', 'U14', 'U15'],\n },\n {\n age: 14,\n options: ['U14', 'U15', 'U16'],\n },\n {\n age: 15,\n options: ['U15', 'U16', 'U17'],\n },\n {\n age: 16,\n options: ['U16', 'U17', 'U18', 'Open Aged'],\n },\n {\n age: 17,\n options: ['U17', 'U18', 'Open Aged'],\n },\n {\n age: 18,\n options: ['U18', 'Open Aged'],\n },\n ],\n ageRanges: [\n {\n min: 0,\n max: 0,\n nextQuestionId: 'd9572be5-72f2-42af-87ea-a3298c6eacd7',\n },\n ],\n },\n];\n","import isempty from 'lodash.isempty';\n\nimport {\n ADULT_CLUB,\n ADULT_CLUB_AGE_QUESTION,\n ADULT_CLUB_CANCEL_URL,\n AGE_UK,\n AGE_UK_CANCEL_URL,\n EMPTY_STRING,\n JUST_PLAY_AGE_QUESTION,\n JUST_PLAY_CANCEL_URL,\n JUST_PLAY_PROTEIN,\n LET_GIRLS_PLAY_CANCEL_URL,\n LET_GO_GIRLS_PLAY,\n LETGIRLSPLAY,\n MY_CHILD,\n SQUAD,\n SQUAD_CANCEL_URL,\n VOLUNTEER_CLUB_CANCEL_URL,\n WEETABIX_WILDCATS,\n WILD_CATS_CANCEL_URL,\n YOUTH_CLUB_CANCEL_URL,\n YOUTH_CLUBS_TYPE,\n} from '../../const';\nimport ageGroup from '../../mocks/data/questions/ageGroup';\n\nconst filteredMiniOnboardingData = data => {\n let questions = [];\n switch (true) {\n case JSON.parse(sessionStorage.getItem('ISLETGOGIRLSPLAY')):\n questions = [2, 6, 7, 8];\n break;\n case JSON.parse(sessionStorage.getItem('ISWILDCATS')):\n questions = [2, 6, 7, 8];\n break;\n case JSON.parse(sessionStorage.getItem('ISJUSTPLAY')):\n questions = [2, 3, 6, 7, 8];\n break;\n case JSON.parse(sessionStorage.getItem('ISSQUADGIRLS')):\n questions = [6, 7, 8];\n break;\n case JSON.parse(sessionStorage.getItem('ISAGEUK')):\n questions = [2, 3, 6, 7, 8];\n break;\n case JSON.parse(sessionStorage.getItem('ISYOUTHCLUB')):\n questions = [2, 3, 6, 7, 8];\n const selectedQuestions = data.filter(item =>\n questions.includes(item.questionOrder)\n );\n return [...selectedQuestions, ...ageGroup];\n case JSON.parse(sessionStorage.getItem('ISADULTCLUB')):\n questions = [2, 3, 6, 7, 8];\n break;\n case JSON.parse(sessionStorage.getItem('ISVOLUNTEER')):\n questions = [2, 3, 6, 7, 8];\n break;\n default:\n questions = [];\n break;\n }\n return !isempty(questions)\n ? data.filter(item => questions.includes(item.questionOrder))\n : data;\n};\n\nconst getPayloadData = answerData => {\n switch (true) {\n case JSON.parse(sessionStorage.getItem('ISLETGOGIRLSPLAY')):\n return {\n FootballType: 1,\n PlayWith: 2,\n SearchForUser: 'Myself',\n WeekDays: '1,2,3,4,5,6,7',\n ...answerData,\n };\n case JSON.parse(sessionStorage.getItem('ISWILDCATS')):\n return {\n FootballType: 1,\n PlayWith: 2,\n SearchForUser: 'Myself',\n WeekDays: '1,2,3,4,5,6,7',\n ...answerData,\n };\n case JSON.parse(sessionStorage.getItem('ISJUSTPLAY')):\n return {\n FootballType: 1,\n SearchForUser: 'Myself',\n WeekDays: '1,2,3,4,5,6,7',\n ...answerData,\n };\n case JSON.parse(sessionStorage.getItem('ISAGEUK')):\n return {\n FootballType: 1,\n SearchForUser: 'Myself',\n WeekDays: '1,2,3,4,5,6,7',\n ...answerData,\n };\n case JSON.parse(sessionStorage.getItem('ISSQUADGIRLS')):\n return {\n FootballType: 1,\n PlayWith: 2,\n SearchForUser: MY_CHILD,\n WeekDays: '1,2,3,4,5,6,7',\n Age: 13,\n ...answerData,\n };\n case JSON.parse(sessionStorage.getItem('ISYOUTHCLUB')):\n return {\n FootballType: 2,\n SearchForUser: MY_CHILD,\n WeekDays: '1,2,3,4,5,6,7',\n ...answerData,\n };\n case JSON.parse(sessionStorage.getItem('ISADULTCLUB')):\n return {\n FootballType: 2,\n SearchForUser: 'Myself',\n WeekDays: '1,2,3,4,5,6,7',\n ...answerData,\n };\n case JSON.parse(sessionStorage.getItem('ISVOLUNTEER')):\n return {\n FootballType: 2,\n SearchForUser: 'Myself',\n WeekDays: '1,2,3,4,5,6,7',\n ...answerData,\n };\n default:\n return answerData;\n }\n};\n\nconst getRedirectUrl = () => {\n switch (true) {\n case JSON.parse(sessionStorage.getItem('ISLETGOGIRLSPLAY')):\n return LET_GIRLS_PLAY_CANCEL_URL;\n case JSON.parse(sessionStorage.getItem('ISWILDCATS')):\n return WILD_CATS_CANCEL_URL;\n case JSON.parse(sessionStorage.getItem('ISJUSTPLAY')):\n return JUST_PLAY_CANCEL_URL;\n case JSON.parse(sessionStorage.getItem('ISAGEUK')):\n return AGE_UK_CANCEL_URL;\n case JSON.parse(sessionStorage.getItem('ISSQUADGIRLS')):\n return SQUAD_CANCEL_URL;\n case JSON.parse(sessionStorage.getItem('ISYOUTHCLUB')):\n return YOUTH_CLUB_CANCEL_URL;\n case JSON.parse(sessionStorage.getItem('ISADULTCLUB')):\n return ADULT_CLUB_CANCEL_URL;\n case JSON.parse(sessionStorage.getItem('ISVOLUNTEER')):\n return VOLUNTEER_CLUB_CANCEL_URL;\n default:\n return;\n }\n};\n\nconst ageHeaderTitle = questionTitle => {\n switch (true) {\n case JSON.parse(sessionStorage.getItem('ISLETGOGIRLSPLAY')):\n return LET_GO_GIRLS_PLAY;\n case JSON.parse(sessionStorage.getItem('ISJUSTPLAY')):\n case JSON.parse(sessionStorage.getItem('ISYOUTHCLUB')):\n return JUST_PLAY_AGE_QUESTION;\n case JSON.parse(sessionStorage.getItem('ISADULTCLUB')):\n return ADULT_CLUB_AGE_QUESTION;\n case JSON.parse(sessionStorage.getItem('ISVOLUNTEER')):\n return 'For what age group would you like to volunteer?';\n default:\n return questionTitle;\n }\n};\n\nconst genderHeaderTitle = questionTitle => {\n switch (true) {\n case JSON.parse(sessionStorage.getItem('ISVOLUNTEER')):\n return 'For what gender teams would you like to volunteer?';\n default:\n return questionTitle;\n }\n};\n\nconst getInitialAgeLimit = inputTitle => {\n switch (true) {\n case JSON.parse(sessionStorage.getItem('ISJUSTPLAY')):\n return {\n startingAge: 16,\n endingAge: 99,\n ageText: 'Enter your age (between 16 & 99)',\n validationErrorMsg: `Please enter ages within 16-99`,\n };\n case JSON.parse(sessionStorage.getItem('ISWILDCATS')):\n return {\n startingAge: 5,\n endingAge: 11,\n ageText: 'Enter your age (between 5 & 11)',\n validationErrorMsg: `Please enter ages within 5-11`,\n };\n case JSON.parse(sessionStorage.getItem('ISYOUTHCLUB')):\n return {\n startingAge: 5,\n endingAge: 18,\n ageText: \"Enter the player's age (between 5 & 18)\",\n validationErrorMsg:\n 'Youth club football is only available to 5-18 year olds',\n };\n case JSON.parse(sessionStorage.getItem('ISADULTCLUB')):\n return {\n startingAge: 18,\n endingAge: 99,\n ageText: 'Enter your age (between 18 & 99)',\n validationErrorMsg: 'Please enter ages within 18-99',\n };\n case JSON.parse(sessionStorage.getItem('ISVOLUNTEER')):\n return {\n startingAge: 5,\n endingAge: 99,\n ageText: 'Enter team age (between 5 & 99)',\n validationErrorMsg: `Please enter ages within 5-99`,\n };\n default:\n return {\n startingAge: 5,\n endingAge: 99,\n ageText: inputTitle,\n validationErrorMsg: `Please enter ages within 5-99`,\n };\n }\n};\n\nconst getMOHeroProperties = ({ Age, AgeGroup, Category }) => {\n //filtering youthClub title and category for specific age group\n const YOUTH_CLUB = YOUTH_CLUBS_TYPE.filter(data => data === Category)[0];\n switch (Category) {\n case LETGIRLSPLAY:\n return {\n isLogo: true,\n title: EMPTY_STRING,\n img: {\n desktop: '/images/desktop/moHeaderLogo/letgirlsplay.svg',\n mobile: '/images/mobile/moHeaderLogo/letgirlsplay.svg',\n },\n linkText: 'Learn more about LetsGirlsPlay',\n categoryName: WEETABIX_WILDCATS,\n category:\n Age > 17 ? \"Women's Football sessions\" : \"Girl's Football session\",\n age: `${Age} year-old`,\n };\n case WEETABIX_WILDCATS:\n return {\n isLogo: true,\n title: EMPTY_STRING,\n img: {\n desktop: '/images/desktop/moHeaderLogo/weetabix-wildcats.svg',\n mobile: '/images/mobile/moHeaderLogo/weetabix-wildcats.svg',\n },\n linkText: 'Learn more about Wildcats',\n categoryName: WEETABIX_WILDCATS,\n category: 'Wildcats sessions',\n age: `${Age} year-old`,\n };\n case JUST_PLAY_PROTEIN:\n return {\n isLogo: true,\n title: EMPTY_STRING,\n img: {\n desktop:\n '/images/desktop/moHeaderLogo/snickers-protein-just-play.svg',\n mobile: '/images/mobile/moHeaderLogo/snickers-protein-just-play.svg',\n },\n linkText: 'Learn more about Justplay',\n categoryName: JUST_PLAY_PROTEIN,\n category: 'Snickers Protein Just Play',\n age: `${Age} year-old`,\n };\n case SQUAD:\n return {\n isLogo: true,\n title: EMPTY_STRING,\n img: {\n desktop:\n '/images/desktop/moHeaderLogo/squad-girls-football-header.svg',\n mobile: '/images/mobile/moHeaderLogo/squad-girls-football-header.svg',\n },\n linkText: 'Learn more about Squad girls football',\n categoryName: SQUAD,\n category: \"Squad Girls' Football sessions\",\n age: '12-15 year-old',\n };\n case AGE_UK:\n return {\n isLogo: true,\n title: EMPTY_STRING,\n img: {\n desktop: '/images/desktop/moHeaderLogo/age-uk-walking-football.svg',\n mobile: '/images/mobile/moHeaderLogo/age-uk-walking-football.svg',\n },\n linkText: 'Learn more about Ageuk',\n categoryName: JUST_PLAY_PROTEIN,\n category: 'Age UK sessions',\n };\n case YOUTH_CLUB:\n const youthClub = {\n isLogo: false,\n title: 'Youth Football (Development - U6)',\n img: EMPTY_STRING,\n linkText: 'Learn more about youth football',\n };\n switch (AgeGroup) {\n case 'U6':\n return {\n ...youthClub,\n title: 'Youth Football (Development - U6)',\n category: 'Development clubs',\n };\n case 'U7':\n case 'U8':\n case 'U9':\n case 'U10':\n return {\n ...youthClub,\n title: `Youth Football (Mini Soccer - ${AgeGroup})`,\n category: 'Mini Soccer clubs',\n };\n case 'U11':\n case 'U12':\n return {\n ...youthClub,\n title: `Youth Football (9v9 - ${AgeGroup})`,\n category: 'Youth 9v9 clubs',\n };\n case 'U13':\n case 'U14':\n case 'U15':\n case 'U16':\n case 'U17':\n case 'U18':\n return {\n ...youthClub,\n title: `Youth Football (11v11 - ${AgeGroup})`,\n category: 'Youth 11v11 clubs',\n };\n default:\n return {\n ...youthClub,\n title: 'Adult 11v11',\n category: 'Adult 11v11 clubs',\n };\n }\n case ADULT_CLUB:\n return {\n isLogo: false,\n title: 'Adult 11v11',\n img: EMPTY_STRING,\n linkText: 'Learn more about adult football',\n category: 'Adult 11v11 clubs',\n };\n default:\n return;\n }\n};\n\nconst getCategoryName = preference => {\n switch (true) {\n case JSON.parse(sessionStorage.getItem('ISLETGOGIRLSPLAY')):\n return LETGIRLSPLAY;\n case JSON.parse(sessionStorage.getItem('ISWILDCATS')):\n return WEETABIX_WILDCATS;\n case JSON.parse(sessionStorage.getItem('ISJUSTPLAY')):\n return JUST_PLAY_PROTEIN;\n case JSON.parse(sessionStorage.getItem('ISVOLUNTEER')):\n return JUST_PLAY_PROTEIN;\n case JSON.parse(sessionStorage.getItem('ISSQUADGIRLS')):\n return SQUAD;\n case JSON.parse(sessionStorage.getItem('ISAGEUK')):\n return AGE_UK;\n case JSON.parse(sessionStorage.getItem('ISYOUTHCLUB')):\n if (!preference) {\n return 'Youth club';\n }\n if (preference) {\n let categoryName;\n const ageGroup = preference?.AgeGroup;\n switch (true) {\n case ['U5', 'U6'].includes(ageGroup):\n categoryName = 'Development';\n break;\n case ['U7', 'U8', 'U9', 'U10'].includes(ageGroup):\n categoryName = 'Mini Soccer';\n break;\n case ['U11', 'U12'].includes(ageGroup):\n categoryName = '9v9';\n break;\n case [\n 'U13',\n 'U14',\n 'U15',\n 'U16',\n 'U17',\n 'U18',\n 'U19',\n 'Open Aged',\n ].includes(ageGroup):\n categoryName = '11v11';\n break;\n default:\n categoryName = EMPTY_STRING;\n }\n return categoryName;\n }\n break;\n case JSON.parse(sessionStorage.getItem('ISADULTCLUB')):\n return '11v11';\n default:\n return;\n }\n};\n\nexport {\n ageHeaderTitle,\n filteredMiniOnboardingData,\n genderHeaderTitle,\n getCategoryName,\n getInitialAgeLimit,\n getMOHeroProperties,\n getPayloadData,\n getRedirectUrl,\n};\n","// E.g: Deaf/Hearing Impaired => deaf-hearing-impaired\nexport default (str, separator = '-') => {\n if (!str) return '';\n\n return str.replace(/[^\\da-zA-Z]/g, separator).toLowerCase();\n};\n","/** @jsxImportSource @emotion/react */\nimport { useEffect, useRef, useState } from 'react';\n\nimport { venueDetailsPageAnalytics } from '../../analyticsConsts';\nimport { CATEGORY_ICONS, EMPTY_STRING } from '../../const';\nimport { useOnboardingDataContext } from '../../context/OnboardingData';\nimport { usePreferencesContext } from '../../context/preferences';\nimport fullBookingDataLayer from '../../utils/fullBookingDataLayer';\nimport idFromString from '../../utils/idFromString';\nimport ExternalLink from '../ExternalLink';\nimport { ExternalLinkIcon } from '../Icons';\nimport Image from '../Image';\nimport Text from '../Text';\nimport useStyles from './styles';\n\nconst { VENUE_SESSION_CARD_TITLE, VENUE_SESSION_CARD_CTA_BOOKING } =\n venueDetailsPageAnalytics;\n\nconst formatTime = date => {\n const hours = date.getHours();\n const ampm = hours >= 12 ? 'pm' : 'am';\n const getMinute = ('0' + date.getMinutes()).slice(-2);\n const minutes = getMinute > 0 ? `:${getMinute}` : EMPTY_STRING;\n return `${hours % 12 || 12}${minutes} ${ampm}`;\n};\n\nconst baseEfUrl = 'https://faevents.thefa.com/Book?SessionID=';\n\nconst getSessionText = percentageAvailable => {\n const availableSlots = parseInt(percentageAvailable);\n if (availableSlots > 29 && availableSlots <= 100) return 'Slots available';\n else if (availableSlots >= 19 && availableSlots <= 29)\n return 'Limited slots available!';\n else if (availableSlots > 0 && availableSlots < 19)\n return 'Final slots available!';\n else return 'session fully booked';\n};\n\nconst SessionCard = ({\n index,\n SessionId,\n SessionName,\n FootballType,\n Gender,\n AgeGroup,\n Price,\n SessionDateTime,\n Category,\n SessionPercentageAvailable,\n AlternateBookingUrl,\n isMiniOnboarding,\n venueTitle,\n CategoryTypeId,\n logoDetails,\n footballtype,\n isDesktop,\n}) => {\n const styles = useStyles();\n const categoryStringId = idFromString(Category);\n const [spaceAvailableText, setSpaceAvailableText] = useState();\n const [deskLogo, setDeskLogo] = useState();\n const [mobLogo, setMobLogo] = useState();\n const categoryHasIcon = CATEGORY_ICONS.includes(categoryStringId);\n const [sessionDateTimeValue, setSessionDateTimeValue] = useState();\n const { preferences } = usePreferencesContext();\n const { Age: age } = preferences;\n const { OnboardingContext } = useOnboardingDataContext();\n\n useEffect(() => {\n const spaceAvailable = getSessionText(SessionPercentageAvailable);\n setSpaceAvailableText(spaceAvailable);\n setSessionDateTimeValue(formatTime(new Date(SessionDateTime)));\n }, [SessionPercentageAvailable, SessionDateTime]);\n\n const isFullyBooked = spaceAvailableText === 'session fully booked';\n let desktopLogoRef = useRef();\n let mobLogoRef = useRef();\n\n useEffect(() => {\n if (logoDetails) {\n logoDetails?.session?.map(event => {\n const categoryId = event?.sessionId;\n if (parseInt(categoryId) === CategoryTypeId) {\n desktopLogoRef.current = event?.images?.desktop?.src;\n mobLogoRef.current = event?.images?.mobile?.src;\n setDeskLogo(desktopLogoRef.current);\n setMobLogo(mobLogoRef.current);\n }\n return categoryId;\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [logoDetails, CategoryTypeId]);\n\n const sitecoreLogo = isDesktop ? deskLogo : mobLogo;\n\n return (\n
    \n
    \n
    \n
    \n \n {SessionName && SessionName.toString().toLowerCase()}\n \n {!isMiniOnboarding && (\n \n \n \n )}\n
    \n
    \n \n \n
    \n
    \n \n \n \n
    \n
    \n {\n fullBookingDataLayer({\n event_name: 'cta_primary_click',\n eventCategory: venueTitle,\n eventAction: 'click - Full details & Booking',\n eventLabel: SessionName,\n eventparameter1: age,\n eventparameter2: Category,\n eventparameter3: OnboardingContext.gender_group,\n isVenueDetails: true,\n Age_group: age,\n Category_type: Category?.toLowerCase(),\n Gender_group: OnboardingContext.gender_group,\n Venue_session: SessionName?.toLowerCase(),\n Venue_name: venueTitle?.toLowerCase(),\n link_text: 'full details & booking',\n price: `${Price.toFixed(2)}`,\n football_type: footballtype\n ? footballtype?.toString()?.toLowerCase()\n : FootballType\n ? FootballType?.toLowerCase()\n : '',\n });\n }}\n aria-label={`Full details & booking for ${SessionName} - opens in a new window`}\n css={styles.fullBooking}\n >\n Full details & booking{' '}\n \n \n
    \n
    \n \n \n {spaceAvailableText}\n \n
    \n
    \n \n );\n};\n\nexport default SessionCard;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { breakpoints, colors, spacing, borderRadius } = useTheme();\n\n return {\n sessionCardWrapper: css`\n border: ${borderRadius.s} solid transparent;\n &:focus-visible {\n border: ${borderRadius.s} solid ${colors.navy};\n }\n `,\n base: (availableSession, isMiniOnboarding) => css`\n border: 1px solid\n ${availableSession\n ? colors.red\n : isMiniOnboarding\n ? colors.darkGrey\n : colors.lightGrey};\n padding: ${spacing.xs} 1.5rem ${spacing.s};\n border-radius: ${borderRadius.l};\n position: relative;\n background-color: ${colors.white};\n > div {\n padding-bottom: ${borderRadius.s};\n min-height: 47px;\n align-items: center;\n }\n\n &:focus {\n border: 1px solid ${colors.navy};\n }\n `,\n title: css`\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n color: ${colors.navy};\n text-decoration: underline;\n text-decoration-color: ${colors.red};\n text-transform: capitalize;\n `,\n image: css`\n min-height: 35px;\n max-height: 45px;\n `,\n titleWrapper: css`\n position: relative;\n display: grid;\n grid-template-columns: 2fr 1fr;\n `,\n infoWrapper: css`\n display: grid;\n grid-auto-flow: column;\n grid-template-columns: 2fr 1fr;\n grid-gap: ${spacing.xs};\n\n > label {\n color: ${colors.darkGrey};\n font-size: ${borderRadius.xl};\n line-height: 10px;\n &:not(:last-child) {\n border-right: 1px solid ${colors.lightGrey};\n padding-right: ${spacing.s};\n }\n p {\n color: ${colors.navy};\n white-space: nowrap;\n }\n }\n `,\n priceInfo: css`\n padding-left: 10px;\n `,\n ageGroupWrapper: css`\n grid-template-columns: repeat(3, 1fr);\n grid-gap: ${spacing.s};\n `,\n linkWrapper: css`\n padding-top: ${borderRadius.s};\n a {\n text-decoration: none;\n font-weight: normal;\n text-transform: uppercase;\n\n &:focus {\n outline: none;\n color: ${colors.navy};\n\n svg {\n color: ${colors.navy};\n }\n }\n }\n `,\n logoWrapper: css`\n align-self: center;\n justify-self: flex-end;\n `,\n externalLink: css`\n vertical-align: middle;\n color: ${colors.red};\n `,\n sessionBookedWrapper: (SpacesAvailable, isMiniOnboarding) => css`\n font-weight: normal;\n font-size: 0.875rem;\n line-height: 1.125rem;\n margin-top: -10px;\n position: relative;\n background-color: ${SpacesAvailable ? colors.lightGrey : colors.red};\n color: ${SpacesAvailable ? colors.navy : colors.white};\n padding: 4px ${spacing.s} 4px ${spacing.s};\n border-radius: 0 0 ${borderRadius.l} ${borderRadius.l};\n letter-spacing: 0.02em;\n border: 1px solid ${isMiniOnboarding ? colors.darkGrey : 'transparent'};\n border-top: none;\n `,\n sessionText: isFullyBooked => css`\n display: grid;\n text-align: center;\n font-size: 0.75rem;\n text-transform: ${isFullyBooked && 'uppercase'};\n\n ${breakpoints.l} {\n font-size: 0.75rem;\n }\n `,\n fullBooking: css`\n background-color: ${colors.blue};\n color: ${colors.white};\n text-align: center;\n padding: ${borderRadius.m} 16px 0 16px;\n height: 36px;\n line-height: 18px;\n border-radius: ${borderRadius.xs};\n font-size: 0.875rem;\n letter-spacing: 0.02em;\n border-radius: ${borderRadius.s};\n\n svg {\n color: ${colors.white};\n font-size: 0.875rem;\n }\n\n &:hover,\n &:focus {\n background-color: ${colors.lightBlue};\n text-decoration: none;\n color: ${colors.navy};\n svg {\n color: ${colors.navy};\n }\n }\n `,\n dateFormat: css`\n color: ${colors.navy};\n border-bottom: 1px solid ${colors.greyShade1};\n margin: ${spacing.s} 0;\n display: grid;\n grid-template-columns: 30px auto;\n align-items: center;\n padding-bottom: ${spacing.xs};\n `,\n };\n};\n","import { getCategoryName } from '../../components/OnboardingModal/MiniOnboarding';\n\nexport default eventDetails => {\n const categoryName = getCategoryName();\n window.dataLayer.push({\n event: 'All Events',\n eventCategory: eventDetails?.eventCategory\n ? eventDetails?.eventCategory\n : 'FF Onboarding',\n eventAction: eventDetails?.eventAction,\n eventLabel: eventDetails?.eventLabel,\n eventparameter1: eventDetails?.eventparameter1,\n eventparameter2: eventDetails?.eventparameter2,\n eventparameter3: eventDetails?.eventparameter3,\n eventparameter4: categoryName ? categoryName : undefined,\n age_group: eventDetails?.Age_group,\n category_type: eventDetails?.Category_type,\n gender_group: eventDetails?.Gender_group,\n venue_session: eventDetails?.Venue_session,\n venue_name: eventDetails?.Venue_name,\n link_text: eventDetails?.link_text,\n event_name: eventDetails?.event_name,\n journey: categoryName ? categoryName : 'find football',\n football_type: eventDetails?.football_type,\n price: eventDetails?.price,\n });\n window.dataLayer.push({\n event: 'Removal Tag',\n eventparameter1: undefined,\n eventparameter2: undefined,\n eventparameter3: undefined,\n eventparamenter4: undefined,\n age_group: undefined,\n category_type: undefined,\n gender_group: undefined,\n venue_session: undefined,\n venue_name: undefined,\n link_text: undefined,\n event_name: undefined,\n journey: undefined,\n football_type: undefined,\n price: undefined,\n });\n};\n","/** @jsxImportSource @emotion/react */\nimport { clubDetailsPageAnalytics } from '../../analyticsConsts';\nimport formatAddress from '../../utils/formatAddress';\nimport HiddenContent from '../HiddenContent';\nimport { RightArrow } from '../Icons';\nimport LinkButton from '../LinkButton';\nimport Text from '../Text';\nimport useStyles from './styles';\n\nconst { CLUB_TEAM_CARD_TITLE, CLUB_TEAM_CARD_CTA_CONTACT } =\n clubDetailsPageAnalytics;\n\nconst TeamCard = ({\n index,\n TeamName,\n League,\n FootballType,\n Division,\n PlaysOnDay,\n onClick,\n isOpen,\n clubname,\n ...rest\n}) => {\n const styles = useStyles();\n\n const address = formatAddress({\n AddressLine1: rest.GroundAddressLine1,\n AddressLine2: rest.GroundAddressLine2,\n AddressLine3: rest.GroundAddressLine3,\n City: rest.GroundCity,\n PostCode: rest.GroundPostCode,\n });\n\n //converting clubname and teamname to array\n const splitClub = clubname?.toLowerCase().split(' ');\n const spliTeam = TeamName?.toLowerCase().split(' ');\n\n // trimming the string\n const trimClubName = clubname.toLowerCase().trim();\n var trimTeamName = TeamName.toLowerCase().trim();\n\n //filtering the clubname from teamname if string match returns null\n const filterTeam = spliTeam?.filter(value => !splitClub?.includes(value));\n const filterTeamTitle = filterTeam.join(' ');\n\n //filter for repeated names\n const filterMatched = spliTeam?.filter(value => splitClub?.includes(value));\n\n //finding match and replacing it\n const matchTeams = trimTeamName.match(trimClubName);\n const modifiedTeam = matchTeams\n ? trimTeamName.replace(matchTeams, '').trim()\n : filterTeamTitle.trim();\n\n // to remove repeated strings\n const removeRepeatedName = filterMatched.filter(\n (\n s => v =>\n s.has(v) || !s.add(v)\n )(new Set())\n );\n\n // checking whether name is repeated\n const filteredTeamName =\n !matchTeams && !filterTeamTitle ? removeRepeatedName.join(' ') : '';\n\n return (\n \n );\n};\n\nexport default TeamCard;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\nimport publicPath from '../../utils/publicPath';\n\nexport default () => {\n const { breakpoints, borderRadius, colors, spacing, utility } = useTheme();\n\n return {\n base: css`\n border: 1px solid ${colors.lightGrey};\n padding: 1.5rem 1.5rem ${spacing.s};\n border-radius: ${borderRadius.l};\n cursor: pointer;\n max-width: 300px;\n margin: 0 auto;\n height: 100%;\n background-color: ${colors.white};\n font-family: 'FS DILLON';\n\n &:hover {\n svg {\n transition: 0.4s ease-in;\n transform: translateX(50%);\n }\n }\n\n ${breakpoints.l} {\n max-width: 320px;\n }\n `,\n title: css`\n width: 90%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n color: ${colors.navy};\n background: url(${publicPath(\n '/images/desktop/initiativeLogo/ef-logo.svg'\n )})\n no-repeat center left;\n background-size: contain;\n padding-left: ${spacing.m};\n background-position: ${borderRadius.s};\n text-transform: capitalize;\n text-align: left;\n `,\n titleWrapper: css`\n position: relative;\n margin-bottom: 1.5rem;\n &::after {\n content: '';\n position: absolute;\n left: 0;\n bottom: -14px;\n width: 27px;\n border-bottom: ${borderRadius.s} solid ${colors.red};\n }\n `,\n infoWrapper: css`\n display: grid;\n color: ${colors.navy};\n grid-gap: 0.3125rem;\n p {\n color: ${colors.darkGrey};\n max-width: 70%;\n }\n text-align: left;\n `,\n strongFormat: css`\n font-size: 16px;\n `,\n formatWrapper: css`\n > p {\n display: inline-block;\n &:not(:last-child):after {\n content: '|';\n padding: 0 ${spacing.xs};\n color: ${colors.lightGrey};\n }\n }\n `,\n externalLink: css`\n vertical-align: middle;\n color: ${colors.red};\n margin-left: 0.3125rem;\n `,\n infoAddress: css`\n text-transform: Capitalize;\n `,\n linkWrapper: css`\n padding-top: ${spacing.xs};\n button {\n padding: 0;\n text-decoration: none;\n font-weight: normal;\n text-transform: uppercase;\n\n &:focus {\n outline: 0;\n color: ${colors.navy};\n text-decoration: underline;\n svg {\n color: ${colors.navy};\n }\n }\n }\n `,\n infoValue: css`\n width: 75%;\n display: inline-block;\n padding-left: 0.3125rem;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: middle;\n `,\n TeamName: utility.checkboxHidden,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport PropTypes from 'prop-types';\nimport { useLayoutEffect, useMemo, useRef, useState } from 'react';\n\nimport { SHOW_LESS, SHOW_MORE } from '../../analyticsConsts';\nimport { CLUB, KICKABOUT_CASUAL } from '../../const';\nimport { Chevron } from '../Icons';\nimport LinkButton from '../LinkButton';\nimport SessionCard from '../SessionCard';\nimport TeamCard from '../TeamCard';\nimport Text from '../Text';\nimport useStyles from './styles';\n\nconst INITIAL_SHOWN_CARDS = 3;\n\nconst ExpandableList = ({\n index: analyticsIndex,\n title,\n list: totalList,\n type,\n ariaLabel,\n cardAction,\n clubname,\n}) => {\n const [isExpanded, setIsExpanded] = useState(false);\n const styles = useStyles();\n\n const list = useMemo(\n () => (isExpanded ? totalList : totalList.slice(0, INITIAL_SHOWN_CARDS)),\n [totalList, isExpanded]\n );\n const cardToFocus = useRef();\n const hiddenCardsNumber = totalList.length - INITIAL_SHOWN_CARDS;\n\n useLayoutEffect(() => {\n // if the list has been expanded we should focus on the first new card\n if (isExpanded && cardToFocus.current) {\n setTimeout(() => {\n cardToFocus.current?.focus({ preventScroll: true });\n }, 300);\n }\n }, [isExpanded]);\n\n const Card = type === KICKABOUT_CASUAL ? SessionCard : TeamCard;\n const isTeamCard = type === CLUB;\n const buttonText =\n type === KICKABOUT_CASUAL\n ? `(${hiddenCardsNumber}) More on this date`\n : `More ${title}`;\n\n return (\n
    \n \n {title}\n \n
      \n {list &&\n list.length > 0 &&\n list.map((card, index) => (\n
    \n {hiddenCardsNumber > 0 && (\n
    \n setIsExpanded(!isExpanded)}\n css={styles.button(isTeamCard)}\n >\n {isExpanded ? 'Hide' : 'Show'} {buttonText}{' '}\n \n \n
    \n )}\n
    \n );\n};\n\nExpandableList.prototype = {\n index: PropTypes.number,\n title: PropTypes.string,\n list: PropTypes.object,\n type: PropTypes.number,\n ariaLabel: PropTypes.string,\n cardAction: PropTypes.func,\n clubname: PropTypes.string,\n};\n\nexport default ExpandableList;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const {\n borderRadius,\n breakpoints,\n colors,\n screenSizes,\n spacing,\n } = useTheme();\n\n return {\n base: (isTeamCard) => css`\n margin-bottom: 1.5rem;\n \n ${isTeamCard && css`\n padding: ${spacing.m} 0 0;\n &:not(:last-of-type) {\n padding: ${spacing.m} 0;\n }\n margin-bottom: 0;\n `}\n `,\n title: css`\n margin-bottom: 1.5rem;\n border-bottom: 1px solid ${colors.lightGrey};\n padding-bottom: ${spacing.s};\n color: ${colors.navy};\n\n ${breakpoints.l} {\n font-size: 1.5rem;\n }\n `,\n list: css`\n display: grid;\n grid-gap: ${spacing.s};\n\n ${breakpoints.m} {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n `,\n buttonWrapper: (isTeamCard) => css`\n margin-top: ${spacing.m};\n ${isTeamCard && css`\n background-color: ${colors.blue};\n `}\n\n ${breakpoints.m} {\n border-top: 1px solid ${colors.lightGrey};\n border-bottom: 1px solid ${colors.lightGrey};\n }\n `,\n button: isTeamCard => css`\n display: flex;\n align-items: center;\n margin: 0 auto;\n font-weight: normal;\n text-transform: uppercase;\n text-decoration: none;\n\n ${isTeamCard && css`\n background-color: ${colors.blue};\n color: ${colors.white};\n ` }\n\n @media screen and (max-width: ${screenSizes.m}) {\n background-color: ${colors.blue};\n color: ${colors.white};\n font-size: 0.875rem;\n letter-spacing: 0.01em;\n border-radius: ${borderRadius.s};\n width: 100%;\n max-width: 300px;\n display: block;\n padding: 0.9375rem 1.5rem;\n }\n `,\n buttonIcon: (isExpanded, isTeamCard) => css`\n transform: rotate(90deg);\n > g {\n fill: ${isTeamCard ? colors.blue : colors.white};\n }\n\n ${isExpanded &&\n css`\n transform: rotate(-90deg);\n `}\n\n @media screen and (max-width: ${screenSizes.m}) {\n display: none;\n }\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport { forwardRef } from 'react';\n\nimport { REAPPLY_FILTERS, REMOVE_FILTERS } from '../../analyticsConsts';\nimport { CLUB } from '../../const';\nimport Button from '../Button';\nimport ExpandableList from '../ExpandableList';\nimport Text from '../Text';\nimport useStyles from './styles';\n\nconst VenueClubList = forwardRef(\n (\n {\n title,\n titleAnalyticsId,\n subtitle,\n data,\n type,\n isFiltered,\n toggleFiltered,\n canToggle,\n cardAction,\n isClubInfo = false,\n clubname,\n },\n ref\n ) => {\n const styles = useStyles();\n const { ref1, ref2 } = ref;\n\n return (\n
    \n
    \n \n {title}\n \n {subtitle}\n
    \n
    \n {canToggle && (\n
    \n \n {isFiltered ? 'Remove filters' : 'Reapply filters'}\n \n
    \n )}\n {data &&\n data.length > 0 &&\n data.map((group, index) => {\n const isLastElement = data.length === index + 1;\n const defaultTemplate = (\n \n );\n if (isLastElement) {\n return (\n // add reference for last element\n
    \n {defaultTemplate}\n
    \n );\n } else {\n return
    {defaultTemplate}
    ;\n }\n })}\n
    \n
    \n );\n }\n);\n\nexport default VenueClubList;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { breakpoints, colors, spacing } = useTheme();\n\n return {\n base: css`\n height: 100%;\n `,\n header: css`\n margin-bottom: ${spacing.s};\n `,\n middle: css``,\n filterButtonWrapper: css`\n display: flex;\n justify-content: flex-end;\n\n // this is to make sure on really small\n // screens the title and button dont overlap\n @media screen and (min-width: 340px) {\n margin-bottom: -1.5rem;\n }\n `,\n button: css`\n border: 1px solid ${colors.blue};\n width: auto;\n background: none;\n color: ${colors.blue};\n text-transform: uppercase;\n\n &:not([disabled]):hover {\n border-color: ${colors.blue};\n background: ${colors.blue};\n color: ${colors.white};\n }\n\n &:focus {\n border-color: ${colors.blue};\n background: ${colors.white};\n color: ${colors.black};\n text-decoration: underline;\n }\n `,\n title: isClubInfo => css`\n display: inline-block;\n font-size: 1.75rem;\n color: ${colors.navy};\n text-decoration: underline ${colors.red} 2px;\n -webkit-text-decoration-line: underline;\n -webkit-text-decoration-color: ${colors.red};\n -webkit-text-decoration-style: solid;\n -webkit-text-decoration-thickness: 2px;\n\n ${!isClubInfo &&\n css`\n margin: ${spacing.s} 0;\n `}\n margin-bottom: ${spacing.xs};\n\n ${breakpoints.m} {\n font-size: ${spacing.l};\n }\n `,\n subtitle: css`\n display: block;\n color: ${colors.darkGrey};\n `,\n animateSession: css`\n opacity: 0;\n animation: fade_in_show 1.5s ease-in-out 0s forwards;\n\n @keyframes fade_in_show {\n from {\n opacity: 0;\n transform: translate3d(0, 40%, 0);\n }\n\n to {\n opacity: 1;\n transform: none;\n }\n }\n `,\n };\n};\n","const days = {\n 1: 'Monday',\n 2: 'Tuesday',\n 3: 'Wednesday',\n 4: 'Thursday',\n 5: 'Friday',\n 6: 'Saturday',\n 7: 'Sunday',\n};\n\nconst weekdays = ['1', '2', '3', '4', '5'];\nconst weekends = ['6', '7'];\nconst any = [...weekdays, ...weekends];\n\nconst strToArray = str => str.split(',');\n\nconst arraysMatched = (base, comparison) =>\n JSON.stringify(base) === JSON.stringify(comparison);\n\nexport default daysString => {\n const daysArray = strToArray(daysString);\n\n if (daysArray.length === 1) {\n return days[daysString];\n }\n if (arraysMatched(daysArray, weekdays)) {\n return 'Weekdays';\n }\n if (arraysMatched(daysArray, weekends)) {\n return 'Weekends';\n }\n if (arraysMatched(daysArray, any)) {\n return 'Any';\n }\n if (daysArray.length < 7) {\n return `${days[daysArray[0]]} +${daysArray.length - 1}`;\n }\n};\n","const normaliseSessionLogo = apiData => {\n const elements = apiData.elements.map(data => {\n return {\n elements: data?.fields,\n };\n });\n\n return {\n FA: elements.map((fields, index) => {\n return {\n id: index + 1,\n description: fields?.elements?.Description?.value,\n href: fields?.elements?.CTA_Link.value.href,\n sessionId: fields?.elements?.SessionType_ID?.value,\n initiativeLogo: {\n desktop: {\n src: fields?.elements?.Desktop_Image.value.src,\n height: fields?.elements?.Desktop_Image.value?.height,\n width: fields?.elements?.Desktop_Image.value?.width,\n },\n mobile: {\n src: fields?.elements?.Mobile_Image.value.src,\n height: fields?.elements?.Mobile_Image.value?.height,\n width: fields?.elements?.Mobile_Image.value?.width,\n },\n },\n };\n }),\n session: elements.map((fields, index) => {\n return {\n id: index + 1,\n sessionName: fields?.elements?.SessionName?.value,\n sessionId: fields?.elements?.SessionType_ID?.value,\n images: {\n desktop: {\n src: fields?.elements?.Desktop_Logo?.value?.src,\n },\n mobile: {\n src: fields?.elements?.Mobile_Logo?.value?.src,\n },\n },\n };\n }),\n };\n};\n\nexport default normaliseSessionLogo;\n","import isempty from 'lodash.isempty';\n\nimport {\n CarIcon,\n Disability,\n FaInitiative,\n FootballTypes,\n Person,\n Pitch,\n} from '../../components/Icons';\nimport {\n DISABILITY_FACILITIES_MAPPING,\n DISABILITY_TYPES_MAPPING,\n EMAIL,\n EMPTY_STRING,\n PHONE_NUMBER,\n WEBSITE,\n} from '../../const';\nimport formatAddress from '../../utils/formatAddress';\n\nconst normaliseProviderDetails = apiData => {\n const {\n CentreName,\n ProviderId,\n DisableFacility,\n DistanceFromUserLocation,\n PitchFinderId,\n PitchTypes,\n Facility,\n SessionInfo,\n ProviderInfo,\n EmailAddress,\n Website,\n TelephoneNumber,\n SessionTab,\n Latitude,\n Longitude,\n ...rest\n } = apiData;\n\n const pitchCategory = PitchTypes?.split('|');\n const isDisableFacilityAvailable =\n DisableFacility &&\n Object.keys(DisableFacility).every(value => !DisableFacility[value]);\n const isFacilityAvailable =\n Facility && Object.keys(Facility).every(value => !Facility[value]);\n\n return {\n title: CentreName,\n address: formatAddress(rest),\n contactAddress: formatAddress(rest, '\\n'),\n distance: DistanceFromUserLocation,\n latitude: Latitude,\n longitude: Longitude,\n pitchfinderid: PitchFinderId,\n facilities:\n isFacilityAvailable && isDisableFacilityAvailable && isempty(PitchTypes)\n ? EMPTY_STRING\n : {\n title: 'Venue Facilities',\n values: [\n {\n title: 'Facilities',\n icon: CarIcon,\n rows: [\n ...(Facility.CarPark && Facility.CarParkCapacity > 0\n ? [`${Facility.CarParkCapacity} Parking Spaces`]\n : []),\n ...(Facility.ChangingRooms ? ['Changing Rooms'] : []),\n ...(Facility.Floodlit ? ['Floodlights'] : []),\n ],\n },\n ...(PitchTypes\n ? [\n {\n title: 'Pitch types',\n icon: Pitch,\n rows: pitchCategory,\n },\n ]\n : []),\n {\n title: 'Disability Facilities',\n icon: Disability,\n rows: Object.keys(DisableFacility)\n .map(\n facility =>\n DisableFacility[facility] &&\n DISABILITY_FACILITIES_MAPPING[facility]\n )\n .filter(Boolean),\n },\n ],\n },\n footballtypes: !isempty(\n ProviderInfo.FootballType &&\n ProviderInfo.DisabilityType &&\n ProviderInfo.Gender\n )\n ? {\n title: 'Football types played here',\n values: [\n {\n title: 'Sessions football types',\n icon: FootballTypes,\n rows: ProviderInfo.FootballType,\n },\n {\n title: 'Sessions disability types',\n icon: FaInitiative,\n rows: ProviderInfo.DisabilityType.map(\n type => DISABILITY_TYPES_MAPPING[type]\n ).filter(Boolean),\n },\n {\n title: 'Sessions gender groups',\n icon: Person,\n rows: ProviderInfo.Gender.map(gender => `${gender} Football`),\n },\n ],\n }\n : EMPTY_STRING,\n events: ProviderInfo.FaInitiative,\n contact: {\n title: 'Reception',\n details: {\n ...(TelephoneNumber ? { [PHONE_NUMBER]: TelephoneNumber } : {}),\n ...(EmailAddress ? { [EMAIL]: EmailAddress } : {}),\n ...(Website ? { [WEBSITE]: Website } : {}),\n },\n },\n providerid: ProviderId,\n sessionsCount: SessionInfo?.SessionCount,\n venueTabs: SessionTab?.map((session, index) => ({\n id: index,\n label: `${session.Month} (${session.CntSessionMonth})`,\n })),\n sessions: SessionTab?.map(date => {\n const sessionArr = [];\n return date.sessionGroup.map(group => {\n const datevalue = new Date(group.SessionDateTime).getDate();\n if (!sessionArr.includes(datevalue)) {\n group['sessionDate'] = group.SessionDateTime;\n sessionArr.push(datevalue);\n }\n return group;\n });\n }),\n };\n};\n\nexport default normaliseProviderDetails;\n","import isempty from 'lodash.isempty';\n\nimport {\n CarIcon,\n Disability,\n FaInitiative,\n FootballTypes,\n Person,\n Pitch,\n} from '../../components/Icons';\nimport {\n DISABILITY_FACILITIES_MAPPING,\n DISABILITY_TYPES_MAPPING,\n EMAIL,\n EMPTY_STRING,\n PHONE_NUMBER,\n WEBSITE,\n} from '../../const';\nimport formatAddress from '../../utils/formatAddress';\n\nconst normaliseVenueDetails = apiData => {\n const {\n CentreName,\n DisableFacility,\n DistanceFromUserLocation,\n PitchTypes,\n Facility,\n SessionInfo,\n EmailAddress,\n Website,\n TelephoneNumber,\n SessionTab,\n Latitude,\n Longitude,\n ...rest\n } = apiData;\n\n const isDisableFacilityAvailable =\n DisableFacility &&\n Object.keys(DisableFacility).every(value => !DisableFacility[value]);\n const isFacilityAvailable =\n Facility && Object.keys(Facility).every(value => !Facility[value]);\n\n return {\n title: CentreName,\n address: formatAddress(rest),\n contactAddress: formatAddress(rest, '\\n'),\n distance: DistanceFromUserLocation,\n latitude: Latitude,\n longitude: Longitude,\n facilities:\n isFacilityAvailable && isDisableFacilityAvailable && isempty(PitchTypes)\n ? EMPTY_STRING\n : {\n title: 'Venue Facilities',\n values: [\n {\n title: 'Facilities',\n icon: CarIcon,\n rows: [\n ...(Facility.CarPark && Facility.CarParkCapacity > 0\n ? [`${Facility.CarParkCapacity} Parking Spaces`]\n : []),\n ...(Facility.ChangingRooms ? ['Changing Rooms'] : []),\n ...(Facility.Floodlit ? ['Floodlights'] : []),\n ],\n },\n {\n title: 'Pitch types',\n icon: Pitch,\n rows: PitchTypes,\n },\n {\n title: 'Disability Facilities',\n icon: Disability,\n rows: Object.keys(DisableFacility)\n .map(\n facility =>\n DisableFacility[facility] &&\n DISABILITY_FACILITIES_MAPPING[facility]\n )\n .filter(Boolean),\n },\n ],\n },\n footballtypes: !isempty(\n SessionInfo.FootballType &&\n SessionInfo.DisabilityType &&\n SessionInfo.Gender\n )\n ? {\n title: 'Football types played here',\n values: [\n {\n title: 'Sessions football types',\n icon: FootballTypes,\n rows: SessionInfo.FootballType,\n },\n {\n title: 'Sessions disability types',\n icon: FaInitiative,\n rows: SessionInfo.DisabilityType.map(\n type => DISABILITY_TYPES_MAPPING[type]\n ).filter(Boolean),\n },\n {\n title: 'Sessions gender groups',\n icon: Person,\n rows: SessionInfo.Gender.map(gender => `${gender} Football`),\n },\n ],\n }\n : EMPTY_STRING,\n events: SessionInfo.FaInitiative,\n contact: {\n title: 'Reception',\n details: {\n ...(TelephoneNumber ? { [PHONE_NUMBER]: TelephoneNumber } : {}),\n ...(EmailAddress ? { [EMAIL]: EmailAddress } : {}),\n ...(Website ? { [WEBSITE]: Website } : {}),\n },\n },\n sessionsCount: SessionInfo.SessionCount,\n venueTabs: SessionTab.map((session, index) => ({\n id: index,\n label: `${session.Month} (${session.CntSessionMonth})`,\n })),\n sessions: SessionTab.map(date => {\n const sessionArr = [];\n return date.sessionGroup.map(group => {\n const datevalue = new Date(group.SessionDateTime).getDate();\n if (!sessionArr.includes(datevalue)) {\n group['sessionDate'] = group.SessionDateTime;\n sessionArr.push(datevalue);\n }\n return group;\n });\n }),\n };\n};\n\nexport default normaliseVenueDetails;\n","/** @jsxImportSource @emotion/react */\nimport { useEffect, useState } from 'react';\n\nimport { venueDetailsPageAnalytics } from '../../analyticsConsts';\nimport { useFilterPanelToggleContext } from '../../context/filterPanelToggle';\nimport idFromString from '../../utils/idFromString';\nimport ExternalLink from '../ExternalLink';\nimport { RightArrow } from '../Icons';\nimport Text from '../Text';\nimport useStyles from './styles';\n\nconst { FA_EVENTS_FIND_MORE } = venueDetailsPageAnalytics;\n\nconst VenueEvent = ({\n description,\n images,\n logos,\n initiative,\n href,\n faInitiativeDetails,\n eventId,\n venueSessions,\n isDesktop,\n isProvider,\n pitchid,\n}) => {\n const styles = useStyles();\n const [faDeskImage, setFaDeskImage] = useState({});\n const [faMobileImage, setFaMobileImage] = useState({});\n const [faDescription, setFaDescription] = useState();\n const [ctaLink, setCtaLink] = useState();\n const faImg = faMobileImage?.mobileImage\n ? faMobileImage?.mobileImage\n : images.desktop.src;\n const deskImg = isDesktop ? faDeskImage?.deskImage : faImg;\n const faImage = faMobileImage?.mobileImage\n ? `${faMobileImage?.mobileImage} ${faMobileImage?.mobileImageWidth}w`\n : `${images.desktop.src} ${images.desktop.width}w,\n${images.mobile.src} ${images.mobile.width}w`;\n const { isFilterEnabled } = useFilterPanelToggleContext();\n\n useEffect(() => {\n venueSessions?.map(data => {\n const venueData = data?.map(value => {\n const categoryId = value.CategoryTypeId;\n if (faInitiativeDetails) {\n faInitiativeDetails?.FA?.map(event => {\n const sessionId = event?.sessionId;\n if (parseInt(sessionId) === categoryId) {\n const deskImage = event?.initiativeLogo?.desktop?.src;\n const deskImageWidth = event?.initiativeLogo?.desktop?.width;\n setFaDeskImage({ deskImage, deskImageWidth });\n const mobileImage = event?.initiativeLogo?.mobile?.src;\n const mobileImageWidth = event?.initiativeLogo?.mobile?.width;\n setFaMobileImage({ mobileImage, mobileImageWidth });\n const initiativeDes = event?.description;\n setFaDescription(initiativeDes);\n const link = event?.href;\n setCtaLink(link);\n }\n return sessionId;\n });\n }\n return categoryId;\n });\n return venueData;\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [faInitiativeDetails, eventId]);\n\n return (\n
    \n \n {images && (\n \n )}\n \n
    \n \n {faDescription ? faDescription : description}\n \n \n Find out More \n \n
    \n
    \n );\n};\n\nexport default VenueEvent;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { spacing, colors } = useTheme();\n\n return {\n card: css`\n position: relative;\n &:hover {\n svg {\n transition: 0.4s ease-in;\n transform: translateX(50%);\n }\n `,\n description: css`\n position: relative;\n padding-top: ${spacing.xs};\n margin-top: ${spacing.xs};\n letter-spacing: 0.02rem;\n margin-bottom: ${spacing.xs};\n color: ${colors.navy};\n `,\n infoSection: css`\n label {\n display: block;\n }\n `,\n overlay: css`\n position: relative;\n display: block;\n `,\n imgSection: css`\n width: 100%;\n height: auto;\n position: relative;\n display: block;\n `,\n learnMore: css`\n padding-top: ${spacing.xs};\n color: ${colors.blue};\n cursor: pointer;\n position: relative;\n text-decoration: none;\n text-transform: uppercase;\n padding: 5px 5px 5px 0;\n font-size: 14px;\n font-weight: normal;\n display: inline-block;\n span {\n padding-right: 5px;\n }\n\n &:focus {\n outline: 0;\n text-decoration: underline;\n color: ${colors.navy};\n svg {\n color: ${colors.navy};\n }\n }\n `,\n rightArrow: css`\n vertical-align: middle;\n color: ${colors.red};\n margin-left: 0.3125rem;\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport PropTypes from 'prop-types';\nimport { Fragment } from 'react';\n\nimport {\n AGE_UK,\n JUST_PLAY,\n JUST_PLAY_PROTEIN,\n SQUAD,\n UNITE,\n WEETABIX_WILDCATS,\n WILDCATS,\n} from '../../const';\nimport Text from '../Text';\nimport VenueEvent from '../VenueEvents';\nimport useStyles from './styles';\n\nconst EVENTS_MAPPING = {\n [WILDCATS]: 1,\n [WEETABIX_WILDCATS]: 1,\n [JUST_PLAY]: 2,\n [JUST_PLAY_PROTEIN]: 2,\n [AGE_UK]: 3,\n [UNITE]: 4,\n [SQUAD]: 4,\n};\n\nconst normaliseEventsImages = (events, pageData) =>\n events\n .map(event => {\n const { initiativeLogo, ...rest } =\n // get the correct initiative in the page data (from Sitecore)\n pageData?.faInitiatives?.find(\n eventContent => eventContent.id === EVENTS_MAPPING[event]\n ) || {};\n\n return {\n logos: initiativeLogo,\n initiative: event,\n ...rest,\n };\n })\n // filter out any non-found event\n ?.filter(Boolean);\n\nconst FAInitiativeEvent = ({\n events,\n pageData,\n faInitiativeDetails,\n venueSessions,\n isDesktop,\n isProvider,\n pitchid,\n}) => {\n const styles = useStyles();\n\n // add below mentioned types alone in FAInitiative\n events = events?.filter(type => {\n return (\n type === WILDCATS ||\n type === WEETABIX_WILDCATS ||\n type === JUST_PLAY ||\n type === JUST_PLAY_PROTEIN\n );\n });\n\n const faEvents = events && normaliseEventsImages(events, pageData);\n\n return (\n \n {faEvents && faEvents.length > 0 && (\n
    \n \n FA Events\n \n
    \n
    \n
    \n {faEvents.map(event => (\n \n ))}\n
    \n
    \n
    \n
    \n )}\n
    \n );\n};\n\nFAInitiativeEvent.prototype = {\n events: PropTypes.object,\n pageData: PropTypes.object,\n faInitiativeDetails: PropTypes.object,\n venueSessions: PropTypes.object,\n isDesktop: PropTypes.bool,\n isProvider: PropTypes.bool,\n};\n\nexport default FAInitiativeEvent;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { breakpoints, colors, spacing, borderRadius } = useTheme();\n\n return {\n middle: css`\n display: grid;\n border-top: 1px solid ${colors.lightGrey};\n padding: ${spacing.xs} 0;\n `,\n title: css`\n color: ${colors.navy};\n position: relative;\n margin: ${spacing.s} 0;\n font-size: 1.5rem;\n `,\n rightContent: css`\n border-top: ${borderRadius.s} solid ${colors.red};\n padding: ${spacing.s};\n background-color: ${colors.lightGrey};\n `,\n wrapText: css`\n white-space: pre-wrap;\n `,\n venueFacilitiesWrapper: css`\n padding: ${spacing.xs} 0;\n `,\n eventsTitle: css`\n margin-bottom: ${spacing.s};\n `,\n events: css`\n grid-gap: 0.3rem;\n display: flex;\n flex-wrap: wrap;\n ${breakpoints.m} {\n grid-gap: 0;\n }\n\n img {\n border-radius: ${borderRadius.l};\n }\n\n > div {\n width: 100%;\n margin-bottom: 1.5rem;\n\n ${breakpoints.m} {\n margin-right: ${spacing.m};\n margin-bottom: 0;\n flex: 1;\n max-width: 50%;\n\n &:last-of-type {\n margin-right: 0;\n }\n }\n }\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\n\nimport { venueDetailsPageAnalytics } from '../../analyticsConsts';\nimport InfoFacilities from '../InfoFacilities';\nimport Text from '../Text';\nimport useStyles from './styles';\n\nconst { VENUE_ABOUT_TITLE } = venueDetailsPageAnalytics;\n\nconst VenueDetails = ({ footballtypes, facilities }) => {\n const styles = useStyles();\n\n return (\n
    \n
    \n \n About this venue\n \n
    \n
    \n {footballtypes && (\n
    \n \n
    \n )}\n {facilities && (\n
    \n \n
    \n )}\n
    \n
    \n );\n};\n\nexport default VenueDetails;\n","/** @jsxImportSource @emotion/react */\n\nimport Button from '../Button';\nimport useStyles from './styles';\n\n// this allows us to get the previous or next\n// sibling for our current target and shift focus\nconst handleKeyboardNavigation = event => {\n if (event.key !== 'ArrowRight' && event.key !== 'ArrowLeft') {\n return;\n }\n\n const elementToFocus =\n event.key === 'ArrowRight'\n ? event.target?.nextSibling\n : event.target?.previousSibling;\n\n if (!elementToFocus) {\n return;\n }\n\n // focus on the other button\n elementToFocus.focus();\n // simulate a click to switch between tabs\n elementToFocus.click();\n};\n\n// This component should be used along the TabPanel component,\n// it uses the same pattern for `id` and `aria-controls`\nconst MonthTabs = ({ onClick, selectedType, ariaLabel, tabs, ...rest }) => {\n const styles = useStyles();\n\n return (\n
    \n {tabs && tabs.length > 0 && (\n
    \n {tabs.map(tab => {\n const isSelected = selectedType === tab.id;\n\n return (\n onClick(tab.id)}\n onKeyUp={handleKeyboardNavigation}\n role=\"tab\"\n aria-selected={isSelected}\n id={`tab-${tab.id}`}\n aria-controls={`tabpanel-${tab.id}`}\n tabIndex={isSelected ? 0 : -1}\n >\n {tab.label}\n \n );\n })}\n
    \n )}\n
    \n );\n};\n\nexport default MonthTabs;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { breakpoints, spacing, colors, mediaQueries, borderRadius } =\n useTheme();\n\n return {\n base: css`\n overflow-x: auto;\n -webkit-overflow-scrolling: auto;\n padding-bottom: 1.25rem;\n `,\n tabs: tabsCount => css`\n display: grid;\n grid-template-columns: repeat(6, 1fr);\n grid-gap: ${spacing.xs};\n\n ${breakpoints.l} {\n align-items: center;\n justify-content: center;\n grid-gap: ${spacing.s};\n line-height: 18px;\n letter-spacing: 0.02em;\n }\n `,\n tab: isSelected => css`\n color: ${colors.navy};\n border: 1px solid ${colors.blue};\n white-space: nowrap;\n padding: ${spacing.xs} ${spacing.s};\n background-color: transparent;\n\n &:hover,\n &:not(:disabled):hover {\n background-color: ${colors.lightBlue};\n color: ${colors.navy};\n border: 1px solid ${colors.blue};\n }\n\n &:focus-visible {\n background-color: transparent;\n outline: ${borderRadius.s} solid ${colors.navy};\n outline-offset: -2px;\n color: ${colors.navy};\n text-decoration: none;\n }\n\n ${mediaQueries.safariBrowser} {\n @supports (-webkit-appearance: none) {\n &:focus {\n background-color: transparent;\n border: 1px solid ${colors.blue};\n color: ${colors.navy};\n text-decoration: none;\n }\n }\n }\n\n ${isSelected &&\n css`\n color: ${colors.white};\n background-color: ${colors.blue};\n\n &:hover,\n &:not(:disabled):hover {\n background-color: ${colors.blue};\n color: ${colors.white};\n border: 1px solid ${colors.blue};\n }\n\n &:not(:hover):focus-visible {\n color: ${colors.navy};\n svg {\n color: ${colors.navy};\n }\n }\n\n // for safari browser\n ${mediaQueries.safariBrowser} {\n @supports (-webkit-appearance: none) {\n &:not(:hover):focus {\n color: ${colors.navy};\n }\n }\n }\n `};\n\n ${breakpoints.l} {\n padding: 0.5rem 2.1875rem;\n }\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\n\nimport useStyles from './styles';\n\n// This component should be used along the Tabs component,\n// it uses the same pattern for `id` and `aria-labelledby`\nconst TabPanel = ({ selectedType, id, children }) => {\n const styles = useStyles();\n\n const isSelected = selectedType === id;\n\n return (\n \n {children}\n \n );\n};\n\nexport default TabPanel;\n","import { css } from '@emotion/react';\n\nexport default () => {\n return {\n tabPanel: isSelected => css`\n outline:0;\n ${!isSelected &&\n css`\n display: none;\n `}\n `,\n };\n};\n","const dayMapping = [\n 'Sunday',\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday',\n];\n\nconst monthMapping = [\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 getSuffix = dayNumber => {\n if (dayNumber > 3 && dayNumber < 21) {\n return 'th';\n }\n\n switch (dayNumber % 10) {\n case 1:\n return 'st';\n case 2:\n return 'nd';\n case 3:\n return 'rd';\n default:\n return 'th';\n }\n};\n\nexport default date => {\n const dateObject = new Date(date);\n const weekDay = dayMapping[dateObject.getDay()];\n const day = dateObject.getDate();\n const month = monthMapping[dateObject.getMonth()];\n\n return `${weekDay} ${day}${getSuffix(dateObject.getDate())} ${month}`;\n};\n","/** @jsxImportSource @emotion/react */\nimport { Fragment, useRef } from 'react';\n\nimport formatDate from '../../utils/normaliseVenueDetails/formatDate';\nimport HiddenContent from '../HiddenContent';\nimport { DateIcon } from '../Icons';\nimport SessionCard from '../SessionCard';\nimport Text from '../Text';\nimport useStyles from './styles';\n\nexport const INITIAL_SHOWN_CARDS_MOBILE = 8;\n\nconst VenueCard = ({\n venueTitle,\n onClick,\n isDesktop,\n analyticsIndex,\n data,\n rowData,\n isMiniOnboarding = false,\n logoDetails,\n centerName,\n footballtype,\n}) => {\n const styles = useStyles();\n const cardToFocus = useRef();\n const { SessionId, SessionDateTime } = rowData;\n\n return (\n \n
  • \n {isDesktop && (\n \n \n {data?.CentreName || data?.TeamName}(\n {data?.DistanceFromUserLocation} miles)\n \n {SessionDateTime && (\n \n \n {formatDate(SessionDateTime)}\n \n )}\n \n )}\n {!isDesktop && SessionDateTime && (\n \n \n {formatDate(SessionDateTime)}\n \n )}\n
    \n \n
    \n
  • \n
    \n );\n};\n\nexport default VenueCard;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { breakpoints, colors, spacing } = useTheme();\n\n return {\n dateFormat: css`\n color: ${colors.navy};\n border-bottom: 1px solid ${colors.greyShade1};\n margin: ${spacing.xs} 0 ${spacing.s};\n display: grid;\n grid-template-columns: 30px auto;\n align-items: center;\n padding-bottom: 0.5rem;\n min-height: 35px;\n font-weight: 700;\n\n ${breakpoints.m} {\n font-weight: 700;\n }\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport { Fragment, useEffect, useMemo, useState } from 'react';\n\nimport { REAPPLY_FILTERS, REMOVE_FILTERS } from '../../analyticsConsts';\nimport Button from '../Button';\nimport VenueCard from '../VenueCard';\nimport useStyles from './styles';\n\nexport const INITIAL_SHOWN_CARDS_MOBILE = 8;\n\nconst VenueExpandableList = ({\n index: analyticsIndex,\n list: totalList,\n ariaLabel,\n cardAction,\n canToggle,\n isFiltered,\n onClick,\n isDesktop,\n venueTitle,\n logoDetails,\n footballtype,\n providerData,\n}) => {\n const styles = useStyles();\n const [isShowMore, setIsShowMore] = useState({});\n\n const hiddenCardsNumber = totalList.length - INITIAL_SHOWN_CARDS_MOBILE;\n\n useEffect(() => {\n setIsShowMore({ ...isShowMore, [analyticsIndex]: false });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const list = useMemo(\n () =>\n isShowMore[analyticsIndex]\n ? totalList\n : isDesktop\n ? totalList\n : totalList.slice(0, INITIAL_SHOWN_CARDS_MOBILE),\n [totalList, isShowMore, analyticsIndex, isDesktop]\n );\n\n return (\n \n
      \n {list &&\n list.length > 0 &&\n list.map((card, index) => {\n return (\n cardAction(card)}\n rowData={card}\n logoDetails={logoDetails}\n footballtype={footballtype}\n >\n );\n })}\n
    \n {!isDesktop && hiddenCardsNumber > 0 && !isShowMore[analyticsIndex] && (\n
    \n \n setIsShowMore({ ...isShowMore, [analyticsIndex]: true })\n }\n css={styles.button}\n aria-label=\"click here to see more results\"\n >\n SHOW MORE\n \n
    \n )}\n {!isDesktop && canToggle && (\n \n {isFiltered ? 'Remove filters' : 'Reapply filters'}\n \n )}\n
    \n );\n};\n\nexport default VenueExpandableList;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { borderRadius, breakpoints, colors, screenSizes, spacing } =\n useTheme();\n\n return {\n title: css`\n margin-bottom: 1.5rem;\n border-bottom: 1px solid ${colors.lightGrey};\n padding-bottom: ${spacing.s};\n color: ${colors.navy};\n\n ${breakpoints.l} {\n font-size: 1.5rem;\n }\n `,\n list: providerData => css`\n display: grid;\n grid-gap: ${spacing.s};\n\n ${providerData &&\n css`\n margin-bottom: 2rem;\n `}\n ${breakpoints.m} {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n `,\n buttonWrapper: css`\n margin-top: ${spacing.m};\n `,\n button: css`\n font-weight: normal;\n text-transform: uppercase;\n text-decoration: none;\n background-color: ${colors.blue};\n color: ${colors.white};\n margin-bottom: ${spacing.s};\n margin-top: ${spacing.xs};\n font-size: 0.875rem;\n letter-spacing: 0.01em;\n border: 1px solid ${colors.blue};\n border-radius: ${borderRadius.s};\n max-width: 300px;\n display: block;\n padding: 0.9375rem 1.5rem;\n margin: auto;\n `,\n cancelBtn: css`\n background-color: ${colors.white};\n color: ${colors.blue};\n margin: ${spacing.xs} auto ${spacing.s};\n `,\n buttonIcon: (isExpanded, isTeamCard) => css`\n transform: rotate(90deg);\n > g {\n fill: ${isTeamCard ? colors.blue : colors.white};\n }\n\n ${isExpanded &&\n css`\n transform: rotate(-90deg);\n `}\n\n @media screen and (max-width: ${screenSizes.m}) {\n display: none;\n }\n `,\n dateFormat: css`\n color: ${colors.navy};\n border-bottom: 1px solid ${colors.greyShade1};\n margin: ${spacing.s} 0;\n display: grid;\n grid-template-columns: 30px auto;\n align-items: center;\n padding-bottom: 0.5rem;\n min-height: 35px;\n font-weight: 700;\n\n ${breakpoints.m} {\n font-weight: 700;\n }\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport { forwardRef, Fragment, useState } from 'react';\n\nimport { REAPPLY_FILTERS, REMOVE_FILTERS } from '../../analyticsConsts';\nimport Button from '../Button';\nimport Loader from '../Loader';\nimport MonthTabs from '../MonthTabs';\nimport TabPanel from '../TabPanel';\nimport Text from '../Text';\nimport VenueExpandableList from '../VenueExpandableList';\nimport useStyles from './styles';\n\nconst VenueClubList = forwardRef(\n (\n {\n title,\n titleAnalyticsId,\n data,\n type,\n isFiltered,\n toggleFiltered,\n canToggle,\n cardAction,\n isClubInfo = false,\n venueTabs,\n isFiltersApplied,\n isRefreshingSessions,\n isDesktop,\n venueTitle,\n logoDetails,\n footballtype,\n providerData,\n },\n ref\n ) => {\n const styles = useStyles();\n const [selectedTab, setSelectedTab] = useState(0);\n const { ref1, ref2 } = ref;\n\n const onClick = selected => {\n setSelectedTab(selected);\n };\n\n return (\n
    \n
    \n \n {title}\n \n {canToggle && (\n
    \n \n {isFiltered ? 'Remove filters' : 'Reapply filters'}\n \n
    \n )}\n
    \n
    \n {isRefreshingSessions && (\n \n )}\n {!isRefreshingSessions &&\n data[selectedTab] &&\n data[selectedTab].length > 0 && (\n \n
    \n \n
    \n \n \n \n {!isDesktop && (\n \n Jump to sessions in:\n
    \n \n
    \n
    \n )}\n
    \n )}\n
    \n
    \n );\n }\n);\n\nexport default VenueClubList;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { breakpoints, colors, spacing, typography } = useTheme();\n\n return {\n base: css`\n height: 100%;\n `,\n header: css`\n margin-bottom: ${spacing.s};\n display: grid;\n grid-auto-flow: column;\n `,\n filterButtonWrapper: css`\n align-self: flex-end;\n justify-self: flex-end;\n display: none;\n `,\n button: css`\n border: 1px solid ${colors.blue};\n width: auto;\n background: none;\n color: ${colors.blue};\n text-transform: uppercase;\n\n &:not([disabled]):hover {\n border-color: ${colors.blue};\n background: ${colors.blue};\n color: ${colors.white};\n }\n\n &:focus {\n border-color: ${colors.blue};\n background: ${colors.white};\n color: ${colors.black};\n text-decoration: underline;\n }\n `,\n title: isClubInfo => css`\n display: inline-block;\n font-size: 1.75rem;\n color: ${colors.navy};\n text-decoration: underline ${colors.red} 2px;\n -webkit-text-decoration-line: underline;\n -webkit-text-decoration-color: ${colors.red};\n -webkit-text-decoration-style: solid;\n -webkit-text-decoration-thickness: 2px;\n margin-bottom: ${spacing.xs};\n\n ${breakpoints.l} {\n ${typography.headings[4].desktop};\n }\n `,\n subtitle: css`\n display: block;\n color: ${colors.darkGrey};\n `,\n jumpSession: css`\n ${typography.headings[6].mobile};\n font-weight: 500;\n padding-bottom: ${spacing.s};\n padding-top: ${spacing.s};\n border-top: 1px solid ${colors.lightGrey};\n `,\n animateSession: css`\n opacity: 0;\n animation: fade_in_show 1.5s ease-in-out 0s forwards;\n\n @keyframes fade_in_show {\n from {\n opacity: 0;\n transform: translate3d(0, 40%, 0);\n }\n\n to {\n opacity: 1;\n transform: none;\n }\n }\n `,\n };\n};\n","import {\n DISABILITY_FACILITIES_MAPPING,\n PAGE_NUMBER,\n PAGE_SIZE,\n WALKING_FOOTBALL,\n} from '../../const';\n\nconst venueSession = (\n isFiltersApplied,\n filteredSessions,\n unfilteredSessions\n) => {\n return isFiltersApplied ? filteredSessions : unfilteredSessions;\n};\n\nconst backURL = (previousPage, previousUrl) => {\n const previousCheck = previousUrl ? previousUrl : '/recommendation';\n return previousPage ? previousPage : previousCheck;\n};\n\nconst venueData = (\n casualData,\n id,\n pitchfinderref,\n setIsProviderData,\n setProvidersData,\n providerRef\n) => {\n const providerValue = providerItem => {\n setIsProviderData(providerItem ? true : false);\n };\n casualData?.map(casualItem => {\n if (casualItem?.RecommendationCentreCartDto && id.length > 10) {\n casualItem?.RecommendationCentreCartDto?.map(centerData => {\n if (centerData.CentreId === parseInt(id)) {\n pitchfinderref.current = centerData.PitchFinderId;\n centerData?.ProviderCartDto?.map(providerItem => {\n providerValue(providerItem);\n setProvidersData(prev => [...prev, providerItem]);\n return providerItem;\n });\n }\n return centerData;\n });\n }\n if (casualItem?.RecommendationProviderCartDto) {\n casualItem?.RecommendationProviderCartDto?.map(centerData => {\n if (\n centerData?.ProviderCartDto.length > 1 &&\n centerData?.PitchFinderId === parseInt(id)\n ) {\n centerData?.ProviderCartDto?.map(providerItem => {\n providerRef.current = providerItem.ProviderId;\n providerValue(providerItem);\n setProvidersData(prev => [...prev, providerItem]);\n return providerItem;\n });\n }\n return centerData;\n });\n }\n return casualItem;\n });\n};\n\nconst providerPreviousPageName = previousUrl => {\n const resultsCheck =\n previousUrl?.indexOf('results') > -1 ? 'results' : 'recommendation';\n\n const mapLinkCheck = previousUrl?.indexOf('map') > -1 ? 'map' : resultsCheck;\n\n return previousUrl ? mapLinkCheck : 'recommendation';\n};\n\nconst venuePreviousPage = (previousUrl, teamPage = false) => {\n const mapcheck = previousUrl?.indexOf('map') > -1 && 'map';\n const resultsCheck = previousUrl.indexOf('results') > -1 && 'results';\n const clubCheck = previousUrl.indexOf('club') > -1 && 'club';\n const resultClubCheck = clubCheck ? clubCheck : resultsCheck;\n const resultCheck = teamPage === true ? resultClubCheck : resultsCheck;\n const navigationCheck = mapcheck ? mapcheck : resultCheck;\n return previousUrl ? navigationCheck : 'recommendation';\n};\n\nconst walkingFootball = Agegroup => {\n return Agegroup?.toLowerCase()===WALKING_FOOTBALL ? 'Walking' : Agegroup;\n};\n\nconst providerCardImage = (\n isDesktop,\n desktopLogoRef,\n mobLogoRef,\n categoryHasIcon,\n categoryStringId\n) => {\n const categoryType = categoryHasIcon ? categoryStringId : 'ef-logo';\n const mobileImg = mobLogoRef.current\n ? mobLogoRef.current\n : `/images/desktop/initiativeLogo/${categoryType}.svg`;\n const displayImg = isDesktop ? desktopLogoRef.current : mobileImg;\n return displayImg;\n};\n\nconst teamsRow = (DivisionName, ageGroup, LeagueName) => {\n const leagueSelect =\n !LeagueName && DivisionName\n ? [`${ageGroup} ${DivisionName}`]\n : [`${ageGroup} TBD`];\n const divisionSelect =\n LeagueName && !DivisionName ? [`${ageGroup} ${LeagueName}`] : leagueSelect;\n return DivisionName && LeagueName\n ? [`${ageGroup} ${DivisionName} of ${LeagueName}`]\n : divisionSelect;\n};\n\nconst facilityRow = Facility => {\n return [\n ...(Facility && Facility.CarPark && Facility.CarParkCapacity > 0\n ? [`${Facility.CarParkCapacity} Parking Spaces`]\n : []),\n ...(Facility && Facility.ChangingRooms ? ['Changing Rooms'] : []),\n ...(Facility && Facility.Floodlit ? ['Floodlights'] : []),\n ];\n};\n\nconst disabilityRow = DisableFacility => {\n return (\n DisableFacility &&\n Object.keys(DisableFacility)\n .map(\n facility =>\n DisableFacility[facility] && DISABILITY_FACILITIES_MAPPING[facility]\n )\n .filter(Boolean)\n );\n};\n\nconst casualDataCal = (\n casualMORecommendations,\n totalcenters,\n casualRecommendations\n) => {\n return casualMORecommendations ? totalcenters : casualRecommendations;\n};\n\nconst refreshingSession = (\n isLoading,\n venueDetails,\n filteredSessions,\n unfilteredSessions\n) => {\n return isLoading && venueDetails && (filteredSessions || unfilteredSessions);\n};\n\nconst titleName = (selectedRecommendationType, isFiltersApplied, Age) => {\n return selectedRecommendationType && isFiltersApplied\n ? `${selectedRecommendationType} sessions for ${Age} year olds`\n : 'All sessions at this venue';\n};\n\nconst linkUrl = (selectedRecommendationType, Category, isDesktop) => {\n return (!!selectedRecommendationType || Category) && isDesktop;\n};\n\nconst providerMLCard = (\n isMLCard,\n preferenceWithPagination,\n defaultPreferences,\n preferences\n) => {\n const prefPage = preferenceWithPagination\n ? {\n ...defaultPreferences,\n ...preferences,\n [PAGE_SIZE]: 6,\n [PAGE_NUMBER]: 1,\n }\n : preferenceWithPagination;\n return isMLCard ? preferenceWithPagination : prefPage;\n};\n\nconst mlCard = (\n isMLCard,\n preferenceWithPagination,\n isFiltersApplied,\n defaultPreferences,\n preferences\n) => {\n const MLCheck = isFiltersApplied\n ? {\n ...defaultPreferences,\n ...preferences,\n [PAGE_SIZE]: 6,\n [PAGE_NUMBER]: 1,\n }\n : preferenceWithPagination;\n return isMLCard ? preferenceWithPagination : MLCheck;\n};\nconst venueDetailsCond = (venueDetails, setVenueDetails, normalisedDetails) => {\n if (!venueDetails) {\n setVenueDetails(normalisedDetails);\n }\n};\nconst filteredData = (\n isFiltersApplied,\n setFilteredSessions,\n filteredSessions,\n sessions,\n setUnfilteredSessions,\n unfilteredSessions\n) => {\n if (isFiltersApplied) {\n setFilteredSessions(\n filteredSessions ? [...filteredSessions, ...sessions] : sessions\n );\n } else {\n setUnfilteredSessions(\n unfilteredSessions ? [...unfilteredSessions, ...sessions] : sessions\n );\n }\n};\n\nconst recommendationListName = data => {\n const checkFirst =\n data?.providerName?.length === 1 ? data?.providerName : data.CentreName;\n const checkSecond = checkFirst\n ? data.CentreName.toLowerCase()\n : data.ClubName.toLowerCase();\n return checkSecond;\n};\n\nexport {\n backURL,\n casualDataCal,\n disabilityRow,\n facilityRow,\n filteredData,\n linkUrl,\n mlCard,\n providerCardImage,\n providerMLCard,\n providerPreviousPageName,\n recommendationListName,\n refreshingSession,\n teamsRow,\n titleName,\n venueData,\n venueDetailsCond,\n venuePreviousPage,\n venueSession,\n walkingFootball,\n};\n","import {\n AGE_ID,\n DISABILITY_OPTION_ID,\n DISABILITY_TYPE_ID,\n FOOTBALL_TYPE_ID,\n LATITUDE_ID,\n LONGITUDE_ID,\n PAGE_NUMBER,\n PAGE_NUMBER_VALUE,\n PAGE_SIZE,\n PLAY_WITH_ID,\n VENUE_PAGE_SIZE_VALUE,\n WEEKDAYS_ID,\n} from '../../const';\n\nexport default {\n [AGE_ID]: 0,\n [PLAY_WITH_ID]: 0,\n [FOOTBALL_TYPE_ID]: null,\n [WEEKDAYS_ID]: '',\n [DISABILITY_OPTION_ID]: 0,\n [DISABILITY_TYPE_ID]: [],\n [LATITUDE_ID]: null,\n [LONGITUDE_ID]: null,\n [PAGE_NUMBER]: PAGE_NUMBER_VALUE,\n [PAGE_SIZE]: VENUE_PAGE_SIZE_VALUE,\n};\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { breakpoints, borderRadius, colors, typography, spacing, heights } =\n useTheme();\n\n return {\n base: css`\n height: 100%;\n display: grid;\n grid-template-rows: auto 1fr;\n grid-template-columns: 100%;\n `,\n hero: css`\n h1 {\n font-size: 2.625rem;\n\n ${breakpoints.m} {\n ${typography.headings[3].desktop};\n max-width: 85%;\n text-align: center;\n padding: 7px 20px;\n }\n }\n `,\n wrapperRef: (titleHeight, hasPreferences) => css`\n width: 90vw;\n margin: 0 auto;\n margin-top: calc(\n ${titleHeight || '500'}px - ${heights.mainNav.mobile} -\n ${hasPreferences ? heights.filterNav : '0px'} + ${spacing.m}\n );\n padding: ${spacing.s} 0;\n\n ${breakpoints.m} {\n margin-top: calc(\n ${titleHeight || '360'}px - ${heights.mainNav.mobile} + 6rem\n );\n }\n\n ${breakpoints.l} {\n max-width: 1196px;\n margin-top: calc(\n ${titleHeight || '360'}px - ${heights.mainNav.desktop} + 9rem\n );\n padding: 0;\n }\n `,\n wrapper: (titleHeight, hasPreferences) => css`\n margin-top: calc(100vh - 95px);\n ${hasPreferences &&\n css`\n margin-top: calc(100vh - 256px);\n `}\n padding: ${spacing.s} 0;\n\n ${breakpoints.m} {\n margin-top: calc(100vh - 75px);\n padding: 0;\n }\n\n ${breakpoints.l} {\n margin: 0 auto;\n width: 90vw;\n max-width: 1196px;\n margin-top: calc(100vh - 75px);\n }\n `,\n card: css`\n position: relative;\n padding: ${spacing.s};\n background-color: ${colors.white};\n border-radius: ${borderRadius.l};\n margin-bottom: ${spacing.m};\n box-shadow: 0px 4px 6px rgba(91, 104, 133, 0.1);\n ${breakpoints.xl} {\n padding: ${spacing.l};\n grid-template-rows: unset;\n grid-gap: ${spacing.s};\n }\n `,\n tabs: css`\n margin-bottom: ${spacing.s};\n outline: 0;\n\n ${breakpoints.xl} {\n margin-bottom: ${spacing.m};\n\n Button {\n border: ${borderRadius.s} solid transparent;\n outline: 0;\n &:focus:not(:hover) {\n outline: 0;\n border: ${borderRadius.s} solid ${colors.navy};\n }\n }\n }\n `,\n backButton: css`\n margin: 0 0 1.2rem;\n `,\n border: css`\n border-top: 1px solid ${colors.lightGrey};\n `,\n venueDescription: css`\n background-color: ${colors.lightGrey};\n color: ${colors.navy};\n border-radius: ${borderRadius.l};\n padding: 1.5rem;\n display: grid;\n grid-template-columns: 15% 60% 25%;\n align-items: inherit;\n margin-top: 33px;\n border-radius: ${borderRadius.l};\n p {\n line-height: 1.5rem;\n }\n ${breakpoints.m} {\n grid-template-columns: 5% 80% 15%;\n }\n `,\n title: isClubInfo => css`\n display: inline-block;\n font-size: 1.75rem;\n color: ${colors.navy};\n text-decoration: underline ${colors.red} 2px;\n -webkit-text-decoration-line: underline;\n -webkit-text-decoration-color: ${colors.red};\n -webkit-text-decoration-style: solid;\n -webkit-text-decoration-thickness: 2px;\n margin-bottom: ${spacing.xs};\n\n ${breakpoints.l} {\n ${typography.headings[4].desktop};\n }\n `,\n externalLink: css`\n display: initial;\n grid-gap: 10px;\n border-top: 1px solid ${colors.red};\n width: 40px;\n padding-top: 1rem;\n\n &::before {\n content: '';\n position: absolute;\n width: 40px;\n border-bottom: 1px solid ${colors.red};\n\n ${breakpoints.m} {\n padding-top: 1rem;\n }\n }\n `,\n venueInfo: css`\n padding-bottom: 1rem;\n font-weight: 600;\n font-size: 14px;\n\n ${breakpoints.m} {\n padding-top: 0.5rem;\n padding-bottom: 0;\n font-size: 18px;\n }\n `,\n link: css`\n font-size: 14px;\n font-weight: 400;\n text-transform: uppercase;\n padding-top: 1rem;\n word-break: break-word;\n\n ${breakpoints.m} {\n font-size: 16px;\n\n &:first-of-type {\n padding-top: 2.3rem;\n }\n }\n `,\n alertIcon: css`\n ${breakpoints.m} {\n margin-top: 0.5rem;\n }\n `,\n rightArrow: css`\n vertical-align: middle;\n color: ${colors.red};\n margin-left: 0.3125rem;\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport React, {\n Fragment,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport { useParams } from 'react-router-dom';\n\nimport {\n BACK_TO_RESULTS,\n venueDetailsPageAnalytics,\n} from '../../analyticsConsts';\nimport {\n EMPTY_STRING,\n KICKABOUT_CASUAL,\n PAGE_NUMBER,\n PAGE_SIZE,\n PREVIOUSPAGE,\n SELECTED_RECOMMENDATIONS_TYPE_ID,\n VENUE_INFO,\n VENUE_NO_SESSION_INFORMATION,\n VENUE_PROVIDER_INFORMATION,\n VENUE_TAB,\n} from '../../const';\nimport { useMLRecommendations } from '../../context/mlRecommendations';\nimport { useMORecommendations } from '../../context/moRecommendations';\nimport { usePageHistory } from '../../context/pageHistory';\nimport { usePageInfo } from '../../context/pageInfo';\nimport { usePreferencesContext } from '../../context/preferences';\nimport { useRecommendations } from '../../context/recommendations';\nimport weekdaysFormatter from '../../formatters/weekdays';\nimport useClubVenueCoordination from '../../hooks/useClubVenueCoordination';\nimport useElementHeight from '../../hooks/useElementHeight';\nimport useErrorBoundary from '../../hooks/useErrorBoundary';\nimport useLocalStorage from '../../hooks/useLocalStorage';\nimport useMediaQuery from '../../hooks/useMediaQuery';\nimport normaliseSessionLogo from '../../normaliser/sessionlogo';\nimport {\n getProviderDetails,\n getSessionLogo,\n getVenueDetails,\n getVenuePageData,\n} from '../../services';\nimport normaliseProviderDetails from '../../utils/normaliseProviderDetails';\nimport normaliseVenueDetails from '../../utils/normaliseVenueDetails';\nimport useStylesClub from '../ClubPage/styles';\nimport ContactMap from '../ContactMap';\nimport ExternalLink from '../ExternalLink';\nimport FAInitiativeEvent from '../FAInitiativeEvent';\nimport Footer from '../Footer';\nimport HeroProvider from '../HeroProvider';\nimport { DarkIcon, RightArrow } from '../Icons';\nimport Link from '../Link';\nimport Loader from '../Loader';\nimport StickyScrollSpyNav from '../StickyScrollSpyNav';\nimport Text from '../Text';\nimport VenueDetails from '../VenueDetails';\nimport VenueList from '../VenueList';\nimport {\n backURL,\n casualDataCal,\n filteredData,\n linkUrl,\n mlCard,\n providerPreviousPageName,\n refreshingSession,\n titleName,\n venueData,\n venueDetailsCond,\n venueSession,\n} from './conditionCheck';\nimport defaultPreferences from './defaultPreferences';\nimport useStyles from './styles';\n\nconst { VENUE_NAME_HEADING, VENUE_SESSIONS_TITLE, VENUE_DETAILS_WRAPPER } =\n venueDetailsPageAnalytics;\n\n// TODO: change the weekdaysFormatter to say `Any days`\nexport const getWeekdays = days =>\n weekdaysFormatter(days) === 'Any' ? 'any days' : weekdaysFormatter(days);\n\nconst VenuePage = () => {\n const { id } = useParams();\n const throwError = useErrorBoundary();\n const [providerPageData, setProviderPageData] = useState();\n const [isLoadingPageData, setIsLoadingPageData] = useState(true);\n const { preferences } = usePreferencesContext();\n const {\n [SELECTED_RECOMMENDATIONS_TYPE_ID]: selectedRecommendationType,\n Age,\n Category,\n } = preferences || EMPTY_STRING;\n const [venueDetails, setVenueDetails] = useState();\n const [logoDetails, setLogoDetails] = useState();\n const [filteredSessions, setFilteredSessions] = useState();\n const [unfilteredSessions, setUnfilteredSessions] = useState();\n const isDesktop = useMediaQuery('screen and (min-width: 768px)');\n const [isFiltersApplied, setisfiltersapplied] = useState(\n // if we have a selected recommendation type then we'll use the preferences\n // when getting the provider details, otherwise we show all sessions\n !!selectedRecommendationType || !!preferences?.Category\n );\n const { casualRecommendations } = useRecommendations();\n const { casualMORecommendations } = useMORecommendations();\n const [isLoading, setIsLoading] = useState(false);\n const [isVenueDetailsLoading, setIsVenueDetailsLoading] = useState(false);\n const [venueTabs, setVenueTabs] = useState();\n const loadingRef = useRef();\n const pitchfinderref = useRef();\n const venueLoadingRef = useRef();\n const listRef = useRef();\n const providerRef = useRef();\n const { height: titleHeight, elementRef: titleElement } = useElementHeight();\n const styles = useStyles();\n const stylesClub = useStylesClub();\n const { isMLCard } = useMLRecommendations();\n const [, setPageInfo] = usePageInfo();\n const { getLocalItem } = useLocalStorage();\n const previousUrl = getLocalItem(PREVIOUSPAGE);\n const { previousPage } = usePageHistory();\n const backUrl = backURL(previousPage, previousUrl);\n\n const previousPageName = providerPreviousPageName(previousUrl);\n\n const sourceLoction = useClubVenueCoordination(\n selectedRecommendationType,\n preferences\n );\n\n const [providersData, setProvidersData] = useState([]);\n const [isProviderData, setIsProviderData] = useState();\n const totalcenters = [];\n totalcenters.push(casualMORecommendations);\n const casualData = casualDataCal(\n casualMORecommendations,\n totalcenters,\n casualRecommendations\n );\n\n useEffect(() => {\n setProvidersData([]);\n venueData(\n casualData,\n id,\n pitchfinderref,\n setIsProviderData,\n setProvidersData,\n providerRef\n );\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [casualRecommendations, id, venueDetails]);\n\n // set page info only when we have the venue name\n useEffect(() => {\n if (!venueDetails?.title) {\n return;\n }\n setPageInfo('venue', venueDetails.title);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [venueDetails]);\n\n useEffect(() => {\n localStorage.setItem('pathInfomation', window.location.pathname);\n }, []);\n\n useEffect(() => {\n getVenuePageData()\n .then(({ data }) => {\n const venuePageDetails = data;\n const crypto = window.crypto;\n const randomNumber =\n Math.round(crypto.getRandomValues(new Uint8Array(10))[0] / 64) + 1;\n venuePageDetails.hero.images.desktop.src = `/images/desktop/venue/hero/${randomNumber}.jpg`;\n venuePageDetails.hero.images.mobile.src = `/images/mobile/venue/hero/${randomNumber}.jpg`;\n setProviderPageData(venuePageDetails);\n setIsLoadingPageData(false);\n })\n .catch(throwError);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n getSessionLogo()\n .then(({ data }) => {\n const logoData = normaliseSessionLogo(data);\n setLogoDetails(logoData);\n })\n .catch(throwError);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (isLoading) {\n return;\n }\n setIsLoading(true);\n setIsVenueDetailsLoading(true);\n\n const preferenceWithPagination = {\n ...defaultPreferences, // get the page after the current one\n [PAGE_SIZE]: 6,\n [PAGE_NUMBER]: 1,\n };\n\n Promise.all([\n getProviderDetails(\n id,\n providerRef.current,\n mlCard(\n isMLCard,\n preferenceWithPagination,\n isFiltersApplied,\n defaultPreferences,\n preferences\n )\n )\n .then(({ data }) => {\n if (data) {\n const { sessions, sessionsCount, venueTabs, ...normalisedDetails } =\n normaliseProviderDetails(data);\n venueDetailsCond(venueDetails, setVenueDetails, normalisedDetails);\n setIsLoading(false);\n setIsVenueDetailsLoading(false);\n }\n })\n .catch(() => {\n getVenueDetails(\n id,\n mlCard(\n isMLCard,\n preferenceWithPagination,\n isFiltersApplied,\n defaultPreferences,\n preferences\n )\n ).then(({ data }) => {\n if (data) {\n const {\n sessions,\n sessionsCount,\n venueTabs,\n ...normalisedDetails\n } = normaliseVenueDetails(data);\n setVenueTabs(venueTabs);\n venueDetailsCond(\n venueDetails,\n setVenueDetails,\n normalisedDetails\n );\n filteredData(\n isFiltersApplied,\n setFilteredSessions,\n filteredSessions,\n sessions,\n setUnfilteredSessions,\n unfilteredSessions\n );\n setIsLoading(false);\n setIsVenueDetailsLoading(false);\n }\n });\n }),\n ]);\n\n // we send the preferences only if we want the filters applied\n // otherwise we pass an empty object\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filteredSessions, isFiltersApplied, unfilteredSessions]);\n\n // if we are loading and we already have the venue details and\n // at least one type of session then we are fetching\n // the other type of sessions\n const isRefreshingSessions = refreshingSession(\n isLoading,\n venueDetails,\n filteredSessions,\n unfilteredSessions\n );\n\n // we are using useLayoutEffect here because we cannot rely on\n // setIsRefreshingDetails having run before we shift focus above\n // due to React async setting of state\n useLayoutEffect(() => {\n // if we're refreshing then shift focus to the loading message\n if (isRefreshingSessions) {\n loadingRef.current?.focus({ preventScroll: true });\n return;\n }\n // filtersApplied has changed\n // if both filtered and unfiltered data have been loaded\n // we can shift the focus to the list when the button is clicked\n if (filteredSessions && unfilteredSessions) {\n setTimeout(() => {\n listRef.current?.focus({ preventScroll: true });\n }, 300);\n }\n }, [\n filteredSessions,\n isFiltersApplied,\n isRefreshingSessions,\n unfilteredSessions,\n ]);\n\n useLayoutEffect(() => {\n if (isVenueDetailsLoading) {\n venueLoadingRef.current?.focus();\n }\n }, [isVenueDetailsLoading]);\n\n // if there is no selected recommendations type or\n // the filters are removed show different title\n const title = titleName(selectedRecommendationType, isFiltersApplied, Age);\n\n const venueSessions = venueSession(\n isFiltersApplied,\n filteredSessions,\n unfilteredSessions\n );\n\n useEffect(() => {\n if (isLoadingPageData) {\n return ;\n }\n }, [isLoadingPageData]);\n\n return (\n
    \n
    \n {providerPageData && (\n \n )}\n
    \n \n
    \n {isVenueDetailsLoading && (\n \n )}\n {!isVenueDetailsLoading && (\n \n
    \n {linkUrl(selectedRecommendationType, Category, isDesktop) && (\n \n {' '}\n Back to {previousPageName} view\n \n )}\n {venueDetails?.providerid && (\n
    \n \n {title}\n \n
    \n )}\n {venueSessions && (\n \n setisfiltersapplied(!isFiltersApplied)\n }\n providerData={isProviderData}\n venueTabs={venueTabs}\n ref={{ ref1: listRef, ref2: loadingRef }}\n isRefreshingSessions={isRefreshingSessions}\n isDesktop={isDesktop}\n venueTitle={venueDetails?.title}\n logoDetails={logoDetails}\n footballtype={venueDetails?.footballtype?.values[0]?.rows}\n />\n )}\n {isProviderData && (\n
    \n
    \n \n
    \n
    \n {id.length < 12\n ? VENUE_NO_SESSION_INFORMATION\n : VENUE_PROVIDER_INFORMATION}\n
    \n
    {VENUE_INFO}
    \n
    \n {providersData.map((providerCard, index) => {\n return (\n \n {' '}\n {providerCard.ProviderName}\n \n \n );\n })}{' '}\n
    \n
    \n
    \n
    \n )}\n
    \n
    \n {venueDetails && (\n \n \n \n )}\n
    \n
    \n {venueDetails && (\n \n \n {(venueSessions || venueDetails?.pitchfinderid) && (\n \n )}\n \n )}\n
    \n \n )}\n
    \n \n
    \n
    \n );\n};\n\nexport default VenuePage;\n","/** @jsxImportSource @emotion/react */\nimport PropTypes from 'prop-types';\nimport React, {\n Fragment,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\n\nimport {\n BACK_TO_RESULTS,\n clubDetailsPageAnalytics,\n} from '../../analyticsConsts';\nimport {\n CLUB,\n CLUB_TAB,\n EMPTY_STRING,\n PREVIOUSPAGE,\n SELECTED_RECOMMENDATIONS_TYPE_ID,\n} from '../../const';\nimport { useMLRecommendations } from '../../context/mlRecommendations';\nimport { useOnboardingDataContext } from '../../context/OnboardingData';\nimport { usePageHistory } from '../../context/pageHistory';\nimport { usePageInfo } from '../../context/pageInfo';\nimport { usePreferencesContext } from '../../context/preferences';\nimport { useSetContactFormDLContext } from '../../context/setContactFormDL';\nimport useElementHeight from '../../hooks/useElementHeight';\nimport useLocalStorage from '../../hooks/useLocalStorage';\nimport ClubDetails from '../ClubDetails';\nimport useStylesClub from '../ClubPage/styles';\nimport ContactMap from '../ContactMap';\nimport HeroProvider from '../HeroProvider';\nimport { RightArrow } from '../Icons';\nimport Image from '../Image';\nimport Link from '../Link';\nimport Loader from '../Loader';\nimport SocialMedia from '../SocialMedia';\nimport StickyScrollSpyNav from '../StickyScrollSpyNav';\nimport Text from '../Text';\nimport VenueClubList from '../VenueClubList';\nimport { getWeekdays } from '../VenuePage';\nimport { providerPreviousPageName } from '../VenuePage/conditionCheck';\nimport useStyles from './styles';\n\nconst { CLUB_NAME_HEADING, CLUB_TEAM_TITLE, CLUB_DETAILS_WRAPPER } =\n clubDetailsPageAnalytics;\n\nexport const getPreferenceValue = (\n pageInfo,\n preference,\n details,\n text,\n isClubInfo,\n gender\n) => {\n const { title } = details;\n\n return {\n eventCategory: pageInfo?.title,\n eventparameter1: details?.clubname ? details?.clubname : title,\n eventparameter2: !isClubInfo ? title : EMPTY_STRING,\n eventparameter3: text,\n eventparameter4: preference?.Age ? preference?.Age : EMPTY_STRING,\n eventparameter5: gender ? gender : EMPTY_STRING,\n item_list_name: text,\n };\n};\n\nconst ClubDetailsPage = ({\n onTeamCardClick,\n clubDetails,\n providerPageData,\n isTeamDetailsLoading,\n filteredTeams,\n unfilteredTeams,\n isFiltersApplied,\n setIsFilters,\n accreditation,\n contactDetails,\n isDesktop,\n socialLinks,\n onClick,\n sourceLocation,\n}) => {\n const { preferences } = usePreferencesContext();\n const { OnboardingContext } = useOnboardingDataContext();\n const {\n [SELECTED_RECOMMENDATIONS_TYPE_ID]: selectedRecommendationType,\n Age,\n WeekDays,\n Category,\n } = preferences || {};\n const loadingRef = useRef();\n const listRef = useRef();\n const [backUrl, setBackUrl] = useState();\n const [pageInfo, setPageInfo] = usePageInfo();\n const { height: titleHeight, elementRef: titleElement } = useElementHeight();\n const { isMLCard } = useMLRecommendations();\n const styles = useStyles();\n const stylesClub = useStylesClub();\n const { getLocalItem } = useLocalStorage();\n const previousUrl = getLocalItem(PREVIOUSPAGE);\n const { previousPage } = usePageHistory();\n const { setContactFormDLValue } = useSetContactFormDLContext();\n\n useEffect(() => {\n if (!previousPage && !previousUrl) {\n return;\n }\n setBackUrl(\n previousPage\n ? previousPage\n : previousUrl\n ? previousUrl\n : '/recommendation'\n );\n }, [previousPage, previousUrl]);\n\n const previousPageName = providerPreviousPageName(previousUrl);\n // set page info only when we have the club name\n useEffect(() => {\n if (!clubDetails?.title) {\n return;\n }\n\n setPageInfo('club', clubDetails.title);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [clubDetails]);\n\n // set page info only when we have the club name\n useEffect(() => {\n if (!clubDetails || !pageInfo) {\n return;\n }\n const details = clubDetails;\n setContactFormDLValue(\n getPreferenceValue(\n pageInfo,\n preferences,\n details,\n 'club info',\n true,\n OnboardingContext.gender_group\n )\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [pageInfo, clubDetails]);\n\n // if we are loading and we already have the venue details and\n // at least one type of session then we are fetching\n // the other type of sessions\n const isRefreshingTeams =\n isTeamDetailsLoading && clubDetails && (filteredTeams || unfilteredTeams);\n\n // we are using useLayoutEffect here because we cannot rely on\n // setIsRefreshingDetails having run before we shift focus above\n // due to React async setting of state\n useLayoutEffect(() => {\n // if we're refreshing then shift focus to the loading message\n if (isRefreshingTeams) {\n loadingRef.current?.focus({ preventScroll: true });\n return;\n }\n // filtersApplied has changed\n // if both filtered and unfiltered data have been loaded\n // we can shift the focus to the list when the button is clicked\n if (filteredTeams && unfilteredTeams) {\n setTimeout(() => {\n listRef.current?.focus({ preventScroll: true });\n }, 300);\n }\n }, [filteredTeams, isFiltersApplied, isRefreshingTeams, unfilteredTeams]);\n\n // if there is no selected recommendations type or\n // the filters are removed show different title\n const title =\n selectedRecommendationType && isFiltersApplied\n ? JSON.parse(sessionStorage.getItem('ISVOLUNTEER')) === true\n ? `${selectedRecommendationType} Teams`\n : `${Age} year old ${selectedRecommendationType} Teams`\n : 'All teams at this club';\n\n // if there is no selected recommendations type or\n // the filters are removed don't show subtitle\n const subtitle =\n selectedRecommendationType && isFiltersApplied\n ? `${\n clubDetails?.totalteams\n } Teams that match my search playing on ${getWeekdays(WeekDays)}`\n : `${unfilteredTeams?.totalTeams} Teams at this club`;\n\n const clubTeams = isFiltersApplied ? filteredTeams : unfilteredTeams?.teams;\n\n return (\n
    \n
    \n {providerPageData && (\n \n )}\n
    \n \n
    \n {isTeamDetailsLoading && (\n \n )}\n {!isTeamDetailsLoading && (\n \n \n
    \n {(!!selectedRecommendationType || Category) && isDesktop && (\n \n {' '}\n Back to {previousPageName} view\n \n )}\n
    \n \n \n Score | 96%\n \n
    \n {clubDetails && (\n \n \n \n )}\n
    \n
    \n {isRefreshingTeams && (\n \n )}\n {clubTeams && (\n setIsFilters(!isFiltersApplied)}\n ref={listRef}\n cardAction={onTeamCardClick}\n clubname={clubDetails?.title}\n />\n )}\n
    \n
    \n {clubDetails && (\n \n )}\n
    \n \n
    \n )}\n {socialLinks && (\n \n )}\n
    \n \n
    \n );\n};\n\nClubDetailsPage.prototype = {\n onTeamCardClick: PropTypes.func,\n clubDetails: PropTypes.object,\n providerPageData: PropTypes.object,\n isTeamDetailsLoading: PropTypes.bool,\n filteredTeams: PropTypes.object,\n unfilteredTeams: PropTypes.object,\n isFiltersApplied: PropTypes.bool,\n setIsFilters: PropTypes.func,\n contactDetails: PropTypes.object,\n isDesktop: PropTypes.bool,\n socialLinks: PropTypes.object,\n onClick: PropTypes.func,\n sourceLocation: PropTypes.object,\n};\n\nexport default ClubDetailsPage;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const {\n breakpoints,\n borderRadius,\n colors,\n spacing,\n } = useTheme();\n\n return {\n base: (isDesktop) => css`\n height: 100%;\n display: grid;\n grid-template-rows: auto 1fr;\n grid-template-columns: 100%;\n `,\n wrapper: (titleHeight, hasPreferences) => css`\n margin-top: calc(100vh - 20%);\n ${hasPreferences && css`\n margin-top: calc(100vh - 236px);\n `}\n padding: ${spacing.s} 0;\n\n ${breakpoints.m} {\n margin-top: calc(100vh - 75px);\t\n padding: 0;\n }\n\n ${breakpoints.l} {\n margin: 0 auto;\n width: 90vw;\n max-width: 1196px;\n margin-top: calc(100vh - 75px);\n }\n `,\n score: css`\n max-width: 13.875rem;\n height: 48px;\n background-color: ${colors.lightGrey};\n border-radius: ${borderRadius.l};\n display: grid;\n grid-gap: 0.875rem;\n grid-template-columns: 1fr 1fr;\n align-items: center;\n padding: 0.9rem ${spacing.s} ${spacing.s};\n display: none;\n `,\n title: css`\n color: ${colors.navy};\n word-spacing: ${spacing.xs};\n\n span {\n font-weight: bold;\n }\n `,\n };\n};\n","import { useEffect } from \"react\";\n\nexport default () => {\n useEffect(() => {\n const previousValue = document.body.style.overflow || \"auto\";\n\n document.body.style.overflow = \"hidden\";\n\n return () => {\n document.body.style.overflow = previousValue;\n };\n }, []);\n};\n","/** @jsxImportSource @emotion/react */\nimport Text from '../Text';\nimport useStyles from './styles';\n\nconst CheckboxAnswer = ({\n children,\n isChecked,\n value,\n name,\n id,\n onChange,\n ...rest\n}) => {\n const styles = useStyles();\n\n return (\n \n );\n};\n\nexport default CheckboxAnswer;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { borderRadius, utility, colors } = useTheme();\n\n return {\n hiddenInputs: css`\n input {\n ${utility.checkboxHidden}\n }\n\n input:focus:not(:hover) ~ span {\n border: ${borderRadius.s} solid ${colors.navy};\n }\n `,\n container: css`\n display: block;\n position: relative;\n padding-left: 2.188rem;\n margin-bottom: 0.75rem;\n cursor: pointer;\n user-select: none;\n\n input {\n position: absolute;\n opacity: 0;\n cursor: pointer;\n height: 0;\n width: 0;\n &:checked {\n ~ span:after {\n display: block;\n }\n ~ p {\n color: ${colors.navy};\n }\n }\n }\n\n p {\n color: ${colors.darkGrey};\n }\n `,\n checkmark: isChecked => css`\n position: absolute;\n top: 0;\n left: 0;\n background-color: ${colors.white};\n width: 1.5rem;\n height: 1.5rem;\n border: 1.5px solid ${isChecked ? colors.navy : colors.darkGrey};\n border-radius: ${borderRadius.s};\n\n &:after {\n content: '';\n position: absolute;\n display: none;\n left: 0;\n right: 0;\n top: ${borderRadius.s};\n margin: auto;\n width: 0.313rem;\n height: 0.75rem;\n border: solid ${colors.navy};\n border-width: 0 ${borderRadius.s} ${borderRadius.s} 0;\n transform: rotate(45deg);\n }\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport PropTypes from 'prop-types';\nimport { useState } from 'react';\n\nimport useMediaQuery from '../../hooks/useMediaQuery';\nimport { Chevron } from '../Icons';\nimport useStyles from './styles';\n\nconst CustomSelectDropDown = ({\n id,\n optionsList,\n selectedOptionValue,\n dropDownData,\n}) => {\n const [isOptionsOpen, setIsOptionsOpen] = useState(false);\n const [selectedOption, setSelectedOption] = useState(0);\n const styles = useStyles();\n const isDesktop = useMediaQuery('screen and (min-width: 768px)');\n\n const toggleOptions = () => {\n setIsOptionsOpen(!isOptionsOpen);\n };\n\n const selectedValue = ({ index, data }) => {\n dropDownData(data);\n setSelectedOption(index);\n setIsOptionsOpen(!isOptionsOpen);\n };\n\n const handleListKeyDown = e => {\n switch (e.key) {\n case 'Escape':\n e.preventDefault();\n setIsOptionsOpen(false);\n break;\n case 'ArrowUp':\n e.preventDefault();\n setSelectedOption(\n selectedOption - 1 >= 0 ? selectedOption - 1 : optionsList.length - 1\n );\n break;\n case 'ArrowDown':\n e.preventDefault();\n setSelectedOption(\n selectedOption === optionsList.length - 1 ? 0 : selectedOption + 1\n );\n break;\n default:\n break;\n }\n };\n\n return (\n
    \n {isDesktop && (\n
    \n \n {optionsList[selectedOption].option}\n \n \n \n \n {isOptionsOpen && (\n \n {optionsList.map((data, index) => {\n return (\n selectedValue({ index, data: data.option })}\n >\n {data.option}\n \n );\n })}\n \n )}\n
    \n )}\n {!isDesktop && (\n
    \n {\n selectedValue({ data: e.target.value });\n selectedOptionValue(e.target.value);\n }}\n >\n {optionsList.map((data, index) => {\n return (\n {\n selectedValue({ index, data: data.option });\n }}\n >\n {data.option}\n \n );\n })}\n \n \n
    \n )}\n
    \n );\n};\n\nCustomSelectDropDown.propTypes = {\n id: PropTypes.string,\n optionsList: PropTypes.object,\n selectedOptionValue: PropTypes.func,\n dropDownData: PropTypes.func,\n};\n\nexport default CustomSelectDropDown;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\nimport publicPath from '../../utils/publicPath';\n\nexport default () => {\n const { colors, borderRadius } = useTheme();\n\n return {\n dropDownButton: css`\n border: 0;\n background-color: ${colors.white};\n color: ${colors.darkGrey};\n border-radius: ${borderRadius.m};\n width: 100%;\n padding: 10px 8px;\n justify-content: flex-start;\n text-align: left;\n\n &:hover,\n &:not(:disabled):hover {\n cursor: pointer;\n background-color: ${colors.white};\n color: ${colors.darkGrey};\n }\n `,\n arrow: isOptionsOpen => css`\n position: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n padding: 5px 10px;\n text-align: center;\n border-radius: 0 ${borderRadius.s} ${borderRadius.s} 0;\n background-color: ${colors.blue};\n display: grid;\n color: ${colors.white};\n align-items: center;\n svg {\n transform: rotate(${isOptionsOpen ? '270deg' : '90deg'});\n > g {\n fill: ${colors.blue};\n }\n }\n `,\n container: css`\n position: relative;\n ul {\n border: 1px solid ${colors.lightGrey};\n list-style: none;\n padding: ${borderRadius.m} 0;\n position: absolute;\n width: 100%;\n\n li {\n padding: 6px 10px;\n color: ${colors.darkGrey};\n cursor: pointer;\n font-size: 0.875rem;\n\n &:active,\n &:focus,\n &:hover,\n &[aria-selected='true'] {\n background: ${colors.blue};\n color: ${colors.white};\n }\n }\n }\n `,\n list: css`\n background-color: ${colors.white};\n `,\n optionstyle: css`\n padding: 6px 10px;\n color: #5b6885;\n cursor: pointer;\n font-size: 0.875rem;\n &:active,\n &:focus,\n &:hover,\n &[aria-selected='true'] {\n background: ${colors.blue};\n color: ${colors.white};\n }\n `,\n selectWrapper: css`\n position: relative;\n select {\n color: ${colors.darkGrey};\n width: 100%;\n\n // supports in IOS versions only\n @supports (-webkit-touch-callout: none) {\n height: 33px;\n color: ${colors.darkGrey};\n background-color: ${colors.white};\n }\n }\n `,\n holder: css`\n position: absolute;\n display: inline-block;\n right: 0;\n top: 0;\n width: 50px;\n height: 32px;\n background: url(${publicPath('/images/common/dropdown.jpg')}) no-repeat\n right center;\n pointer-events: none;\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport { useMsal } from '@azure/msal-react';\nimport PropTypes from 'prop-types';\nimport { Fragment, useEffect, useState } from 'react';\nimport ReCAPTCHA from 'react-google-recaptcha';\nimport { useForm } from 'react-hook-form';\n\nimport {\n AGE_QUESTION,\n CANCEL,\n CONFIRMAGE,\n CONFIRMSAFEGUARD,\n DESCRIPTION,\n EMAIL,\n EMPTY_STRING,\n FIRSTNAME,\n GOOGLECAPTCHA,\n LASTNAME,\n MESSAGE_TEXT,\n MESSAGE_VOLUNTEER_TEXT,\n ONBOARDING_PREFERENCES,\n QUERYISABOUT,\n QUERYISABOUT_OPTIONS,\n QUERYISABOUT_OPTIONS_VOLUNTEER,\n SUBMIT_BTN,\n} from '../../const';\nimport useLocalStorage from '../../hooks/useLocalStorage';\nimport CheckboxAnswer from '../CheckboxAnswer';\nimport CustomSelectDropDown from '../CustomSelectDropDown';\nimport Text from '../Text';\nimport useStyles from './styles';\n\nconst volunteer = JSON.parse(sessionStorage.getItem('ISVOLUNTEER'));\nconst getAgeText = value => {\n switch (value) {\n case 'Playing':\n return 'player';\n case 'Training':\n return 'player';\n case 'Coaching':\n return 'coach';\n case 'Volunteering':\n return 'volunteer';\n default:\n return JSON.parse(sessionStorage.getItem('ISVOLUNTEER')) === true\n ? 'volunteer'\n : 'player';\n }\n};\n\nconst getMessageText = value => {\n switch (value) {\n case 'Playing':\n return MESSAGE_TEXT;\n case 'Training':\n case 'Coaching':\n return MESSAGE_TEXT;\n case 'Volunteering':\n return MESSAGE_VOLUNTEER_TEXT;\n default:\n return JSON.parse(sessionStorage.getItem('ISVOLUNTEER')) === true\n ? MESSAGE_VOLUNTEER_TEXT\n : MESSAGE_TEXT;\n }\n};\n\nexport const contactFormOptions = {\n firstName: { required: 'Firstname is required', maxLength: 255 },\n lastName: { required: 'Lastname is required', maxLength: 255 },\n email: {\n required: 'Email is required',\n pattern: {\n value: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$/i,\n message: 'Please enter a valid email address',\n },\n maxLength: 255,\n },\n age: {\n required: 'Age is required',\n min: 5,\n max: 100,\n maxLength: {\n value: 2,\n },\n },\n volunteerAge: {\n required: 'Age is required',\n min: 14,\n max: 100,\n maxLength: {\n value: 2,\n },\n },\n description: { required: 'Message is required', maxLength: 500 },\n queryIsAbout: { required: true },\n};\n\nconst ContactForm = ({\n handleContact,\n onClick,\n isAlreadyFormSent,\n isDesktop,\n}) => {\n const styles = useStyles();\n const {\n register,\n handleSubmit,\n setValue,\n setFocus,\n getValues,\n formState: { errors, isValid },\n } = useForm({ mode: 'onChange' });\n const [isAbove16State, setIsAbove16State] = useState(false);\n const [ageError, setAgeError] = useState(false);\n const [isConfirmSafeGuard, setIsConfirmSafeGuard] = useState(false);\n const [prevIsQueryAbout, setPrevIsQueryAbout] = useState(null);\n const [reCaptchaValue, setReCaptchaValue] = useState(null);\n const [queryData, setQueryData] = useState(\n JSON.parse(sessionStorage.getItem('ISVOLUNTEER')) === true\n ? 'Volunteering'\n : ''\n );\n const [ageText, setAgeText] = useState(getAgeText());\n const [messageText, setMessageText] = useState(getMessageText());\n const { accounts } = useMsal();\n const { getLocalItem } = useLocalStorage();\n const preferencesObj = JSON.parse(getLocalItem(ONBOARDING_PREFERENCES)) || {};\n const { Age: playerAge } = preferencesObj;\n\n const selectedDropDownOption = data => {\n setQueryData(data);\n };\n\n useEffect(() => {\n setTimeout(() => {\n const checkvalue =\n queryData === 'Volunteering'\n ? errors?.age?.ref?.value < contactFormOptions?.volunteerAge?.min\n : errors?.age?.ref?.value < contactFormOptions?.age?.min;\n setAgeError(checkvalue);\n }, 100);\n }, [errors, errors?.age?.ref?.value, queryData]);\n\n useEffect(() => {\n // if user is logged in populate data in relevent fields\n if (accounts.length > 0) {\n const accountsClaims = accounts[0].idTokenClaims;\n if (accountsClaims) {\n setValue(FIRSTNAME, accountsClaims?.given_name);\n setValue(LASTNAME, accountsClaims?.family_name);\n setValue(EMAIL, accountsClaims?.signInName);\n }\n }\n\n // populate age from onboarding preference\n if (playerAge) {\n setValue(\n AGE_QUESTION,\n queryData === 'Volunteering' ? '' : parseInt(playerAge)\n );\n }\n\n setValue(\n QUERYISABOUT,\n JSON.parse(sessionStorage.getItem('ISVOLUNTEER')) === true\n ? QUERYISABOUT_OPTIONS_VOLUNTEER[0].option\n : QUERYISABOUT_OPTIONS[0].option\n );\n setPrevIsQueryAbout(\n JSON.parse(sessionStorage.getItem('ISVOLUNTEER')) === true\n ? QUERYISABOUT_OPTIONS_VOLUNTEER[0].option\n : QUERYISABOUT_OPTIONS[0].option\n );\n\n // set initial focus on firstname\n setFocus(FIRSTNAME);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [queryData]);\n\n const onRecaptchaChange = value => {\n setReCaptchaValue(value);\n };\n\n // dynamically change text of age of player field\n const selectQueryOption = value => {\n setValue(\n QUERYISABOUT,\n isDesktop\n ? volunteer === true\n ? QUERYISABOUT_OPTIONS_VOLUNTEER[value].option\n : QUERYISABOUT_OPTIONS[value].option\n : value\n );\n // const valueofvalue = getValues(QUERYISABOUT);\n // provide some time to execute setValue request\n setTimeout(() => {\n setAgeText(getAgeText(isDesktop ? queryData : value));\n setMessageText(getMessageText(isDesktop ? queryData : value));\n }, 300);\n };\n\n return (\n \n \n
    \n \n First name\n \n \n \n {errors?.firstName && errors.firstName.message}\n {errors?.firstName && errors.firstName.type === 'maxLength' && (\n
    Only 255 characters are allowed
    \n )}\n
    \n
    \n
    \n \n Last name\n \n \n \n {errors?.lastName && errors.lastName.message}\n {errors?.lastName && errors.lastName.type === 'maxLength' && (\n
    Only 255 characters are allowed
    \n )}\n
    \n
    \n
    \n \n Email\n \n \n \n {errors?.email && errors.email.message}\n {errors?.email && errors.email.type === 'maxLength' && (\n
    Only 255 characters are allowed
    \n )}\n
    \n
    \n
    \n \n \n
    \n
    \n \n Age of {ageText}\n \n {\n if (!/[0-9]/.test(event.key)) {\n event.preventDefault();\n }\n }}\n {...register(\n AGE_QUESTION,\n queryData === 'Volunteering'\n ? contactFormOptions.volunteerAge\n : contactFormOptions.age\n )}\n minLength=\"1\"\n maxLength=\"2\"\n >\n \n {errors?.age && !getValues(AGE_QUESTION) && errors.age.message}\n {errors?.age &&\n errors.age.type === 'min' &&\n ((queryData === 'Volunteering' &&\n errors?.age?.ref?.value < contactFormOptions?.volunteerAge.min) ||\n (queryData !== 'Volunteering' &&\n errors?.age?.ref?.value < contactFormOptions?.age?.min)) ? (\n
    \n {queryData === 'Volunteering'\n ? 'Please enter age 14+ years old'\n : 'Please enter age within 5-99'}\n
    \n ) : (\n ''\n )}\n
    \n
    \n
    \n \n Your message\n \n {messageText}\n \n \n {errors?.description && errors.description.message}\n {errors?.description && errors.description.type === 'maxLength' && (\n
    Only 500 characters are allowed
    \n )}\n
    \n
    \n
    \n setIsAbove16State(!isAbove16State)}\n tabIndex={-1}\n >\n I confirm I'm aged 16 or over and/or I am enquiring on behalf of my\n child\n \n
    \n
    \n Please note safeguards for all\n
      \n
    • \n Meetings should always take place at a venue the club regularly\n uses, during the relevant training hours and when other members\n are present\n
    • \n
    • \n 16/17-year-olds must inform their parent/carer of their intention\n to meet with a club\n
    • \n
    • Under-16s must be accompanied by their parent/carer
    • \n
    • \n {queryData === 'Volunteering'\n ? 'Initial meetings between club officials and prospective volunteers should include a minimum of 2 club officials'\n : 'Meetings should never be held at an individuals home'}\n
    • \n
    • \n {queryData === 'Volunteering'\n ? 'Under-18s must never be asked to meet a club official alone.'\n : 'Under-18s should never be asked to meet a club official alone'}\n
    • \n
    \n
    \n setIsConfirmSafeGuard(!isConfirmSafeGuard)}\n tabIndex={-1}\n >\n I confirm I have read and understand the safeguarding requirements\n above\n \n
    \n
    \n {isAlreadyFormSent && (\n \n )}\n
    \n
    \n
    \n \n Submit\n \n {\n onClick(\n prevIsQueryAbout !== getValues(QUERYISABOUT)\n ? getValues(QUERYISABOUT)\n : EMPTY_STRING\n );\n }}\n >\n Cancel\n \n
    \n \n
    \n );\n};\n\nContactForm.prototype = {\n handleContact: PropTypes.func,\n onClick: PropTypes.func,\n isAlreadyFormSent: PropTypes.bool,\n isDesktop: PropTypes.bool,\n};\n\nexport default ContactForm;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const {\n screenSizes,\n spacing,\n colors,\n utility,\n borderRadius,\n breakpoints,\n mediaQueries,\n } = useTheme();\n\n return {\n closeBtn: css`\n ${utility.buttonDefault};\n position: absolute;\n border-radius: 50%;\n top: ${spacing.s};\n right: ${spacing.s};\n width: 40px;\n height: 40px;\n outline: 0;\n\n svg {\n padding: 0.1rem;\n border: ${borderRadius.s} solid transparent;\n }\n\n &:focus {\n svg {\n padding: 0.1rem;\n border: ${borderRadius.s} solid ${colors.navy};\n border-radius: 50%;\n }\n }\n\n ${breakpoints.l} {\n right: auto;\n left: ${spacing.s};\n }\n\n ${mediaQueries.zoomedIn} {\n background: ${colors.white};\n z-index: 2;\n }\n `,\n question: css`\n @media (max-width: ${screenSizes.l}) {\n height: 100%;\n display: grid;\n align-items: center;\n position: relative;\n }\n\n ${mediaQueries.zoomedIn} {\n position: unset;\n overflow: auto;\n }\n `,\n backLink: css`\n display: flex;\n padding: 0.2rem;\n border-radius: ${borderRadius.m};\n align-items: center;\n position: absolute;\n bottom: ${spacing.s};\n left: ${spacing.m};\n color: ${colors.white};\n border: 1.5px solid transparent;\n text-decoration: none;\n outline: 0;\n\n &:focus:not(:hover) {\n padding: 0.2rem;\n border: 1.5px solid ${colors.navy};\n border-radius: ${borderRadius.m};\n text-decoration: underline;\n }\n\n svg {\n display: inline-block;\n width: 30px;\n height: 30px;\n margin-right: ${spacing.xs};\n }\n\n &:hover {\n outline: 0;\n text-decoration: underline;\n }\n\n ${breakpoints.l} {\n bottom: ${spacing.xl};\n left: 7rem;\n color: ${colors.navy};\n }\n\n ${mediaQueries.zoomedIn} {\n bottom: ${spacing.xs};\n color: ${colors.navy};\n z-index: 2;\n\n &:hover {\n color: ${colors.blue};\n outline: 0;\n }\n }\n `,\n formGroup: css`\n padding-bottom: ${spacing.s};\n\n input,\n textarea,\n select {\n border-radius: ${borderRadius.s};\n display: block;\n width: 100%;\n padding: 0.45rem 0.75rem;\n font-size: 0.875rem;\n line-height: 1.5;\n background-color: ${colors.white};\n resize: none;\n color: ${colors.darkGrey};\n margin-bottom: ${spacing.xs};\n }\n\n textarea,\n select {\n border: 1px solid transparent;\n }\n `,\n label: css`\n display: block;\n color: ${colors.navy};\n padding-bottom: ${spacing.xs};\n font-weight: 600;\n &::after {\n content: '*';\n color: ${colors.red};\n padding-left: ${borderRadius.s};\n }\n `,\n notes: css`\n color: ${colors.darkGrey};\n font-size: 0.875rem;\n line-height: 1.125rem;\n padding-bottom: ${spacing.xs};\n\n ${breakpoints.l} {\n font-size: 0.875rem;\n line-height: 1.125rem;\n }\n `,\n checkBoxText: css`\n span {\n width: 20px;\n height: 20px;\n border: ${borderRadius.s} solid transparent;\n\n &:after {\n top: 0;\n }\n }\n p {\n font-size: 0.875rem;\n line-height: 1.125rem;\n }\n ${breakpoints.l} {\n p {\n font-size: 0.875rem;\n line-height: 1.125rem;\n }\n }\n `,\n title: css`\n padding-bottom: ${spacing.s};\n color: ${colors.navy};\n `,\n ageGroup: css`\n width: 60%;\n\n ${breakpoints.l} {\n width: 35%;\n }\n `,\n btn: css`\n border-radius: ${borderRadius.s};\n padding: 14px 24px 14px 24px;\n border: ${borderRadius.s} solid transparent;\n margin-bottom: ${spacing.s};\n text-transform: uppercase;\n font-weight: normal;\n width: 100%;\n cursor: pointer;\n\n &:disabled {\n background-color: ${colors.greyShade1};\n color: ${colors.white};\n }\n `,\n submitBtn: css`\n background-color: ${colors.red};\n color: ${colors.white};\n `,\n cancelBtn: css`\n background-color: transparent;\n color: ${colors.navy};\n border: ${borderRadius.s} solid ${colors.navy};\n `,\n notesSafeguard: css`\n h6 {\n font-weight: bold;\n padding: ${spacing.s} 0 ${spacing.xs};\n color: ${colors.navy};\n }\n ul {\n list-style: disc;\n padding-left: ${spacing.s};\n\n li {\n color: ${colors.darkGrey};\n padding-bottom: ${spacing.xs};\n font-size: 0.875rem;\n line-height: 1.125rem;\n }\n }\n `,\n buttonWrapper: css`\n margin-top: ${spacing.s};\n `,\n confirmCheck: css`\n margin-top: ${spacing.xs};\n `,\n textDanger: css`\n padding-top: ${spacing.xs};\n color: ${colors.red};\n font-size: ${spacing.s};\n `,\n danger: css`\n border: 1px solid ${colors.red};\n\n &:focus,\n &:focus-visible {\n border: 1px solid ${colors.red};\n outline: 0;\n }\n `,\n labelDanger: css`\n color: ${colors.boldRed};\n `,\n inputField: css`\n border: 1px solid transparent;\n `,\n recaptchaContainer: css`\n transform: scale(0.95);\n transform-origin: 0 0;\n `,\n form: css`\n margin: 0.3rem;\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport PropTypes from 'prop-types';\n\n/** @jsxImportSource @emotion/react */\nimport { contactFormModalAnalytics } from '../../analyticsConsts';\nimport { HERE_LINK } from '../../const';\nimport ExternalLink from '../ExternalLink';\nimport { CircelTickIcon } from '../Icons';\nimport LinkButton from '../LinkButton';\nimport Text from '../Text';\nimport useStyles from './styles';\n\nconst { CONTACT_FROM_MESSAGE_CONFIRMATION } = contactFormModalAnalytics;\n\nconst ContactSuccess = ({ onClick }) => {\n const styles = useStyles();\n\n return (\n
    \n \n \n \n Message sent\n \n \n Close\n {' '}\n contact panel\n \n \n
    \n
    \n \n What happens next\n \n
      \n
    • \n You should receive a reply from a club email address, not a personal\n email address\n
    • \n
    • \n Clubs are asked to ensure their invitation is to a venue the club\n regularly uses, during the relevant training hours and when other\n members are present\n
    • \n
    • \n You should be given the name and role of the person who is going to\n meet you and details of who else will be present, e.g. club\n committee members\n
    • \n
    • \n Clubs should always communicate through the parent/carer contact\n details for under-16s and should not ask for a child's mobile number\n or social media accounts\n
    • \n
    • \n Clubs are required to follow their safeguarding children policy and\n procedures at all times\n
    • \n
    • \n If you have a concern about the behaviour of a club/an individual\n connected to the club, you can report it to your local County FA\n (find County FA contact details{' '}\n \n here\n \n )\n
    • \n
    \n
    \n \n );\n};\n\nContactSuccess.prototype = {\n onClick: PropTypes.func,\n};\n\nexport default ContactSuccess;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { breakpoints, typography, colors, spacing } = useTheme();\n\n return {\n base: css`\n ${breakpoints.l} {\n text-align: center;\n margin: auto;\n }\n `,\n confirmationHeader: css`\n display: grid;\n grid-template-columns: 65px auto;\n align-items: center;\n button {\n display: inline-block;\n color: ${colors.darkGrey};\n }\n svg {\n color: ${colors.red};\n }\n\n ${breakpoints.l} {\n display: block;\n }\n `,\n title: css`\n margin-bottom: ${spacing.xs};\n display: inine-block;\n ${typography.headings[7].desktop};\n line-height: 1.625rem;\n font-weight: 700;\n color: ${colors.navy};\n padding: 1.5rem ${spacing.s} ${spacing.s} ${spacing.s};\n\n ${breakpoints.l} {\n ${typography.headings[7].desktop};\n line-height: 1.625rem;\n font-weight: 700;\n margin-top: ${spacing.xs};\n padding: ${spacing.xs};\n }\n `,\n smallTitle: css`\n border-top: 1px solid ${colors.white};\n padding: ${spacing.m} 0 ${spacing.xs} 0;\n ${typography.headings[7].desktop};\n `,\n subTitle: css`\n color: ${colors.darkGrey};\n padding: ${spacing.xs} 0 0 0;\n `,\n link: css`\n padding: 0 0 0.2rem 0;\n font-weight: normal;\n color: ${colors.darkGrey};\n letter-spacing: normal;\n `,\n linkHere: css`\n display: inline-block;\n font-weight: 700;\n `,\n instructions: css`\n ul {\n list-style: disc;\n padding-left: ${spacing.s};\n text-align: left;\n\n li {\n color: ${colors.darkGrey};\n padding-bottom: ${spacing.xs};\n ${typography.desktop};\n }\n }\n `,\n };\n};\n","import { useEffect } from \"react\";\n\nexport default (key, handler) => {\n useEffect(() => {\n const listener = (event) => {\n if (event.key === key) {\n handler(event);\n }\n };\n\n document.addEventListener(\"keydown\", listener);\n\n return () => {\n document.removeEventListener(\"keydown\", listener);\n };\n }, [handler, key]);\n};\n","/** @jsxRuntime classic */\n/** @jsx jsx */\nimport { jsx } from '@emotion/react';\nimport { Suspense, useEffect, useRef } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport useKeyDown from '../../hooks/useKeyDown';\nimport useModalOverflow from '../../hooks/useModalOverflow';\nimport Loader from '../Loader';\nimport useStyles from './styles';\n\nconst Modal = ({ onClose, isOpen, skipInitialFocus, children }) => {\n const styles = useStyles();\n const modalRef = useRef(null);\n const overlayRef = useRef(null);\n\n useModalOverflow();\n\n useEffect(() => {\n if (!skipInitialFocus) {\n modalRef.current.focus();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const handleTabKey = event => {\n const focusableElements = modalRef?.current?.querySelectorAll('input, button');\n\n const firstElement = focusableElements && focusableElements[0];\n const lastElement =\n focusableElements && focusableElements[focusableElements.length - 1];\n\n if (!event.shiftKey) {\n if (focusableElements[focusableElements.length - 1] === event.target) {\n event.preventDefault();\n firstElement.focus();\n }\n }\n /*redirect first shift+tab to last input*/\n else {\n if (focusableElements[0] === event.target) {\n event.preventDefault();\n lastElement.focus();\n }\n else{\n \n }\n }\n };\n\n useKeyDown('Escape', onClose);\n useKeyDown('Tab', handleTabKey);\n\n const modalRoot = document.getElementById('modal-root');\n\n return modalRoot\n ? createPortal(\n \n
    \n }>{children}\n
    \n ,\n modalRoot\n )\n : null;\n};\n\nexport default Modal;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { utility } = useTheme();\n\n return {\n overlay: css`\n ${utility.overlay};\n `,\n loader: css`\n outline: 0;\n `,\n };\n};\n","import { EVENT_ID } from '../../const';\n\nconst NOTIFICATION = {\n CLUB_CONTACT: 'Find Football Club Contact',\n WELFARE_OFFICER: 'Find Football Welfare Officer',\n PLAYER_PARENT: 'Find Football Player Parent',\n};\n\nexport const getRequestPayload = (\n WgsClubID,\n data,\n isYouth,\n isPlayerParent,\n title\n) => {\n if (isPlayerParent) {\n return {\n WgsClubId: WgsClubID,\n EventId: EVENT_ID.PLAYER_PARENT, // player parent event id\n NotificationType: NOTIFICATION.PLAYER_PARENT,\n EmailId: data.email,\n EmailSubjectData: {\n Firstname: data.firstName,\n ClubName: title,\n Subject: `Thanks for getting in touch about ${title} through Find Football.`,\n },\n };\n }\n return {\n WgsClubId: WgsClubID,\n EventId: isYouth ? EVENT_ID.CLUB_CONTACT : EVENT_ID.WELFARE_OFFICER,\n NotificationType: isYouth\n ? NOTIFICATION.CLUB_CONTACT\n : NOTIFICATION.WELFARE_OFFICER,\n EmailId: null,\n EmailSubjectData: {\n QueryFrom: `${data.firstName} ${data.lastName}`,\n Email: data.email,\n QueryIsAbout: data.queryIsAbout,\n PlayerAge: data.age,\n Subject: isYouth\n ? `${data.firstName} has messaged you through Find Football about ${title}`\n : `${title} has received an message through Find Football regarding a youth player`,\n QueryDescription: data.description,\n },\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport PropTypes from 'prop-types';\nimport { Fragment, useEffect, useLayoutEffect, useRef, useState } from 'react';\n\nimport { contactFormModalAnalytics } from '../../analyticsConsts';\nimport { EMPTY_STRING, HYPHEN, YOUTH_AGE } from '../../const';\nimport { useSetContactFormDLContext } from '../../context/setContactFormDL';\nimport useLocalStorage from '../../hooks/useLocalStorage';\nimport useMediaQuery from '../../hooks/useMediaQuery';\nimport useModalOverflow from '../../hooks/useModalOverflow';\nimport { submitContactForm } from '../../services';\nimport contactFormDataLayer from '../../utils/contactFormDataLayer';\nimport ContactForm from '../ContactForm';\nimport ContactSuccess from '../ContactSuccess';\nimport { CircleClose } from '../Icons';\nimport Loader from '../Loader';\nimport Modal from '../Modal';\nimport Text from '../Text';\nimport { getRequestPayload } from './contactRequestPayload';\nimport useStyles from './styles';\n\nconst { CONTACT_FORM_CTA_EXIT, CONTACT_FORM_TITLE } = contactFormModalAnalytics;\nconst CONTACT_FORM_DATA = 'contact_form_data';\n\nconst ContactFormModal = ({\n onClose,\n isVisible,\n clubDetails,\n isClub,\n selectedTeamData,\n}) => {\n const styles = useStyles();\n const [isContactSuccess, setIsContactSuccess] = useState(false);\n const [isAlreadyFormSent, setIsAlreadyFormSent] = useState(false);\n const [isSaving, setIsSaving] = useState(false);\n const isDesktop = useMediaQuery('screen and (min-width: 992px)');\n const { getLocalItem, setLocalItem } = useLocalStorage();\n const { title, clubid: clubId, accreditationid: WgsClubID } = clubDetails;\n const { contactFormDL } = useSetContactFormDLContext();\n const [queryAbtValue, setQueryAbtValue] = useState('');\n\n const loader = useRef();\n\n useModalOverflow();\n\n // to check whether the form has been already submitted or not\n useEffect(() => {\n const accessedClubs = JSON.parse(getLocalItem(CONTACT_FORM_DATA)) || [];\n setIsAlreadyFormSent(accessedClubs.includes(clubId));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // once mail sent to recipient, save it in session storage to\n // enable captcha section in the form(when user try to submit the form second time)\n const SaveDataToLocalStorage = data => {\n let accessedClubs = [];\n accessedClubs = JSON.parse(getLocalItem(CONTACT_FORM_DATA)) || [];\n if (!accessedClubs.includes(data)) {\n accessedClubs.push(data);\n setLocalItem(CONTACT_FORM_DATA, JSON.stringify(accessedClubs));\n }\n };\n\n // contact form submit\n const handleContact = data => {\n setContactFormDataLayer(\n data?.queryIsAbout,\n 'CTA - SUBMIT',\n data?.age,\n 'cta_primary_click',\n 'submit'\n );\n setIsSaving(true);\n const isYouth = parseInt(data.age) > YOUTH_AGE;\n const requestPayload = getRequestPayload(\n WgsClubID,\n data,\n isYouth,\n false,\n title\n );\n const playerParentPayload = getRequestPayload(\n WgsClubID,\n data,\n isYouth,\n true,\n title\n );\n\n setQueryAbtValue(data?.queryIsAbout);\n\n Promise.all([\n submitContactForm(playerParentPayload),\n submitContactForm(requestPayload),\n ])\n .then(response => {\n if (response) {\n setIsContactSuccess(true);\n SaveDataToLocalStorage(clubId);\n setContactFormDataLayer(\n data?.queryIsAbout,\n `${\n isYouth ? 'Email sent to club' : 'Email sent to welfare officer'\n }`,\n data.age,\n 'generate_lead',\n EMPTY_STRING,\n `${\n isYouth ? 'Email sent to club' : 'Email sent to welfare officer'\n }`\n );\n }\n setIsSaving(false);\n })\n .catch(() => {\n setIsSaving(false);\n });\n };\n\n const setContactFormDataLayer = (\n queryValue,\n text,\n age,\n eventText,\n linkText,\n submitText\n ) => {\n contactFormDataLayer({\n ...contactFormDL,\n eventLabel: `FF Club Contact Form ${HYPHEN + text}`,\n eventparameter2: `${selectedTeamData?.TeamName}`,\n eventparameter3: queryValue,\n eventparameter4: age ? age : contactFormDL?.eventparameter4,\n eventparameter5: contactFormDL?.eventparameter5,\n item_list_name: isClub ? 'club info' : 'team info',\n event_name: eventText,\n category_type: queryValue,\n link_text: linkText,\n submission_status: submitText,\n });\n };\n // when we save we want to send the focus to the loader\n // so that it is announced to screen readers\n useLayoutEffect(() => {\n if (isSaving) {\n loader.current?.focus({ preventScroll: true });\n }\n }, [isSaving, loader]);\n\n return (\n \n
    \n
    \n \n {isSaving ? (\n \n ) : (\n \n {\n onClose();\n !isContactSuccess &&\n setContactFormDataLayer(\n queryAbtValue,\n 'CTA - CLOSE',\n contactFormDL?.eventparameter4,\n 'close_button_click'\n );\n }}\n >\n {}\n \n {isContactSuccess && (\n {\n onClose();\n }}\n isDesktop={isDesktop}\n />\n )}\n {!isContactSuccess && (\n \n \n Your message to {title}\n \n
    \n {\n onClose();\n setContactFormDataLayer(\n queryValue,\n 'CTA - CANCEL',\n contactFormDL?.eventparameter4,\n 'cta_secondary_click',\n 'cancel'\n );\n setQueryAbtValue(queryValue);\n }}\n isAlreadyFormSent={isAlreadyFormSent}\n isDesktop={isDesktop}\n />\n
    \n
    \n
    \n )}\n
    \n )}\n
    \n
    \n
    \n
    \n );\n};\n\nContactFormModal.proptype = {\n onClose: PropTypes.func,\n isVisible: PropTypes.bool,\n clubDetails: PropTypes.object,\n isClub: PropTypes.bool,\n selectedTeamData: PropTypes.object,\n};\n\nexport default ContactFormModal;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { spacing, colors, utility, borderRadius, breakpoints, mediaQueries } =\n useTheme();\n\n return {\n modalSize: css`\n width: 686px;\n margin: 0 auto;\n `,\n base: css`\n display: grid;\n align-items: flex-start;\n position: absolute;\n z-index: 11;\n width: 100%;\n max-width: 375px;\n height: 100%;\n transition: transform 0.5s ease-out;\n background-color: ${colors.lightGrey};\n padding: ${spacing.s} 1.7rem;\n border-radius: ${borderRadius.xxl} ${borderRadius.xxl} 0 0;\n bottom: 0;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n\n ${breakpoints.m} {\n max-width: 686px;\n align-items: center;\n justify-content: center;\n height: 90%;\n padding: ${spacing.m} ${spacing.m} ${spacing.m} 3.5rem;\n background-color: ${colors.lightGrey};\n border-radius: ${borderRadius.xxl};\n }\n\n ${mediaQueries.zoomedIn} {\n background-position: 0 250%;\n }\n `,\n overlay: css`\n ${utility.overlay};\n `,\n closeBtn: css`\n ${utility.buttonDefault};\n position: absolute;\n border-radius: 50%;\n top: ${spacing.s};\n right: ${spacing.s};\n width: 40px;\n height: 40px;\n outline: 0;\n\n svg {\n padding: 0.1rem;\n border: ${borderRadius.s} solid transparent;\n }\n\n &:focus {\n svg {\n padding: 0.1rem;\n border: ${borderRadius.s} solid ${colors.navy};\n border-radius: 50%;\n }\n }\n\n ${breakpoints.l} {\n right: ${spacing.s};\n }\n\n ${mediaQueries.zoomedIn} {\n background: ${colors.white};\n z-index: 2;\n }\n `,\n question: css`\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n height: 100%;\n padding-right: ${spacing.s};\n margin-top: ${spacing.s};\n\n ${breakpoints.l} {\n padding-right: ${spacing.m};\n }\n `,\n backLink: css`\n display: flex;\n padding: 0.2rem;\n border-radius: ${borderRadius.m};\n align-items: center;\n position: absolute;\n bottom: ${spacing.s};\n left: ${spacing.m};\n color: ${colors.white};\n border: 1.5px solid transparent;\n text-decoration: none;\n outline: 0;\n\n &:focus:not(:hover) {\n padding: 0.2rem;\n border: 1.5px solid ${colors.navy};\n border-radius: ${borderRadius.m};\n text-decoration: underline;\n }\n\n svg {\n display: inline-block;\n width: 30px;\n height: 30px;\n margin-right: ${spacing.xs};\n }\n\n &:hover {\n outline: 0;\n text-decoration: underline;\n }\n\n ${breakpoints.l} {\n bottom: ${spacing.xl};\n left: 7rem;\n color: ${colors.navy};\n }\n\n ${mediaQueries.zoomedIn} {\n bottom: ${spacing.xs};\n color: ${colors.navy};\n z-index: 2;\n\n &:hover {\n color: ${colors.blue};\n outline: 0;\n }\n }\n `,\n // When the button would go over the content (ie zoom)\n // we want a white background for the button\n fakeButtonOverlay: css`\n display: none;\n\n ${mediaQueries.zoomedIn} {\n display: block;\n position: absolute;\n bottom: ${spacing.xs};\n left: ${spacing.m};\n right: ${spacing.m};\n bottom: ${spacing.xs};\n height: 1.875rem;\n background: white;\n z-index: 1;\n }\n `,\n title: css`\n margin-top: 0.5rem;\n width: 94%;\n max-width: 94%;\n margin-left: 5px;\n color: ${colors.navy};\n\n ${breakpoints.m} {\n margin-top: 0;\n width: 100%;\n }\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport { useEffect, useLayoutEffect, useRef, useState } from 'react';\nimport { useHistory } from 'react-router';\nimport { useParams } from 'react-router-dom';\n\nimport { SELECTED_RECOMMENDATIONS_TYPE_ID } from '../../const';\nimport { useMLRecommendations } from '../../context/mlRecommendations';\nimport { usePreferencesContext } from '../../context/preferences';\nimport { useSetSelectedClubDetailsContext } from '../../context/setSelectedClubDetails';\nimport useClubAccreditation from '../../hooks/useClubAccreditation';\nimport useClubContactDetails from '../../hooks/useClubContactDetails';\nimport useClubVenueCoordination from '../../hooks/useClubVenueCoordination';\nimport useErrorBoundary from '../../hooks/useErrorBoundary';\nimport useMediaQuery from '../../hooks/useMediaQuery';\nimport {\n getClubDetails,\n getClubPageData,\n getSocialMediaData,\n} from '../../services';\nimport normaliseClubDetails from '../../utils/normaliseClubDetails';\nimport ClubDetailsPage from '../ClubDetailsPage';\nimport ContactFormModal from '../ContactFormModal';\nimport Footer from '../Footer';\nimport Loader from '../Loader';\nimport defaultPreferences from '../VenuePage/defaultPreferences';\nimport useStyles from './styles';\n\nconst ClubPage = () => {\n const { id } = useParams();\n const throwError = useErrorBoundary();\n const [providerPageData, setProviderPageData] = useState();\n const [selectedTeamData, setSelectedTeamData] = useState();\n const [isLoadingPageData, setIsLoadingPageData] = useState(true);\n const [socialLinks, setSocialLinks] = useState();\n const isDesktop = useMediaQuery('screen and (min-width: 768px)');\n const { preferences } = usePreferencesContext();\n const { [SELECTED_RECOMMENDATIONS_TYPE_ID]: selectedRecommendationType } =\n preferences || {};\n const [clubDetails, setClubDetails] = useState();\n const [filteredTeams, setFilteredTeams] = useState();\n const [unfilteredTeams, setUnfilteredTeams] = useState();\n const [isOpen, setIsOpen] = useState(false);\n // when we get the club details we want to fetch the accreditation and contact details\n const accreditation = useClubAccreditation(clubDetails?.accreditationid);\n const contactDetails = useClubContactDetails(clubDetails?.accreditationid);\n const [isFiltersApplied, setIsFiltersApplied] = useState(\n // if we have a selected recommendation type then we'll use the preferences\n // when getting the provider details, otherwise we show all sessions\n !!selectedRecommendationType || !!preferences?.Category\n );\n const [isTeamDetailsLoading, setIsTeamDetailsLoading] = useState(false);\n const loadingRef = useRef();\n const listRef = useRef();\n const { isMLCard } = useMLRecommendations();\n const { setSelectedClubDetailsValue } = useSetSelectedClubDetailsContext();\n const styles = useStyles();\n const [contactFormVisible, setContactFormVisible] = useState(false);\n const sourceLocation = useClubVenueCoordination(\n selectedRecommendationType,\n preferences\n );\n const history = useHistory();\n\n useEffect(() => {\n getClubPageData()\n .then(({ data }) => {\n const clubPageDetails = data;\n const crypto = window.crypto;\n const randomNumber =\n Math.round(crypto.getRandomValues(new Uint8Array(10))[0] / 51) + 1;\n clubPageDetails.hero.images.desktop.src = `/images/desktop/club/hero/${randomNumber}.jpg`;\n clubPageDetails.hero.images.mobile.src = `/images/mobile/club/hero/${randomNumber}.jpg`;\n setProviderPageData(clubPageDetails);\n setIsLoadingPageData(false);\n })\n .catch(throwError);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // set path information\n useEffect(() => {\n localStorage.setItem('pathInfomation', window.location.pathname);\n }, []);\n\n useEffect(() => {\n // if we have already collected data for both states\n // or we are already loading the data\n // skip the fetching\n if (\n (isFiltersApplied && filteredTeams) ||\n (!isFiltersApplied && unfilteredTeams) ||\n isTeamDetailsLoading\n ) {\n return;\n }\n\n setIsTeamDetailsLoading(true);\n\n // we send the preferences only if we want the filters applied\n // otherwise we pass an empty object\n getClubDetails(\n id,\n (isMLCard && isFiltersApplied) || isFiltersApplied\n ? { ...defaultPreferences, ...preferences }\n : defaultPreferences\n )\n .then(({ data }) => {\n if (data) {\n const { teams, ...normalisedDetails } = normaliseClubDetails(data);\n // update the details only if we don't already have them\n // they don't change with filters\n if (!clubDetails) {\n setClubDetails(normalisedDetails);\n }\n\n if (isFiltersApplied) {\n setFilteredTeams(teams);\n setIsTeamDetailsLoading(false);\n return;\n }\n\n setUnfilteredTeams({\n ...{ teams: teams },\n totalTeams: normalisedDetails?.totalteams,\n });\n setIsTeamDetailsLoading(false);\n }\n })\n .catch(throwError);\n }, [\n filteredTeams,\n id,\n isMLCard,\n isFiltersApplied,\n unfilteredTeams,\n clubDetails,\n isTeamDetailsLoading,\n preferences,\n throwError,\n ]);\n\n useEffect(() => {\n if (!clubDetails?.accreditationid) {\n return;\n }\n getSocialMediaData(clubDetails?.accreditationid)\n .then(({ data }) => {\n if (data) {\n setSocialLinks(data);\n }\n })\n .catch(() => {});\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [clubDetails]);\n\n // if we are loading and we already have the venue details and\n // at least one type of session then we are fetching\n // the other type of sessions\n const isRefreshingTeams =\n isTeamDetailsLoading && clubDetails && (filteredTeams || unfilteredTeams);\n\n // we are using useLayoutEffect here because we cannot rely on\n // setIsRefreshingDetails having run before we shift focus above\n // due to React async setting of state\n useLayoutEffect(() => {\n // if we're refreshing then shift focus to the loading message\n if (isRefreshingTeams) {\n loadingRef.current?.focus({ preventScroll: true });\n return;\n }\n // filtersApplied has changed\n // if both filtered and unfiltered data have been loaded\n // we can shift the focus to the list when the button is clicked\n if (filteredTeams && unfilteredTeams) {\n setTimeout(() => {\n listRef.current?.focus({ preventScroll: true });\n }, 300);\n }\n }, [filteredTeams, isFiltersApplied, isRefreshingTeams, unfilteredTeams]);\n\n const onTeamCardClick = selectedClub => {\n setSelectedClubDetailsValue({\n ...clubDetails,\n selectedTeamDetails: selectedClub,\n });\n setIsOpen(true);\n history.push(`/team/${selectedClub.TeamId}`);\n setSelectedTeamData(selectedClub);\n };\n\n if (isLoadingPageData) {\n return ;\n }\n\n return (\n
    \n setIsFiltersApplied(isFilteredApply)}\n accreditation={accreditation}\n contactDetails={contactDetails}\n isDesktop={isDesktop}\n socialLinks={socialLinks}\n sourceLocation={sourceLocation}\n onClick={() => setContactFormVisible(true)}\n />\n {contactFormVisible && (\n {\n setContactFormVisible(false);\n }}\n isVisible={contactFormVisible}\n clubDetails={clubDetails}\n isClub={!isOpen}\n selectedTeamData={selectedTeamData}\n />\n )}\n
    \n
    \n );\n};\n\nexport default ClubPage;\n","/** @jsxImportSource @emotion/react */\n\nimport Button from '../Button';\nimport useStyles from './styles';\n\n// this allows us to get the previous or next\n// sibling for our current target and shift focus\nconst handleKeyboardNavigation = event => {\n if (event.key !== 'ArrowRight' && event.key !== 'ArrowLeft') {\n return;\n }\n\n const elementToFocus =\n event.key === 'ArrowRight'\n ? event.target?.nextSibling\n : event.target?.previousSibling;\n\n if (!elementToFocus) {\n return;\n }\n\n // focus on the other button\n elementToFocus.focus();\n // simulate a click to switch between tabs\n elementToFocus.click();\n};\n\n// This component should be used along the TabPanel component,\n// it uses the same pattern for `id` and `aria-controls`\nconst Tabs = ({ onClick, selectedType, ariaLabel, tabs, ...rest }) => {\n const styles = useStyles();\n\n return (\n
    \n
    \n {tabs.map(tab => {\n const isSelected = selectedType === tab.id;\n\n return (\n onClick(tab.id)}\n onKeyUp={handleKeyboardNavigation}\n role=\"tab\"\n aria-selected={isSelected}\n id={`tab-${tab.id}`}\n aria-controls={`tabpanel-${tab.id}`}\n tabIndex={isSelected ? 0 : -1}\n >\n {tab.label}\n \n );\n })}\n
    \n
    \n );\n};\n\nexport default Tabs;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { breakpoints, borderRadius, colors, spacing, typography, mediaQueries } = useTheme();\n\n return {\n base: css`\n background-color: ${colors.white};\n border-radius: ${borderRadius.l};\n `,\n tabs: css`\n display: grid;\n grid-template-columns: 1fr 1fr;\n border: ${borderRadius.s} solid ${colors.blue};\n `,\n tab: isSelected => css`\n ${typography.headings[6].mobile};\n color: ${colors.blue};\n padding: 0.8125rem;\n letter-spacing: 0.01rem;\n font-size: 0.875rem;\n font-weight: 400;\n text-transform: uppercase;\n border: ${borderRadius.s} solid transparent;\n outline: 0;\n\n &:focus-visible {\n border: ${borderRadius.s} solid ${colors.navy};\n background-color: ${colors.white};\n border-radius: 0;\n }\n\n ${mediaQueries.safariBrowser} { \n @supports (-webkit-appearance:none) {\n &:focus {\n border: ${borderRadius.s} solid ${colors.navy};\n background-color: ${colors.white};\n border-radius: 0;\n }\n }\n }\n\n &:not(:disabled):hover {\n border-radius: 0;\n }\n\n ${isSelected &&\n css`\n color: ${colors.white};\n border-radius: 0;\n background-color: ${colors.blue};\n \n &:not(:hover):focus-visible {\n color: ${colors.navy};\n text-decoration: underline;\n }\n\n // for safari browser\n ${mediaQueries.safariBrowser} { \n @supports (-webkit-appearance:none) {\n &:not(:hover):focus {\n color: ${colors.navy};\n text-decoration: underline;\n }\n }\n }\n `};\n\n ${breakpoints.xl} {\n padding: ${spacing.s};\n border: ${borderRadius.s} solid transparent;\n }\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport { Fragment, useEffect, useLayoutEffect, useRef, useState } from 'react';\nimport { useParams } from 'react-router-dom';\n\nimport { clubDetailsPageAnalytics } from '../../analyticsConsts';\nimport {\n CLUB,\n SELECTED_RECOMMENDATIONS_TYPE_ID,\n SESSION,\n VENUE\n} from '../../const';\nimport { useMLRecommendations } from '../../context/mlRecommendations';\nimport { usePageInfo } from '../../context/pageInfo';\nimport { usePreferencesContext } from '../../context/preferences';\nimport useClubAccreditation from '../../hooks/useClubAccreditation';\nimport useClubContactDetails from '../../hooks/useClubContactDetails';\nimport useElementHeight from '../../hooks/useElementHeight';\nimport useErrorBoundary from '../../hooks/useErrorBoundary';\nimport { getClubDetails, getClubPageData } from '../../services';\nimport normaliseClubDetails from '../../utils/normaliseClubDetails';\nimport ClubDetails from '../ClubDetails';\nimport Footer from '../Footer';\nimport HeroProvider from '../HeroProvider';\nimport Loader from '../Loader';\nimport TabPanel from '../TabPanel';\nimport Tabs from '../Tabs';\nimport VenueClubList from '../VenueClubList';\nimport { getWeekdays } from '../VenuePage';\nimport defaultPreferences from '../VenuePage/defaultPreferences';\nimport useStyles from './styles';\n\n\nconst { CLUB_NAME_HEADING, CLUB_TEAM_TITLE, CLUB_DETAILS_WRAPPER } =\n clubDetailsPageAnalytics;\n\nconst tabs = [\n {\n id: SESSION,\n label: 'TEAMS',\n },\n {\n id: VENUE,\n label: 'CLUB INFORMATION',\n },\n];\n\nconst ClubPageRef = () => {\n const { id } = useParams();\n const throwError = useErrorBoundary();\n const [providerPageData, setProviderPageData] = useState();\n const [isLoadingPageData, setIsLoadingPageData] = useState(true);\n const { preferences } = usePreferencesContext();\n const {\n [SELECTED_RECOMMENDATIONS_TYPE_ID]: selectedRecommendationType,\n Age,\n WeekDays,\n } = preferences || {};\n const [clubDetails, setClubDetails] = useState();\n const [filteredTeams, setFilteredTeams] = useState();\n const [unfilteredTeams, setUnfilteredTeams] = useState();\n // when we get the club details we want to fetch the accreditation and contact details\n const accreditation = useClubAccreditation(clubDetails?.accreditationid);\n const contactDetails = useClubContactDetails(clubDetails?.accreditationid);\n const [isFiltersApplied, setIsFiltersApplied] = useState(\n // if we have a selected recommendation type then we'll use the preferences\n // when getting the provider details, otherwise we show all sessions\n !!selectedRecommendationType\n );\n const [isLoading, setIsLoading] = useState(false);\n const [selectedType, setSelectedType] = useState(SESSION);\n const loadingRef = useRef();\n const listRef = useRef();\n const { height: titleHeight, elementRef: titleElement } = useElementHeight();\n const { isMLCard } = useMLRecommendations();\n const styles = useStyles();\n\n const [, setPageInfo] = usePageInfo();\n // set page info only when we have the venue name\n useEffect(() => {\n if (!clubDetails?.title) {\n return;\n }\n\n setPageInfo('club', clubDetails.title);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [clubDetails]);\n\n useEffect(() => {\n getClubPageData()\n .then(({ data }) => {\n setProviderPageData(data);\n setIsLoadingPageData(false);\n })\n .catch(throwError);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // set path information\n useEffect(() => {\n localStorage.setItem('pathInfomation', window.location.pathname);\n }, []);\n\n\n useEffect(() => {\n // if we have already collected data for both states\n // or we are already loading the data\n // skip the fetching\n if (\n (isFiltersApplied && filteredTeams) ||\n (!isFiltersApplied && unfilteredTeams) ||\n isLoading\n ) {\n return;\n }\n\n setIsLoading(true);\n\n // we send the preferences only if we want the filters applied\n // otherwise we pass an empty object\n getClubDetails(\n id,\n // use default preference if ML card selected\n isMLCard\n ? defaultPreferences\n : isFiltersApplied\n ? { ...defaultPreferences, ...preferences }\n : defaultPreferences\n )\n .then(({ data }) => {\n if (data) {\n const { teams, ...normalisedDetails } = normaliseClubDetails(data);\n // update the details only if we don't already have them\n // they don't change with filters\n if (!clubDetails) {\n setClubDetails(normalisedDetails);\n }\n\n if (isFiltersApplied) {\n setFilteredTeams(teams);\n setIsLoading(false);\n return;\n }\n\n setUnfilteredTeams({\n ...{ teams: teams },\n totalTeams: normalisedDetails.totalTeams,\n });\n setIsLoading(false);\n }\n })\n .catch(throwError);\n }, [\n filteredTeams,\n id,\n isMLCard,\n isFiltersApplied,\n unfilteredTeams,\n clubDetails,\n isLoading,\n preferences,\n throwError,\n ]);\n\n // if we are loading and we already have the venue details and\n // at least one type of session then we are fetching\n // the other type of sessions\n const isRefreshingTeams =\n isLoading && clubDetails && (filteredTeams || unfilteredTeams);\n const isFirstLoad = isLoading && !clubDetails;\n\n // we are using useLayoutEffect here because we cannot rely on\n // setIsRefreshingDetails having run before we shift focus above\n // due to React async setting of state\n useLayoutEffect(() => {\n // if we're refreshing then shift focus to the loading message\n if (isRefreshingTeams) {\n loadingRef.current?.focus({ preventScroll: true });\n return;\n }\n // filtersApplied has changed\n // if both filtered and unfiltered data have been loaded\n // we can shift the focus to the list when the button is clicked\n if (filteredTeams && unfilteredTeams) {\n setTimeout(() => {\n listRef.current?.focus({ preventScroll: true });\n }, 300);\n }\n }, [filteredTeams, isFiltersApplied, isRefreshingTeams, unfilteredTeams]);\n\n const onTeamCardClick = () => {\n setSelectedType(VENUE);\n };\n\n // if there is no selected recommendations type or\n // the filters are removed show different title\n const title =\n selectedRecommendationType && isFiltersApplied\n ? `${Age} year old ${selectedRecommendationType} Teams`\n : 'All teams at this club';\n\n // if there is no selected recommendations type or\n // the filters are removed don't show subtitle\n const subtitle =\n selectedRecommendationType && isFiltersApplied\n ? `${clubDetails?.totalteams\n } Teams that match my search playing on ${getWeekdays(WeekDays)}`\n : `${unfilteredTeams?.totalteams} Teams at this club`;\n\n const clubTeams = isFiltersApplied ? filteredTeams : unfilteredTeams?.teams;\n\n if (isLoadingPageData) {\n return ;\n }\n\n return (\n
    \n
    \n {providerPageData && (\n \n )}\n
    \n \n
    \n \n \n {isFirstLoad ? (\n \n ) : (\n \n \n {isRefreshingTeams && (\n \n )}\n {clubTeams && (\n \n setIsFiltersApplied(!isFiltersApplied)\n }\n ref={listRef}\n cardAction={onTeamCardClick}\n />\n )}\n \n \n {clubDetails && (\n \n )}\n \n \n )}\n \n
    \n \n
    \n
    \n );\n};\n\nexport default ClubPageRef;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const {\n breakpoints,\n colors,\n typography,\n spacing,\n } = useTheme();\n\n return {\n base: css`\n height: 100%;\n display: grid;\n grid-template-rows: auto 1fr;\n grid-template-columns: 100%;\n `,\n hero: css`\n h1 {\n text-transform: capitalize;\n ${typography.headings[4].mobile};\n text-align: center;\n \n &::after {\n background: none;\n } \n\n ${breakpoints.l} {\n ${typography.headings[3].desktop};\n max-width: 100%;\n text-align: center;\n width: 80%;\n margin: 0 auto;\n }\n } \n `,\n wrapper: (hasPreferences) => css`\n width: 100%;\n margin: 0 auto;\n margin-top: calc(100vh - 80px);\n padding: ${spacing.s} 0;\n\n ${breakpoints.m} {\n margin-top: calc(100vh - 100px);\n padding: 0;\n }\n\n ${breakpoints.l} {\n max-width: 1196px;\n margin-top: calc(100vh - 50px);\n }\n `,\n card: css`\n position: relative;\n padding: ${spacing.s};\n background-color: ${colors.white};\n margin-bottom: ${spacing.m};\n height: 95%;\n box-shadow: 0px 4px 6px rgba(91, 104, 133, 0.1);\n\n ${breakpoints.xl} {\n padding: ${spacing.l};\n grid-template-rows: unset;\n grid-gap: ${spacing.s};\n }\n `,\n tabs: css`\n margin-bottom: ${spacing.s};\n\n ${breakpoints.xl} {\n margin-bottom: ${spacing.m};\n }\n `,\n };\n};\n","import { useEffect, useState } from 'react';\n\nimport {\n BOY,\n CASUAL,\n CLUBS,\n DISABILITY,\n EMPTY_STRING,\n GIRL,\n KICKABOUT_CASUAL,\n MEN,\n MIXED_ADULT,\n MIXED_CHILD,\n ONBOARDING_PREFERENCES,\n WOMEN,\n YES,\n YOUTH_AGE,\n} from '../../const';\nimport useLocalStorage from '../../hooks/useLocalStorage';\n\nconst getMixedImg = (Age, young, adult) => {\n return Age <= YOUTH_AGE ? young : adult;\n};\n\nexport default () => {\n const { getLocalItem } = useLocalStorage();\n const [imgPath, setImgPath] = useState();\n const preferencesObj = JSON.parse(getLocalItem(ONBOARDING_PREFERENCES)) || {};\n const { Age, PlayWith, Disabilityoption, SelectedFootballType } =\n preferencesObj;\n\n useEffect(() => {\n let img = EMPTY_STRING;\n switch (PlayWith) {\n case 1:\n case 4:\n img = getMixedImg(Age, BOY, MEN);\n break;\n case 2:\n case 5:\n img = getMixedImg(Age, GIRL, WOMEN);\n break;\n default:\n img = getMixedImg(Age, MIXED_CHILD, MIXED_ADULT);\n break;\n }\n\n const imagePath =\n Disabilityoption === YES\n ? (img === 'mixed_child') | (img === 'mixed_adult')\n ? `${DISABILITY}/mixed`\n : DISABILITY\n : SelectedFootballType === KICKABOUT_CASUAL\n ? CASUAL\n : CLUBS && (img === 'mixed_child') | (img === 'mixed_adult')\n ? 'mixed'\n : CLUBS;\n\n setImgPath(`${imagePath}/${img}`);\n }, [Age, Disabilityoption, PlayWith, SelectedFootballType]);\n\n return imgPath;\n};\n","import { useMsal } from '@azure/msal-react';\nimport { useEffect } from 'react';\n\nimport { usePageInfo } from '../../context/pageInfo';\n\nexport default (pageId, pageTokens) => {\n const [, setPageInfo] = usePageInfo();\n const { accounts } = useMsal();\n\n // Update the page data here\n useEffect(() => {\n setPageInfo(pageId, pageTokens);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [accounts]);\n};\n","/** @jsxImportSource @emotion/react */\n\nimport Button from '../Button';\nimport useStyles from './styles';\n\n// this allows us to get the previous or next\n// sibling for our current target and shift focus\nconst handleKeyboardNavigation = event => {\n if (event.key !== 'ArrowRight' && event.key !== 'ArrowLeft') {\n return;\n }\n\n const elementToFocus =\n event.key === 'ArrowRight'\n ? event.target?.nextSibling\n : event.target?.previousSibling;\n\n if (!elementToFocus) {\n return;\n }\n\n // focus on the other button\n elementToFocus.focus();\n // simulate a click to switch between tabs\n elementToFocus.click();\n};\n\n// This component should be used along the TabPanel component,\n// it uses the same pattern for `id` and `aria-controls`\nconst LinkTabs = ({\n onClick,\n selectedType,\n ariaLabel,\n tabs,\n isMapPage = false,\n ...rest\n}) => {\n const styles = useStyles();\n\n return (\n
    \n
    \n {tabs.map(tab => {\n const isSelected = selectedType === tab.id;\n\n return (\n onClick(tab.id)}\n onKeyUp={handleKeyboardNavigation}\n role=\"tab\"\n aria-selected={isSelected}\n id={`tab-${tab.id}`}\n aria-controls={`tabpanel-${tab.id}`}\n tabIndex={isSelected ? 0 : -1}\n to={tab.url}\n >\n {tab.label}\n \n );\n })}\n
    \n
    \n );\n};\n\nexport default LinkTabs;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const {\n breakpoints,\n borderRadius,\n colors,\n spacing,\n typography,\n mediaQueries,\n } = useTheme();\n\n return {\n base: css`\n background-color: ${colors.lightGrey};\n border-radius: ${borderRadius.l} ${borderRadius.l} 0 0;\n `,\n tabs: isMapPage => css`\n display: grid;\n justify-content: center;\n grid-auto-flow: column;\n grid-gap: 1rem;\n padding: 1rem 1.5rem;\n\n ${isMapPage &&\n css`\n display: flex;\n justify-content: stretch;\n `}\n\n ${breakpoints.m} {\n padding: 1.5rem;\n }\n `,\n tab: (isSelected, isMapPage) => css`\n ${typography.headings[6].mobile};\n color: ${colors.navy};\n padding: 0.8125rem;\n letter-spacing: 0.01rem;\n font-size: 1rem;\n font-weight: 400;\n text-transform: capitalize;\n border: ${borderRadius.s} solid ${colors.darkGrey};\n outline: 0;\n background-color: ${colors.white};\n border-radius: 4px;\n max-width: 156px;\n height: 35px;\n\n ${!isMapPage &&\n css`\n min-width: 144px;\n `}\n\n ${breakpoints.m} {\n min-width: 144px;\n }\n\n &:focus-visible {\n border: ${borderRadius.s} solid ${colors.navy};\n background-color: ${colors.darkGrey};\n border-radius: ${borderRadius.m};\n color: ${colors.white};\n }\n\n ${mediaQueries.safariBrowser} {\n @supports (-webkit-appearance: none) {\n &:focus {\n border: ${borderRadius.s} solid ${colors.navy};\n background-color: ${colors.darkGrey};\n border-radius: ${borderRadius.m};\n color: ${colors.white};\n }\n }\n }\n\n &:not(:disabled):hover {\n border-radius: 4px;\n background-color: ${colors.darkGrey};\n color: ${colors.white};\n }\n\n ${isSelected &&\n css`\n color: ${colors.white};\n background-color: ${colors.darkGrey};\n\n &:not(:hover):focus-visible {\n color: ${colors.white};\n text-decoration: underline;\n }\n\n // for safari browser\n ${mediaQueries.safariBrowser} {\n @supports (-webkit-appearance: none) {\n &:not(:hover):focus {\n color: ${colors.white};\n text-decoration: underline;\n }\n }\n }\n `};\n\n ${breakpoints.m} {\n padding: 0.4rem ${spacing.xs};\n border: ${borderRadius.s} solid ${colors.darkGrey};\n max-width: 227px;\n width: 227px;\n font-size: 1rem;\n }\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport useMOFAInitiatives from '../../hooks/useMOFAInitiatives';\nimport Text from '../Text';\nimport VenueEvent from '../VenueEvents';\nimport useStyles from './styles';\n\nconst MOFAInitiativeEvent = ({ pageData }) => {\n const styles = useStyles();\n\n const faEvents = useMOFAInitiatives(pageData);\n\n return (\n
    \n { faEvents?.length > 0 && (\n
    \n \n You may also be interested in\n \n
    \n
    \n
    \n {faEvents?.map(event => (\n \n ))}\n
    \n
    \n
    \n
    \n )}\n
    \n );\n};\n\nexport default MOFAInitiativeEvent;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { breakpoints, colors, spacing, borderRadius } = useTheme();\n\n return {\n middle: css`\n display: grid;\n border-top: 1px solid ${colors.lightGrey};\n margin: 0 ${spacing.m};\n padding: ${spacing.s} 0 ${spacing.xs};\n\n ${breakpoints.m} {\n margin: 0 ${spacing.m};\n padding: ${spacing.l} 0;\n }\n\n ${breakpoints.l} {\n margin: 0 ${spacing.xxl};\n }\n `,\n title: css`\n color: ${colors.navy};\n position: relative;\n margin: ${spacing.s} 0;\n font-size: 1.25rem;\n display: inline-block;\n padding-bottom: 10px;\n\n &::after {\n content: '';\n position: absolute;\n left: 0;\n bottom: 0;\n width: 15%;\n border-bottom: 2px solid ${colors.red};\n }\n\n ${breakpoints.m} {\n font-size: 1.5rem;\n &::after {\n width: 5%;\n }\n }\n `,\n rightContent: css`\n border-top: ${borderRadius.s} solid ${colors.red};\n padding: ${spacing.s};\n background-color: ${colors.lightGrey};\n `,\n wrapText: css`\n white-space: pre-wrap;\n `,\n venueFacilitiesWrapper: css`\n padding: ${spacing.xs} 0;\n `,\n eventsTitle: css`\n margin-bottom: ${spacing.xs};\n\n ${breakpoints.l} {\n margin-bottom: ${spacing.s};\n }\n `,\n faInititativeWrapper: css`\n background-color: ${colors.lightGrey};\n\n ${breakpoints.m} {\n border-radius: 0 0 ${borderRadius.xxl} ${borderRadius.xxl};\n }\n `,\n events: css`\n grid-gap: 0.3rem;\n display: flex;\n flex-wrap: wrap;\n\n ${breakpoints.m} {\n grid-gap: 0;\n }\n\n img {\n border-radius: ${borderRadius.l};\n }\n\n > div {\n width: 100%;\n margin-bottom: 1.5rem;\n\n ${breakpoints.m} {\n margin-right: ${spacing.m};\n margin-bottom: 0;\n flex: 1;\n max-width: 50%;\n\n &:last-of-type {\n margin-right: 0;\n }\n }\n }\n `,\n };\n};\n","import { useEffect, useState } from 'react';\n\nimport {\n ADULT_CLUB,\n AGE_UK,\n JUST_PLAY_PROTEIN,\n LETGIRLSPLAY,\n ONBOARDING_PREFERENCES,\n SQUAD,\n WEETABIX_WILDCATS,\n YOUTH_CLUBS_TYPE,\n} from '../../const';\nimport useLocalStorage from '../useLocalStorage';\n\nexport default pageData => {\n if (!pageData) {\n return;\n }\n const { getLocalItem } = useLocalStorage();\n const [filteredData, setFilteredData] = useState();\n const preferencesObj = JSON.parse(getLocalItem(ONBOARDING_PREFERENCES)) || {};\n const { Age, Category } = preferencesObj;\n const YOUTH_CLUB = YOUTH_CLUBS_TYPE.filter(data => data === Category)[0];\n\n useEffect(() => {\n let initiatives = [];\n switch (Category) {\n case LETGIRLSPLAY:\n initiatives = [3, 4, 6];\n break;\n case WEETABIX_WILDCATS:\n initiatives = [4, 5, 6];\n break;\n case JUST_PLAY_PROTEIN:\n initiatives = Age > 55 ? [3] : [7, 8];\n break;\n case AGE_UK:\n initiatives = [2];\n break;\n case ADULT_CLUB:\n initiatives = [2];\n break;\n case YOUTH_CLUB:\n initiatives = [6];\n break;\n case SQUAD:\n initiatives = [5, 6, 1];\n break;\n default:\n initiatives = [];\n break;\n }\n const filteredData = pageData?.faInitiatives.filter(item =>\n initiatives.includes(item.id)\n );\n setFilteredData(filteredData);\n }, [Age, Category, pageData, YOUTH_CLUB]);\n\n return filteredData;\n};\n","import {\n BOY,\n EMPTY_STRING,\n GIRL,\n MEN,\n MIXED_VALUE,\n ONBOARDING_PREFERENCES,\n WOMEN,\n YOUTH_AGE,\n} from '../../const';\nimport useLocalStorage from '../../hooks/useLocalStorage';\n\nconst getAgeTitle = (\n age,\n youth,\n adult = JSON.parse(sessionStorage.getItem('ISVOLUNTEER'))\n ? 'Mixed'\n : MIXED_VALUE\n) => {\n const isYouth = parseInt(age, 10) <= YOUTH_AGE;\n return `${isYouth ? youth : adult}${\n youth === MIXED_VALUE || youth === 'Mixed' ? EMPTY_STRING : \"s'\"\n }`;\n};\n\nexport default () => {\n const { getLocalItem } = useLocalStorage();\n const preferencesObj = JSON.parse(getLocalItem(ONBOARDING_PREFERENCES)) || {};\n const { Age, PlayWith } = preferencesObj;\n let ageTitle = EMPTY_STRING;\n\n if (preferencesObj && Age) {\n switch (PlayWith) {\n case 1:\n case 4:\n ageTitle = getAgeTitle(\n Age,\n JSON.parse(sessionStorage.getItem('ISVOLUNTEER')) ? 'Boy' : BOY,\n JSON.parse(sessionStorage.getItem('ISVOLUNTEER')) ? 'Men' : MEN\n );\n break;\n case 2:\n case 5:\n ageTitle = getAgeTitle(\n Age,\n JSON.parse(sessionStorage.getItem('ISVOLUNTEER')) ? 'Girl' : GIRL,\n JSON.parse(sessionStorage.getItem('ISVOLUNTEER')) ? 'Women' : WOMEN\n );\n break;\n default:\n ageTitle = getAgeTitle(\n Age,\n JSON.parse(sessionStorage.getItem('ISVOLUNTEER'))\n ? 'Mixed'\n : MIXED_VALUE\n );\n break;\n }\n }\n\n return ageTitle;\n};\n","import { DISABILITY_TYPES_MAPPING, ONBOARDING_PREFERENCES } from '../../const';\nimport useLocalStorage from '../../hooks/useLocalStorage';\n\nconst rule = [\n DISABILITY_TYPES_MAPPING[2], // Blind\n DISABILITY_TYPES_MAPPING[12], // Powerchair\n DISABILITY_TYPES_MAPPING[10], // Pan-Disability\n];\n\nexport default () => {\n const { getLocalItem } = useLocalStorage();\n const preferencesObj = JSON.parse(getLocalItem(ONBOARDING_PREFERENCES)) || {};\n const { DisabilityType: prefDisabilityTypes } = preferencesObj;\n // when disability not present in preferences.\n if (prefDisabilityTypes && prefDisabilityTypes.length === 0) {\n return;\n }\n\n // when multiple disability in preferences.\n let title = 'Pan Disability';\n\n // when one disability in preferences, check against the rule to prepare title.\n if (prefDisabilityTypes && prefDisabilityTypes.length === 1) {\n const disability =\n DISABILITY_TYPES_MAPPING[prefDisabilityTypes[0]?.DisabilityId];\n\n return rule.includes(disability) ? disability : `${disability} & ${title}`;\n }\n\n return title;\n};\n","const disability = [\n 'Toilets',\n 'Parking',\n 'Doorways',\n 'Changing',\n 'Spectator Areas',\n 'Social',\n 'Reception',\n 'Emergency Exits',\n 'Activities',\n];\n\nconst strToArray = str => str.split(',');\n\nconst arraysMatched = (base, comparison) =>\n JSON.stringify(base) === JSON.stringify(comparison);\n\nexport default disabilityString => {\n if (!disabilityString) return 'Any';\n\n // sort disabilityArray based on disability\n const disabilityArray = strToArray(disabilityString).sort(function (a, b) {\n return disability.indexOf(a) - disability.indexOf(b);\n });\n\n if (disabilityArray.length === 1) {\n return disabilityArray[0];\n }\n if (arraysMatched(disabilityArray, disability)) {\n return 'All';\n }\n if (disabilityArray.length < disability.length) {\n return `${disabilityArray[0]} + ${disabilityArray.length - 1}`;\n }\n};\n","export default locationStr => locationStr || 'My location';\n","import {\n BOYS_OR_MEN,\n BOYS_OR_MEN_MIXED,\n EMPTY_STRING,\n GIRLS_OR_WOMEN,\n GIRLS_OR_WOMEN_MIXED,\n MIXED_VALUE,\n} from '../../const';\nimport useAgeTitle from '../../hooks/useAgeTitle';\n\nexport default playWith => {\n let genderString = EMPTY_STRING;\n const ageTitle = useAgeTitle();\n switch (playWith) {\n case BOYS_OR_MEN:\n case GIRLS_OR_WOMEN:\n genderString = ageTitle;\n break;\n case BOYS_OR_MEN_MIXED:\n case GIRLS_OR_WOMEN_MIXED:\n genderString = `${ageTitle} + ${MIXED_VALUE}`;\n break;\n default:\n genderString = MIXED_VALUE;\n break;\n }\n\n return genderString.replace(\"s'\", EMPTY_STRING);\n};\n","import { MAX_TEXT } from \"../../const\";\n\nexport default (duration, { max = 0 } = {}) => {\n if (!duration) return '';\n\n let durationValue = duration;\n let suffix = durationValue === 1 ? 'hr' : 'hrs';\n\n // Eg.: if max is 4 we want to show 3+\n if (durationValue === max) {\n durationValue = max - 1;\n suffix = `${suffix}+`;\n }\n\n return `${durationValue} ${suffix} ${MAX_TEXT}`;\n};\n","import { EMPTY_STRING, MAX_TEXT } from '../../const';\n\nexport default (price, { max = 0 } = {}) => {\n if (!/\\d/.test(price)) return EMPTY_STRING;\n\n let priceValue = price;\n\n let suffix = EMPTY_STRING;\n\n // Eg.: if max is 5 we want to show 5+\n\n if (priceValue === 0) {\n return 'Free';\n } else {\n return `£${priceValue} ${\n priceValue === max ? `${suffix}+` : suffix\n } ${MAX_TEXT}`;\n }\n};\n","import { SURFACE_VALUES } from '../../const';\n\nconst strToArray = str => str.split(',');\n\nconst arraysMatched = (base, comparison) =>\n JSON.stringify(base) === JSON.stringify(comparison);\n\nexport default surfaceString => {\n if (!surfaceString) return 'Any';\n\n // sort surfaceArray based on surface\n const surfaceArray = strToArray(surfaceString).sort(function (a, b) {\n return SURFACE_VALUES.indexOf(a) - SURFACE_VALUES.indexOf(b);\n });\n\n if (surfaceArray.length === 1) {\n return surfaceArray[0];\n }\n if (arraysMatched(surfaceArray, SURFACE_VALUES)) {\n return 'Any';\n }\n if (surfaceArray.length < SURFACE_VALUES.length) {\n return `${surfaceArray[0]} + ${surfaceArray.length - 1}`;\n }\n};\n","import { filtersPanelAnalytics } from '../../analyticsConsts';\nimport {\n CLUB,\n DISABILITY_FACILITY,\n DONT_MIND,\n KICKABOUT_CASUAL,\n LOCATION_FILTER,\n MAX_DURATION,\n MAX_SESSION_PRICE,\n MIN_SESSION_PRICE,\n MIXED_GENDER_FILTER,\n MULTI_FILTER,\n PLAY_WITH_ID,\n SESSION_DURATION,\n SESSION_PRICE,\n SLIDER_FILTER,\n SURFACE_TYPE,\n WEEKDAYS_ID,\n} from '../../const';\nimport disabilityFacilityFormatter from '../../formatters/disabilityFacility';\nimport locationFormatter from '../../formatters/location';\nimport playWithFormatter from '../../formatters/playWith';\nimport sessionDurationFormatter from '../../formatters/sessionDuration';\nimport sessionPriceFormatter from '../../formatters/sessionPrice';\nimport surfaceFormatter from '../../formatters/surface';\nimport weekdaysFormatter from '../../formatters/weekdays';\n\nconst {\n FILTERS_PANEL_CTA_DAY_PREFERENCE,\n FILTERS_PANEL_CTA_LOCATION_PREFERENCE,\n FILTERS_SESSION_DURATION_PREFERENCE_CTA,\n FILTERS_PANEL_CTA_INCLUDE_MIXED_GENDER,\n FILTERS_PANEL_CTA_DISABILITY_FACILITY,\n FILTERS_PANEL_CTA_SURFACE_TYPE,\n FILTERS_PANEL_CTA_SESSION_PRICE,\n} = filtersPanelAnalytics;\n\nexport const filterFormatters = {\n WeekDays: weekdaysFormatter,\n ReadableLocation: locationFormatter,\n SessionDuration: sessionDurationFormatter,\n PlayWith: playWithFormatter,\n DisabilityFacility: disabilityFacilityFormatter,\n SurfaceType: surfaceFormatter,\n SessionPrice: sessionPriceFormatter,\n};\n\nconst defaultFilters = [\n {\n id: 1,\n analyticsId: FILTERS_PANEL_CTA_DAY_PREFERENCE,\n preferenceKey: [WEEKDAYS_ID],\n label: 'Day preference',\n type: MULTI_FILTER,\n valueFormatter: weekdaysFormatter,\n hasNestedFilter: true,\n areOptionsMandatory: true,\n helpText: 'Select the days you would like to play or train',\n options: [\n {\n id: 1,\n text: 'Monday',\n value: '1',\n },\n {\n id: 2,\n text: 'Tuesday',\n value: '2',\n },\n {\n id: 3,\n text: 'Wednesday',\n value: '3',\n },\n {\n id: 4,\n text: 'Thursday',\n value: '4',\n },\n {\n id: 5,\n text: 'Friday',\n value: '5',\n },\n {\n id: 6,\n text: 'Saturday',\n value: '6',\n },\n {\n id: 7,\n text: 'Sunday',\n value: '7',\n },\n ],\n },\n {\n id: 2,\n analyticsId: FILTERS_PANEL_CTA_LOCATION_PREFERENCE,\n preferenceKey: 'ReadableLocation',\n label: 'Location',\n type: LOCATION_FILTER,\n valueFormatter: locationFormatter,\n hasNestedFilter: true,\n },\n];\n\nexport default {\n [CLUB]: defaultFilters,\n [KICKABOUT_CASUAL]: [\n ...defaultFilters,\n {\n id: 3,\n analyticsId: FILTERS_PANEL_CTA_SESSION_PRICE,\n preferenceKey: [SESSION_PRICE],\n label: 'Session price',\n type: SLIDER_FILTER,\n valueFormatter: sessionPriceFormatter,\n hasNestedFilter: true,\n helpText: 'Select the maximum price you are happy to pay for a session',\n config: {\n min: MIN_SESSION_PRICE,\n max: MAX_SESSION_PRICE,\n defaultValue: MAX_SESSION_PRICE,\n step: 1,\n hasSuffix: true,\n },\n },\n {\n id: 4,\n analyticsId: FILTERS_PANEL_CTA_SURFACE_TYPE,\n preferenceKey: [SURFACE_TYPE],\n label: 'Playing Surface',\n type: MULTI_FILTER,\n valueFormatter: surfaceFormatter,\n hasNestedFilter: true,\n areOptionsMandatory: true,\n helpText: 'Select the surface(s) you wish to play on',\n options: [\n {\n id: 1,\n text: '3G or Astroturf',\n value: '3G or Astroturf',\n },\n {\n id: 2,\n text: 'Grass',\n value: 'Grass',\n },\n {\n id: 3,\n text: 'Indoor',\n value: 'Indoor',\n },\n {\n id: 4,\n text: 'Others',\n value: 'Others',\n },\n ],\n },\n {\n id: 5,\n analyticsId: FILTERS_SESSION_DURATION_PREFERENCE_CTA,\n preferenceKey: [SESSION_DURATION],\n label: 'Session duration',\n type: SLIDER_FILTER,\n valueFormatter: sessionDurationFormatter,\n hasNestedFilter: true,\n helpText: 'Select the maximum duration you wish to play',\n config: {\n min: 1,\n max: MAX_DURATION,\n defaultValue: MAX_DURATION,\n step: 1,\n hasSuffix: true,\n },\n },\n {\n id: 6,\n analyticsId: FILTERS_PANEL_CTA_DISABILITY_FACILITY,\n preferenceKey: [DISABILITY_FACILITY],\n label: 'Disability facilities',\n type: MULTI_FILTER,\n areOptionsMandatory: false,\n valueFormatter: disabilityFacilityFormatter,\n hasNestedFilter: true,\n helpText: 'Select which facilities you need to be disability-friendly',\n options: [\n {\n id: 1,\n text: 'Toilets',\n value: 'Toilets',\n },\n {\n value: 'Parking',\n id: 2,\n text: 'Parking',\n },\n {\n text: 'Doorways',\n value: 'Doorways',\n id: 3,\n },\n {\n id: 4,\n value: 'Changing',\n text: 'Changing',\n },\n {\n text: 'Spectator Areas',\n id: 5,\n value: 'Spectator Areas',\n },\n {\n id: 6,\n text: 'Social',\n value: 'Social',\n },\n {\n id: 7,\n text: 'Reception',\n value: 'Reception',\n },\n {\n id: 8,\n text: 'Emergency Exits',\n value: 'Emergency Exits',\n },\n {\n id: 9,\n text: 'Activities',\n value: 'Activities',\n },\n ],\n },\n {\n id: 7,\n analyticsId: FILTERS_PANEL_CTA_INCLUDE_MIXED_GENDER,\n preferenceKey: [PLAY_WITH_ID],\n label: 'Include mixed gender results',\n type: MIXED_GENDER_FILTER,\n valueFormatter: playWithFormatter,\n hasNestedFilter: false,\n },\n ],\n [DONT_MIND]: defaultFilters,\n};\n","/** @jsxImportSource @emotion/react */\nimport { Fragment, useEffect, useMemo } from 'react';\n\nimport { moRecommendationsPageAnalytics } from '../../analyticsConsts';\nimport {\n BOYS_OR_MEN_MIXED,\n DAY_PREFERENCE_DATA,\n EMPTY_STRING,\n GIRLS_OR_WOMEN_MIXED,\n LOCATION_DATA,\n MIXED_VALUE,\n YES,\n} from '../../const';\nimport { useFilterPanelToggleContext } from '../../context/filterPanelToggle';\nimport { useNestedFilterPanelContext } from '../../context/nestedFilterPanel';\nimport weekdaysFormatter from '../../formatters/weekdays';\nimport useAgeTitle from '../../hooks/useAgeTitle';\nimport useDisabilityTitle from '../../hooks/useDisabilityTitle';\nimport ExternalLink from '../ExternalLink';\nimport filtersConfig from '../FiltersPanel/filtersConfig';\nimport LinkButton from '../LinkButton';\nimport { getRedirectUrl } from '../OnboardingModal/MiniOnboarding';\nimport Text from '../Text';\nimport useStyles from './styles';\n\nconst {\n MO_RECOMMENDED_FOOTBALL_ONBOARDING_CTA_LEARN_MORE,\n MO_RECOMMENDED_FOOTBALL_ONBOARDING_WRAPPER,\n MO_RECOMMENDED_FOOTBALL_ONBOARDING_DAY_PREFERENCE,\n MO_RECOMMENDED_FOOTBALL_ONBOARDING_LOCATION,\n} = moRecommendationsPageAnalytics;\n\nconst MOOnboardingCriteria = ({ linkText, preferences, MOPreferences }) => {\n const styles = useStyles();\n const { isFilterPanelToggled, setFilterPanelToggle, isFilterEnabled } =\n useFilterPanelToggleContext();\n const { setSelectedFilters, setNested } = useNestedFilterPanelContext();\n const {\n ReadableLocation,\n SelectedFootballType,\n PlayWith,\n Disabilityoption,\n WeekDays,\n } = preferences;\n const ageTitle = useAgeTitle();\n const disabilityTitle = useDisabilityTitle();\n const { category, age } = MOPreferences;\n const externalUrl = useMemo(() => getRedirectUrl(), []);\n\n useEffect(() => {\n let ahref = document.querySelectorAll('a');\n let buttonselector = document.querySelectorAll('button');\n let listselector = document.querySelectorAll('li');\n let imageselector = document.querySelectorAll('img');\n\n const filteropen = [\n ...ahref,\n ...buttonselector,\n ...listselector,\n ...imageselector,\n ].filter(datafilter => {\n return datafilter.id.includes('filters_');\n });\n\n const filterclosed = [\n ...ahref,\n ...buttonselector,\n ...listselector,\n ...imageselector,\n ].filter(datafilter => {\n return !datafilter.id.includes('filters_');\n });\n\n filterclosed.forEach((btn, index) => {\n // set first button tabindex to 0\n // and set every other button tabindex to -1\n\n if (isFilterEnabled === false) {\n btn.setAttribute('tabindex', 0);\n }\n if (isFilterEnabled === true) {\n filteropen.forEach((filterbtn, index) => {\n filterbtn.setAttribute('tabindex', 0);\n btn.setAttribute('tabindex', -1);\n });\n }\n });\n }, [isFilterEnabled]);\n\n return (\n \n {preferences && Object.keys(preferences).length !== 0 && (\n \n \n Showing {category} based on {age} {ageTitle}{' '}\n {(PlayWith === BOYS_OR_MEN_MIXED ||\n PlayWith === GIRLS_OR_WOMEN_MIXED) &&\n `or ${MIXED_VALUE} `}\n football,\n {Disabilityoption === YES && ` catering for ${disabilityTitle},`} on\n {\n // set day preference data\n setSelectedFilters(\n filtersConfig[SelectedFootballType][DAY_PREFERENCE_DATA]\n );\n setNested(true);\n setFilterPanelToggle(!isFilterPanelToggled);\n }}\n >\n {weekdaysFormatter(WeekDays)}\n \n {weekdaysFormatter(WeekDays).toString().toLowerCase() === 'any'\n ? 'day '\n : EMPTY_STRING}\n near\n {\n // set location data\n setSelectedFilters(\n filtersConfig[SelectedFootballType][LOCATION_DATA]\n );\n setNested(true);\n setFilterPanelToggle(!isFilterPanelToggled);\n }}\n >\n {/* Empty value will show \"My location\" */}\n {ReadableLocation ? ReadableLocation : 'My location'}\n \n .\n \n
    \n \n {linkText}\n \n
    \n
    \n )}\n \n );\n};\n\nexport default MOOnboardingCriteria;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { colors, breakpoints, spacing } = useTheme();\n\n return {\n link: css`\n color: ${colors.white};\n font-weight: 400;\n text-align: center;\n padding-top: ${spacing.s};\n\n ${breakpoints.m} {\n font-size: 1.25rem;\n line-height: 1.875rem;\n }\n\n button {\n display: inline-block;\n padding: 0 3px;\n }\n `,\n linkWrapper: css`\n width: 100%;\n margin: 0 auto;\n text-align: center;\n `,\n externalLink: css`\n color: ${colors.white};\n font-weight: 400;\n font-size: 1rem;\n padding-top: ${spacing.xs};\n display: inline-block;\n border: 1px solid transparent;\n\n &:focus {\n outline: 0;\n border: 1px solid ${colors.white};\n }\n\n ${breakpoints.m} {\n font-size: 1.25rem;\n }\n `,\n OnboardingWrapper: css`\n margin: 1rem 0 ${spacing.s};\n `,\n daysLink: css`\n text-transform: lowercase;\n `,\n footballLink: css`\n text-transform: capitalize;\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport { useEffect, useState } from 'react';\n\nimport { usePreferencesContext } from '../../context/preferences';\nimport publicPath from '../../utils/publicPath';\nimport Image from '../Image';\nimport MOOnboardingCriteria from '../MOOnboardingCriteria';\nimport { getMOHeroProperties } from '../OnboardingModal/MiniOnboarding';\nimport Text from '../Text';\nimport useStyles from './styles';\n\nconst MOHero = ({\n textSize = 1,\n images,\n wrapperId,\n scrolldirectionContext,\n isDesktop,\n ...rest\n}) => {\n const styles = useStyles();\n const [hasLoaded, setHasLoaded] = useState(false);\n const [MOPreferences, setMOPreferences] = useState(false);\n const { preferences } = usePreferencesContext();\n const { isLogo, title, img, linkText, category } = MOPreferences;\n\n useEffect(() => {\n const properties = getMOHeroProperties(preferences);\n setMOPreferences(properties);\n }, [preferences]);\n\n useEffect(() => {\n setTimeout(() => {\n setHasLoaded(true);\n }, 300);\n }, []);\n\n return (\n \n \n {title && (\n \n {title}\n \n )}\n {isLogo && (\n \n \n \n )}\n \n \n \n );\n};\n\nexport default MOHero;\n","import { css } from '@emotion/react';\n\nimport { SCROLL_UP } from '../../const';\nimport useTheme from '../../hooks/useTheme';\nimport publicPath from '../../utils/publicPath';\n\nexport default () => {\n const {\n screenSizes,\n typography,\n breakpoints,\n spacing,\n colors,\n heights,\n borderRadius,\n } = useTheme();\n\n return {\n hero: ({ mobile, desktop }, scrollDirection) => {\n return css`\n display: grid;\n align-items: end;\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n grid-template-rows: 70% 30%;\n align-items: center;\n background: url(${mobile.src}) 75% 0 no-repeat;\n background-size: cover;\n padding: 0 ${spacing.s};\n margin-top: ${scrollDirection === SCROLL_UP\n ? 0\n : heights.mainNav.mobile};\n\n &::before {\n content: '';\n position: absolute;\n top: 30vh;\n left: 0;\n width: 100%;\n height: 75%;\n background: linear-gradient(\n to bottom,\n rgba(0, 0, 0, 0) 20%,\n rgba(1, 30, 65) 75%,\n rgba(1, 30, 65) 100%\n )\n center 0 no-repeat;\n background-size: contain;\n z-index: 1;\n }\n\n ${breakpoints.m} {\n grid-template-rows: 60% 40%;\n align-items: center;\n background: url(${desktop.src}) 0 0 no-repeat,\n linear-gradient(\n to bottom,\n rgba(0, 0, 0, 0) 20%,\n rgba(1, 30, 65) 75%,\n rgba(1, 30, 65) 100%\n )\n 0 0 no-repeat;\n background-size: cover, contain;\n margin-top: ${scrollDirection === SCROLL_UP\n ? 0\n : heights.mainNav.desktop};\n\n &::before {\n top: 10vh;\n left: 0;\n width: 100%;\n height: 100vh;\n background: linear-gradient(\n to bottom,\n rgba(0, 0, 0, 0) 20%,\n rgba(1, 30, 65) 75%,\n rgba(1, 30, 65) 100%\n )\n center 0 no-repeat;\n // will delete above once get confirmation from ollie\n background: linear-gradient(\n to bottom,\n rgba(0, 0, 0, 0) 5%,\n rgba(1, 30, 65) 58%,\n rgba(1, 30, 65) 100%\n )\n center 0 no-repeat;\n background-size: cover;\n z-index: 1;\n outline: 0;\n\n ${breakpoints.l} {\n height: 100vh;\n top: calc(100vh - 95vh);\n }\n }\n\n &::after {\n background: url(${publicPath(\n '/images/common/discover-football-watermark.svg'\n )})\n right center no-repeat;\n }\n }\n `;\n },\n textWrapper: hasLoaded => css`\n position: relative;\n z-index: 1;\n align-self: end;\n opacity: 0;\n transition: opacity 0.5s;\n width: 90vw;\n max-width: 390px;\n margin: 0 auto;\n\n ${hasLoaded &&\n css`\n opacity: 1;\n `}\n\n &.fadeOut {\n opacity: 0.3;\n }\n\n ${breakpoints.m} {\n max-width: ${screenSizes.xl};\n }\n `,\n mainText: css`\n ${typography.headings[3].mobile};\n text-transform: capitalize;\n z-index: 2;\n position: relative;\n color: ${colors.white};\n max-width: unset;\n transition: opacity 0.5s;\n text-align: center;\n margin: auto;\n\n &::after {\n content: '';\n position: absolute;\n left: 0;\n bottom: -15px;\n width: 70px;\n border-bottom: ${borderRadius.s} solid ${colors.red};\n left: Calc(100% - 61%);\n\n ${breakpoints.m} {\n left: Calc(100% - 53%);\n }\n }\n\n ${breakpoints.m} {\n ${typography.headings[1].desktop};\n max-width: 100%;\n font-family: FS Dillon;\n text-align: center;\n padding: 8rem 0 0.8rem 0;\n }\n\n ${breakpoints.l} {\n &::before {\n left: -8rem;\n }\n }\n `,\n imgWrapper: css`\n width: 100%;\n margin: 0 auto;\n display: grid;\n justify-content: center;\n `,\n image: category => css`\n width: ${category === 'Snickers Protein Just Play' ? '300px' : '100%'};\n height: 100%;\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport { Fragment, useCallback } from 'react';\nimport { Link } from 'react-router-dom';\n\nimport { moTeamCardAnalytics } from '../../analyticsConsts';\nimport { HYPHEN } from '../../const';\nimport { useSetSelectedClubDetailsContext } from '../../context/setSelectedClubDetails';\nimport { RightArrow } from '../Icons';\nimport Text from '../Text';\nimport useStyles from './styles';\n\nconst { CLUB_TEAM_CARD_MO_TITLE, CLUB_TEAM_CARD_MO_CTA_CONTACT } =\n moTeamCardAnalytics;\n\nconst MOTeamCard = ({\n data,\n index,\n TeamName,\n League,\n FootballType,\n Division,\n PlaysOnDay,\n isOpen,\n Gender,\n isMapPage,\n clubname,\n ...rest\n}) => {\n const styles = useStyles();\n const { setSelectedClubDetailsValue } = useSetSelectedClubDetailsContext();\n\n //converting clubname and teamname to array\n const splitClub = clubname.toLowerCase().split(' ');\n const spliTeam = TeamName.toLowerCase().split(' ');\n // trimming the string\n const trimClubName = clubname.toLowerCase().trim();\n const trimTeamName = TeamName.toLowerCase().trim();\n\n //filtering the clubname from teamname if string match returns null\n const filterTeam = spliTeam?.filter(value => !splitClub?.includes(value));\n const filterTeamTitle = filterTeam.join(' ');\n\n //filter for repeated names\n const filterMatched = spliTeam?.filter(value => splitClub?.includes(value));\n\n //finding match and replacing it\n const matchTeams = trimTeamName.match(trimClubName);\n const modifiedTeam = matchTeams\n ? trimTeamName.replace(matchTeams, '').trim()\n : filterTeamTitle.trim();\n\n // to remove repeated strings\n const removeRepeatedName = filterMatched.filter(\n (\n s => v =>\n s.has(v) || !s.add(v)\n )(new Set())\n );\n const filteredTeamName =\n !matchTeams && !filterTeamTitle ? removeRepeatedName.join(' ') : '';\n\n const getRedirectOption = useCallback(() => {\n setSelectedClubDetailsValue({\n ...data,\n selectedTeamDetails: data.TeamsCartDto[index],\n });\n window.location.href = `/team/${rest.TeamId}`;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [data]);\n\n return (\n \n );\n};\n\nexport default MOTeamCard;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { breakpoints, borderRadius, colors, spacing, utility } = useTheme();\n\n return {\n base: css`\n border: 1px solid ${colors.darkGrey};\n padding: 1.5rem 1.5rem ${spacing.s};\n border-radius: ${borderRadius.l};\n cursor: pointer;\n width: 100%;\n margin: 0 auto;\n height: 100%;\n text-decoration: none;\n overflow-x: auto;\n background-color: white;\n text-align: left;\n font-family: 'FS Dillon';\n\n &:hover {\n svg {\n transition: 0.4s ease-in;\n transform: translateX(50%);\n }\n }\n\n ${breakpoints.m} {\n overflow-x: hidden;\n }\n `,\n title: css`\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n color: ${colors.navy};\n background-size: contain;\n background-position: ${borderRadius.s};\n text-decoration: underline 7px ${colors.red};\n text-transform: capitalize;\n `,\n titleWrapper: css`\n position: relative;\n margin-bottom: 0.5rem;\n `,\n infoWrapper: css`\n display: grid;\n color: ${colors.navy};\n grid-gap: 0.063rem;\n p {\n color: ${colors.darkGrey};\n display: block;\n font-size: 12px;\n }\n `,\n formatWrapper: css`\n display: grid;\n grid-auto-flow: column;\n }\n `,\n strongformat: css`\n font-size: 16px;\n color: ${colors.navy};\n display: grid;\n `,\n format: css`\n display: inline-grid;\n padding: 0 0 0 ${spacing.s};\n border-left: 1px solid ${colors.lightGrey};\n `,\n externalLink: css`\n vertical-align: middle;\n color: ${colors.red};\n margin-left: 0.3125rem;\n `,\n infoAddress: css`\n text-transform: Capitalize;\n `,\n linkWrapper: css`\n padding-top: ${spacing.xs};\n button {\n padding: 0;\n text-decoration: none;\n font-weight: normal;\n text-transform: uppercase;\n\n &:focus {\n outline: 0;\n color: ${colors.navy};\n text-decoration: underline;\n text-align: left;\n font-family: 'FS Dillon';\n svg {\n color: ${colors.navy};\n }\n }\n }\n `,\n link: css`\n color: ${colors.blue};\n font-size: 0.875rem;\n `,\n infoValue: css`\n width: 80%;\n display: inline-block;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: middle;\n padding-bottom: ${spacing.xs};\n font-weight: 700;\n color: ${colors.navy};\n\n ${breakpoints.m} {\n font-weight: 700;\n }\n `,\n TeamName: utility.checkboxHidden,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport { useHistory } from 'react-router';\nimport { Link } from 'react-router-dom';\n\nimport {\n moRecommendationsPageAnalytics,\n recommendationsMapPageAnalytics,\n} from '../../analyticsConsts';\nimport {\n CLUB,\n EMPTY_STRING,\n KICKABOUT_CASUAL,\n VENUE_NO_SESSION_INFORMATION,\n VENUE_PROVIDER_INFORMATION,\n} from '../../const';\nimport Button from '../Button';\nimport {\n DarkIcon,\n Directions,\n ResultAlertIcon,\n RightArrow,\n ShowMore,\n} from '../Icons';\nimport LinkDirection from '../LinkDirection';\nimport MOTeamCard from '../MOTeamCard';\nimport Text from '../Text';\nimport VenueCard from '../VenueCard';\nimport { recommendationListName } from '../VenuePage/conditionCheck';\nimport useStyles from './styles';\n\nconst {\n MO_RESULTS_FOOTBALL_VENUE_NAME,\n MO_RESULTS_FOOTBALL_TEAM_NAME,\n MO_RESULTS_FOOTBALL_TEAM_INFO,\n MO_RESULTS_FOOTBALL_VENUE_INFO,\n MO_MORE_RESULTS,\n MO_RESULTS_FOOTBALL_DISTANCE,\n} = moRecommendationsPageAnalytics;\n\nconst { DIRECTION } = recommendationsMapPageAnalytics;\n\nconst MORecommendationList = ({\n data,\n cardAction,\n isDesktop,\n selectedFootballType,\n isMapPage = false,\n sourceLocation,\n}) => {\n const styles = useStyles();\n const history = useHistory();\n const CardMap = {\n [KICKABOUT_CASUAL]: VenueCard,\n [CLUB]: MOTeamCard,\n };\n const isClub = selectedFootballType === CLUB;\n const Card = CardMap[selectedFootballType];\n const cards = isClub ? data?.TeamsCartDto : data?.totalSession;\n const footballType = isClub ? 'Club' : 'Venue';\n const centerUrl = data.CentreId\n ? `/venue/${data?.CentreId}`\n : data?.totalProvider?.length > 1;\n const providerVenueUrl = centerUrl\n ? `/venue/${data?.CentreId ? data?.CentreId : data?.PitchFinderId}`\n : `/provider/${data?.totalProvider}p${data?.totalPitchFinder}`;\n const redirectUrl = isClub ? `/club/${data.ClubId}` : providerVenueUrl;\n\n const desktopLength = isDesktop ? 3 : 5;\n const cardLength = isMapPage ? isDesktop && 8 : desktopLength;\n\n const isClubPage = data.ClubName;\n const selectedCards = cards?.slice(0, cardLength)?.length;\n const teamCardLength = cards?.length > cardLength;\n const cardId = data?.CentreId ? data?.CentreId : data?.PitchFinderId;\n const cardurl =\n !data?.ClubId && data?.totalProvider?.length > 1\n ? `/venue/${cardId}`\n : `/provider/${data?.totalProvider}p${\n data?.totalPitchFinder ? data?.totalPitchFinder : EMPTY_STRING\n }`;\n const setRecommendationsPreference = e => {\n // we want to block the default link and only navigate\n // when we are sure the preferences have been set\n e.preventDefault();\n\n history.push(cardurl);\n };\n\n return (\n
    \n
    \n
    \n \n {recommendationListName(data)}\n \n {isClubPage && (\n \n ({data.DistanceFromUserLocation} miles)\n \n )}\n
    \n \n \n {(isClubPage || isDesktop) && (\n \n {data?.totalSession?.length > 0 || isClubPage\n ? footballType\n : 'Provider'}{' '}\n info\n \n )}\n \n
    \n {!isClubPage && (\n \n ({data.DistanceFromUserLocation} miles)\n \n )}\n {isMapPage && (\n
    \n \n Directions To {footballType}\n \n
    \n )}\n {(data?.totalSession?.length > 0 || isClubPage) && (\n
      \n {cards &&\n cards?.length > 0 &&\n cards.slice(0, cardLength).map((rowData, index) => {\n return (\n cardAction(card)}\n rowData={rowData}\n isMiniOnboarding={true}\n clubname={data?.ClubName}\n {...rowData}\n isMapPage={isMapPage}\n pitchfinderid={cards.PitchFinderId}\n >\n );\n })}\n
    \n )}\n {!isMapPage && teamCardLength && (\n
    \n {\n history.push(redirectUrl);\n }}\n css={styles.button}\n aria-label=\"click here to see more results\"\n >\n SHOW MORE{' '}\n {isClubPage && (\n
    \n \n
    \n )}\n \n
    \n )}\n {data?.totalProvider?.length > 0 && (\n
    \n
    \n \n
    \n
    \n
    \n {isDesktop === true &&\n (data?.totalSession?.length > 0\n ? VENUE_PROVIDER_INFORMATION\n : VENUE_NO_SESSION_INFORMATION)}\n {isDesktop === false && (\n
    \n {data?.totalSession?.length > 0\n ? VENUE_PROVIDER_INFORMATION\n : VENUE_NO_SESSION_INFORMATION}\n
    \n )}\n \n More Information \n \n
    \n
    \n
    \n
    \n
    \n )}\n
    \n );\n};\n\nexport default MORecommendationList;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { borderRadius, breakpoints, colors, spacing, typography } = useTheme();\n\n return {\n base: css`\n height: 100%;\n border-bottom: 1px solid ${colors.lightGrey};\n &:not(:last-child) {\n border-bottom: 1px solid ${colors.lightGrey};\n }\n `,\n header: (isClubPage, isMapPage) => css`\n margin-bottom: 0.2rem;\n display: grid;\n grid-auto-flow: column;\n grid-template-columns: 85% auto;\n padding-right: ${spacing.s};\n align-items: flex-start;\n\n ${isClubPage &&\n css`\n padding-left: 4rem;\n grid-template-columns: 65% auto;\n position: relative;\n\n &::after {\n content: '';\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n width: 48px;\n height: 48px;\n border: 1px solid ${colors.darkGrey};\n border-radius: 50%;\n background: url('/images/desktop/initiativeLogo/ef-logo.svg') center\n center no-repeat;\n background-size: 30px 30px;\n }\n\n ${isMapPage &&\n css`\n grid-template-columns: 60% auto;\n background-size: 42px 50px;\n `}\n\n ${breakpoints.m} {\n background-size: contain;\n\n ${isMapPage &&\n css`\n background-size: 42px 65px;\n `}\n }\n `}\n\n a {\n background-color: transparent;\n color: ${colors.navy};\n text-decoration: none;\n display: inline-block;\n display: flex;\n justify-content: flex-end;\n }\n\n span {\n margin-top: 4px;\n padding-left: 5px;\n text-decoration: underline;\n\n ${isClubPage &&\n css`\n margin-top: 8px;\n `}\n\n ${breakpoints.m} {\n margin-top: 8px;\n }\n\n ${breakpoints.l} {\n margin-top: 4px;\n ${!isMapPage &&\n css`\n padding-right: ${spacing.s};\n `}\n }\n }\n\n svg {\n transform: rotate(360deg);\n width: 32px;\n height: 32px;\n }\n\n ${breakpoints.m} {\n align-items: center;\n margin-bottom: 0.1rem;\n grid-template-columns: 70% auto;\n\n ${isClubPage &&\n isMapPage &&\n css`\n grid-template-columns: 68% auto;\n `}\n\n ${!isMapPage &&\n css`\n grid-template-columns: 85% auto;\n `}\n }\n\n ${breakpoints.l} {\n grid-template-columns: 70% auto;\n padding-right: ${spacing.s};\n\n ${!isMapPage &&\n css`\n grid-template-columns: 85% auto;\n padding-right: 0;\n `}\n\n svg {\n width: 24px;\n height: 24px;\n }\n }\n\n ${breakpoints.xl} {\n grid-template-columns: 55% auto;\n\n ${isClubPage &&\n css`\n grid-template-columns: 68% auto;\n `}\n\n ${!isMapPage &&\n css`\n grid-template-columns: 80% auto;\n `}\n }\n `,\n button: css`\n border: 1px solid ${colors.blue};\n width: 100%;\n background: none;\n color: ${colors.navy};\n text-transform: uppercase;\n\n &:not([disabled]):hover {\n border-color: ${colors.blue};\n background: ${colors.blue};\n color: ${colors.white};\n }\n\n &:focus {\n border-color: ${colors.blue};\n background: ${colors.blue};\n color: ${colors.white};\n text-decoration: underline;\n }\n `,\n title: (isClubPage, isMapPage) => css`\n display: inline-block;\n color: ${colors.navy};\n position: relative;\n text-transform: capitalize;\n font-size: 20px;\n\n ${isClubPage &&\n css`\n margin-bottom: 10px;\n\n ${breakpoints.m} {\n margin-bottom: 0;\n }\n `}\n\n ${isClubPage &&\n isMapPage &&\n css`\n margin-bottom: 10px;\n\n ${breakpoints.m} {\n margin-bottom: 0;\n }\n `}\n\n &::after {\n content: '';\n position: absolute;\n left: 0;\n bottom: -5px;\n width: 40px;\n border-bottom: 2px solid ${colors.red};\n }\n\n ${breakpoints.m} {\n font-size: 24px;\n }\n `,\n distance: css`\n font-size: 14px;\n line-height: 19px;\n font-weight: 400;\n color: ${colors.navy};\n margin-top: 0;\n\n ${breakpoints.m} {\n font-size: 14px;\n line-height: 19px;\n font-weight: 400;\n margin-top: ${spacing.xs};\n }\n `,\n subtitle: css`\n display: block;\n color: ${colors.darkGrey};\n `,\n jumpSession: css`\n ${typography.headings[6].mobile};\n font-weight: 500;\n padding-bottom: ${spacing.s};\n padding-top: ${spacing.s};\n border-top: 1px solid ${colors.lightGrey};\n `,\n animateSession: css`\n opacity: 0;\n animation: fade_in_show 1.5s ease-in-out 0s forwards;\n\n @keyframes fade_in_show {\n from {\n opacity: 0;\n transform: translate3d(0, 40%, 0);\n }\n\n to {\n opacity: 1;\n transform: none;\n }\n }\n `,\n venueInfo: css`\n padding-bottom: 0.5rem;\n font-weight: 600;\n font-size: 14px;\n white-space: no-wrap;\n\n ${breakpoints.m} {\n padding-top: 0.5rem;\n // padding-bottom: 0;\n font-size: 18px;\n }\n `,\n border: css`\n border-bottom: 1px solid ${colors.lightGrey};\n `,\n venueDescription: isMapPage => css`\n background-color: ${colors.lightGrey};\n color: ${colors.navy};\n border-radius: ${borderRadius.l};\n padding: 1.5rem 1.5rem 0.5rem 1.5rem;\n display: grid;\n grid-template-columns: 12% auto;\n align-items: inherit;\n margin-top: 1.5rem;\n margin-bottom: 1.5rem;\n border-radius: ${borderRadius.l};\n margin-right: 1.5rem;\n p {\n line-height: 1.5rem;\n }\n\n ${isMapPage === false &&\n css`\n ${breakpoints.m} {\n grid-template-columns: 5% 95%;\n padding: 0.5rem 4.5rem 0.5rem 4.5rem;\n margin-right: 0;\n }\n `}\n\n ${isMapPage === true &&\n css`\n margin-right: 0.5rem;\n\n ${breakpoints.m} {\n margin-right: 1rem;\n }\n `}\n `,\n\n link: (isDesktop, isMapPage) => css`\n font-size: 14px;\n font-weight: 400;\n text-transform: uppercase;\n padding-top: 1rem;\n display: block;\n line-height: 24px;\n color: ${colors.blue};\n text-decoration: none;\n\n ${(isDesktop === false || isMapPage === true) &&\n css`\n line-height: 45px;\n &::before {\n content: '';\n ${isMapPage === false &&\n css`\n position: absolute;\n `}\n\n display: block;\n width: 40px;\n border-bottom: 1px solid ${colors.red};\n }\n `}\n\n ${breakpoints.m} {\n font-size: 16px;\n ${isMapPage === false &&\n css`\n display: inline;\n `}\n padding-left: ${isDesktop === false || isMapPage === true\n ? 0\n : '1.2rem'};\n }\n `,\n moreInfo: css`\n padding-top: 1rem;\n\n ${breakpoints.m} {\n padding-top: 0;\n }\n `,\n rightArrow: css`\n color: ${colors.red};\n margin-left: 0.3125rem;\n `,\n alertIcon: css`\n ${breakpoints.m} {\n margin-top: 0.4rem;\n }\n `,\n showmore: css`\n padding-left: 0.5rem;\n `,\n sessionContainer: (isMapPage, cardsLength, isClubPage) => css`\n display: grid;\n grid-gap: ${spacing.s};\n padding-bottom: ${spacing.s};\n margin: ${spacing.s} ${cardsLength > 1 ? 0 : spacing.s} ${spacing.s} 0;\n ${cardsLength > 1 &&\n css`\n grid-template-columns: repeat(${cardsLength}, minmax(253px, auto));\n align-items: center;\n overflow-x: auto;\n -webkit-overflow-scrolling: auto;\n padding-right: ${spacing.s};\n\n ${isClubPage &&\n css`\n justify-content: stretch;\n `}\n `}\n\n ${breakpoints.m} {\n padding-bottom: ${spacing.s};\n grid-template-columns: none;\n\n ${cardsLength <= 2 &&\n isClubPage &&\n css`\n justify-content: stretch;\n `}\n\n ${!isMapPage &&\n css`\n grid-template-columns: repeat(3, minmax(312px, 1fr));\n `}\n }\n `,\n buttonWrapper: css`\n padding: 0 ${spacing.s} ${spacing.m} 0;\n\n ${breakpoints.m} {\n padding: 0 ${spacing.s} 2.5rem 0;\n }\n `,\n linkDirSection: css`\n padding-right: ${spacing.s};\n `,\n iconStyle: isClubPage => css`\n max-width: 32px;\n\n ${isClubPage &&\n css`\n max-width: 24px;\n `}\n\n ${breakpoints.m} {\n max-width: 24px;\n }\n `,\n info: css`\n color: ${colors.navy};\n `,\n secondaryBtn: css`\n background-color: ${colors.white};\n border: 1px solid ${colors.blue};\n margin: 1rem 0;\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport { recommendationsPageAnalytics } from '../../analyticsConsts';\nimport { CLUB } from '../../const';\nimport Button from '../Button';\nimport useStyles from './styles';\n\nconst { MO_RECOMMENDED_CLUB_fURTHER_AWAY, MO_RECOMMENDED_VENUE_fURTHER_AWAY } =\n recommendationsPageAnalytics;\n\nconst MoreResultsSection = ({ onClick, selectedFootballType }) => {\n const styles = useStyles();\n\n return (\n
    \n
    \n
    Not found something you fancy yet?
    \n\n \n Find {selectedFootballType === CLUB ? 'clubs' : 'venues'} further away\n \n
    \n
    \n );\n};\n\nexport default MoreResultsSection;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { spacing, colors, breakpoints } = useTheme();\n\n return {\n footer: css`\n background-color: ${colors.white};\n position: relative;\n display: grid;\n align-items: center;\n width: 100%;\n padding: 0 ${spacing.m} ${spacing.s};\n text-align: center;\n\n ${breakpoints.l} {\n padding: 1.5rem;\n justify-items: center;\n }\n `,\n textWrapper: css`\n position: relative;\n z-index: 1;\n text-align: center;\n `,\n mainText: css`\n font-size: 20px;\n line-height: 22px;\n color: ${colors.navy};\n letter-spacing: -0.02em;\n font-weight: 700;\n `,\n cta: css`\n text-transform: uppercase;\n margin: ${spacing.s} auto 1.5rem auto;\n\n &:focus {\n border: 1px solid ${colors.blue};\n background-color: transparent;\n color: ${colors.blue};\n }\n\n ${breakpoints.l} {\n width: 21.5625rem;\n }\n `,\n };\n};\n","import {\n ADULTCLUB_URL,\n AGE_UK_URL,\n JUST_PLAY_URL,\n LETGOGIRLSPLAY_URL,\n ONBOARDING_IFRAME_URL,\n ONBOARDING_URL,\n SQUAD_GIRLS_URL,\n VOLUNTEER_URL,\n WILDCATS_URL,\n YOUTH_CLUB_URL,\n} from '../../const';\n\nexport default () => {\n switch (true) {\n case JSON.parse(sessionStorage.getItem('ISIFRAME')):\n return ONBOARDING_IFRAME_URL;\n case JSON.parse(sessionStorage.getItem('ISLETGOGIRLSPLAY')):\n return LETGOGIRLSPLAY_URL;\n case JSON.parse(sessionStorage.getItem('ISWILDCATS')):\n return WILDCATS_URL;\n case JSON.parse(sessionStorage.getItem('ISJUSTPLAY')):\n return JUST_PLAY_URL;\n case JSON.parse(sessionStorage.getItem('ISAGEUK')):\n return AGE_UK_URL;\n case JSON.parse(sessionStorage.getItem('ISYOUTHCLUB')):\n return YOUTH_CLUB_URL;\n case JSON.parse(sessionStorage.getItem('ISADULTCLUB')):\n return ADULTCLUB_URL;\n case JSON.parse(sessionStorage.getItem('ISSQUADGIRLS')):\n return SQUAD_GIRLS_URL;\n case JSON.parse(sessionStorage.getItem('ISVOLUNTEER')):\n return VOLUNTEER_URL;\n default:\n return ONBOARDING_URL;\n }\n};\n","/** @jsxImportSource @emotion/react */\n\nimport { useLayoutEffect, useRef, useState } from 'react';\nimport { useHistory } from 'react-router';\n\nimport { recommendationsPageAnalytics } from '../../analyticsConsts';\nimport {\n BOYS_OR_MEN,\n BOYS_OR_MEN_MIXED,\n GIRLS_OR_WOMEN,\n GIRLS_OR_WOMEN_MIXED,\n KICKABOUT_CASUAL,\n PLAY_WITH_ID,\n} from '../../const';\nimport { useFilterPanelToggleContext } from '../../context/filterPanelToggle';\nimport { useMORecommendations } from '../../context/moRecommendations';\nimport { usePreferencesContext } from '../../context/preferences';\nimport { useRecommendations } from '../../context/recommendations';\nimport useErrorBoundary from '../../hooks/useErrorBoundary';\nimport useOnboardingURL from '../../hooks/useOnboardingURL';\nimport {\n getMiniOnboardingRecommendations,\n getRecommendations,\n} from '../../services';\nimport Button from '../Button';\nimport LinkButton from '../LinkButton';\nimport Loader from '../Loader';\nimport Text from '../Text';\nimport useStyles from './styles';\n\nconst {\n RECOMMENDED_FOOTBALL_TYPE_CTA_EXPAND_SEARCH,\n RECOMMENDED_FOOTBALL_TYPE_LINK_FILTERS,\n RECOMMENDED_FOOTBALL_TYPE_LINK_NEW_SEARCH,\n RECOMMENDED_FOOTBALL_TYPE_NO_RESULTS_TITLE,\n RECOMMENDED_FOOTBALL_TYPE_NO_RESULTS_CONTAINER,\n RECOMMENDED_FOOTBALL_TYPE_NO_RESULTS_WRAPPER,\n} = recommendationsPageAnalytics;\n\nconst NoResultsRecommendations = () => {\n const styles = useStyles();\n const history = useHistory();\n const { isFilterPanelToggled, setFilterPanelToggle } =\n useFilterPanelToggleContext();\n const [isLoading, setIsLoading] = useState(false);\n const loadingRef = useRef();\n const throwError = useErrorBoundary();\n const { preferences, setPreferences } = usePreferencesContext();\n const { SelectedFootballType: selectedFootballType, PlayWith: playWith } =\n preferences || {};\n const { setRecommendations } = useRecommendations();\n const getOnboardingURL = useOnboardingURL();\n const isMiniOnboarding = preferences?.hasOwnProperty('Category');\n const { setMORecommendations } = useMORecommendations();\n\n const getMixedRecommendations = () => {\n setIsLoading(true);\n const playWithID =\n playWith === BOYS_OR_MEN ? BOYS_OR_MEN_MIXED : GIRLS_OR_WOMEN_MIXED;\n\n const updatedPreference = {\n ...preferences,\n [PLAY_WITH_ID]: playWithID,\n };\n\n if (isMiniOnboarding) {\n getMiniOnboardingRecommendations(selectedFootballType, preferences)\n .then(({ data }) => {\n if (data) {\n setMORecommendations(data[0], selectedFootballType);\n // when we are sure the preferences have been set\n setPreferences(updatedPreference);\n setIsLoading(false);\n }\n })\n .catch(throwError);\n return;\n }\n Promise.all([\n getRecommendations(selectedFootballType, updatedPreference),\n ])\n .then(data => {\n if (data) {\n const recommendationRecords = data[0].data; // recommendation data\n setRecommendations(recommendationRecords, selectedFootballType);\n\n // when we are sure the preferences have been set\n setPreferences(updatedPreference);\n setIsLoading(false);\n }\n })\n .catch(throwError);\n };\n\n useLayoutEffect(() => {\n if (isLoading) {\n loadingRef.current?.focus();\n }\n }, [isLoading]);\n\n const isCasual = selectedFootballType === KICKABOUT_CASUAL;\n\n return (\n
    \n {!isLoading ? (\n \n \n Sorry, we couldn’t find a recommendation\n \n
    \n {playWith === BOYS_OR_MEN && isCasual ? (\n \n Increase your chances of finding a game by including mixed\n football options in your search results\n \n ) : playWith === GIRLS_OR_WOMEN && isCasual ? (\n \n Expand your search results by including mixed games – a fun and\n friendly option in Casual football\n \n ) : (\n \n Try broadening\n setFilterPanelToggle(!isFilterPanelToggled)}\n >\n your filters\n {' '}\n like days and location, or start a\n history.push(getOnboardingURL)}\n >\n new search\n \n \n )}\n
    \n {(playWith === BOYS_OR_MEN || playWith === GIRLS_OR_WOMEN) &&\n isCasual && (\n
    \n getMixedRecommendations()}\n >\n expand search\n \n
    \n )}\n
    \n ) : (\n \n )}\n \n );\n};\n\nexport default NoResultsRecommendations;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { breakpoints, colors, spacing, typography, borderRadius } = useTheme();\n\n return {\n base: css`\n background-color: ${colors.white};\n box-shadow: 0px 4px 6px rgba(91, 104, 133, 0.1);\n border-radius: 8px;\n position: relative;\n display: grid;\n align-items: center;\n justify-items: center;\n width: 100%;\n grid-auto-rows: 200px;\n padding: ${spacing.m} ${spacing.s};\n grid-auto-columns: 1fr;\n text-align: center;\n\n ${breakpoints.m} {\n grid-auto-rows: 280px;\n max-height: 280px;\n padding: 0;\n }\n `,\n header: css`\n font-size: 1.75rem;\n line-height: 1.625rem;\n padding: 0 0 ${spacing.s} 0;\n\n ${breakpoints.m} {\n ${typography.headings[5].desktop};\n padding: 30px;\n }\n\n ${breakpoints.xl} {\n padding: 0 0 ${spacing.s} 0;\n }\n\n color: ${colors.navy};\n position: relative;\n margin-bottom: ${spacing.s};\n text-align: center;\n &::before {\n content: '';\n position: absolute;\n right: 0;\n bottom: 0;\n height: ${borderRadius.s};\n width: 100px;\n background: ${colors.red};\n left: 50%;\n transform: translate(-50%, -50%);\n }\n `,\n description: css`\n p {\n color: ${colors.darkGrey};\n line-height: 1.3rem;\n padding: 0 ${spacing.s};\n\n ${breakpoints.m} {\n line-height: 0.8rem;\n }\n }\n `,\n newSearch: css`\n color: ${colors.darkGrey};\n display: inline-block;\n font-weight: 400;\n margin-left: 3px;\n text-decoration: none;\n border-bottom: 1.5px solid ${colors.darkGrey};\n display: inline-block;\n padding: 0;\n `,\n cta: css`\n background-color: ${colors.red};\n color: ${colors.white};\n text-transform: uppercase;\n max-width: 17.625rem;\n margin: 0 auto;\n margin-top: ${spacing.s};\n text-transform: uppercase;\n\n ${breakpoints.l} {\n width: 17.625rem;\n }\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport { useHistory } from 'react-router-dom';\n\nimport { recommendationsPageAnalytics } from '../../analyticsConsts';\nimport useOnboardingURL from '../../hooks/useOnboardingURL';\nimport Button from '../Button';\nimport ExternalLink from '../ExternalLink';\nimport useStyles from './styles';\n\nconst {\n RECOMMENDED_FOOTBALL_TYPE_CTA_START_SEARCH,\n RECOMMENDED_FOOTBALL_TYPE_CTA_LEARN_MORE,\n} = recommendationsPageAnalytics;\n\nconst COUNTY_FA_LINK =\n 'https://www.englandfootball.com/explore/county-football-associations';\n\nconst RecommendationFooter = () => {\n const styles = useStyles();\n const history = useHistory();\n const getOnboardingURL = useOnboardingURL();\n\n return (\n
    \n
    \n
    Can’t find what you’re looking for?
    \n\n history.push(getOnboardingURL)}\n >\n Start new search\n \n\n
    \n Alternatively,\n \n contact your local County FA\n \n for more opportunities to{' '}\n {JSON.parse(sessionStorage.getItem('ISVOLUNTEER'))\n ? 'volunteer'\n : 'play'}\n
    \n
    \n
    \n );\n};\n\nexport default RecommendationFooter;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\nimport publicPath from '../../utils/publicPath';\n\nexport default () => {\n const { colors, breakpoints } = useTheme();\n\n return {\n footer: css`\n background-color: ${colors.white};\n position: relative;\n display: grid;\n align-items: center;\n justify-items: center;\n width: 100%;\n grid-auto-rows: minmax(300px, auto);\n max-height: 300px;\n border-top: 1px solid ${colors.lightGrey};\n\n &::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 40%;\n height: 100%;\n background: url(${publicPath(\n '/images/desktop/crops/left-phone-crop.svg'\n )})\n left 0 no-repeat;\n background-size: contain;\n\n ${breakpoints.m} {\n background: url(${publicPath(\n '/images/desktop/crops/left-result-crop.svg'\n )})\n left 0 no-repeat;\n background-size: contain;\n }\n }\n\n &::after {\n content: '';\n position: absolute;\n top: 0;\n right: 0;\n width: 35%;\n height: 100%;\n background: url(${publicPath(\n '/images/desktop/crops/right-phone-crop.svg'\n )})\n right bottom no-repeat;\n background-size: contain;\n\n ${breakpoints.m} {\n background: url(${publicPath(\n '/images/desktop/crops/right-result-crop.svg'\n )})\n right bottom no-repeat;\n background-size: contain;\n }\n }\n `,\n textWrapper: css`\n position: relative;\n z-index: 1;\n text-align: center;\n `,\n mainText: css`\n font-size: 20px;\n line-height: 22px;\n color: ${colors.navy};\n letter-spacing: -0.02em;\n `,\n cta: css`\n background-color: ${colors.red};\n color: ${colors.white};\n text-transform: uppercase;\n max-width: 345px;\n margin: 1.5rem auto;\n\n ${breakpoints.l} {\n width: 21.5625rem;\n }\n `,\n link: css`\n display: inline-block;\n color: ${colors.navy};\n font-style: normal;\n font-weight: normal;\n letter-spacing: 0.02em;\n line-height: 22px;\n padding: 0 0.2rem 0 0.2rem;\n `,\n linkWidth: css`\n width: 75%;\n\n ${breakpoints.m} {\n width: 100%;\n }\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\n\nimport { Fragment, useEffect, useRef, useState } from 'react';\nimport { Redirect } from 'react-router-dom';\n\nimport {\n CLUB,\n EMPTY_STRING,\n MINIONBOARDING_TABS,\n MO_PAGE_SIZE_VALUE,\n PAGE_NUMBER,\n RECOMMENDATIONS_PAGE_TITLE_MAPPING,\n} from '../../const';\nimport { useMORecommendations } from '../../context/moRecommendations';\nimport { usePreferencesContext } from '../../context/preferences';\nimport { useScrollDirectionContext } from '../../context/scrollDirection';\nimport useErrorBoundary from '../../hooks/useErrorBoundary';\nimport useImage from '../../hooks/useImage';\nimport useMediaQuery from '../../hooks/useMediaQuery';\nimport usePageLoadInfo from '../../hooks/usePageLoadInfo';\nimport {\n getMiniOnboardingRecommendations,\n getMORecommendationsPageData,\n} from '../../services';\nimport LinkTabs from '../LinkTabs';\nimport Loader from '../Loader';\nimport MOFAInitiativeEvent from '../MOFAInitiativeEvent';\nimport MOHero from '../MOHero';\nimport MORecommendationList from '../MORecommendationList';\nimport MoreResultsSection from '../MoreResultsSection';\nimport NoResultsRecommendations from '../NoResultsRecommendations';\nimport RecommendationFooter from '../RecommendationFooter';\nimport useStyles from './styles';\n\nconst SHOWN_INCREMENT = 5;\n\nexport const normalisedCenterData = recommendationsGroup => {\n return recommendationsGroup.map(date => {\n const totalSession = [];\n const totalProvider = [];\n const totalPitchFinder = [];\n const providerName = [];\n totalPitchFinder.push(date?.PitchFinderId);\n if (date.ProviderCartDto) {\n date?.ProviderCartDto?.map(group => {\n providerName.push(group.ProviderName);\n return totalProvider.push(group.ProviderId);\n });\n }\n date?.SessionCartDto &&\n date?.SessionCartDto?.map(group => {\n return group.sessionGroup.map(sessionData => {\n return totalSession.push(sessionData);\n });\n });\n return {\n ...date,\n totalSession,\n totalProvider,\n totalPitchFinder,\n providerName,\n };\n });\n};\n\nconst SetImagePath = (data, FootballType, imgData) => {\n const dataKey = Object.keys(data.hero);\n dataKey.forEach(detailKey => {\n if (FootballType === parseInt(detailKey)) {\n data.hero[\n detailKey\n ].images.desktop.src = `/images/desktop/recommendations/hero/${imgData}.jpg`;\n\n data.hero[\n detailKey\n ].images.mobile.src = `/images/mobile/recommendations/hero/${imgData}.jpg`;\n }\n });\n return data;\n};\n\nconst MiniOnboardingDetailPage = () => {\n const { scrolldirectionContext } = useScrollDirectionContext();\n const styles = useStyles();\n const throwError = useErrorBoundary();\n const [pageData, setPageData] = useState();\n const [isLoading, setIsLoading] = useState(false);\n const [isLoadingMore, setIsLoadingMore] = useState(false);\n const [recommendations, setRecommendations] = useState([]);\n const [numberShown, setNumberShown] = useState(SHOWN_INCREMENT);\n const [isRecommendationSet, setIsRecommendationSet] = useState(false);\n const [selectedType, setSelectedType] = useState('LISTVIEW');\n const loadingRef = useRef();\n const { preferences } = usePreferencesContext();\n const isDesktop = useMediaQuery('screen and (min-width: 768px)');\n const [totalRecommendations, setTotalRecommendations] = useState();\n const { FootballType, SelectedFootballType: selectedFootballType } =\n preferences || {};\n const {\n clubMORecommendations,\n casualMORecommendations,\n addMORecommendations,\n setMORecommendations,\n } = useMORecommendations();\n // to get dynamic image url path\n const imagePath = useImage();\n const isClub = selectedFootballType === CLUB;\n\n // filter recommendation based on group\n // sorting data based on distance\n useEffect(() => {\n const recommendationsGroup = isClub\n ? clubMORecommendations\n : casualMORecommendations;\n setIsRecommendationSet(true);\n if (\n !recommendationsGroup?.RecommendationClubCartDto &&\n !recommendationsGroup?.RecommendationCentreCartDto\n ) {\n return null;\n }\n let normalisedData =\n recommendationsGroup?.RecommendationClubCartDto ||\n recommendationsGroup?.RecommendationCentreCartDto;\n\n const checkData =\n recommendationsGroup?.RecommendationCentreCartDto &&\n recommendationsGroup?.RecommendationProviderCartDto\n ? recommendationsGroup?.RecommendationCentreCartDto.concat(\n recommendationsGroup?.RecommendationProviderCartDto\n )\n : recommendationsGroup?.RecommendationCentreCartDto &&\n !recommendationsGroup?.RecommendationProviderCartDto\n ? recommendations?.RecommendationCentreCartDto\n : !recommendationsGroup?.RecommendationCentreCartDto &&\n recommendationsGroup?.RecommendationProviderCartDto &&\n recommendations?.RecommendationProviderCartDto;\n\n if (\n selectedFootballType !== CLUB &&\n (recommendationsGroup?.RecommendationCentreCartDto ||\n recommendationsGroup?.RecommendationProviderCartDto)\n ) {\n normalisedData = normalisedCenterData(checkData)?.sort(\n (currentData, nextData) =>\n currentData.DistanceFromUserLocation >\n nextData.DistanceFromUserLocation\n ? 1\n : currentData.DistanceFromUserLocation <\n nextData.DistanceFromUserLocation\n ? -1\n : 0\n );\n }\n setRecommendations(normalisedData);\n setTotalRecommendations(\n recommendationsGroup?.TotalClubsRecords ||\n recommendationsGroup?.TotalCentresRecords\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [clubMORecommendations, casualMORecommendations, selectedFootballType]);\n\n // set the page title based on user preference of football type.\n usePageLoadInfo(\n 'miniOnboardingResults',\n `${RECOMMENDATIONS_PAGE_TITLE_MAPPING[FootballType]}`\n );\n\n useEffect(() => {\n getMORecommendationsPageData()\n .then(({ data }) => {\n if (data) {\n // set dynamic src for hero images\n data = SetImagePath(data, FootballType, imagePath);\n setPageData({ ...data });\n }\n })\n .catch(throwError);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedFootballType, imagePath]);\n\n useEffect(() => {\n if (!recommendations && !!selectedFootballType) {\n const previouslyFocusedElement = document.activeElement;\n setIsLoading(true);\n\n getMiniOnboardingRecommendations(selectedFootballType, preferences)\n .catch(throwError)\n .then(({ data }) => {\n if (data) {\n const recommendationRecords = data[0].data;\n setMORecommendations(recommendationRecords, selectedFootballType);\n\n setIsLoading(false);\n setIsRecommendationSet(true);\n setTimeout(() => {\n // if the user focuses on the loading message\n // we want to focus back on the previously focused element\n if (loadingRef.current?.contains(document.activeElement)) {\n previouslyFocusedElement?.focus();\n }\n }, 100);\n }\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n preferences,\n selectedFootballType,\n setMORecommendations,\n recommendations,\n throwError,\n ]);\n\n const showNext = () => {\n setNumberShown(numberShown + SHOWN_INCREMENT);\n };\n\n const getMoreResults = () => {\n if (!recommendations) {\n return;\n }\n\n // if we already have more than the current shown amount\n // show the next 10\n if (recommendations.length > numberShown) {\n showNext();\n return;\n }\n\n setIsLoadingMore(true);\n const sortedData = [];\n getMiniOnboardingRecommendations(selectedFootballType, {\n ...preferences,\n // get the page after the current one\n [PAGE_NUMBER]:\n preferences['FootballType'] === 1\n ? preferences.PageNumber + 1\n : Math.floor(recommendations?.length / MO_PAGE_SIZE_VALUE) + 1,\n })\n .then(({ data }) => {\n if (data) {\n sortedData.push(data);\n addMORecommendations(sortedData[0], selectedFootballType);\n }\n if (preferences['FootballType'] === 1) {\n preferences[PAGE_NUMBER] = preferences.PageNumber + 1;\n }\n setIsLoadingMore(false);\n showNext();\n })\n .catch(throwError);\n };\n\n useEffect(() => {\n localStorage.setItem('pathInfomation', window.location.pathname);\n }, []);\n\n if (!selectedFootballType) {\n return ;\n }\n\n return (\n
    \n {selectedFootballType && pageData?.hero && (\n \n )}\n
    \n \n {isLoading && (\n \n )}\n {!isLoading && recommendations && recommendations.length > 0 && (\n \n \n
    \n {recommendations &&\n recommendations.length > 0 &&\n recommendations.map((data, index) => {\n return (\n
    \n \n
    \n );\n })}\n
    \n
    \n )}\n
    \n {isLoadingMore ? (\n \n ) : totalRecommendations &&\n recommendations.length < totalRecommendations ? (\n \n ) : (\n EMPTY_STRING\n )}\n {recommendations && recommendations.length > 0 && pageData && (\n \n )}\n
    \n {isRecommendationSet &&\n recommendations &&\n recommendations.length === 0 && (\n
    \n \n
    \n )}\n \n
    \n );\n};\n\nexport default MiniOnboardingDetailPage;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { borderRadius, typography, breakpoints, spacing, colors } = useTheme();\n\n return {\n base: css`\n height: 100%;\n display: grid;\n grid-template-rows: auto auto auto;\n grid-template-columns: 100%;\n `,\n hero: css`\n background-position: center ${spacing.m};\n\n &::before {\n top: 11vh;\n\n ${breakpoints.m} {\n top: 15vh;\n }\n\n ${breakpoints.xl} {\n top: 0;\n }\n }\n\n h1 {\n ${typography.headings[4].mobile};\n max-width: 90%;\n font-size: 2.625rem;\n\n ${breakpoints.m} {\n ${typography.headings[3].desktop};\n max-width: 70%;\n margin: auto;\n }\n }\n\n grid-template-rows: 85% auto;\n align-self: center;\n\n ${breakpoints.m} {\n grid-template-rows: 70% 50%;\n align-self: self-end;\n }\n\n ${breakpoints.xl} {\n grid-template-rows: 55% 50%;\n h1 {\n max-width: 50%;\n }\n }\n `,\n wrapper: css`\n width: 100vw;\n max-width: 100%;\n margin: calc(100vh - 18vh) auto 0 auto;\n background-color: ${colors.white};\n position: relative;\n\n ${breakpoints.m} {\n width: 100vw;\n max-width: 100%;\n margin: calc(100vh - 10vh) auto ${spacing.m};\n border-radius: ${borderRadius.xxl};\n }\n\n ${breakpoints.xl} {\n max-width: 1196px;\n margin-top: 68vh;\n margin: calc(100vh - 25vh) auto ${spacing.m};\n }\n `,\n venueListContainer: css`\n margin-top: 0.0625rem;\n margin: 0 0 0 ${spacing.m};\n position: relative;\n overflow: hidden;\n\n ${breakpoints.m} {\n margin: 0 ${spacing.m};\n }\n\n ${breakpoints.xl} {\n margin: 0 6rem;\n }\n `,\n loader: css`\n padding: ${spacing.m};\n `,\n noResultWrapper: css`\n margin-bottom: ${spacing.m};\n\n ${breakpoints.m} {\n max-width: 992px;\n width: 90vw;\n margin: 0 auto ${spacing.m};\n }\n\n ${breakpoints.l} {\n max-width: 1196px;\n margin: 0 auto ${spacing.m};\n }\n `,\n venueRecommendWrapper: css`\n margin-top: ${spacing.m};\n `,\n };\n};\n","import { useEffect } from 'react';\nimport { useLocation } from 'react-router-dom';\n\nexport default (className = '', matchPathname) => {\n const { pathname } = useLocation();\n const matched = pathname === matchPathname;\n\n if (!matched) return;\n\n useEffect(() => {\n document.querySelector('body').classList.add(className);\n\n return () => {\n document.querySelector('body').classList.remove(className);\n };\n }, [className]);\n};\n","export const EXPANDED = 'EXPANDED';\nexport const SHRUNK = 'SHRUNK';\nexport const STANDARD = 'STANDARD';\nconst EXPAND = 'EXPAND';\nconst EXPAND_MAP = 'EXPAND_MAP';\nconst SHRINK = 'SHRINK';\nexport const EXPAND_ACTION = { type: EXPAND };\nexport const EXPAND_MAP_ACTION = { type: EXPAND_MAP };\nexport const SHRINK_ACTION = { type: SHRINK };\n\nexport default (state, action) => {\n switch (action.type) {\n case EXPAND:\n if (state === EXPANDED) {\n return state;\n }\n\n if (state === SHRUNK) {\n return STANDARD;\n }\n\n return EXPANDED;\n case SHRINK:\n if (state === EXPANDED) {\n return STANDARD;\n }\n\n return state;\n case EXPAND_MAP:\n return SHRUNK;\n default:\n return state;\n }\n};","/**\n * We use a square to position our points with the following values\n * (N)\n * (NW)7 0 1(NE)\n * (W)6 2(E)\n * (SW)5 4 3(SE)\n * (S)\n */\nconst getDirection = index => {\n const position = index % 8;\n const offset = Math.floor(index / 8) + 1;\n\n return { position, offset };\n};\n/**\n * Since we're not at the poles, we can use the dirty estimate that:\n * - 111,111 meters (111.111 km) in the y direction is 1 degree (of latitude)\n * - 111,111 * cos(latitude) meters in the x direction is 1 degree (of longitude)\n */\nconst generateClosePoint = (point, position, offset = 1) => {\n const direction = position >= 4 ? -1 : 1;\n const distance = 5 * offset * direction;\n\n const verticalSpace = distance / 111111;\n const horizontalSpace = distance / (111111 * Math.cos(point.Latitude));\n\n if (position === 0 || position === 4) {\n return {\n ...point,\n Latitude: point.Latitude + verticalSpace,\n };\n }\n\n if (position === 1 || position === 5) {\n return {\n Latitude: point.Latitude + verticalSpace,\n Longitude: point.Longitude + horizontalSpace,\n };\n }\n\n if (position === 2 || position === 6) {\n return {\n ...point,\n Longitude: point.Longitude + horizontalSpace,\n };\n }\n\n return {\n Latitude: point.Latitude - verticalSpace,\n Longitude: point.Longitude + horizontalSpace,\n };\n};\n\nconst processLocationGroups = groupsArray => {\n return groupsArray?.reduce((acc, group) => {\n if (group.length === 1) {\n return [...acc, ...group];\n }\n\n const processedArray = group.map((location, index) => {\n const { position, offset } = getDirection(index);\n\n return {\n ...location,\n ...generateClosePoint(location, position, offset),\n };\n });\n\n return [...acc, ...processedArray];\n }, []);\n};\n\n/**\n * with this function we group the original array by coordinates,\n * each pair of lat/long is represented by an array and contains all the points\n * with the same coordinates\n */\nconst groupLocations = dataArray =>\n dataArray?.reduce((acc, current) => {\n if (!acc.length) {\n return [[current]];\n }\n\n const previousValue = acc[acc.length - 1];\n const { Latitude, Longitude } = current;\n\n // if the previous element has the same coordinates as the current element\n if (\n previousValue[0].Latitude === Latitude &&\n previousValue[0].Longitude === Longitude\n ) {\n // copy the array to avoid modifying directly\n const copiedArray = [...acc];\n // push the current element into the previous array\n copiedArray[copiedArray.length - 1].push(current);\n\n // return the copy\n return copiedArray;\n }\n\n // otherwise push the current element as a new set of coordinates\n return [...acc, [current]];\n }, []);\n\nconst normaliseRecommendations = data => {\n const groupedLocations = groupLocations(data);\n\n return processLocationGroups(groupedLocations);\n};\n\nexport default normaliseRecommendations;\n","import React, { useMemo } from 'react';\n\nimport HiddenContent from '../HiddenContent';\n\nconst AlertHiddenRegion = ({ text, live = 'polite' }) => {\n const memoedText = useMemo(() => text || '', [text]);\n\n return {memoedText};\n};\n\nexport default AlertHiddenRegion;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { breakpoints, colors, spacing, typography, borderRadius } = useTheme();\n\n return {\n base: css`\n max-width: 365px;\n border-radius: ${borderRadius.l};\n color: ${colors.navy};\n font-weight: 700;\n background-color: ${colors.white};\n cursor: pointer;\n text-decoration: none;\n margin: 0 ${spacing.xs} ${spacing.xs};\n padding: ${spacing.s};\n border: 1px solid ${colors.darkGrey};\n\n &:focus {\n outline: 2px solid ${colors.navy};\n }\n\n &[aria-expanded='true'] {\n margin: ${spacing.xs};\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n\n height: 100%;\n cursor: default;\n\n ${breakpoints.l} {\n height: auto;\n border: 1px solid ${colors.navy};\n border-radius: ${borderRadius.l};\n }\n }\n\n &[aria-expanded='false']:hover {\n background-color: ${colors.lightBlue};\n }\n `,\n titleWrapper: ClubName => css`\n position: relative;\n &::after {\n content: '';\n position: absolute;\n left: 0;\n bottom: ${ClubName ? '-11px' : '-4px'};\n width: 32px;\n border-bottom: 1px solid ${colors.red};\n }\n `,\n title: clubName => css`\n font-family: 'FS Dillon Bold';\n font-weight: bold;\n line-height: 1;\n width: 95%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n text-transform: capitalize;\n\n ${clubName &&\n css`\n padding-left: 2.5rem;\n\n &::after {\n content: '';\n position: absolute;\n left: 0;\n top: -6px;\n bottom: 0;\n width: 28px;\n height: 28px;\n border: 1px solid ${colors.darkGrey};\n border-radius: 50%;\n background: url('/images/desktop/initiativeLogo/ef-logo.svg') center\n center no-repeat;\n background-size: 17px 30px;\n }\n `}\n\n ${breakpoints.l} {\n font-family: 'FS Dillon Bold';\n font-weight: bold;\n line-height: 1.1;\n }\n `,\n info: isTeamAvailable => css`\n ${typography.body.mobile};\n display: grid;\n grid-template-columns: 100%;\n ${isTeamAvailable &&\n css`\n grid-template-columns: 70% 30%;\n `},\n grid-column-gap: 0.5rem;\n margin-top: 14px;\n `,\n distance: css`\n color: ${colors.darkGrey};\n font-size: 14px;\n line-height: 18px;\n font-weight: normal;\n\n svg {\n margin-right: 0.3rem;\n }\n `,\n address: css`\n font-size: 1rem;\n line-height: 18px;\n color: ${colors.darkGrey};\n letter-spacing: 0.02em;\n font-weight: normal;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n text-transform: capitalize;\n `,\n search: css`\n font-size: 1rem;\n line-height: 20px;\n margin: 7px 0;\n `,\n teamInfo: css`\n color: ${colors.darkGrey};\n padding-bottom: 5px;\n display: grid;\n grid-template-columns: 2fr auto 1fr;\n p {\n font-size: 14px;\n line-height: 20px;\n font-weight: normal;\n span {\n padding-left: 7px;\n }\n }\n `,\n teamName: css`\n width: 95%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n `,\n teamPlayDay: isCasual => css`\n text-align: center;\n &::before {\n content: '|';\n padding-right: 5px;\n }\n ${isCasual &&\n css`\n &::after {\n content: '|';\n padding-left: 4px;\n }\n `}\n `,\n image: css`\n max-width: 100%;\n max-height: 30px;\n margin: 0 auto;\n `,\n venueOfferWrapper: css`\n margin-top: 7px;\n p {\n font-size: 14px;\n line-height: 16px;\n &:first-of-type {\n font-weight: bold;\n }\n }\n `,\n otherType: css`\n color: ${colors.darkGrey};\n padding: 7px 0;\n `,\n buttonWrapper: css`\n margin-top: ${spacing.s};\n a {\n height: 2.063rem;\n padding: 9px 16px;\n }\n `,\n options: css`\n display: grid;\n grid-template-columns: 1fr 1fr;\n grid-gap: 10px;\n `,\n primaryBtn: css`\n text-transform: uppercase;\n `,\n secondaryBtn: css`\n background-color: ${colors.white};\n border: 1px solid ${colors.blue};\n `,\n logoWrapper: css`\n display: flex;\n align-items: center;\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport { forwardRef, Fragment, useLayoutEffect, useRef } from 'react';\n\nimport { recommendationsMapPageAnalytics } from '../../analyticsConsts';\nimport formatAddress from '../../utils/formatAddress';\nimport HiddenContent from '../HiddenContent';\nimport { Pin } from '../Icons';\nimport useStyles from '../MOProviderClubCard/styles';\nimport Text from '../Text';\n\nconst { CTA_PROVIDER_VENUE_CARD, PROVIDER_VENUE_CARD_TITLE } =\n recommendationsMapPageAnalytics;\n\nconst ProviderCenterCard = forwardRef(\n (\n {\n index,\n CentreName,\n CentreId,\n Address,\n DistanceFromUserLocation,\n SessionCartDto,\n SessionCount,\n OfferedCentres,\n onClick,\n isSelected,\n Latitude,\n Longitude,\n providerid,\n PitchFinderId,\n providerName,\n ...rest\n },\n ref\n ) => {\n const cardRef = useRef();\n const styles = useStyles();\n const isSessionAvailable = SessionCartDto && SessionCartDto.length > 0;\n const handleKeyPress = event => {\n const enterOrSpace = event.which === 13 || event.which === 32;\n\n if (enterOrSpace) {\n event.preventDefault();\n onClick(CentreId);\n }\n };\n\n // if the card gets selected move the focus to it\n useLayoutEffect(() => {\n if (isSelected && cardRef.current) {\n setTimeout(() => {\n cardRef.current.focus();\n cardRef.current.scrollIntoView({\n behaviour: 'smooth',\n block: 'nearest',\n });\n }, 300);\n }\n }, [isSelected]);\n\n const accessibleProps = isSelected ? {} : { role: 'button', tabIndex: 0 };\n\n return (\n \n
  • \n onClick(CentreId ? CentreId : providerid)}\n onKeyPress={handleKeyPress}\n ref={cardRef}\n >\n
    \n \n {providerName.length > 0 && !CentreId\n ? providerName\n : CentreName.toLowerCase()}\n \n
    \n \n
    {formatAddress(rest)}
    \n
    \n Distance \n \n {DistanceFromUserLocation} Miles\n
    \n \n {isSessionAvailable && (\n
    \n {SessionCount} sessions match your search\n
    \n )}\n {PitchFinderId && !CentreId && (\n
    \n View Provider details for session info\n
    \n )}\n \n
  • \n
    \n );\n }\n);\n\nexport default ProviderCenterCard;\n","/** @jsxImportSource @emotion/react */\nimport { forwardRef, useLayoutEffect, useRef } from 'react';\n\nimport { recommendationsMapPageAnalytics } from '../../analyticsConsts';\nimport { EMPTY_STRING } from '../../const';\nimport HiddenContent from '../HiddenContent';\nimport { Pin } from '../Icons';\nimport Text from '../Text';\nimport useStyles from './styles';\n\nconst {\n CTA_PROVIDER_CLUB_CARD,\n PROVIDER_CLUB_CARD_TITLE,\n} = recommendationsMapPageAnalytics;\n\nconst isAddressNullCheck = value => {\n return value !== null ? `${value},` : EMPTY_STRING;\n};\n\nconst MOProviderClubCard = forwardRef(\n (\n {\n index,\n ClubName,\n ClubId,\n DistanceFromUserLocation,\n TeamsCartDto,\n TeamsCount,\n OfferedClubs,\n onClick,\n isSelected,\n Latitude,\n Longitude,\n ...rest\n },\n ref\n ) => {\n const cardRef = useRef();\n const styles = useStyles();\n const isTeamAvailable = TeamsCartDto && TeamsCartDto.length > 0;\n\n const onCheckAddress = address => {\n return `${\n address.AddressLine1 || address.AddressLine2\n }, ${isAddressNullCheck(address.AddressLine3)}\n ${isAddressNullCheck(address.City)} ${isAddressNullCheck(\n address.PostCode\n )}`;\n };\n\n const handleKeyPress = event => {\n const enterOrSpace = event.which === 13 || event.which === 32;\n\n if (enterOrSpace) {\n event.preventDefault();\n onClick(ClubId);\n }\n };\n\n // if the card gets selected move the focus to it\n useLayoutEffect(() => {\n if (isSelected && cardRef.current) {\n setTimeout(() => {\n cardRef.current.focus();\n cardRef.current.scrollIntoView({\n behaviour: 'smooth',\n block: 'nearest',\n });\n }, 300);\n }\n }, [isSelected]);\n\n const accessibleProps = isSelected ? {} : { role: 'button', tabIndex: 0 };\n\n return (\n
  • \n onClick(ClubId)}\n onKeyPress={handleKeyPress}\n ref={cardRef}\n >\n
    \n \n {ClubName}\n \n
    \n
    \n
    {onCheckAddress(rest)}
    \n
    \n Distance \n \n {DistanceFromUserLocation} Miles\n
    \n
    \n {isTeamAvailable && (\n
    \n This club has {TeamsCount} teams relevant to your search\n
    \n )}\n \n
  • \n );\n }\n);\n\nexport default MOProviderClubCard;\n","/** @jsxImportSource @emotion/react */\nimport { useMemo, useRef } from 'react';\n\nimport Map from '../MapPageService';\n\nconst ProvidersMap = ({\n data,\n userLocation,\n handleSelect,\n selectedId,\n handleMapMovement,\n momappage = 'false',\n}) => {\n const idref = useRef();\n\n const pushPins = useMemo(\n () =>\n data.map(\n ({\n ClubId,\n CentreId,\n Longitude,\n Latitude,\n ProviderCartDto,\n PitchFinderId,\n SessionCartDto,\n }) => {\n ProviderCartDto?.map(providerdetails => {\n if (!SessionCartDto && ProviderCartDto?.length < 2) {\n idref.current = providerdetails.ProviderId;\n }\n return providerdetails;\n });\n const id = ClubId\n ? ClubId\n : CentreId && !momappage\n ? CentreId\n : idref.current && !momappage\n ? idref.current\n : PitchFinderId;\n return {\n id,\n longitude: Longitude,\n latitude: Latitude,\n handleClick: () => id && handleSelect(id),\n };\n }\n ),\n [data, handleSelect, momappage]\n );\n\n return (\n \n );\n};\n\nexport default ProvidersMap;\n","/** @jsxImportSource @emotion/react */\nimport {\n Fragment,\n useEffect,\n useLayoutEffect,\n useMemo,\n useReducer,\n useRef,\n useState,\n} from 'react';\nimport { Redirect } from 'react-router-dom';\nimport { useSwipeable } from 'react-swipeable';\n\nimport { recommendationsMapPageAnalytics } from '../../analyticsConsts';\nimport {\n CLUB,\n EMPTY_STRING,\n KICKABOUT_CASUAL,\n MINIONBOARDING_TABS,\n MO_PAGE_SIZE_VALUE,\n PAGE_NUMBER,\n SELECTED_FOOTBALL_TYPE_ID,\n} from '../../const';\nimport { useMORecommendations } from '../../context/moRecommendations';\nimport { usePreferencesContext } from '../../context/preferences';\nimport useBodyClass from '../../hooks/useBodyClass';\nimport useClubVenueCoordination from '../../hooks/useClubVenueCoordination';\nimport useErrorBoundary from '../../hooks/useErrorBoundary';\nimport useMediaQuery from '../../hooks/useMediaQuery';\nimport usePageLoadInfo from '../../hooks/usePageLoadInfo';\nimport trayStateReducer, {\n EXPAND_ACTION,\n EXPAND_MAP_ACTION,\n SHRINK_ACTION,\n STANDARD,\n} from '../../reducers/trayState';\nimport { getMiniOnboardingRecommendations } from '../../services';\nimport normaliseRecommendations from '../../utils/normaliseRecommendations';\nimport AlertHiddenRegion from '../AlertHiddenRegion';\nimport Button from '../Button';\nimport { RightArrow } from '../Icons';\nimport LinkTabs from '../LinkTabs';\nimport Loader from '../Loader';\nimport { normalisedCenterData } from '../MiniOnboardingDetailPage';\nimport MOProviderCenterCard from '../MOProviderCenterCard';\nimport MOProviderClubCard from '../MOProviderClubCard';\nimport MORecommendationList from '../MORecommendationList';\nimport ProvidersMap from '../ProvidersMap';\nimport useStyles from './styles';\n\nconst { MAP_CTA_LOAD_MORE_RECOMMENDATIONS, RECOMMENDATIONS_RESULT_ON_MAP } =\n recommendationsMapPageAnalytics;\n\nconst CardMap = {\n [KICKABOUT_CASUAL]: MOProviderCenterCard,\n [CLUB]: MOProviderClubCard,\n};\n\nconst SHOWN_INCREMENT_CENTRE = 10;\nconst SHOWN_INCREMENT_CLUB = 5;\n\nconst MOMapPage = () => {\n useBodyClass('mapPage', '/results/map');\n\n const styles = useStyles();\n const throwError = useErrorBoundary();\n const { preferences } = usePreferencesContext();\n const [selectedType, setSelectedType] = useState('MAPVIEW');\n const { [SELECTED_FOOTBALL_TYPE_ID]: selectedFootballType } =\n preferences || {};\n const isDesktop = useMediaQuery('screen and (min-width: 768px)');\n\n const {\n clubMORecommendations,\n casualMORecommendations,\n addMORecommendations,\n } = useMORecommendations();\n // we pick the general type of recommendations the user has set (e.g. Club)\n const recommendationsGroup =\n selectedFootballType === CLUB\n ? clubMORecommendations\n : casualMORecommendations;\n // we extract the specific football type from the recommendations group (e.g. Futsal)\n const {\n TotalClubsRecords,\n TotalCentresRecords,\n RecommendationClubCartDto,\n RecommendationCentreCartDto,\n } = recommendationsGroup;\n // here we try to read both values, since only one will be populated for a specific football type\n const totalRecommendations = TotalClubsRecords || TotalCentresRecords;\n const recommendations = useMemo(() => {\n if (!RecommendationClubCartDto && !RecommendationCentreCartDto) {\n return null;\n }\n let normalisedData =\n recommendationsGroup?.RecommendationClubCartDto ||\n recommendationsGroup?.RecommendationCentreCartDto;\n\n if (selectedFootballType !== CLUB) {\n const checkData =\n recommendationsGroup?.RecommendationCentreCartDto &&\n recommendationsGroup?.RecommendationProviderCartDto\n ? recommendationsGroup?.RecommendationCentreCartDto.concat(\n recommendationsGroup?.RecommendationProviderCartDto\n )\n : recommendationsGroup?.RecommendationCentreCartDto &&\n !recommendationsGroup?.RecommendationProviderCartDto\n ? recommendations?.RecommendationCentreCartDto\n : !recommendationsGroup?.RecommendationCentreCartDto &&\n recommendationsGroup?.RecommendationProviderCartDto &&\n recommendations?.RecommendationProviderCartDto;\n normalisedData = normalisedCenterData(checkData);\n }\n // we need to normalise the recommendations to make sure we offset\n // pins that are at the same location\n // sorting data based on distance\n return normaliseRecommendations(normalisedData)?.sort(\n (currentData, nextData) =>\n currentData.DistanceFromUserLocation > nextData.DistanceFromUserLocation\n ? 1\n : currentData.DistanceFromUserLocation <\n nextData.DistanceFromUserLocation\n ? -1\n : 0\n );\n }, [\n RecommendationClubCartDto,\n RecommendationCentreCartDto,\n selectedFootballType,\n recommendationsGroup,\n ]);\n\n const [trayState, dispatch] = useReducer(trayStateReducer, STANDARD);\n const handlers = useSwipeable({\n onSwipedUp: () => dispatch(EXPAND_ACTION),\n onSwipedDown: () => dispatch(SHRINK_ACTION),\n preventDefaultTouchmoveEvent: true,\n });\n\n const [numberShown, setNumberShown] = useState(\n preferences['FootballType'] === 1\n ? SHOWN_INCREMENT_CENTRE\n : SHOWN_INCREMENT_CLUB\n );\n const [isLoadingMore, setIsLoadingMore] = useState(false);\n const loadingRef = useRef();\n\n // We keep track of what index the next card will be once we load more cards\n const [nextLoadedFirstIndex, setNextLoadedFirstIndex] = useState();\n const firstOfNewLoadedRef = useRef();\n\n const [selectedId, setSelectedId] = useState();\n const [isListViewSection, setIsListViewSection] = useState(true);\n const footballTitle = selectedFootballType === CLUB ? 'clubs' : 'venues';\n\n const shownRecommendations = useMemo(\n () => recommendations?.slice(0, numberShown),\n [numberShown, recommendations]\n );\n\n const pageTitle = `${selectedFootballType === CLUB ? 'Club' : 'Casual'}`;\n const selectedFootballID =\n selectedFootballType === CLUB ? 'ClubId' : 'PitchFinderId';\n\n const selectedCards = useMemo(\n () =>\n shownRecommendations?.filter(data => {\n return data[selectedFootballID] === Number(selectedId);\n })[0],\n [shownRecommendations, selectedId, selectedFootballID]\n );\n\n const sourceLocation = useClubVenueCoordination(\n selectedFootballType,\n preferences\n );\n\n //setting the list view when ID is selected\n useEffect(() => {\n if (!selectedId) {\n return;\n }\n setIsListViewSection(false);\n }, [selectedId]);\n\n // set the page title.\n usePageLoadInfo('map', pageTitle);\n\n // If the number of cards shown changes we want to\n // move the focus to the first new card\n useLayoutEffect(() => {\n setTimeout(() => firstOfNewLoadedRef.current?.focus(), 200);\n }, [numberShown]);\n\n // set path information for redirect\n useEffect(() => {\n localStorage.setItem('pathInfomation', window.location.pathname);\n }, []);\n\n // If the user loads more recommendations we want to move the focus to\n // the loading element\n useLayoutEffect(() => {\n setTimeout(() => loadingRef.current?.focus(), 200);\n }, [isLoadingMore]);\n\n if (!selectedFootballType) {\n return ;\n }\n\n const backToList = () => {\n setSelectedId();\n setIsListViewSection(true);\n };\n\n const Card = CardMap[selectedFootballType];\n\n const showNext = () => {\n setNextLoadedFirstIndex(numberShown + 1);\n setNumberShown(\n numberShown +\n (preferences['FootballType'] === 1\n ? SHOWN_INCREMENT_CENTRE\n : SHOWN_INCREMENT_CLUB)\n );\n };\n\n const getMoreResults = () => {\n if (!recommendations) {\n return;\n }\n\n // if we already have more than the current shown amount\n // show the next 10\n if (recommendations.length > numberShown) {\n showNext();\n return;\n }\n\n setIsLoadingMore(true);\n const sortedData = [];\n getMiniOnboardingRecommendations(selectedFootballType, {\n ...preferences,\n // get the page after the current one\n [PAGE_NUMBER]:\n preferences['FootballType'] === 1\n ? preferences.PageNumber + 1\n : Math.floor(recommendations?.length / MO_PAGE_SIZE_VALUE) + 1,\n })\n .then(({ data }) => {\n if (data) {\n sortedData.push(data);\n addMORecommendations(sortedData[0], selectedFootballType);\n }\n if (preferences['FootballType'] === 1) {\n preferences[PAGE_NUMBER] = preferences.PageNumber + 1;\n }\n setIsLoadingMore(false);\n showNext();\n })\n .catch(throwError);\n };\n\n if (!recommendations) {\n return

    No recommendations match the current filters

    ;\n }\n\n // We announce the new number of cards when it changes\n const ariaAnnouncement = `Showing ${numberShown} recommendations`;\n\n return (\n \n \n
    \n
    \n \n
    \n
    \n dispatch(EXPAND_MAP_ACTION)}\n />\n
    \n \n {!isListViewSection && (\n
    \n \n
    \n )}\n {isListViewSection && (\n
    \n {`${totalRecommendations} Result${\n totalRecommendations > 1 ? 's' : ''\n }`}\n
    \n )}\n
    \n
      \n {shownRecommendations.length > 0 &&\n shownRecommendations.map((providerData, index) => {\n const id = providerData.ClubId || providerData.PitchFinderId;\n const isFirstOfNewLoaded = index === nextLoadedFirstIndex - 1;\n\n return (\n {\n setSelectedId(id);\n setIsListViewSection(false);\n }}\n isSelected={selectedId === id}\n key={id}\n ref={isFirstOfNewLoaded ? firstOfNewLoadedRef : null}\n isMiniOnboarding={true}\n {...providerData}\n />\n );\n })}\n {isLoadingMore ? (\n \n ) : totalRecommendations &&\n recommendations?.length < totalRecommendations ? (\n
    • \n \n Load more\n \n
    • \n ) : (\n EMPTY_STRING\n )}\n
    \n {!isListViewSection && selectedCards && (\n \n \n \n )}\n
    \n
    \n \n
    \n );\n};\n\nexport default MOMapPage;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\nimport { EXPANDED, SHRUNK } from '../../reducers/trayState';\n\nexport default () => {\n const { colors, breakpoints, spacing, borderRadius, heights } = useTheme();\n\n return {\n base: css`\n position: relative;\n height: 100%;\n display: grid;\n justify-content: center;\n grid-template-areas:\n 'header'\n 'map'\n 'results';\n grid-template-rows: auto 1fr auto;\n grid-template-columns: 1fr;\n\n ${breakpoints.m} {\n grid-template-areas:\n 'header map'\n 'results map';\n grid-template-columns: min(50%, 375px) 1fr;\n }\n\n ${breakpoints.l} {\n grid-template-rows: auto calc(\n 100vh - ${heights.mainNav.desktop} - ${heights.filterNav}\n );\n grid-template-columns: 375px 1fr;\n }\n\n ${breakpoints.l} {\n grid-template-rows: auto calc(\n 100vh - ${heights.mainNav.desktop} - ${heights.filterNav}\n );\n }\n `,\n header: css`\n grid-area: header;\n background: ${colors.white};\n margin-top: ${heights.filterNav};\n border-top: 1px solid ${colors.lightGrey};\n border-bottom: 1px solid ${colors.lightGrey};\n\n a {\n max-width: 100%;\n width: 100%;\n }\n\n ${breakpoints.m} {\n margin-top: ${heights.mainNav.desktop};\n }\n\n ${breakpoints.l} {\n margin-top: ${heights.mainNav.desktop};\n }\n `,\n backLink: css`\n color: ${colors.navy};\n\n &:focus {\n outline: 0;\n p {\n text-decoration: underline;\n }\n }\n `,\n headerTitle: css`\n display: inline-block;\n `,\n mapAreaWrapper: css`\n grid-area: map;\n\n ${breakpoints.l} {\n margin-top: ${heights.mainNav.desktop};\n }\n `,\n providerCardWrapper: (isListView, trayState) => css`\n position: relative;\n grid-area: results;\n height: clamp(170px, 65vh, 280px);\n margin-top: -2rem;\n background: ${colors.white};\n box-shadow: 0px 4px 6px ${colors.black};\n align-items: center;\n transition: all 0.2s ease-in-out;\n margin-left: calc((100vw - 100%) / -2);\n width: 100vw;\n z-index: 100;\n\n ${trayState === EXPANDED &&\n css`\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n height: 75vh;\n `}\n\n ${trayState === SHRUNK &&\n css`\n transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n height: 55px;\n `}\n\n ${breakpoints.m} {\n overflow: hidden;\n margin-top: 0;\n border-radius: 0;\n height: 100%;\n margin-left: 0;\n width: 100%;\n z-index: initial;\n }\n\n ${breakpoints.l} {\n padding: 0;\n box-shadow: none;\n width: 100%;\n }\n\n ${!isListView &&\n css`\n padding-bottom: 0;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n height: calc(317px + ${spacing.xs} + ${spacing.s});\n box-sizing: content-box;\n\n ${breakpoints.m} {\n position: relative;\n height: 100%;\n background-color: ${colors.white};\n display: block;\n justify-content: center;\n height: 100%;\n }\n\n ${breakpoints.l} {\n position: relative;\n bottom: unset;\n left: unset;\n border-radius: 0;\n height: 100%;\n }\n `}\n `,\n scrollContainer: css`\n position: relative;\n height: 90%;\n background-color: ${colors.white};\n display: flex;\n justify-content: center;\n\n ${breakpoints.m} {\n height: 90%;\n display: block;\n }\n `,\n providerCards: isListView => css`\n border-radius: ${borderRadius.l};\n overflow-y: scroll;\n height: 100%;\n align-items: center;\n padding: 0 ${spacing.s} ${spacing.m};\n display: ${isListView ? 'block' : 'none'};\n `,\n resultCard: css`\n border: ${borderRadius.m} solid ${colors.red};\n\n &:hover,\n &:focus {\n outline: 0;\n border: ${borderRadius.m} solid ${colors.navy};\n }\n `,\n totalResults: isListView => css`\n display: none;\n text-align: center;\n padding: ${spacing.s} 0 1.2rem 0;\n position: relative;\n color: ${colors.navy};\n\n span {\n padding-top: 8px;\n border-top: ${borderRadius.s} solid ${colors.black};\n }\n\n ${breakpoints.m} {\n span {\n padding-top: 0;\n border-top: 0;\n }\n }\n\n ${breakpoints.l} {\n display: block;\n }\n\n ${isListView &&\n css`\n display: block;\n `}\n `,\n primaryBtn: css`\n background-color: ${colors.lightGrey};\n color: ${colors.navy};\n text-align: left;\n font-size: 1rem;\n line-height: 18px;\n padding: 10px 23px;\n font-weight: 400;\n display: inline-block;\n\n &:focus,\n &:not(:disabled):hover {\n background-color: transparent;\n }\n\n ${breakpoints.m} {\n background-color: ${colors.white};\n }\n `,\n backToWrapper: css`\n background-color: ${colors.white};\n border-bottom: 1px solid ${colors.lightGrey};\n\n ${breakpoints.m} {\n padding: 0;\n }\n `,\n arrowRotate: css`\n transform: rotate(180deg);\n margin-right: 5px;\n `,\n loadMore: isListView => css`\n margin: ${spacing.m} ${spacing.xs} 0 ${spacing.xs};\n text-transform: uppercase;\n button {\n text-transform: uppercase;\n }\n\n ${!isListView &&\n css`\n display: none;\n\n ${breakpoints.l} {\n display: block;\n }\n `}\n `,\n loader: css`\n margin-top: ${spacing.s};\n margin-bottom: ${spacing.s};\n `,\n recommendationListWrapper: cardsLength => css`\n padding: ${spacing.s} ${cardsLength > 1 ? 0 : spacing.s} 1.5rem 1.5rem;\n height: 100%;\n width: 100%;\n overflow-y: auto;\n -webkit-overflow-scrolling: auto;\n\n ${breakpoints.m} {\n padding: 0.3rem ${spacing.xs} 1.5rem 1.2rem;\n }\n\n ${breakpoints.xl} {\n padding: ${spacing.s} ${spacing.xs} 1.5rem 1.2rem;\n }\n `,\n };\n};\n","import { useLayoutEffect } from 'react';\nimport { useLocation } from 'react-router-dom';\n\nimport { usePageHistory } from '../../context/pageHistory';\n\nexport default ref => {\n const { pathname } = useLocation();\n const { previousPage } = usePageHistory();\n\n useLayoutEffect(() => {\n if (pathname === previousPage || !ref?.current) {\n return;\n }\n\n window.scrollTo(0, 0);\n\n const clearTimer = setTimeout(() => {\n ref.current.focus();\n }, 200);\n\n return () => {\n clearTimeout(clearTimer);\n };\n }, [pathname, previousPage, ref]);\n};\n","/* eslint(sonarjs/cognitive-complexity) */\nimport isempty from 'lodash.isempty';\n\nimport {\n CarIcon,\n Disability,\n FootballTypes,\n Person,\n Pitch,\n TrophyIcon,\n} from '../../components/Icons';\nimport {\n disabilityRow,\n facilityRow,\n teamsRow,\n walkingFootball,\n} from '../../components/VenuePage/conditionCheck';\nimport { AGEGROUP_YOUNGER, EMPTY_STRING } from '../../const';\nimport formatAddress from '../formatAddress';\n\nconst getGender = (genderType, ageGroup) => {\n if (!genderType && !ageGroup) {\n return;\n }\n const gender = genderType && genderType.toLowerCase();\n const age = ageGroup && ageGroup.toLowerCase();\n\n switch (gender) {\n case 'male':\n return AGEGROUP_YOUNGER.includes(age) ? \"Boy's\" : \"Men's\";\n case 'female':\n return AGEGROUP_YOUNGER.includes(age) ? \"Girl's\" : \"Women's\";\n default:\n return AGEGROUP_YOUNGER.includes(age)\n ? \"Boy's & Girl's\"\n : \"Men's & Women's\";\n }\n};\n\nconst normaliseTeamDetails = apiData => {\n const {\n TeamName,\n DistanceFromUserLocation,\n CountyName,\n GroundName,\n TeamsInfo,\n TeamsCount,\n TeamsPreferenceCount,\n TeamsTab,\n latitude,\n longitude,\n WgsClubId,\n Facility,\n DisableFacility,\n PitchTypes,\n League,\n discoverFootballTeamList,\n Category,\n Agegroup,\n DivisionName,\n LeagueName,\n Gender,\n Disability: DisabilityType,\n PlaysOnDay,\n ...rest\n } = apiData;\n\n const {\n primaryLeagueName,\n nextFixture,\n lastResult,\n standingsPositionPreviousSeason: standingsPosition,\n } = !isempty(discoverFootballTeamList) && discoverFootballTeamList[0];\n const ageGroup = walkingFootball(Agegroup);\n return {\n title: TeamName,\n address: formatAddress(rest) || rest.address,\n contactAddress:\n formatAddress(rest, '\\n') || rest.address.replace(/,/g, '\\n'),\n county: CountyName,\n accreditationid: rest.accreditationid || rest.WgsClubId,\n distance: DistanceFromUserLocation || rest.distance,\n latitude: latitude || rest.Latitude,\n longitude: longitude || rest.Longitude,\n gender: Gender,\n clubname: rest?.title || rest.ClubName,\n teaminfo: {\n title: '',\n values: [\n {\n title: 'Teams football types',\n icon: TrophyIcon,\n rows: teamsRow(DivisionName, ageGroup, LeagueName),\n },\n {\n title: 'Teams gender groups',\n icon: Person,\n rows: [getGender(Gender, ageGroup), ageGroup],\n },\n {\n title: 'Teams disability types',\n icon: FootballTypes,\n rows:\n DisabilityType !== 'Non Disability'\n ? [Category, PlaysOnDay, DisabilityType]\n : [Category, PlaysOnDay],\n },\n ],\n },\n facilities: Facility\n ? {\n title: 'Team ground facilities',\n values: [\n {\n title: 'Facilities',\n icon: CarIcon,\n rows: facilityRow(Facility),\n },\n {\n title: 'Disability Facilities',\n icon: Disability,\n rows: disabilityRow(DisableFacility),\n },\n {\n title: 'Pitch types',\n icon: Pitch,\n rows: PitchTypes,\n },\n ],\n }\n : EMPTY_STRING,\n agegroup: ageGroup,\n nextfixtures: nextFixture\n ? {\n title: 'Next Match',\n leagueName: primaryLeagueName,\n homeTeamName: nextFixture?.homeTeamName,\n roadTeamName: nextFixture?.roadTeamName || 'TBC',\n venueName: nextFixture?.venueName,\n fixtureDate: nextFixture?.fixtureDate,\n agegroup: ageGroup,\n hasAddress: true,\n }\n : EMPTY_STRING,\n lastresults: lastResult\n ? {\n title: 'Last Match',\n leagueName: primaryLeagueName,\n fixtureDate: lastResult?.fixtureDate,\n fixtureID: lastResult?.fixtureID,\n homeScore: lastResult?.homeScore,\n homeTeamName: lastResult?.homeTeamName,\n roadScore: lastResult?.roadScore,\n roadTeamName: lastResult?.roadTeamName,\n venueName: lastResult?.venueName,\n agegroup: ageGroup,\n hasAddress: false,\n }\n : EMPTY_STRING,\n standingspositions: standingsPosition\n ? {\n title: 'Last Season League Position',\n leagueName: standingsPosition?.leagueName,\n divisionName: standingsPosition?.divisionName,\n standingsPosition: standingsPosition?.standingsPosition,\n seasonName: standingsPosition?.seasonName,\n }\n : EMPTY_STRING,\n };\n};\n\nexport default normaliseTeamDetails;\n","/** @jsxImportSource @emotion/react */\nimport { Fragment, useEffect, useState } from 'react';\n\nimport { EMPTY_STRING } from '../../const';\nimport publicPath from '../../utils/publicPath';\nimport Image from '../Image';\nimport Text from '../Text';\nimport useStyles from './styles';\n\nexport const getformatFixtureDate = (selectedDate) => {\n if (!selectedDate)\n return EMPTY_STRING;\n const dateOj = selectedDate.split(\" \");\n const day = selectedDate.substring(6, 8);\n const month = selectedDate.substring(4, 6);\n const year = selectedDate.substring(2, 4);\n return `${day}/${month}/${year} ${dateOj[1]}`;\n}\n\nconst MatchDetails = ({\n title,\n matchDateTime,\n locationAddress,\n leagueName,\n homeTeamName,\n roadTeamName,\n agegroup,\n hasAddress,\n ...rest\n}) => {\n const styles = useStyles();\n const [homeName, setHomeName] = useState([]);\n const [roadName, setRoadName] = useState([]);\n\n useEffect(() => {\n if (!homeTeamName || !roadTeamName) {\n return;\n }\n const homeName = homeTeamName.split(agegroup);\n const roadName = roadTeamName.split(agegroup);\n setHomeName(homeName);\n setRoadName(roadName);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [homeTeamName, roadTeamName])\n\n return (\n
    \n
    \n
    \n \n {title}\n \n \n {leagueName}\n \n
    \n \n
    \n
    \n \n {homeName[0]}\n {agegroup} {homeName[1]}\n \n \n
    \n
    \n
    \n
    \n
    \n {!rest.homeScore && \n VS\n }\n {rest.homeScore && \n {rest.homeScore} - {rest.roadScore}\n }\n
    \n
    \n \n
    \n
    \n
    \n \n {roadName[0]}\n {agegroup} {roadName[1]}\n \n
    \n
    \n
    \n
    \n {hasAddress &&
    \n
    \n
    \n
    \n {rest.venueName}\n \n {getformatFixtureDate(rest.fixtureDate)}\n \n
    \n
    \n
    }\n
    \n );\n};\n\nexport default MatchDetails;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { breakpoints, colors, spacing, borderRadius, typography } = useTheme();\n\n return {\n matchDetailsWrapper: hasAddress => css`\n ${hasAddress &&\n css`\n border-radius: ${borderRadius.l};\n `}\n `,\n facilitiesWrapper: hasAddress => css`\n background-color: ${colors.lightGrey};\n padding: 1.5rem ${spacing.s};\n margin-top: 1.5rem;\n border-radius: ${borderRadius.l};\n\n ${hasAddress &&\n css`\n border-radius: ${borderRadius.l} ${borderRadius.l} 0 0;\n `}\n `,\n title: css`\n color: ${colors.navy};\n text-align: center;\n\n ${breakpoints.l} {\n display: grid;\n align-content: center;\n letter-spacing: -0.01em;\n }\n `,\n subtitle: css`\n font-style: normal;\n font-size: 0.875rem;\n line-height: 1.375rem;\n color: ${colors.darkGrey};\n text-align: center;\n padding-bottom: ${spacing.s};\n font-weight: 400;\n\n &::after {\n content: '';\n width: ${spacing.s};\n border-bottom: ${borderRadius.s} solid ${colors.red};\n margin: 5px auto 0;\n }\n\n ${breakpoints.l} {\n color: ${colors.darkGrey};\n font-weight: 400;\n font-size: ${spacing.s};\n font-style: normal;\n line-height: 1.375rem;\n display: grid;\n align-content: center;\n letter-spacing: 0.01em;\n }\n `,\n fixturesTeam: css`\n display: grid;\n grid-template-columns: 1fr auto 1fr;\n text-align: center;\n margin: 0 auto;\n color: ${colors.navy};\n `,\n matcTitle: css`\n display: grid;\n align-content: center;\n\n &::after {\n content: '';\n position: absolute;\n left: Calc(100% - 68%);\n width: 40px;\n border-bottom: ${borderRadius.s} solid ${colors.red};\n }\n `,\n locationAddress: css`\n color: ${colors.navy};\n text-align: center;\n font-weight: 700;\n font-size: 0.875rem;\n\n ${breakpoints.l} {\n font-size: ${spacing.s};\n font-weight: 700;\n }\n `,\n mapIcon: css`\n background: url('/images/common/team-location-pin.svg') no-repeat;\n height: 40px;\n width: 30px;\n `,\n addressContainer: css`\n display: grid;\n grid-template-columns: auto auto;\n align-items: center;\n justify-content: center;\n grid-gap: 5px;\n `,\n address: css`\n width: 100%;\n bottom: 0;\n background-color: #dadee7;\n align-content: center;\n padding: ${spacing.s} 0 ${spacing.s} 0;\n border-radius: 0 0 ${borderRadius.l} ${borderRadius.l};\n `,\n matchDateTime: css`\n color: ${colors.darkGrey};\n font-size: 0.875rem;\n font-weight: normal;\n\n ${breakpoints.l} {\n display: grid;\n align-content: center;\n font-size: ${spacing.s};\n font-weight: normal;\n }\n `,\n infoFacilities: css`\n background-color: ${colors.lightGrey};\n border-radius: ${borderRadius.l} ${borderRadius.l} 0 0;\n `,\n nextFixture: css`\n position: relative;\n > div {\n font-weight: bold;\n }\n display: grid;\n align-items: flex-start;\n grid-row-gap: 5px;\n justify-content: center;\n grid-template-rows: minmax(80px, 80px) auto;\n justify-self: center;\n\n ${breakpoints.l} {\n align-items: center;\n letter-spacing: -0.01em;\n grid-template-rows: auto;\n grid-template-columns: auto auto;\n grid-row-gap: 0;\n > div {\n &:first-of-type {\n margin-right: 0.625rem;\n }\n }\n }\n `,\n imgWrapper: css`\n background-color: ${colors.white};\n border-radius: 50%;\n padding: ${spacing.s};\n height: 72px;\n width: 72px;\n margin: 0 auto;\n `,\n ageGroupHome: css`\n text-align: center;\n\n ${breakpoints.l} {\n text-align: right;\n }\n `,\n roadNameAgeGroup: css`\n text-align: center;\n\n ${breakpoints.l} {\n text-align: left;\n }\n `,\n fixturesSplit: css`\n margin: 0 5px;\n padding-top: ${spacing.s};\n\n ${breakpoints.l} {\n padding-top: 0;\n display: grid;\n align-items: center;\n margin: 0.625rem;\n }\n `,\n fixturesSplitVersus: css`\n margin: 0.625rem;\n font-size: 1.8125rem;\n font-weight: 700;\n\n ${breakpoints.l} {\n font-size: 1.8125rem;\n font-weight: 700;\n line-height: ${spacing.m};\n }\n `,\n nextFixtureName: css`\n ${breakpoints.l} {\n ${typography.headings[7].desktop};\n text-align: right;\n }\n `,\n fixturesSplitScore: css`\n background-color: ${colors.navy};\n color: ${colors.white};\n padding: 7px 10px;\n border-radius: ${borderRadius.s};\n font-size: 1.875rem;\n\n ${breakpoints.l} {\n ${typography.headings[7].desktop};\n margin: 0 ${spacing.s};\n }\n `,\n roadNameWrapper: css`\n justify-content: flex-start;\n grid-template-rows: minmax(80px, 80px) auto;\n align-items: flex-start;\n\n ${breakpoints.l} {\n grid-template-rows: auto;\n justify-self: flex-start;\n align-items: center;\n }\n `,\n homeNameWrapper: css`\n justify-content: flex-start;\n ${breakpoints.l} {\n justify-content: flex-end;\n }\n `,\n homeNameFixture: css`\n order: 2;\n\n ${breakpoints.l} {\n order: unset;\n }\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\n\nimport { Fragment } from 'react';\n\nimport useMediaQuery from '../../hooks/useMediaQuery';\nimport ContactDetails from '../ContactDetails';\nimport InfoFacilities from '../InfoFacilities';\nimport MatchDetails from '../MatchDetails';\nimport Text from '../Text';\nimport useStyles from '../VenueDetails/styles';\nimport useStylesClub from './styles';\n\nconst TeamInfo = ({ teamDetails, contact, onClick }) => {\n const {\n teaminfo,\n facilities,\n nextfixtures,\n contactAddress,\n title,\n } = teamDetails;\n const styles = useStyles();\n const stylesClub = useStylesClub();\n const isMobile = useMediaQuery('screen and (max-width: 768px)');\n\n return (\n \n
    \n
    \n
    \n \n About {title}\n \n
    \n
    \n {teaminfo && (\n \n )}\n
    \n
    \n {facilities && }\n
    \n
    \n {nextfixtures && (\n \n )}\n
    \n
    \n {!isMobile && (\n
    \n \n {contactAddress}\n \n
    \n )}\n
    \n
    \n );\n};\n\nexport default TeamInfo;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { breakpoints, colors, spacing, borderRadius } = useTheme();\n\n return {\n title: css`\n display: inline-block;\n font-size: 1.75rem;\n color: ${colors.navy};\n margin: ${spacing.xs} 0;\n text-decoration: underline ${colors.red} 2px;\n -webkit-text-decoration-line: underline;\n -webkit-text-decoration-color: ${colors.red};\n -webkit-text-decoration-style: solid;\n -webkit-text-decoration-thickness: 2px;\n\n ${breakpoints.m} {\n color: ${colors.navy};\n font-size: ${spacing.l};\n line-height: 2.62rem;\n }\n `,\n textWrapper: css`\n color: ${colors.white};\n padding: 6rem ${spacing.s} 1.5rem 1.5rem;\n\n h3 {\n margin-bottom: 0.3rem;\n color ${colors.navy};\n }\n\n button {\n background-color: ${colors.red};\n color: ${colors.white};\n max-width: 11rem;\n margin-top: ${spacing.s};\n }\n \n ${breakpoints.l}{\n padding: ${spacing.s} ${spacing.s} 1.5rem ${spacing.xl};\n }\n `,\n imgWrapper: css`\n position: relative;\n padding-top: ${spacing.s};\n `,\n imgContent: css`\n background: url(/images/common/partner-promo-mobile.jpg) 0 0 no-repeat;\n border-radius: ${borderRadius.l};\n\n ${breakpoints.m} {\n background: url(/images/common/partner-promo.jpg) 0 0 no-repeat;\n min-height: 14.1875rem;\n background-size: cover;\n display: grid;\n align-content: end;\n width: 100%;\n }\n `,\n middle: css`\n padding-top: ${spacing.xs};\n display: grid;\n grid-gap: ${spacing.xl};\n\n ${breakpoints.l} {\n grid-template-columns: auto max(325px);\n }\n `,\n venueFacilitiesWrapper: css`\n padding: 1.6rem 0;\n\n ${breakpoints.l} {\n padding: ${spacing.xs} 0;\n }\n `,\n clubDescriptionWrapper: css`\n p {\n font-size: ${spacing.s};\n padding-bottom: 1.5rem;\n line-height: 1.375rem;\n letter-spacing: 0.02em;\n color: ${colors.darkGrey};\n }\n\n a {\n display: inline-block;\n color: ${colors.darkGrey};\n }\n `,\n };\n};\n","export default dayNumber => {\n if (dayNumber > 3 && dayNumber < 21) {\n return 'th';\n }\n\n switch (dayNumber % 10) {\n case 1:\n return 'st';\n case 2:\n return 'nd';\n case 3:\n return 'rd';\n default:\n return 'th';\n }\n};\n","/** @jsxImportSource @emotion/react */\nimport getNumberSuffix from '../../utils/getNumberSuffix';\nimport Text from '../Text';\nimport useStyles from './styles';\n\nconst LeaguePosition = ({\n title,\n seasonName,\n divisionName,\n standingsPosition,\n leagueName,\n}) => {\n const styles = useStyles();\n\n return (\n
    \n
    \n \n {title}\n \n {leagueName && \n {leagueName}\n }\n \n {divisionName}\n \n
    \n \n {standingsPosition === \"1\" ? `Champions` : \n `Finished ${standingsPosition}${getNumberSuffix(parseInt(standingsPosition))}`}\n \n
    \n \n {seasonName} season\n \n
    \n
    \n );\n};\n\nexport default LeaguePosition;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { borderRadius, breakpoints, colors, spacing } = useTheme();\n\n return {\n facilities: css`\n display: grid;\n grid-template-columns: 24px 1fr;\n align-items: flex-start;\n grid-row-gap: ${spacing.xs};\n border-top: 1px solid ${colors.lightGrey};\n padding: 10px 0;\n\n ${breakpoints.m} {\n border-top: 0;\n padding: 0;\n }\n `,\n title: css`\n color: ${colors.navy};\n text-align: center;\n font-size: 24px;\n letter-spacing: -0.01em;\n\n ${breakpoints.l} {\n display: grid;\n align-content: center;\n }\n `,\n subtitle: css`\n color: ${colors.darkGrey};\n text-align: center;\n position: relative;\n\n &:last-child {\n word-spacing: ${borderRadius.s};\n }\n\n &:nth-of-type(2n) {\n &::after {\n content: '';\n width: 16px;\n border-bottom: ${borderRadius.s} solid ${colors.red};\n position: absolute;\n top: 1.8rem;\n left: calc(100% - 50%);\n }\n }\n\n ${breakpoints.l} {\n color: ${colors.darkGrey};\n align-content: center;\n }\n `,\n positionWrapper: css`\n align-content: center;\n background-color: ${colors.navy};\n height: 42px;\n max-width: 164px;\n border-radius: ${borderRadius.l};\n padding: ${borderRadius.l};\n margin: 20px auto 8px auto;\n `,\n postion: css`\n text-align: center;\n border-radius: ${borderRadius.l} solid;\n font-style: italic;\n color: ${colors.white};\n font-size: 24px;\n letter-spacing: -0.01em;\n\n ${breakpoints.l} {\n font-style: italic;\n letter-spacing: -0.01em;\n }\n `,\n infoFacilities: css`\n background-color: ${colors.lightGrey};\n padding: ${spacing.s};\n border-radius: ${borderRadius.l};\n\n ${breakpoints.m} {\n padding: 1.5rem;\n }\n `,\n seasonText: css`\n font-size: 0.875rem;\n\n ${breakpoints.m} {\n font-size: 0.875rem;\n }\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\n\nimport { Fragment } from 'react';\n\nimport LeaguePosition from '../LeaguePosition';\nimport MatchDetails from '../MatchDetails';\nimport Text from '../Text';\nimport useStyles from './styles';\n\nconst TeamStatus = ({\n lastresults,\n standingspositions,\n title,\n}) => {\n const styles = useStyles();\n\n return (\n \n
    \n
    \n
    \n \n {title} stats\n \n
    \n {lastresults &&
    \n \n
    \n }\n {standingspositions &&
    \n \n
    \n }\n
    \n
    \n
    \n
    \n
    \n
    \n );\n};\n\nexport default TeamStatus;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { breakpoints, colors, spacing, borderRadius } = useTheme();\n\n return {\n title: css`\n display: inline-block;\n font-size: 1.75rem;\n color: ${colors.navy};\n text-decoration: underline ${colors.red} 2px;\n -webkit-text-decoration-line: underline;\n -webkit-text-decoration-color: ${colors.red};\n -webkit-text-decoration-style: solid;\n -webkit-text-decoration-thickness: 2px;\n\n ${breakpoints.m} {\n color: ${colors.navy};\n font-size: ${spacing.l};\n line-height: 2.62rem;\n }\n `,\n textWrapper: css`\n color: ${colors.white};\n padding: 6rem ${spacing.s} 1.5rem 1.5rem;\n\n h3 {\n margin-bottom: 0.3rem;\n color ${colors.navy};\n }\n\n button {\n background-color: ${colors.red};\n color: ${colors.white};\n max-width: 11rem;\n margin-top: ${spacing.s};\n }\n \n ${breakpoints.l}{\n padding: ${spacing.s} ${spacing.s} 1.5rem ${spacing.xl};\n }\n\n `,\n leagueFacilitiesWrapper: css`\n padding: ${spacing.xs} 0;\n margin-top: ${spacing.s};\n `,\n imgWrapper: css`\n position: relative;\n padding-top: ${spacing.s};\n // Enable imgWrapper once get actual image\n display: none;\n `,\n imgContent: css`\n background: url(/images/common/partner-promo-mobile.jpg) 0 0 no-repeat;\n border-radius: ${borderRadius.l};\n\n ${breakpoints.m} {\n background: url(/images/common/partner-promo-team.jpg) 0 0 no-repeat;\n min-height: 14.1875rem;\n background-size: contain;\n display: grid;\n align-content: end;\n width: 100%;\n }\n `,\n middle: css`\n display: grid;\n grid-gap: ${spacing.xl};\n\n ${breakpoints.l} {\n grid-template-columns: auto max(325px);\n }\n `,\n clubDescriptionWrapper: css`\n p {\n font-size: ${spacing.s};\n padding-bottom: 1.5rem;\n line-height: 1.375rem;\n letter-spacing: 0.02em;\n color: ${colors.darkGrey};\n }\n\n a {\n display: inline-block;\n color: ${colors.darkGrey};\n }\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport isempty from 'lodash.isempty';\nimport React, { Fragment, useEffect, useRef, useState } from 'react';\nimport { useHistory } from 'react-router-dom';\n\nimport {\n BACK_TO_RESULTS,\n teamDetailsPageAnalytics,\n} from '../../analyticsConsts';\nimport {\n MATCH_AGEGROUP,\n SELECTED_RECOMMENDATIONS_TYPE_ID,\n TEAMS_TAB,\n} from '../../const';\nimport { usePageHistory } from '../../context/pageHistory';\nimport useClubAccreditation from '../../hooks/useClubAccreditation';\nimport useClubContactDetails from '../../hooks/useClubContactDetails';\nimport useElementHeight from '../../hooks/useElementHeight';\nimport useMediaQuery from '../../hooks/useMediaQuery';\nimport useScrollTop from '../../hooks/useScrollTop';\nimport useTeamPageAPI from '../../hooks/useTeamPageAPI';\nimport useStylesClub from '../ClubPage/styles';\nimport ContactFormModal from '../ContactFormModal';\nimport ContactMap from '../ContactMap';\nimport Footer from '../Footer';\nimport HeroProvider from '../HeroProvider';\nimport { RightArrow } from '../Icons';\nimport LinkButton from '../LinkButton';\nimport Loader from '../Loader';\nimport SocialMedia from '../SocialMedia';\nimport StickyScrollSpyNav from '../StickyScrollSpyNav';\nimport TeamInfo from '../TeamInfo';\nimport TeamStatus from '../TeamStatus';\nimport { venuePreviousPage } from '../VenuePage/conditionCheck';\nimport useStyles from './styles';\n\nconst { TEAM_NAME_HEADING, TEAM_DETAILS_WRAPPER, TEAM_DETAILS_TABS } =\n teamDetailsPageAnalytics;\n\nconst TeamDetails = () => {\n const pageRef = useRef();\n useScrollTop(pageRef);\n const {\n teamPageData,\n isLoadingPageData,\n socialDataLinks,\n teamDetails,\n isLoading,\n selectedClubDetails,\n sourceLocation,\n preferences,\n } = useTeamPageAPI();\n const { [SELECTED_RECOMMENDATIONS_TYPE_ID]: selectedRecommendationType } =\n preferences || {};\n const { Category } = preferences;\n const { height: titleHeight, elementRef: titleElement } = useElementHeight();\n const styles = useStyles();\n const stylesClub = useStylesClub();\n const history = useHistory();\n const [backUrl, setBackUrl] = useState();\n const [menuTab, setMenuTab] = useState(null);\n const [contactFormVisible, setContactFormVisible] = useState(false);\n const { selectedTeamDetails } = selectedClubDetails || {};\n const wgsClubID =\n selectedClubDetails?.WgsClubId || selectedClubDetails?.accreditationid;\n // when we get the club details we want to fetch the accreditation and contact details\n const accreditation = useClubAccreditation(wgsClubID);\n const contactDetails = useClubContactDetails(wgsClubID);\n const isDesktop = useMediaQuery('screen and (min-width: 768px)');\n const previousUrl = localStorage.getItem('pathInfomation');\n const { previousPage } = usePageHistory();\n\n useEffect(() => {\n if (!previousPage && !previousUrl) {\n return;\n }\n setBackUrl(\n previousPage\n ? previousPage\n : previousUrl\n ? previousUrl\n : '/recommendation'\n );\n }, [previousPage, previousUrl]);\n const teamPage = true;\n const previousPageName = venuePreviousPage(previousUrl, teamPage);\n\n // based on condition modifying isHidden flag in tabs array\n useEffect(() => {\n TEAMS_TAB[1].isHidden = !(\n (!isempty(teamDetails?.lastresults) ||\n !isempty(teamDetails?.standingspositions)) &&\n MATCH_AGEGROUP.indexOf(teamDetails?.agegroup) === -1\n );\n setMenuTab(TEAMS_TAB);\n }, [teamDetails, menuTab, isLoading]);\n\n if (isLoadingPageData) {\n return ;\n }\n\n return (\n
    \n
    \n {teamPageData && (\n \n )}\n
    \n \n
    \n {isLoading && (\n \n )}\n {!isLoading && teamDetails && menuTab && (\n \n \n
    \n {isDesktop && (\n \n {' '}\n Back to {previousPageName} page\n \n )}\n {teamDetails && (\n \n setContactFormVisible(true)}\n />\n \n )}\n
    \n {(!isempty(teamDetails?.lastresults) ||\n !isempty(teamDetails?.standingspositions)) &&\n MATCH_AGEGROUP.indexOf(teamDetails?.agegroup) === -1 && (\n \n \n \n )}\n
    \n {teamDetails && (\n setContactFormVisible(true)}\n />\n )}\n
    \n \n
    \n )}\n {socialDataLinks && (\n \n )}\n
    \n \n {contactFormVisible && (\n {\n setContactFormVisible(false);\n }}\n isVisible={contactFormVisible}\n clubDetails={selectedClubDetails}\n isClub={false}\n selectedTeamData={selectedTeamDetails}\n />\n )}\n {
    }\n
    \n );\n};\n\nexport default TeamDetails;\n","import { useEffect, useState } from 'react';\n\nimport { getPreferenceValue } from '../../components/ClubDetailsPage';\nimport { SELECTED_RECOMMENDATIONS_TYPE_ID } from '../../const';\nimport { useOnboardingDataContext } from '../../context/OnboardingData';\nimport { usePageInfo } from '../../context/pageInfo';\nimport { usePreferencesContext } from '../../context/preferences';\nimport { useSetContactFormDLContext } from '../../context/setContactFormDL';\nimport { useSetSelectedClubDetailsContext } from '../../context/setSelectedClubDetails';\nimport {\n getClubPageData,\n getMatchDetails,\n getSocialMediaData,\n getTeamDetails,\n} from '../../services';\nimport normaliseTeamDetails from '../../utils/normaliseTeamDetails';\nimport useClubVenueCoordination from '../useClubVenueCoordination';\nimport useErrorBoundary from '../useErrorBoundary';\n\nexport default () => {\n const [teamPageData, setTeamPageData] = useState();\n const [isLoadingPageData, setIsLoadingPageData] = useState(true);\n const [socialDataLinks, setSocialDataLinks] = useState();\n const [teamDetails, setTeamDetails] = useState();\n const [isLoading, setIsLoading] = useState(false);\n const [pageInfo, setPageInfo] = usePageInfo();\n const { preferences } = usePreferencesContext();\n const { setContactFormDLValue } = useSetContactFormDLContext();\n const { [SELECTED_RECOMMENDATIONS_TYPE_ID]: selectedRecommendationType } =\n preferences || {};\n const { OnboardingContext } = useOnboardingDataContext();\n\n const { selectedClubDetails } = useSetSelectedClubDetailsContext();\n const { selectedTeamDetails } = selectedClubDetails;\n const wgsClubID =\n selectedClubDetails?.WgsClubId || selectedClubDetails?.accreditationid;\n const sourceLocation = useClubVenueCoordination(\n selectedRecommendationType,\n preferences\n );\n const throwError = useErrorBoundary();\n\n // set page info only when we have the team name\n useEffect(() => {\n if (!teamDetails?.title) {\n return;\n }\n\n setPageInfo('team', teamDetails.title);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [teamDetails]);\n\n // set page info only when we have the team name\n useEffect(() => {\n if (!teamDetails || !pageInfo) {\n return;\n }\n const details = teamDetails;\n setContactFormDLValue(\n getPreferenceValue(\n pageInfo,\n preferences,\n details,\n 'team info',\n false,\n OnboardingContext.gender_group\n )\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [teamDetails, pageInfo]);\n\n useEffect(() => {\n getClubPageData()\n .then(({ data }) => {\n const clubPageDetails = data;\n const randomNumber = Math.round(Math.random() * 5) + 1;\n clubPageDetails.hero.images.desktop.src = `/images/desktop/club/hero/${randomNumber}.jpg`;\n clubPageDetails.hero.images.mobile.src = `/images/mobile/club/hero/${randomNumber}.jpg`;\n setTeamPageData(clubPageDetails);\n setIsLoadingPageData(false);\n })\n .catch(throwError);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (!wgsClubID) {\n return;\n }\n getSocialMediaData(wgsClubID)\n .then(({ data }) => {\n if (data) {\n setSocialDataLinks(data);\n }\n })\n .catch(throwError);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedClubDetails]);\n\n useEffect(() => {\n setIsLoading(true);\n\n // we send the teamId and WgsTeamId\n Promise.all([\n getTeamDetails(selectedTeamDetails?.TeamId, preferences).catch(\n throwError\n ),\n getMatchDetails(selectedTeamDetails?.WgsTeamId).catch(() => {}),\n ]).then(data => {\n if (data) {\n const teamDetailsRecord = data[0]?.data;\n const matchDetailsRecord = data[1]?.data;\n const { ...normalisedDetails } = normaliseTeamDetails({\n ...selectedClubDetails,\n ...teamDetailsRecord,\n ...matchDetailsRecord,\n });\n setTeamDetails(normalisedDetails);\n setIsLoading(false);\n }\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return {\n teamPageData,\n isLoadingPageData,\n socialDataLinks,\n teamDetails,\n isLoading,\n preferences,\n sourceLocation,\n selectedClubDetails,\n };\n};\n","import { css } from '@emotion/react';\n\nimport { EMPTY_STRING } from '../../const';\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { breakpoints, spacing } = useTheme();\n\n return {\n base: (isDesktop, isLoading) => css`\n height: 100%;\n display: grid;\n grid-template-rows: auto 1fr;\n grid-template-columns: 100%;\n\n ${!isDesktop &&\n css`\n animation-name: ${isLoading ? 'slide' : EMPTY_STRING};\n animation-duration: 1s;\n animation-timing-function: ease-out;\n animation-iteration-count: 1;\n animation-fill-mode: forwards;\n\n @keyframes slide {\n 0% {\n transform: translateX(100%);\n opacity: 0;\n }\n 100% {\n transform: translateX(0%);\n opacity: 1;\n }\n }\n `}\n `,\n wrapper: (titleHeight, hasPreferences) => css`\n margin-top: calc(100vh - 228px);\n padding: ${spacing.s} 0;\n width: 100%;\n\n ${breakpoints.m} {\n margin-top: calc(100vh - 77px);\n padding: 0;\n }\n\n ${breakpoints.l} {\n margin: calc(100vh - 80px) auto auto;\n width: 90vw;\n max-width: 1196px;\n }\n `,\n displayNone: css`\n display: none;\n `,\n };\n};\n","import { filterFormatters } from '../../components/FiltersPanel/filtersConfig';\nimport {\n FILTERS_APPLIED,\n FILTERS_APPLIED_CASUAL,\n LATITUDE_ID,\n LONGITUDE_ID,\n} from '../../const';\nimport useLocalStorage from '../useLocalStorage';\n\n// Removes \"Latitude\" and \"Longitude\" from filters\n// as they are only needed for the API call\n// Applies filter formatting to values\nconst normaliseFilterObject = obj => {\n const { [LATITUDE_ID]: lat, [LONGITUDE_ID]: lon, ...rest } = obj;\n\n for (const filterKey in rest) {\n // If filter has formatter then apply to value\n if (typeof filterFormatters[filterKey] === 'function') {\n rest[filterKey] = filterFormatters[filterKey](rest[filterKey]);\n }\n }\n\n return rest;\n};\n\nexport default () => {\n const { setLocalItem, getLocalItem, removeLocalItem } = useLocalStorage();\n\n const currentFiltersLocal = getLocalItem(FILTERS_APPLIED);\n const currentFiltersParsed = JSON.parse(currentFiltersLocal) || {};\n\n const currentFiltersCasualLocal = getLocalItem(FILTERS_APPLIED_CASUAL);\n const currentFiltersCasualParsed =\n JSON.parse(currentFiltersCasualLocal) || {};\n\n const updateFiltersStorage = filtersApplied => {\n const normalised = normaliseFilterObject(filtersApplied);\n\n setLocalItem(\n FILTERS_APPLIED,\n JSON.stringify({ ...currentFiltersParsed, ...normalised })\n );\n };\n\n const updateFiltersCasualStorage = filtersApplied => {\n setLocalItem(\n FILTERS_APPLIED_CASUAL,\n JSON.stringify({ ...currentFiltersCasualParsed, ...filtersApplied })\n );\n };\n\n const clearFiltersStorage = () => {\n removeLocalItem(FILTERS_APPLIED);\n removeLocalItem(FILTERS_APPLIED_CASUAL);\n };\n\n return {\n clearFiltersStorage,\n updateFiltersStorage,\n updateFiltersCasualStorage,\n currentFiltersParsed,\n currentFiltersCasualParsed,\n };\n};\n","import publicPath from '../../utils/publicPath';\n\nconst homepage = {\n hero: {\n text: {\n main: 'Find football',\n secondary:\n 'Let’s find the type of football that suits you, or someone you know.',\n },\n ctaText: 'Start searching now',\n images: {\n desktop: {\n src: publicPath('/images/desktop/home/homepage_bg.jpg'),\n },\n mobile: {\n src: publicPath('/images/mobile/home/homepage_bg.jpg'),\n },\n },\n },\n footballTypeHeadings: [\n {\n id: 1,\n heading: 'club football',\n description: 'Find a team to play in competitive leagues & competitons',\n href: 'https://www.englandfootball.com/play/club-football',\n images: {\n desktop: {\n src: publicPath('/images/desktop/home/club-football.jpg'),\n },\n mobile: {\n src: publicPath('/images/mobile/home/club-football.jpg'),\n },\n },\n },\n {\n id: 2,\n heading: 'casual football',\n description:\n 'From 11-a-side to adapted forms of the game, find a kickabout that works for you. ',\n href: 'https://www.englandfootball.com/play/casual-football',\n images: {\n desktop: {\n src: publicPath('/images/desktop/home/casual-football.jpg'),\n },\n mobile: {\n src: publicPath('/images/mobile/home/casual-football.jpg'),\n },\n },\n },\n ],\n quickLinks: [\n {\n id: 1,\n heading: 'Football',\n href: 'https://www.englandfootball.com/play/11-a-side-football',\n description:\n '11v11 games tailored to age, experience, disabilities and more',\n images: {\n desktop: {\n src: publicPath('/images/desktop/home/traditional-football.png'),\n },\n mobile: {\n src: publicPath('/images/desktop/home/traditional-football.png'),\n },\n },\n },\n {\n id: 2,\n heading: 'Futsal',\n description: 'Indoor 5-a-side, played with a smaller, heavier ball',\n href: 'https://www.englandfootball.com/play/futsal',\n images: {\n desktop: {\n src: publicPath('/images/desktop/home/futsal-football.png'),\n },\n mobile: {\n src: publicPath('/images/desktop/home/futsal-football.png'),\n },\n },\n },\n {\n id: 3,\n heading: 'Walking football',\n description: 'Small-sided games adapted for over 50s',\n href: 'https://www.englandfootball.com/play/adult-football/walking-football',\n images: {\n desktop: {\n src: publicPath('/images/desktop/home/walking-football.png'),\n },\n mobile: {\n src: publicPath('/images/desktop/home/walking-football.png'),\n },\n },\n },\n {\n id: 4,\n heading: 'Small sided football',\n description: 'Reduced size forms of the game for all ages and abilities',\n href: 'https://www.englandfootball.com/play/small-sided-football',\n images: {\n desktop: {\n src: publicPath('/images/desktop/home/small-sided.png'),\n },\n mobile: {\n src: publicPath('/images/desktop/home/small-sided.png'),\n },\n },\n },\n ],\n faInitiatives: [\n {\n id: 1,\n description: 'Fun and friendly football for girls aged 5-11. ',\n href:\n 'https://www.englandfootball.com/play/womens-and-girls-football/weetabix-wildcats',\n initiativeLogo: {\n desktop: {\n src: publicPath('/images/desktop/home/wildcats-logo.svg'),\n },\n mobile: {\n src: publicPath('/images/desktop/home/wildcats-logo.svg'),\n },\n },\n images: {\n desktop: {\n src: publicPath('/images/desktop/home/wildcats.png'),\n },\n mobile: {\n src: publicPath('/images/desktop/home/wildcats.png'),\n },\n },\n },\n {\n id: 2,\n description:\n 'Casual football for everyone. Fancy a game? Just say, Just Play. ',\n href: 'https://www.englandfootball.com/play/adult-football/just-play',\n initiativeLogo: {\n desktop: {\n src: publicPath('/images/desktop/home/just-play-logo.svg'),\n },\n mobile: {\n src: publicPath('/images/desktop/home/just-play-logo.svg'),\n },\n },\n images: {\n desktop: {\n src: publicPath('/images/desktop/home/just-play.jpg'),\n },\n mobile: {\n src: publicPath('/images/desktop/home/just-play.jpg'),\n },\n },\n },\n // once received link for age-uk will uncomment below code\n // {\n // id: 3,\n // description:\n // 'Stay active with small-sided Walking Football for over 50s.',\n // href: 'https://www.englandfootball.com/play/age-uk',\n // initiativeLogo: {\n // desktop: {\n // src: publicPath('/images/desktop/home/age-uk-logo.svg'),\n // },\n // mobile: {\n // src: publicPath('/images/desktop/home/age-uk-logo.svg'),\n // },\n // },\n // images: {\n // desktop: {\n // src: publicPath('/images/desktop/home/age-uk.png'),\n // },\n // mobile: {\n // src: publicPath('/images/desktop/home/age-uk.png'),\n // },\n // },\n // },\n ],\n};\n\nexport default homepage;\n","/** @jsxImportSource @emotion/react */\nimport PropTypes from 'prop-types';\n\nimport { CHARLIMIT_HOMEPAGE } from '../../const';\nimport ExternalLink from '../ExternalLink';\nimport { RightArrow } from '../Icons';\nimport Text from '../Text';\nimport useStyles from './styles';\n\nconst FootballTypeCard = ({ heading, description, images, ctaId, href }) => {\n const styles = useStyles();\n\n return (\n \n \n \n {heading}\n \n {description.substring(0, CHARLIMIT_HOMEPAGE)}\n \n \n Learn More \n \n \n \n );\n};\n\nFootballTypeCard.prototype = {\n heading: PropTypes.string,\n description: PropTypes.string,\n images: PropTypes.object,\n ctaId: PropTypes.string,\n href: PropTypes.string,\n};\n\nexport default FootballTypeCard;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { breakpoints, colors, borderRadius, spacing } = useTheme();\n\n return {\n card: css`\n height: 100%;\n position: relative;\n &:nth-of-type(1) {\n margin-top: -4rem;\n }\n display: grid;\n text-decoration: none;\n grid-template-rows: 13.875rem 1fr;\n max-width: 22.6875rem;\n grid-auto-flow: row;\n z-index: 2;\n\n ${breakpoints.m} {\n max-width: 100%;\n grid-template-rows: 100%;\n &:nth-of-type(odd) {\n @media screen and (min-width: 771px) {\n margin-top: -16rem;\n }\n margin-top: -12rem;\n }\n margin-top: -8rem;\n }\n\n &:hover,\n &:focus {\n outline: 0;\n &::after {\n content: '';\n position: absolute;\n transition: all 0.1s ease;\n background: linear-gradient(\n 180deg,\n rgba(47, 46, 46, 0.64) 0%,\n rgba(0, 79, 158, 0.64) 100%\n );\n width: 100%;\n height: 13.875rem;\n\n ${breakpoints.l} {\n height: 100%;\n }\n top: 0;\n }\n label,\n span,\n a,\n svg {\n color: ${colors.white};\n }\n\n p::after {\n background: ${colors.darkGrey};\n }\n\n svg {\n transition: 0.6s ease-in;\n transform: translateX(50%);\n }\n\n div {\n border-top: ${borderRadius.s} solid ${colors.darkGrey};\n }\n ${breakpoints.m} {\n p:nth-of-type(1) {\n &:after {\n border-bottom: 10px solid ${colors.darkBlue};\n content: '';\n position: absolute;\n left: 0;\n bottom: -2px;\n width: 200px;\n display: inline-block;\n z-index: -1;\n }\n }\n }\n }\n `,\n header: css`\n font-family: 'FS Dillon';\n font-style: italic;\n text-transform: capitalize;\n font-size: 42px;\n line-height: 40px;\n position: relative;\n display: inline-block;\n color: ${colors.white};\n\n &:after {\n width: 0%;\n animation: increase 2s;\n animation-fill-mode: forwards;\n }\n\n @keyframes increase {\n 100% {\n width: 100%;\n }\n }\n\n ${breakpoints.l} {\n font-size: 64px;\n line-height: 48px;\n font-weight: 700;\n }\n `,\n description: css`\n color: ${colors.lightBlue};\n padding: 4px 18px 12px 7px;\n letter-spacing: 0.02rem;\n line-height: 22px;\n position: relative;\n margin-bottom: 10px;\n display: grid;\n grid-template-columns: 95%;\n font-weight: 400;\n &::after {\n content: '';\n position: absolute;\n left: 5px;\n bottom: 0;\n height: ${borderRadius.s};\n width: 60px;\n background: ${colors.red};\n }\n `,\n infoSection: css`\n border-top: ${borderRadius.s} solid ${colors.red};\n width: 100%;\n cursor: pointer;\n background-color: ${colors.navy};\n padding: 8px 0;\n\n ${breakpoints.l} {\n left: ${spacing.xl};\n padding: 26px 0 0 18px;\n position: absolute;\n z-index: 2;\n bottom: -7rem;\n width: Calc(100% - 4rem);\n }\n\n ${breakpoints.xl} {\n padding: 35px 20px 0 30px;\n background-color: ${colors.navy};\n }\n `,\n learnMore: css`\n color: ${colors.white};\n cursor: pointer;\n position: relative;\n text-transform: uppercase;\n padding: 5px;\n font-size: 14px;\n font-weight: normal;\n span {\n padding-right: 5px;\n }\n\n ${breakpoints.l} {\n font-size: 0.875rem;\n }\n `,\n rightArrow: css`\n color: ${colors.red};\n `,\n imgSection: ({ desktop, mobile }) => css`\n width: 100%;\n height: 100%;\n background: url(${mobile.src}) 0 0 no-repeat;\n background-size: cover;\n position: relative;\n\n ${breakpoints.l} {\n background: url(${desktop.src}) 0 0 no-repeat;\n background-size: cover;\n }\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport { Fragment } from 'react';\n\nimport { recommendationsPageAnalytics } from '../../analyticsConsts';\nimport {\n BOYS_OR_MEN_MIXED,\n CASUAL,\n CASUAL_LINK,\n CLUB_LINK,\n CLUBS,\n DAY_PREFERENCE_DATA,\n DONT_MIND,\n EMPTY_STRING,\n GIRLS_OR_WOMEN_MIXED,\n KICKABOUT_CASUAL,\n LOCATION_DATA,\n MIXED_VALUE,\n YES,\n} from '../../const';\nimport { useFilterPanelToggleContext } from '../../context/filterPanelToggle';\nimport { useNestedFilterPanelContext } from '../../context/nestedFilterPanel';\nimport { usePreferencesContext } from '../../context/preferences';\nimport weekdaysFormatter from '../../formatters/weekdays';\nimport useAgeTitle from '../../hooks/useAgeTitle';\nimport useDisabilityTitle from '../../hooks/useDisabilityTitle';\nimport ExternalLink from '../ExternalLink';\nimport filtersConfig from '../FiltersPanel/filtersConfig';\nimport LinkButton from '../LinkButton';\nimport Text from '../Text';\nimport useStyles from './styles';\n\nconst {\n RECOMMENDED_FOOTBALL_ONBOARDING_CTA_LEARN_MORE,\n RECOMMENDED_FOOTBALL_ONBOARDING_WRAPPER,\n RECOMMENDED_FOOTBALL_ONBOARDING_DAY_PREFERENCE,\n RECOMMENDED_FOOTBALL_ONBOARDING_LOCATION,\n} = recommendationsPageAnalytics;\n\nconst OnboardingCriteria = () => {\n const styles = useStyles();\n const { preferences } = usePreferencesContext();\n const { isFilterPanelToggled, setFilterPanelToggle } =\n useFilterPanelToggleContext();\n const { setSelectedFilters, setNested } = useNestedFilterPanelContext();\n const {\n Age,\n ReadableLocation,\n SelectedFootballType,\n PlayWith,\n Disabilityoption,\n WeekDays,\n FootballType,\n } = preferences;\n const ageTitle = useAgeTitle();\n const disabilityTitle = useDisabilityTitle();\n const footballType =\n SelectedFootballType === KICKABOUT_CASUAL ? CASUAL : CLUBS;\n const volunteer = JSON.parse(sessionStorage.getItem('ISVOLUNTEER'));\n return (\n \n {preferences && Object.keys(preferences).length !== 0 && (\n \n \n {!volunteer && `${Age}-year-old`}{' '}\n {ageTitle}{' '}\n {(PlayWith === BOYS_OR_MEN_MIXED ||\n PlayWith === GIRLS_OR_WOMEN_MIXED) &&\n `or ${MIXED_VALUE} `}\n football,\n {Disabilityoption === YES && ` catering for ${disabilityTitle},`} on\n {\n // set day preference data\n setSelectedFilters(\n filtersConfig[SelectedFootballType][DAY_PREFERENCE_DATA]\n );\n setNested(true);\n setFilterPanelToggle(!isFilterPanelToggled);\n }}\n >\n {weekdaysFormatter(WeekDays)}\n \n {weekdaysFormatter(WeekDays).toString().toLowerCase() === 'any'\n ? 'day '\n : EMPTY_STRING}\n near\n {\n // set location data\n setSelectedFilters(\n filtersConfig[SelectedFootballType][LOCATION_DATA]\n );\n setNested(true);\n setFilterPanelToggle(!isFilterPanelToggled);\n }}\n >\n {/* Empty value will show \"My location\" */}\n {ReadableLocation ? ReadableLocation : 'My location'}.\n \n \n {FootballType !== DONT_MIND && (\n \n Learn more about\n {footballType} football\n \n )}\n \n )}\n \n );\n};\n\nexport default OnboardingCriteria;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { colors, breakpoints, spacing } = useTheme();\n\n return {\n link: css`\n font-size: 16px;\n color: ${colors.white};\n font-weight: 400;\n text-align: center;\n padding-top: ${spacing.xs};\n\n ${breakpoints.m} {\n font-size: 18px;\n }\n\n button {\n display: inline-block;\n padding: 0 3px;\n }\n `,\n externalLink: css`\n color: ${colors.white};\n font-weight: 400;\n font-size: 16px;\n padding-top: ${spacing.xs};\n display: inline-block;\n border: 1px solid transparent;\n max-width: 100%;\n width: 100%;\n margin: 0 auto;\n text-align: center;\n\n &:focus {\n outline: 0;\n border: 1px solid ${colors.white};\n }\n\n ${breakpoints.m} {\n font-size: 18px;\n }\n `,\n OnboardingWrapper: css`\n margin: 1.5rem 0 ${spacing.s};\n `,\n daysLink: css`\n text-transform: lowercase;\n `,\n footballLink: css`\n text-transform: capitalize;\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport PropTypes from 'prop-types';\nimport { useEffect, useState } from 'react';\n\nimport { CHARLIMIT_HOMEPAGE } from '../../const';\nimport Button from '../Button';\nimport OnboardingCriteria from '../OnboardingCriteria';\nimport Text from '../Text';\nimport useStyles from './styles';\n\nconst Hero = ({\n textSize = 1,\n text,\n images,\n overlayVariation = 4,\n ctaText,\n ctaId,\n wrapperId,\n ctaOnClick,\n isOnBoardingCriteriaIncluded = false,\n scrolldirectionContext,\n isHomePage = false,\n headerHeight,\n isRec = false,\n ...rest\n}) => {\n const styles = useStyles();\n const hasCta = ctaText && ctaOnClick;\n const [hasLoaded, setHasLoaded] = useState(false);\n const { main, secondary } = text;\n\n useEffect(() => {\n setTimeout(() => {\n setHasLoaded(true);\n }, 300);\n }, []);\n\n return (\n \n \n {main && (\n \n {main}\n \n )}\n {secondary && (\n \n {secondary.substring(0, CHARLIMIT_HOMEPAGE)}\n \n )}\n {hasCta && (\n ctaOnClick()}\n >\n {ctaText}\n \n )}\n {isOnBoardingCriteriaIncluded && }\n \n \n );\n};\n\nHero.prototype = {\n textSize: PropTypes.number,\n text: PropTypes.object,\n images: PropTypes.object,\n overlayVariation: PropTypes.number,\n ctaText: PropTypes.string,\n ctaId: PropTypes.string,\n wrapperId: PropTypes.string,\n ctaOnClick: PropTypes.func,\n isOnBoardingCriteriaIncluded: PropTypes.bool,\n scrolldirectionContext: PropTypes.string,\n isHomePage: PropTypes.bool,\n headerHeight: PropTypes.string,\n isRec: PropTypes.bool,\n};\n\nexport default Hero;\n","import { css } from '@emotion/react';\n\nimport { SCROLL_UP } from '../../const';\nimport useTheme from '../../hooks/useTheme';\nimport publicPath from '../../utils/publicPath';\n\nexport default () => {\n const {\n screenSizes,\n typography,\n breakpoints,\n spacing,\n colors,\n heights,\n borderRadius,\n } = useTheme();\n\n return {\n hero: (\n { mobile, desktop },\n overlayVariation,\n scrollDirection,\n headerHeight,\n isRec\n ) => {\n return css`\n display: grid;\n align-items: end;\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n grid-template-rows: 70% 30%;\n align-items: center;\n background: linear-gradient(\n to bottom,\n rgba(0, 0, 0, 0) 20%,\n rgba(1, 30, 65) ${isRec === 'true' ? '55%' : '75%'},\n rgba(1, 30, 65) 100%\n ),\n url(${mobile.src}) 75% 0 no-repeat;\n background-size: cover;\n padding: 0 ${spacing.s};\n margin-top: ${scrollDirection === SCROLL_UP\n ? 0\n : heights.mainNav.mobile};\n\n ${breakpoints.m} {\n grid-template-rows: 60% 40%;\n align-items: center;\n background: linear-gradient(\n to bottom,\n rgba(0, 0, 0, 0) 20%,\n rgba(1, 30, 65) 75%,\n rgba(1, 30, 65) 100%\n ),\n url(${desktop.src}) center 0 no-repeat;\n background-size: cover;\n margin-top: ${scrollDirection === SCROLL_UP ? 0 : headerHeight};\n\n &::before {\n top: 10vh;\n left: 0;\n width: 100%;\n height: 100vh;\n z-index: 1;\n outline: 0;\n\n ${breakpoints.l} {\n height: 700px;\n top: calc(100vh - 95vh);\n }\n }\n\n &::after {\n background: url(${publicPath(\n '/images/common/discover-football-watermark.svg'\n )})\n right center no-repeat;\n }\n }\n `;\n },\n textWrapper: hasLoaded => css`\n position: relative;\n z-index: 1;\n align-self: end;\n opacity: 0;\n transition: opacity 0.5s;\n width: 90vw;\n max-width: 390px;\n margin: 0 auto;\n margin: 0px auto calc(27vh);\n\n ${hasLoaded &&\n css`\n opacity: 1;\n `}\n\n &.fadeOut {\n opacity: 0.3;\n }\n\n ${breakpoints.m} {\n max-width: ${screenSizes.xl};\n }\n `,\n mainText: isHomePage => css`\n ${typography.headings[3].mobile};\n text-transform: capitalize;\n z-index: 2;\n position: relative;\n color: ${colors.white};\n max-width: unset;\n transition: opacity 0.5s;\n text-align: center;\n margin: auto;\n ${isHomePage &&\n css`\n text-transform: uppercase;\n max-width: 50%;\n left: 0;\n text-align: left;\n margin: 0;\n `}\n\n &::after {\n content: '';\n position: absolute;\n left: 0;\n bottom: -15px;\n width: 70px;\n border-bottom: ${borderRadius.s} solid ${colors.red};\n left: Calc(100% - 61%);\n\n ${isHomePage &&\n css`\n left: 0;\n `}\n\n ${breakpoints.m} {\n left: Calc(100% - 53%);\n }\n }\n\n ${breakpoints.m} {\n ${typography.headings[1].desktop};\n max-width: 100%;\n font-family: FS Dillon;\n text-align: center;\n }\n\n ${breakpoints.l} {\n &::before {\n left: -8rem;\n }\n }\n `,\n secondaryText: css`\n color: ${colors.white};\n margin-top: 1.8rem;\n\n ${breakpoints.m} {\n margin-top: ${spacing.m};\n text-align: center;\n padding: 0.2rem 0 ${spacing.m} 0;\n }\n `,\n cta: css`\n background-color: ${colors.red};\n color: ${colors.white};\n text-transform: uppercase;\n margin-top: 1.5rem;\n border: 3px solid transparent;\n\n ${breakpoints.m} {\n margin: auto;\n max-width: 325px;\n }\n &:focus {\n outline: 0;\n background-color: transparent;\n border: 3px solid ${colors.white};\n border-radius: 0.25rem;\n }\n &:hover{\n border: 3px solid transparent;\n border-radius: 0rem;\n }\n }\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport PropTypes from 'prop-types';\n\nimport ExternalLink from '../ExternalLink';\nimport Text from '../Text';\nimport useStyles from './styles';\n\nconst InitiativeCard = ({ heading, description, href, ...rest }) => {\n const styles = useStyles();\n const { images, ctaId } = rest;\n\n return (\n
    \n
    \n \n \n {description}\n \n \n
    \n
    \n );\n};\n\nInitiativeCard.prototype = {\n heading: PropTypes.string,\n description: PropTypes.string,\n href: PropTypes.string,\n};\n\nexport default InitiativeCard;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { breakpoints, colors } = useTheme();\n\n return {\n card: css`\n height: 100%;\n display: grid;\n padding: 0 1rem;\n grid-template-rows: 2fr 1fr;\n ${breakpoints.l} {\n padding: 0 0.625rem;\n grid-template-columns: 1fr;\n grid-template-rows: 100%;\n }\n position: relative;\n &:hover,\n &:focus {\n cursor: pointer;\n }\n `,\n description: css`\n color: ${colors.white};\n padding-top: 1.5rem;\n letter-spacing: 0.02rem;\n line-height: 22px;\n position: relative;\n bottom: -10.45rem;\n margin-bottom: 10px;\n width: 100%;\n text-align: center;\n\n ${breakpoints.l} {\n bottom: -12.45rem;\n }\n p :: after {\n text-decoration: none;\n }\n `,\n imgSection: ({ images }, indexVal) => css`\n width: 100%;\n height: 100%;\n min-height: 10.75rem;\n background: url(${images.mobile.src}) center center no-repeat;\n background-size: cover;\n position: relative;\n display: block;\n text-decoration: none;\n\n &::after {\n content: '';\n position: absolute;\n width: 100%;\n height: 100%;\n background-image: url(${`/images/desktop/home/crops/crop-${indexVal}.svg`});\n background-position: bottom right;\n background-repeat: no-repeat;\n }\n\n ${breakpoints.l} {\n background: url(${images.desktop.src}) center center no-repeat;\n background-size: cover;\n }\n &:hover,\n &:focus {\n outline: 0;\n p {\n text-decoration: underline;\n }\n &::after {\n background-image: linear-gradient(\n 180deg,\n rgba(47, 46, 46, 0.64) 0%,\n rgba(0, 79, 158, 0.64) 100%\n );\n top: 0;\n z-index: 1;\n }\n }\n `,\n };\n};\n","export default (savedPreferences, action) => {\n switch (action.type) {\n case 'save':\n return { ...savedPreferences, ...action.payload };\n case 'remove': {\n const {\n [action.readableId]: removed,\n ...filteredPreferences\n } = savedPreferences;\n return filteredPreferences;\n }\n default:\n return savedPreferences;\n }\n};\n","import { getCategoryName } from '../../components/OnboardingModal/MiniOnboarding';\n\nexport default eventDetails => {\n const categoryName = getCategoryName();\n window.dataLayer.push({\n event: 'All Events',\n eventCategory: eventDetails?.eventCategory\n ? eventDetails?.eventCategory\n : 'FF Onboarding',\n eventAction: eventDetails?.eventAction,\n eventLabel: eventDetails?.eventLabel,\n eventparameter1: eventDetails?.eventparameter1,\n eventparameter2: eventDetails?.eventparameter2,\n eventparameter3: eventDetails?.eventparameter3,\n eventparameter4: categoryName ? categoryName : undefined,\n item_list_name: eventDetails?.eventLabel?.toLowerCase(),\n age_group: eventDetails?.eventparameter1,\n link_text: eventDetails?.link_text?.toLowerCase(),\n disability: eventDetails?.eventparameter2?.toLowerCase(),\n location: eventDetails?.location?.toLowerCase(),\n gender_group: eventDetails?.gender_group,\n event_name: eventDetails?.event_name?.toLowerCase(),\n journey: categoryName ? categoryName?.toLowerCase() : 'find football',\n });\n window.dataLayer.push({\n event: 'Removal Tag',\n eventparameter1: undefined,\n eventparameter2: undefined,\n eventparameter3: undefined,\n eventparamenter4: undefined,\n item_list_name: undefined,\n age_group: undefined,\n link_text: undefined,\n disability: undefined,\n location: undefined,\n gender_group: undefined,\n event_name: undefined,\n journey: undefined,\n });\n};\n","import onboardingDataLayer from '../onboardingDataLayer';\n\nexport default data => {\n switch (true) {\n case JSON.parse(sessionStorage.getItem('ISMINIONBOARDING')):\n return onboardingDataLayer(data);\n case JSON.parse(sessionStorage.getItem('ISMINIONBOARDING')) === false:\n return onboardingDataLayer(data);\n default:\n return;\n }\n};\n","/** @jsxRuntime classic */\n/** @jsx jsx */\nimport { jsx } from '@emotion/react';\nimport PropTypes from 'prop-types';\nimport { useEffect, useLayoutEffect, useRef } from 'react';\n\nimport { onBoardingModalAnalytics } from '../../analyticsConsts';\nimport { useOnboardingDataContext } from '../../context/OnboardingData';\nimport Button from '../Button';\nimport Text from '../Text';\nimport useStyles from './styles';\n\nconst { ONBOARDING_CTA_NO, ONBOARDING_CTA_YES } = onBoardingModalAnalytics;\n\nconst ConfirmationQuestion = ({ onClickYes, onClickNo }) => {\n const titleRef = useRef();\n const styles = useStyles();\n const { OnboardingContext, setOnboardingDataContext } =\n useOnboardingDataContext();\n\n useLayoutEffect(() => {\n setTimeout(() => {\n titleRef.current?.focus({ preventScroll: true });\n }, 200);\n }, []);\n\n useEffect(() => {\n setOnboardingDataContext({\n ...OnboardingContext,\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n
    \n
    \n \n {`Are you sure you want to quit?`}\n \n {`If you quit your progress will be lost`}\n
    \n
      \n
    • \n onClickYes()}\n >{`Yes`}\n
    • \n
    • \n onClickNo()}\n >{`No`}\n
    • \n
    \n
    \n );\n};\n\nConfirmationQuestion.prototype = {\n onClickNo: PropTypes.func,\n onClickYes: PropTypes.func,\n};\n\nexport default ConfirmationQuestion;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { breakpoints, colors, borderRadius, spacing, mediaQueries } =\n useTheme();\n\n return {\n confirmation: css`\n display: grid;\n align-items: baseline;\n grid-gap: ${spacing.s};\n\n ${breakpoints.l} {\n grid-template-columns: 1fr 1fr;\n grid-gap: ${spacing.m};\n padding: ${spacing.xxl};\n\n button {\n &:focus:not(:hover) {\n text-decoration: underline;\n }\n }\n }\n\n ${mediaQueries.zoomedIn} {\n overflow: auto;\n height: 100%;\n }\n `,\n title: css`\n font-size: ${spacing.m};\n font-style: italic;\n line-height: 2.25rem;\n text-align: center;\n\n ${breakpoints.l} {\n text-align: left;\n font-size: 3.25rem;\n line-height: 3.125rem;\n outline: 0;\n }\n `,\n helpText: css`\n text-align: center;\n\n ${breakpoints.l} {\n text-align: left;\n }\n `,\n options: css`\n li {\n padding-bottom: ${spacing.xs};\n }\n button {\n width: 100%;\n font-size: 1.125rem;\n font-weight: 700;\n padding: 1.1rem ${spacing.s};\n border: solid transparent;\n\n &:focus:not(:hover) {\n border: 3px solid ${colors.navy};\n border-radius: ${borderRadius.s};\n background-color: ${colors.white};\n outline: 0;\n }\n }\n\n ${mediaQueries.zoomedIn} {\n padding-left: 5px;\n padding-right: 5px;\n }\n `,\n };\n};\n","export default (state, action) => {\n switch (action.type) {\n case 'add':\n state = [];\n return [...state, { AgeGroupId: action.payload.id }];\n case 'remove':\n return state.filter(\n answerId => answerId.AgeGroupId !== action.payload.id\n );\n default:\n return state;\n }\n};\n","export default ({ ageRanges, selectedAge, selectedQuestion }) => {\n if (!ageRanges || ageRanges.length === 0) return '';\n // If there's just one age range in the array\n // we can assume there's no age restrictions\n if (selectedQuestion) {\n return selectedQuestion;\n }\n if (ageRanges.length === 1) {\n return ageRanges[0].nextQuestionId;\n } else {\n // Get the next question ID based on the selected age\n const selectedRange = ageRanges.filter(\n range => selectedAge >= range.min && selectedAge <= range.max\n );\n return selectedRange[0] ? selectedRange[0].nextQuestionId : '';\n }\n};\n","/** @jsxImportSource @emotion/react */\n\nimport { onBoardingModalAnalytics } from '../../analyticsConsts';\nimport { CircleArrow } from '../Icons';\nimport LinkButton from '../LinkButton';\nimport useStyles from './styles';\n\nconst { ONBOARDING_CTA_NEXT_QUESTION } = onBoardingModalAnalytics;\n\nconst NextNav = ({ onAnswer, ...rest }) => {\n const styles = useStyles();\n\n return (\n onAnswer()}\n aria-label=\"Go to the next question\"\n {...rest}\n >\n Next \n \n );\n};\n\nexport default NextNav;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { spacing, colors, breakpoints, borderRadius, utility, mediaQueries } =\n useTheme();\n\n return {\n link: css`\n display: flex;\n align-items: center;\n position: absolute;\n bottom: 0;\n right: 0;\n border: 1.5px solid transparent;\n color: ${colors.white};\n padding: 0.2rem;\n text-decoration: none;\n outline: 0;\n\n &:hover {\n outline: 0;\n text-decoration: underline;\n }\n\n &:focus:not(:hover) {\n color: ${colors.white};\n }\n\n &:disabled {\n ${utility.checkboxHidden}\n }\n\n svg {\n display: inline-block;\n width: 30px;\n height: 30px;\n margin-left: ${spacing.xs};\n transform: rotate(180deg);\n }\n\n ${breakpoints.l} {\n bottom: ${spacing.xl};\n right: 7rem;\n padding: 0.2rem;\n border: 1.5px solid transparent;\n\n &:focus:not(:hover) {\n border: 1.5px solid ${colors.white};\n border-radius: ${borderRadius.m};\n outline: 0;\n color: ${colors.white};\n text-decoration: underline;\n }\n }\n\n ${mediaQueries.zoomedIn} {\n bottom: ${spacing.xs};\n right: ${spacing.m};\n color: ${colors.navy};\n z-index: 2;\n\n &:hover {\n color: ${colors.blue};\n }\n }\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport { useEffect, useReducer } from 'react';\n\nimport { AGE_ID, EMPTY_STRING } from '../../const';\nimport { useOnboardingDataContext } from '../../context/OnboardingData';\nimport ageGroupReducer from '../../reducers/ageGroup';\nimport getCategoryDataLayer from '../../utils/getCategoryDataLayer';\nimport getNextQuestionId from '../../utils/getNextQuestionId';\nimport idFromString from '../../utils/idFromString';\nimport NextNav from '../NextNav';\nimport useStyles from './styles';\n\nconst AgeGroupQuestion = ({\n readableId,\n answers,\n ageRanges,\n onAnswer,\n selectedAge,\n headerTitle,\n}) => {\n const styles = useStyles();\n const [answersState, dispatch] = useReducer(ageGroupReducer, []);\n const selectedAnswer = JSON.parse(sessionStorage.getItem('ISVOLUNTEER'))\n ? answers?.map(item => item?.options)\n : answers.filter(item => item.age === parseInt(selectedAge, 10))[0].options;\n const { OnboardingContext, setOnboardingDataContext } =\n useOnboardingDataContext();\n\n const changeData = ageData => {\n switch (ageData) {\n case 'U6-U7':\n return ['U6,U7'];\n case 'U8-U10':\n return ['U8,U9,U10'];\n case 'U11-U12':\n return ['U11,U12'];\n case 'U13-U14':\n return ['U13,U14'];\n case 'U15-U16':\n return ['U15,U16'];\n case 'U17-U18':\n return ['U17,U18'];\n case 'Open Aged':\n return ['Open Aged'];\n default:\n return 'Open Aged';\n }\n };\n\n const onChange = event => {\n const ageData = event.target.value;\n const id = JSON.parse(sessionStorage.getItem('ISVOLUNTEER'))\n ? changeData(ageData)\n : event.target.value;\n if (event.target.checked) {\n dispatch({ type: 'add', payload: { id } });\n } else {\n dispatch({ type: 'remove', payload: { id } });\n }\n };\n\n useEffect(() => {\n setOnboardingDataContext({\n ...OnboardingContext,\n question: headerTitle,\n agegroup: answersState[0]?.AgeGroupId,\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [headerTitle, answersState]);\n\n return (\n
    \n {selectedAnswer &&\n selectedAnswer.map(value => {\n const optionId = JSON.parse(sessionStorage.getItem('ISVOLUNTEER'))\n ? value\n : idFromString(value);\n const isChecked = !!answersState.find(answer =>\n JSON.parse(sessionStorage.getItem('ISVOLUNTEER'))\n ? answer.AgeGroupId.toString().split(',', 1)[0] ===\n value[0].split('-', 1)[0]\n : answer.AgeGroupId === value\n );\n\n return (\n \n );\n })}\n {\n onAnswer({\n answerData: {\n [readableId]: answersState.map(a => a.AgeGroupId).toString(),\n [JSON.parse(sessionStorage.getItem('ISVOLUNTEER'))\n ? AGE_ID\n : EMPTY_STRING]: JSON.parse(\n sessionStorage.getItem('ISVOLUNTEER')\n )\n ? answers?.filter(\n item =>\n answersState.map(a => a.AgeGroupId).toString() ===\n item?.ageOptions.toString()\n )[0]?.age\n : EMPTY_STRING,\n },\n nextQuestionId: getNextQuestionId({ ageRanges, selectedAge }),\n });\n getCategoryDataLayer({\n eventAction: `Step ${OnboardingContext.step} - Next CTA`,\n eventLabel: OnboardingContext.question,\n eventparameter1: `${OnboardingContext.age}${\n OnboardingContext.agegroup\n ? ' , ' + OnboardingContext.agegroup\n : ''\n }`,\n gender_group: OnboardingContext.gender_group,\n age_youth_group: OnboardingContext.agegroup,\n event_name: 'next_button_click',\n });\n }}\n />\n
    \n );\n};\n\nexport default AgeGroupQuestion;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { spacing, colors, borderRadius, breakpoints, utility } = useTheme();\n\n return {\n base: css`\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n grid-gap: 10px;\n\n ${breakpoints.l} {\n justify-content: left;\n grid-gap: 0;\n }\n `,\n answer: isChecked => css`\n display: block;\n padding: 0.8rem 0;\n background-color: ${colors.lightGrey};\n color: ${colors.navy};\n cursor: pointer;\n border-radius: ${borderRadius.s};\n border: ${borderRadius.s} solid transparent;\n text-align: center;\n font-weight: 700;\n\n ${isChecked &&\n css`\n background-color: ${colors.darkGrey};\n color: ${colors.white};\n `}\n\n ${breakpoints.l} {\n margin: ${spacing.xs} 0 0 ${spacing.xs};\n padding: ${spacing.xs} ${spacing.m};\n height: 56px;\n line-height: 36px;\n }\n `,\n label: css`\n & > input[type='checkbox']:focus + span {\n border: ${borderRadius.s} solid ${colors.navy};\n border-radius: ${borderRadius.m};\n text-decoration: underline;\n background-color: ${colors.white};\n }\n\n & > input[type='checkbox']:checked:focus + span {\n border: ${borderRadius.s} solid ${colors.navy};\n border-radius: ${borderRadius.m};\n text-decoration: none;\n background-color: ${colors.darkGrey};\n color: ${colors.white};\n }\n\n & > input[type='checkbox']:hover + span {\n background-color: ${colors.greyShade1};\n }\n \n width: 90px;\n max-width: 100px;\n ${breakpoints.l} {\n flex: 1;\n flex-basis: 50%;\n text-align: center;\n width: 100%;\n max-width: 145px;\n margin: 7px 0 0 5px; \n }\n `,\n checkbox: css`\n ${utility.checkboxHidden};\n outline: none;\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\n\n// import useStyles from './styles';\nimport { Fragment, useCallback, useEffect, useRef, useState } from 'react';\n\nimport { DISABILITY_ID } from '../../const';\nimport { useOnboardingDataContext } from '../../context/OnboardingData';\nimport getCategoryDataLayer from '../../utils/getCategoryDataLayer';\nimport getNextQuestionId from '../../utils/getNextQuestionId';\nimport NextNav from '../NextNav';\nimport { getInitialAgeLimit } from '../OnboardingModal/MiniOnboarding';\nimport Text from '../Text';\nimport useStyles from './styles';\n\nconst getSelectedQuestion = () => {\n switch (true) {\n case JSON.parse(sessionStorage.getItem('ISLETGOGIRLSPLAY')):\n return DISABILITY_ID;\n case JSON.parse(sessionStorage.getItem('ISJUSTPLAY')):\n return 'd9572be5-72f2-42af-87ea-a3298c6eacd7';\n case JSON.parse(sessionStorage.getItem('ISVOLUNTEER')):\n return 'd9572be5-72f2-42af-87ea-a3298c6eacd7';\n case JSON.parse(sessionStorage.getItem('ISWILDCATS')):\n return DISABILITY_ID;\n case JSON.parse(sessionStorage.getItem('ISYOUTHCLUB')):\n return '346dbfab-03fa-4a3a-ab18-b461d0d56dc8';\n default:\n return;\n }\n};\n\nconst AgeQuestion = ({\n readableId,\n analyticsId,\n inputTitle,\n ageRanges,\n onAnswer,\n headerTitle,\n ...rest\n}) => {\n const styles = useStyles();\n const [age, setAge] = useState(null);\n const [validationError, setValidationError] = useState(false);\n const [startingRange, setStartingRange] = useState(5);\n const [properties, setProperties] = useState();\n const inputRef = useRef();\n const { OnboardingContext, setOnboardingDataContext } =\n useOnboardingDataContext();\n\n // get configuration based on type\n useEffect(() => {\n const configuration = getInitialAgeLimit(inputTitle[rest?.searchFor]);\n setProperties(configuration);\n }, [inputTitle, rest?.searchFor]);\n\n const { startingAge, ageText, endingAge, validationErrorMsg } =\n properties || {};\n\n useEffect(() => {\n setOnboardingDataContext({\n ...OnboardingContext,\n question: headerTitle,\n step: 1,\n age: undefined,\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [headerTitle]);\n\n // set starting age\n useEffect(() => {\n setStartingRange(startingAge);\n }, [startingAge]);\n\n // Rule : Numeric range b/w 5-99.\n const validateAge = useCallback(\n age => {\n const numPattern = new RegExp(/^\\d{1,2}$/g);\n return numPattern.test(age) && age >= startingRange && age <= endingAge;\n },\n [startingRange, endingAge]\n );\n\n const handleNextNav = useCallback(\n (age, readableId, ageRanges, onAnswer) => {\n const isInvalidAge = !validateAge(age);\n\n if (isInvalidAge) {\n setValidationError(isInvalidAge);\n return;\n }\n const selectedQuestion = getSelectedQuestion();\n // if no error, proceed to the next question.\n onAnswer({\n answerData: { [readableId]: age },\n nextQuestionId: getNextQuestionId({\n ageRanges,\n selectedAge: age,\n selectedQuestion,\n }),\n });\n },\n [validateAge]\n );\n\n return (\n \n \n \n {\n setAge(event.target.value);\n setOnboardingDataContext({\n ...OnboardingContext,\n age: event.target.value,\n });\n }}\n onKeyPress={event => {\n if (!/[0-9]/.test(event.key)) {\n event.preventDefault();\n }\n }}\n onFocus={() => {\n inputRef.current.value = '';\n // to avoid 'Next' button to re-appear when input is cleaned on focus.\n setAge();\n setValidationError(false);\n }}\n ref={inputRef}\n minLength=\"1\"\n maxLength=\"2\"\n >\n \n {validationError &&

    {validationErrorMsg}

    }\n
    \n
    \n {\n handleNextNav(age, readableId, ageRanges, onAnswer);\n getCategoryDataLayer({\n eventAction: 'Step 1 - Next CTA',\n eventLabel: headerTitle,\n eventparameter1: age,\n event_name: 'next_button_click',\n });\n }}\n />\n
    \n );\n};\n\nexport default AgeQuestion;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { spacing, colors, borderRadius, breakpoints } = useTheme();\n\n return {\n base: hasError => css`\n display: flex;\n flex-direction: column;\n align-items: center;\n\n ${breakpoints.l} {\n align-items: start;\n }\n\n label {\n cursor: pointer;\n color: ${hasError ? colors.darkRed : colors.navy};\n margin-bottom: ${spacing.xs};\n }\n\n input {\n width: 10.12rem;\n border: 0.1875rem solid;\n border-color: ${hasError ? colors.darkRed : colors.lightGrey};\n border-radius: ${borderRadius.m};\n padding: ${spacing.s} ${spacing.xl};\n text-align: center;\n color: ${hasError ? colors.darkRed : ''};\n outline: 0;\n\n &:focus {\n border: 0.1875rem solid ${colors.navy};\n border-radius: ${borderRadius.m};\n }\n }\n `,\n errorBox: hasError => css`\n color: ${colors.white};\n background-color: ${colors.darkRed};\n border: 1px solid ${colors.darkRed};\n border-radius: ${borderRadius.l};\n margin-top: ${spacing.s};\n position: relative;\n opacity: ${hasError ? `1` : `0`};\n\n ${hasError &&\n css`\n transition: opacity 0.5s;\n -webkit-transition: opacity 0.5s;\n `}\n\n &::before {\n right: 45%;\n top: 0;\n border: solid transparent;\n content: ' ';\n height: 0;\n width: 0;\n position: absolute;\n pointer-events: none;\n border-color: rgba(0, 128, 0, 0);\n border-right-color: ${colors.darkRed};\n border-width: 15px;\n margin-top: -27px;\n transform: rotate(90deg);\n\n ${breakpoints.l} {\n right: 68%;\n }\n }\n\n p {\n padding: ${spacing.s};\n }\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport PropTypes from 'prop-types';\nimport { Fragment, useEffect } from 'react';\n\nimport { useOnboardingDataContext } from '../../context/OnboardingData';\nimport useGeolocation, { LOADING_STATE } from '../../hooks/useGeolocation';\nimport getCategoryDataLayer from '../../utils/getCategoryDataLayer';\nimport getNextQuestionId from '../../utils/getNextQuestionId';\nimport Button from '../Button';\nimport Loader from '../Loader';\nimport NextNav from '../NextNav';\nimport useStyles from './styles';\n\nconst GeolocationQuestion = ({\n readableId,\n answers,\n onAnswer,\n selectedAge,\n headerTitle,\n}) => {\n const styles = useStyles();\n const { geolocationData, getGeolocationData } = useGeolocation();\n const { coordinates, status, statusMessage } = geolocationData || {};\n\n const locationAnswer = answers[0];\n const postcodeAnswer = answers[1];\n const { OnboardingContext, setOnboardingDataContext } =\n useOnboardingDataContext();\n\n useEffect(() => {\n setOnboardingDataContext({\n ...OnboardingContext,\n title: locationAnswer.title,\n question: headerTitle,\n step: 3,\n location: coordinates,\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [coordinates, headerTitle]);\n\n return (\n \n {answers && (\n
      \n
    • \n {navigator.geolocation && (\n {\n getGeolocationData();\n getCategoryDataLayer({\n eventAction: `Step ${OnboardingContext.step} - ${locationAnswer.title}`,\n eventLabel: OnboardingContext.question,\n eventparameter1: `${OnboardingContext.age}${\n OnboardingContext.agegroup\n ? ' , ' + OnboardingContext.agegroup\n : ''\n }`,\n eventparameter2: OnboardingContext.disability,\n gender_group: OnboardingContext.gender_group,\n link_text: `${locationAnswer.title.toLowerCase()}`,\n event_name: 'cta_select_option_click',\n });\n }}\n >\n {locationAnswer.title}\n \n )}\n
    • \n
    • \n {\n onAnswer({\n answerData: {\n [readableId]: 'No',\n },\n nextQuestionId: getNextQuestionId({\n ageRanges: postcodeAnswer.ageRanges,\n selectedAge,\n }),\n });\n getCategoryDataLayer({\n eventAction: `Step ${OnboardingContext.step} - ${postcodeAnswer.title}`,\n eventLabel: OnboardingContext.question,\n eventparameter1: `${OnboardingContext.age}${\n OnboardingContext.agegroup\n ? ' , ' + OnboardingContext.agegroup\n : ''\n }`,\n eventparameter2: OnboardingContext.disability,\n gender_group: OnboardingContext.gender_group,\n link_text: `${postcodeAnswer.title.toLowerCase()}`,\n event_name: 'cta_select_option_click',\n });\n }}\n >\n {postcodeAnswer.title}\n \n
    • \n
    \n )}\n
    \n {status === LOADING_STATE ? (\n \n ) : (\n statusMessage\n )}\n
    \n {\n onAnswer({\n answerData: {\n [readableId]: 'Yes',\n Latitude: coordinates.latitude,\n Longitude: coordinates.longitude,\n },\n nextQuestionId: getNextQuestionId({\n ageRanges: locationAnswer.ageRanges,\n selectedAge,\n }),\n });\n getCategoryDataLayer({\n eventAction: `Step ${OnboardingContext.step} - ${OnboardingContext.title}`,\n eventLabel: OnboardingContext.question,\n eventparameter1: `${OnboardingContext.age}${\n OnboardingContext.agegroup\n ? ' , ' + OnboardingContext.agegroup\n : ''\n }`,\n eventparameter2: OnboardingContext.disability,\n eventparameter3: OnboardingContext.location,\n gender_group: OnboardingContext.gender_group,\n location: OnboardingContext.location,\n event_name: 'next_button_click',\n });\n }}\n />\n
    \n );\n};\n\nGeolocationQuestion.prototype = {\n readableId: PropTypes.string,\n answers: PropTypes.object,\n onAnswer: PropTypes.func,\n selectedAge: PropTypes.string,\n headerTitle: PropTypes.string,\n};\n\nexport default GeolocationQuestion;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { colors, spacing, breakpoints, typography } = useTheme();\n\n return {\n answer: css`\n padding-bottom: ${spacing.s};\n\n button {\n font-size: 1.125rem;\n font-weight: 700;\n padding: 1.1rem ${spacing.s};\n border: 3px solid transparent;\n\n ${breakpoints.l} {\n &:focus:not(:hover) {\n outline: 0;\n border: 3px solid ${colors.navy};\n background-color: ${colors.white};\n text-decoration: underline;\n }\n }\n }\n `,\n link: css`\n padding: ${spacing.xs};\n `,\n inputWrapper: css`\n display: flex;\n border: 1px solid ${colors.lightGrey};\n border-radius: ${spacing.xs};\n align-items: center;\n padding: 0 ${spacing.m};\n width: 300px;\n `,\n input: css`\n ${typography.base};\n appearance: none;\n background-color: ${colors.white};\n border: none;\n font: inherit;\n color: ${colors.navy};\n line-height: inherit;\n padding: ${spacing.s};\n transition-duration: 0.2s;\n transition-property: border-color;\n width: 100%;\n\n &:hover,\n &:focus {\n outline: 0;\n border-color: ${colors.navy};\n }\n `,\n error: css`\n padding: ${spacing.xs};\n color: ${colors.red};\n `,\n };\n};\n","import {\n DISABILITY,\n EMPTY_STRING,\n ONBOARDING_PREFERENCES,\n YES,\n} from '../../const';\nimport useLocalStorage from '../useLocalStorage';\n\n// return folder name based age criteria\nexport default selectedAge => {\n let ageCriteria = EMPTY_STRING;\n const { getLocalItem } = useLocalStorage();\n const preferencesObj = JSON.parse(getLocalItem(ONBOARDING_PREFERENCES)) || {};\n const { Age, SelectedFootballType, Disabilityoption } = preferencesObj;\n const age = selectedAge ? parseInt(selectedAge) : Age;\n\n if (age >= 5 && age <= 10) {\n ageCriteria = `/5-10`;\n } else if (age >= 11 && age <= 17) {\n ageCriteria = `/11-17`;\n } else if (age >= 18 && age <= 30) {\n ageCriteria = `/18-30`;\n } else if (age >= 31 && age <= 50) {\n ageCriteria = `/31-50`;\n } else if (age > 50) {\n ageCriteria = `/51`;\n }\n \n return selectedAge\n ? ageCriteria\n : `${SelectedFootballType}${\n Disabilityoption === YES ? `/${DISABILITY}` : ageCriteria\n }`;\n};\n","/** @jsxImportSource @emotion/react */\n\nimport useStyles from './styles';\n\nconst ButtonAnswer = ({\n children,\n description,\n image,\n icon: Icon,\n keylineVariant = 1,\n isGender = false,\n ...rest\n}) => {\n const styles = useStyles();\n const hasDescription = !!description;\n\n return (\n \n \n {Icon && }\n {children}\n \n {description && {description}}\n {image && (\n \n )}\n \n );\n};\n\nexport default ButtonAnswer;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\nimport publicPath from '../../utils/publicPath';\n\nexport default () => {\n const { utility, colors, spacing, borderRadius, breakpoints, typography } =\n useTheme();\n\n return {\n btn: ({ keylineVariant, hasDescription, isGender }) => {\n const keylineImgPath = `/images/common/keylines/keyline-${keylineVariant}.png`;\n\n return css`\n ${utility.buttonDefault};\n line-height: 1.375rem;\n position: relative;\n z-index: 1;\n display: block;\n color: ${colors.navy};\n width: 100%;\n max-width: 460px;\n max-height: 120px;\n text-align: left;\n padding: 1.3rem ${spacing.s};\n font-family: 'FS Dillon';\n font-size: 1.275rem;\n font-weight: 700;\n border-radius: ${borderRadius.s};\n outline: 0;\n\n span {\n display: flex;\n align-items: center;\n }\n\n svg {\n margin-right: ${spacing.xs};\n }\n\n &::before {\n content: '';\n display: block;\n position: absolute;\n z-index: -1;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: url(${publicPath(keylineImgPath)}) bottom right no-repeat;\n background-size: 55%;\n background-color: ${colors.lightGrey};\n transition: background-color 0.3s ease-in;\n outline: 0;\n }\n\n ${isGender === false &&\n css`\n &:hover {\n &::before {\n background-color: ${colors.lightBlue};\n }\n }\n `}\n\n ${breakpoints.l} {\n font-size: 1.5rem;\n padding: ${hasDescription ? '2rem' : '2.5rem'} ${spacing.m};\n outline: 0;\n\n &::before {\n background-size: 55%;\n outline: 0;\n }\n\n &:focus-visible:not(:hover) {\n &::before {\n background-color: ${colors.white};\n }\n }\n }\n `;\n },\n description: css`\n font-size: 0.8rem;\n font-weight: 400;\n color: ${colors.darkGrey};\n\n ${breakpoints.l} {\n ${typography.base};\n }\n `,\n image: css`\n display: block;\n position: absolute;\n bottom: 0;\n right: 0;\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\n\nimport { Fragment, useEffect, useState } from 'react';\n\nimport {\n AGE,\n DISABILITY_ID,\n MEN,\n MIXED_VALUE,\n ONBOARDING_IMAGE_URL,\n WOMEN,\n} from '../../const';\nimport { useOnboardingDataContext } from '../../context/OnboardingData';\nimport useOnboardingImage from '../../hooks/useOnboardingImage';\nimport getCategoryDataLayer from '../../utils/getCategoryDataLayer';\nimport getNextQuestionId from '../../utils/getNextQuestionId';\nimport publicPath from '../../utils/publicPath';\nimport ButtonAnswer from '../ButtonAnswer';\nimport CheckboxAnswer from '../CheckboxAnswer';\nimport { CircleTick } from '../Icons';\nimport NextNav from '../NextNav';\nimport useStyles from './styles';\n\n// loading dynamic images based on age\nconst GetDynamicImages = (selectedAge = 60, answers) => {\n const { mandatory, optional } = answers;\n const url = `${ONBOARDING_IMAGE_URL}${AGE}/`;\n const selectedAgeValue = useOnboardingImage(selectedAge);\n mandatory[0].image = publicPath(`${url}${WOMEN}${selectedAgeValue}.png`);\n mandatory[1].image = publicPath(`${url}${MEN}${selectedAgeValue}.png`);\n optional.image = publicPath(`${url}${MIXED_VALUE}${selectedAgeValue}.png`);\n return answers;\n};\n\nconst getSelectedQuestion = () => {\n switch (true) {\n case JSON.parse(sessionStorage.getItem('ISJUSTPLAY')):\n case JSON.parse(sessionStorage.getItem('ISAGEUK')):\n case JSON.parse(sessionStorage.getItem('ISYOUTHCLUB')):\n case JSON.parse(sessionStorage.getItem('ISADULTCLUB')):\n case JSON.parse(sessionStorage.getItem('ISVOLUNTEER')):\n return DISABILITY_ID;\n default:\n return;\n }\n};\n\nconst MultipleOptionalQuestion = ({\n readableId,\n answers,\n multiOptional,\n onAnswer,\n selectedAge,\n headerTitle,\n}) => {\n const styles = useStyles();\n const [selectedAnswer, setSelectedAnswer] = useState();\n const [optionalIsSelected, setOptionalIsSelected] = useState(false);\n const [isAnswerSelected, setIsAnswerSelected] = useState(false);\n const [questions, setQuestions] = useState();\n const [prevAnswer, setPrevAnswer] = useState(false);\n const [notselect, setNotselectAnswer] = useState();\n const [bothAnswer, setBothAnswer] = useState(false);\n const { OnboardingContext, setOnboardingDataContext } =\n useOnboardingDataContext();\n\n useEffect(() => {\n const dynamicImagePath = GetDynamicImages(selectedAge, answers);\n setQuestions(dynamicImagePath);\n }, [selectedAge, answers]);\n\n const { mandatory, optional } = questions || {};\n\n const getQuestionValue = () => {\n // Male or Female selected only\n if (!!optionalIsSelected) {\n return selectedAnswer?.value;\n }\n\n // Male or Female and Mixed combined\n if (!optionalIsSelected && selectedAnswer) {\n return selectedAnswer.combinedValue;\n }\n };\n\n const selectAnswer = answer => {\n setSelectedAnswer(answer);\n setIsAnswerSelected(true);\n };\n\n const selectDeselectAnswer = answer => {\n setBothAnswer(false);\n setNotselectAnswer(false);\n setPrevAnswer(answer.answerId);\n\n if (answer.answerId === prevAnswer) {\n setNotselectAnswer(true);\n }\n\n setIsAnswerSelected(true);\n\n if (notselect === false && prevAnswer === answer.answerId) {\n setSelectedAnswer(null);\n setPrevAnswer(null);\n } else {\n if (prevAnswer ? prevAnswer !== answer.answerId && !bothAnswer : false) {\n setNotselectAnswer(true);\n setSelectedAnswer(multiOptional?.mandate[0]);\n if (selectedAnswer?.answerId !== 5) {\n setBothAnswer(true);\n }\n } else {\n const filteranswer = mandatory.filter(\n answers => answers.answerId !== answer.answerId\n );\n setSelectedAnswer(bothAnswer === true ? filteranswer[0] : answer);\n if (bothAnswer === true && filteranswer[0]) {\n setPrevAnswer(filteranswer[0].answerId);\n }\n else{}\n setNotselectAnswer(false);\n }\n }\n };\n\n useEffect(() => {\n setOnboardingDataContext({\n ...OnboardingContext,\n question: headerTitle,\n gender_group:\n selectedAnswer?.title === 'Female football' && optionalIsSelected\n ? 'female'\n : selectedAnswer?.title === 'Female football' && !optionalIsSelected\n ? 'female | mixed'\n : selectedAnswer?.title === 'Male football' && optionalIsSelected\n ? 'male'\n : selectedAnswer?.title === 'Male football' && !optionalIsSelected\n ? 'male | mixed'\n : undefined,\n step: 2,\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [headerTitle, selectedAnswer, optionalIsSelected]);\n\n return (\n \n {mandatory && (\n
      \n {mandatory.map(answer => {\n const {\n answerId,\n analyticsId,\n title,\n value,\n combinedValue,\n answerType,\n ageRanges,\n ...rest\n } = answer;\n const isSelected = JSON.parse(sessionStorage.getItem('ISVOLUNTEER'))\n ? bothAnswer === true\n ? true\n : notselect === true\n ? false\n : selectedAnswer && selectedAnswer.answerId === answerId\n : selectedAnswer && selectedAnswer.answerId === answerId;\n\n return (\n
    • \n \n
    • \n );\n })}\n {optional && (\n
    • \n setOptionalIsSelected(!optionalIsSelected)}\n tabIndex={-1}\n >\n Increase results with mixed football options\n \n
    • \n )}\n
    \n )}\n {\n const selectedQuestion = getSelectedQuestion();\n onAnswer({\n answerData: { [readableId]: getQuestionValue() },\n nextQuestionId: getNextQuestionId({\n ageRanges: selectedAnswer\n ? selectedAnswer.ageRanges\n : optional.ageRanges,\n selectedAge,\n selectedQuestion,\n }),\n });\n getCategoryDataLayer({\n eventAction: `Step ${OnboardingContext.step} - Next CTA`,\n eventLabel: OnboardingContext.question,\n eventparameter1: `${OnboardingContext.age}${\n OnboardingContext.agegroup\n ? ' , ' + OnboardingContext.agegroup\n : ''\n }`,\n gender_group: OnboardingContext.gender_group,\n event_name: 'next_button_click',\n });\n }}\n />\n
    \n );\n};\n\nexport default MultipleOptionalQuestion;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { colors, spacing, breakpoints, utility } = useTheme();\n\n return {\n answer: css`\n padding-bottom: ${spacing.s};\n\n ${breakpoints.l} {\n padding-bottom: 1.5rem;\n }\n\n &:last-child {\n padding-bottom: 0;\n\n button {\n margin: auto;\n }\n }\n `,\n hiddenInputs: isSelected => css`\n input {\n ${utility.checkboxHidden}\n }\n\n ${breakpoints.l} {\n input:focus-visible:not(:hover) + button {\n span {\n text-decoration: underline;\n }\n &::before {\n border: 3px solid ${colors.navy};\n border-radius: 3px;\n background-color: ${isSelected ? colors.lightBlue : colors.white};\n }\n }\n }\n `,\n button: (isSelected, bothAnswer) => css`\n ${bothAnswer === true &&\n css`\n &::before {\n background-color: ${colors.lightBlue};\n }\n `}\n\n ${bothAnswer === true &&\n isSelected === false &&\n css`\n &::before {\n background-color: ${colors.white};\n }\n `}\n svg {\n width: 20px;\n height: 20px;\n }\n ${bothAnswer === true &&\n isSelected === false &&\n css`\n &:hover {\n &::before {\n background-color: ${colors.lightBlue};\n }\n }\n `}\n\n ${breakpoints.m} {\n &:hover {\n &::before {\n background-color: ${colors.lightBlue};\n }\n }\n }\n\n ${isSelected &&\n css`\n &::before {\n background-color: ${colors.lightBlue};\n }\n `}\n\n ${!isSelected &&\n css`\n svg {\n display: none;\n }\n `}\n\n ${breakpoints.l} {\n padding: ${spacing.m};\n\n &::before {\n background-size: 45%;\n }\n }\n `,\n mixedTitle: css`\n color: ${colors.darkgray};\n font-size: 16px;\n line-height: 22px;\n `,\n visibility: isAnswerSelected => css`\n visibility: hidden;\n\n ${isAnswerSelected &&\n css`\n visibility: visible;\n animation: fade_in_show 1s ease-in alternate;\n\n @keyframes fade_in_show {\n 0% {\n opacity: 0;\n }\n\n 100% {\n opacity: 1;\n }\n }\n `}\n `,\n };\n};\n","export default (state, action) => {\n switch (action.type) {\n case 'add':\n return [...state, { DisabilityId: action.payload.id }];\n case 'remove':\n return state.filter(\n answerId => answerId.DisabilityId !== action.payload.id\n );\n default:\n return state;\n }\n};\n","/** @jsxImportSource @emotion/react */\nimport { useEffect, useReducer, useState } from 'react';\n\nimport { useOnboardingDataContext } from '../../context/OnboardingData';\nimport disabilitiesReducer from '../../reducers/disabilities';\nimport getCategoryDataLayer from '../../utils/getCategoryDataLayer';\nimport getNextQuestionId from '../../utils/getNextQuestionId';\nimport idFromString from '../../utils/idFromString';\nimport NextNav from '../NextNav';\nimport useStyles from './styles';\n\nconst MultipleQuestion = ({\n readableId,\n answers,\n ageRanges,\n onAnswer,\n selectedAge,\n headerTitle,\n}) => {\n const styles = useStyles();\n const [answersState, dispatch] = useReducer(disabilitiesReducer, []);\n const { OnboardingContext, setOnboardingDataContext } =\n useOnboardingDataContext();\n const [selectedAnswerValue, setSelectedAnswerValue] = useState();\n\n const onChange = event => {\n const id = parseInt(event.target.value, 10);\n\n if (event.target.checked) {\n dispatch({ type: 'add', payload: { id } });\n } else {\n dispatch({ type: 'remove', payload: { id } });\n }\n };\n\n useEffect(() => {\n if (!answers) {\n return;\n }\n // filter value of selected answer\n const selectedAnswers = answers\n .filter(item => {\n return answersState.some(ans => item.answerId === ans.DisabilityId);\n })\n .map(ele => ele.value)\n .toString();\n setSelectedAnswerValue(selectedAnswers);\n }, [answers, answersState]);\n\n // set basic data in onboardingContext\n useEffect(() => {\n setOnboardingDataContext({\n ...OnboardingContext,\n question: headerTitle,\n step: 2,\n disability: selectedAnswerValue,\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedAnswerValue, headerTitle]);\n\n return (\n
    \n {answers &&\n answers.map(({ answerId, value }) => {\n const optionId = idFromString(value);\n const isChecked = !!answersState.find(\n answer => answer.DisabilityId === parseInt(answerId, 10)\n );\n\n return (\n \n );\n })}\n {\n onAnswer({\n answerData: { [readableId]: answersState },\n nextQuestionId: getNextQuestionId({ ageRanges, selectedAge }),\n });\n // pushing into dataLayer\n getCategoryDataLayer({\n eventAction: `Step ${OnboardingContext.step} - Next CTA`,\n eventLabel: OnboardingContext.question,\n eventparameter1: `${OnboardingContext.age}${\n OnboardingContext.agegroup\n ? ' , ' + OnboardingContext.agegroup\n : ''\n }`,\n eventparameter2: selectedAnswerValue,\n event_name: 'next_button_click',\n gender_group: OnboardingContext.gender_group,\n });\n setOnboardingDataContext({\n ...OnboardingContext,\n disability: selectedAnswerValue,\n });\n }}\n />\n
    \n );\n};\n\nexport default MultipleQuestion;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { spacing, colors, borderRadius, breakpoints, utility } = useTheme();\n\n return {\n base: css`\n display: flex;\n flex-wrap: wrap;\n margin: -${spacing.xs} 0 0 -${spacing.xs};\n width: calc(100% + ${spacing.xs});\n `,\n answer: isChecked => css`\n display: block;\n margin: 0.2rem 0 0 0.2rem;\n padding: ${spacing.xs};\n background-color: ${colors.lightGrey};\n color: ${colors.navy};\n cursor: pointer;\n border-radius: ${borderRadius.s};\n border: ${borderRadius.s} solid transparent;\n\n ${isChecked &&\n css`\n background-color: ${colors.darkGrey};\n color: ${colors.white};\n `}\n\n ${breakpoints.l} {\n margin: ${spacing.xs} 0 0 ${spacing.xs};\n padding: ${spacing.xs} ${spacing.s};\n }\n `,\n label: css`\n & > input[type='checkbox']:focus + span {\n border: ${borderRadius.s} solid ${colors.navy};\n border-radius: ${borderRadius.m};\n text-decoration: underline;\n background-color: ${colors.white};\n }\n\n & > input[type='checkbox']:checked:focus + span {\n border: ${borderRadius.s} solid ${colors.navy};\n border-radius: ${borderRadius.m};\n text-decoration: none;\n background-color: ${colors.darkGrey};\n color: ${colors.white};\n }\n\n & > input[type='checkbox']:hover + span {\n background-color: ${colors.greyShade1};\n }\n `,\n checkbox: css`\n ${utility.checkboxHidden};\n outline: none;\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport PropTypes from 'prop-types';\nimport { useEffect } from 'react';\n\nimport HiddenContent from '../HiddenContent';\nimport { Magnifier } from '../Icons';\nimport useStyles from './styles';\n\nconst LocationAutoSuggest = ({\n placeholder,\n onError,\n setLocationData,\n ...rest\n}) => {\n const styles = useStyles();\n\n function loadMapScenario() {\n window.Microsoft.Maps.loadModule('Microsoft.Maps.AutoSuggest', {\n callback: onLoad,\n errorCallback: onError,\n });\n\n function onLoad() {\n var options = { maxResults: 5 };\n var manager = new window.Microsoft.Maps.AutosuggestManager(options);\n\n manager.attachAutosuggest(\n '#searchBox',\n '#searchBoxContainer',\n selectedSuggestion\n );\n }\n\n function selectedSuggestion(suggestionResult) {\n const { location, title, subtitle } = suggestionResult;\n\n setLocationData({\n latitude: location?.latitude,\n longitude: location?.longitude,\n readableLocation: title || subtitle,\n secondaryLocation: subtitle,\n });\n }\n }\n\n useEffect(() => {\n if (!window?.Microsoft?.Maps) {\n window.loadMapScenario = loadMapScenario;\n } else {\n loadMapScenario();\n }\n\n return () => {\n window.loadMapScenario = undefined;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n
    \n
    \n \n \n \n Use the down arrow to select one of the results\n \n
    \n
    \n );\n};\n\nLocationAutoSuggest.prototype = {\n placeholder: PropTypes.string,\n onError: PropTypes.func,\n setLocationData: PropTypes.func,\n};\n\nexport default LocationAutoSuggest;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { colors, spacing, typography, borderRadius } = useTheme();\n\n return {\n inputWrapper: css`\n display: flex;\n border: 1px solid ${colors.lightGrey};\n border-radius: ${borderRadius.m};\n align-items: center;\n padding: 0 ${spacing.m};\n width: 100%;\n\n svg {\n color: ${colors.darkGrey};\n }\n `,\n input: css`\n ${typography.base};\n appearance: none;\n background-color: ${colors.white};\n border: none;\n font: inherit;\n color: ${colors.navy};\n line-height: inherit;\n padding: ${spacing.s};\n transition-duration: 0.2s;\n transition-property: border-color;\n width: 100%;\n\n &:hover,\n &:focus {\n border-color: ${colors.navy};\n outline: none;\n }\n\n /* Chrome/Opera/Safari */\n &::-webkit-input-placeholder {\n color: ${colors.navy};\n }\n\n /* firefox */\n &::-moz-placeholder {\n color: ${colors.navy};\n opacity: 1;\n }\n\n /* IE 10+ */\n :-ms-input-placeholder {\n color: ${colors.navy};\n }\n `,\n error: css`\n color: ${colors.red};\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport { Fragment, useState } from 'react';\n\nimport { useOnboardingDataContext } from '../../context/OnboardingData';\nimport getCategoryDataLayer from '../../utils/getCategoryDataLayer';\nimport getNextQuestionId from '../../utils/getNextQuestionId';\nimport LocationAutoSuggest from '../LocationAutoSuggest';\nimport NextNav from '../NextNav';\nimport useStyles from './styles';\n\nconst PostcodeQuestion = ({\n placeholder,\n onAnswer,\n ageRanges,\n selectedAge,\n}) => {\n const styles = useStyles();\n const [locationData, setLocationData] = useState({});\n const [errorMessage, setErrorMessage] = useState();\n const locationCaptured = locationData.latitude && locationData.longitude;\n const { OnboardingContext, setOnboardingDataContext } =\n useOnboardingDataContext();\n\n const onError = message => setErrorMessage(message);\n\n return (\n \n {\n setLocationData(value);\n setOnboardingDataContext({\n ...OnboardingContext,\n location:\n value.readableLocation +\n `${\n value.secondaryLocation ? ', ' + value.secondaryLocation : ''\n }`,\n });\n }}\n css={styles.locationInput}\n />\n {errorMessage &&
    {errorMessage}
    }\n {locationCaptured && (\n {\n onAnswer({\n answerData: {\n Latitude: locationData.latitude,\n Longitude: locationData.longitude,\n ReadableLocation: locationData.readableLocation,\n },\n nextQuestionId: getNextQuestionId({\n ageRanges,\n selectedAge,\n }),\n });\n getCategoryDataLayer({\n eventAction: `Step ${OnboardingContext.step} - Next CTA`,\n eventLabel: OnboardingContext.question,\n eventparameter1: `${OnboardingContext.age}${\n OnboardingContext.agegroup\n ? ' , ' + OnboardingContext.agegroup\n : ''\n }`,\n eventparameter2: OnboardingContext.disability,\n eventparameter3: locationData.readableLocation,\n gender_group: OnboardingContext.gender_group,\n location: OnboardingContext.location,\n event_name: 'next_button_click',\n });\n setOnboardingDataContext({\n ...OnboardingContext,\n location: locationData.readableLocation,\n });\n }}\n />\n )}\n
    \n );\n};\n\nexport default PostcodeQuestion;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { colors, spacing, breakpoints } = useTheme();\n\n return {\n answer: css`\n padding-bottom: ${spacing.s};\n `,\n link: css`\n padding: ${spacing.xs};\n `,\n error: css`\n color: ${colors.red};\n `,\n locationInput: css`\n ${breakpoints.l} {\n width: 80%;\n }\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport useStyles from './styles';\n\nconst ProgressBar = ({ progress, ...rest }) => {\n const styles = useStyles();\n return (\n \n );\n};\n\nexport default ProgressBar;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { colors, breakpoints } = useTheme();\n\n return {\n progressBar: progress => css`\n width: 100%;\n border-top: 1px solid ${colors.grey};\n position: relative;\n\n ${breakpoints.l} {\n width: 90%;\n }\n\n &::before {\n content: '';\n position: absolute;\n top: -2px;\n left: 0;\n height: 3px;\n width: ${progress}%;\n transition: width 0.5s;\n background-color: ${colors.red};\n }\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport { Fragment, useEffect } from 'react';\n\nimport {\n AGE,\n BASIC_CTA,\n BOYS_OR_MEN,\n CASUAL,\n CLUBS,\n DISABILITY_TYPE_ID,\n EMPTY_STRING,\n GIRLS_OR_WOMEN,\n MEN,\n MIXED_VALUE,\n ONBOARDING_IMAGE_URL,\n PRIMARY_CTA,\n SECONDARY_CTA,\n WOMEN,\n} from '../../const';\nimport { useOnboardingDataContext } from '../../context/OnboardingData';\nimport useOnboardingImage from '../../hooks/useOnboardingImage';\nimport getCategoryDataLayer from '../../utils/getCategoryDataLayer';\nimport getNextQuestionId from '../../utils/getNextQuestionId';\nimport publicPath from '../../utils/publicPath';\nimport Button from '../Button';\nimport ButtonAnswer from '../ButtonAnswer';\nimport HiddenContent from '../HiddenContent';\nimport LinkButton from '../LinkButton';\nimport useStyles from './styles';\n\nconst AnswerCtas = {\n [PRIMARY_CTA]: ButtonAnswer,\n [SECONDARY_CTA]: LinkButton,\n [BASIC_CTA]: Button,\n};\n\nconst getSelectedQuestion = () => {\n switch (true) {\n case JSON.parse(sessionStorage.getItem('ISVOLUNTEER')):\n return '703663f0-3c99-4c4e-ac80-62184ad0546f';\n default:\n return;\n }\n};\n\n// based on gender and age load dynamic images\nconst GetDynamicImages = (answers, selectedAge, playWith) => {\n const url = ONBOARDING_IMAGE_URL;\n const selectedAgeValue = useOnboardingImage(selectedAge);\n const gender =\n playWith === GIRLS_OR_WOMEN\n ? WOMEN\n : playWith === BOYS_OR_MEN\n ? MEN\n : MIXED_VALUE;\n\n // casual images\n answers[0].image = publicPath(\n `${url}${\n gender === MIXED_VALUE ? AGE : CASUAL\n }/${gender}${selectedAgeValue}.png`\n );\n\n // club images\n answers[1].image = publicPath(\n `${url}${\n gender === MIXED_VALUE ? CLUBS : AGE\n }/${gender}${selectedAgeValue}.png`\n );\n return answers;\n};\n\nconst SingleQuestion = ({\n readableId,\n answerTypeQuestion,\n answers,\n onAnswer,\n selectedAge,\n questionOrder,\n headerTitle,\n ...rest\n}) => {\n const styles = useStyles();\n const data =\n questionOrder === 4\n ? GetDynamicImages(answers, selectedAge, rest.selectedGender)\n : answers;\n const describeId = `${readableId}-description`;\n const { OnboardingContext, setOnboardingDataContext } =\n useOnboardingDataContext();\n\n useEffect(() => {\n setOnboardingDataContext({\n ...OnboardingContext,\n question: headerTitle,\n step: 2,\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [headerTitle]);\n\n return (\n \n {data && (\n // We need role none to have the buttons speak the legend on focus\n
      \n {data.map(\n ({\n answerId,\n analyticsId,\n title,\n value,\n answerType,\n ageRanges,\n ...rest\n }) => {\n const Cta = AnswerCtas[answerType];\n const isPrimary =\n answerType === PRIMARY_CTA || answerType === BASIC_CTA;\n return (\n
    • \n {\n const selectedQuestion = getSelectedQuestion();\n onAnswer({\n answerData:\n JSON.parse(sessionStorage.getItem('ISVOLUNTEER')) ===\n true\n ? {\n [readableId]: value || title,\n [DISABILITY_TYPE_ID]:\n title === 'No' || title === 'Not sure'\n ? []\n : answerTypeQuestion,\n }\n : {\n [readableId]: value || title,\n },\n\n nextQuestionId: getNextQuestionId({\n ageRanges,\n selectedAge,\n selectedQuestion,\n }),\n });\n setOnboardingDataContext({\n ...OnboardingContext,\n disability:\n title === 'No'\n ? EMPTY_STRING\n : OnboardingContext.disability,\n });\n getCategoryDataLayer({\n eventAction: `${title}`,\n eventLabel: OnboardingContext.question,\n eventparameter1: `${OnboardingContext.age}${\n OnboardingContext.agegroup\n ? ' , ' + OnboardingContext.agegroup\n : ''\n }`,\n gender_group: OnboardingContext.gender_group,\n link_text: `${title.toLowerCase()}`,\n event_name: 'cta_select_option_click',\n });\n }}\n css={styles.cta}\n aria-describedby={describeId}\n {...rest}\n >\n {title}\n \n
    • \n );\n }\n )}\n
    \n )}\n \n Click to select and go to the next question\n \n
    \n );\n};\n\nexport default SingleQuestion;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { colors, spacing, breakpoints } = useTheme();\n\n return {\n answer: isPrimary => css`\n padding-bottom: ${spacing.s};\n\n button {\n border: 3px solid transparent;\n }\n\n ${breakpoints.l} {\n padding-bottom: ${isPrimary ? spacing.m : spacing.s};\n\n ${isPrimary &&\n css`\n button {\n border: 3px solid transparent;\n outline:0;\n\n &:not(:hover):focus {\n outline: 0;\n border: 3px solid ${colors.navy};\n background-color: ${colors.white};\n\n span {\n text-decoration: underline;\n }\n }\n }\n \n &:last-child {\n padding-bottom: 0;\n \n button {\n margin: auto;\n outline:0;\n\n &:focus:not(:hover) {\n color: ${colors.navy};\n }\n }\n `}\n }\n\n &:last-child {\n padding-bottom: 0;\n\n button {\n margin: auto;\n outline: 0;\n\n &:focus:not(:hover) {\n color: ${colors.navy};\n }\n }\n }\n `,\n cta: css`\n font-size: 1.125rem;\n font-weight: 700;\n padding: 1.1rem ${spacing.s};\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport '@reach/slider/styles.css';\n\nimport {\n SliderHandle,\n SliderInput,\n SliderRange,\n SliderTrack,\n} from '@reach/slider';\nimport { useState } from 'react';\n\nimport { EMPTY_STRING, MAX_TEXT } from '../../const';\nimport useStyles from './styles';\n\nconst Slider = ({\n onChange,\n currentValue,\n valueFormatter,\n min,\n max,\n step,\n labelMin,\n labelMax,\n hasSuffix,\n defaultValue,\n analyticsId,\n}) => {\n const styles = useStyles();\n const currentVal = currentValue >= 0 ? currentValue : defaultValue;\n const [sliderValue, setSliderValue] = useState(currentVal);\n const hasLabels = labelMin && labelMax;\n let value = valueFormatter\n ? valueFormatter(sliderValue, { max })\n : sliderValue;\n\n // if value contains max string, remove it\n value =\n value.indexOf(MAX_TEXT) > -1\n ? value.replace(MAX_TEXT, EMPTY_STRING)\n : value;\n\n return (\n
    \n {labelMin &&
    {labelMin}
    }\n {\n setSliderValue(value);\n onChange(value);\n }}\n >\n \n \n \n {hasSuffix && (\n \n {value}\n \n )}\n \n \n \n {labelMax &&
    {labelMax}
    }\n
    \n );\n};\n\nexport default Slider;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { spacing, colors, breakpoints } = useTheme();\n\n return {\n slider: ({ hasLabels, hasSuffix }) => css`\n background-color: ${colors.lightGrey};\n padding: ${spacing.m} 1.5rem;\n border-radius: 4px;\n position: relative;\n display: grid;\n ${hasLabels &&\n css`\n grid-template-columns: 8% auto 8%;\n `}\n justify-items: center;\n align-items: center;\n grid-gap: ${spacing.s};\n\n ${breakpoints.l} {\n padding: ${spacing.m};\n ${hasSuffix &&\n css`\n padding-top: ${spacing.l};\n `}\n }\n `,\n suffix: css`\n font-weight: 600;\n position: absolute;\n top: -30px;\n left: -5px;\n width: 40px;\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport { Fragment, useState } from 'react';\n\nimport getNextQuestionId from '../../utils/getNextQuestionId';\nimport NextNav from '../NextNav';\nimport Slider from '../Slider';\nimport Text from '../Text';\nimport useStyles from './styles';\n\nconst SliderQuestion = ({\n readableId,\n analyticsId,\n config,\n ageRanges,\n onAnswer,\n}) => {\n const styles = useStyles();\n const [age, setAge] = useState(config.min);\n\n return (\n \n \n {age} years old\n \n \n {\n onAnswer({\n answerData: { [readableId]: age },\n nextQuestionId: getNextQuestionId({ ageRanges, selectedAge: age }),\n });\n }}\n />\n \n );\n};\n\nexport default SliderQuestion;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { spacing, colors, breakpoints } = useTheme();\n\n return {\n ageText: css`\n color: ${colors.navy};\n margin-bottom: ${spacing.xs};\n font-size: 1.75rem;\n line-height: ${spacing.m};\n text-align: center;\n font-style: italic;\n\n span:nth-of-type(2) {\n font-weight: 400;\n }\n\n ${breakpoints.l} {\n font-size: 1.75rem;\n font-weight: 700;\n margin-bottom: ${spacing.s};\n }\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\n\nimport { useEffect, useLayoutEffect, useRef, useState } from 'react';\n\nimport {\n AGE_GROUP_QUESTION,\n AGE_GROUP_VOLUNTEER_QUESTION,\n AGE_QUESTION,\n EMPTY_STRING,\n GEOLOCATION_QUESTION,\n MULTI_OPTIONAL_QUESTION,\n MULTI_QUESTION,\n POSTCODE_QUESTION,\n SINGLE_QUESTION,\n SLIDER_QUESTION,\n} from '../../const';\nimport AgeGroupQuestion from '../AgeGroupQuestion';\nimport AgeQuestion from '../AgeQuestion';\nimport ExternalLink from '../ExternalLink';\nimport GeolocationQuestion from '../GeolocationQuestion';\nimport MultipleOptionalQuestion from '../MultipleOptionalQuestion';\nimport MultipleQuestion from '../MultipleQuestion';\nimport {\n ageHeaderTitle,\n genderHeaderTitle,\n} from '../OnboardingModal/MiniOnboarding';\nimport PostcodeQuestion from '../PostcodeQuestion';\nimport ProgressBar from '../ProgressBar';\nimport SingleQuestion from '../SingleQuestion';\nimport SliderQuestion from '../SliderQuestion';\nimport Text from '../Text';\nimport useStyles from './styles';\n\nconst Questions = {\n [SINGLE_QUESTION]: SingleQuestion,\n [MULTI_OPTIONAL_QUESTION]: MultipleOptionalQuestion,\n [MULTI_QUESTION]: MultipleQuestion,\n [SLIDER_QUESTION]: SliderQuestion,\n [GEOLOCATION_QUESTION]: GeolocationQuestion,\n [POSTCODE_QUESTION]: PostcodeQuestion,\n [AGE_QUESTION]: AgeQuestion,\n [AGE_GROUP_QUESTION]: AgeGroupQuestion,\n [AGE_GROUP_VOLUNTEER_QUESTION]: AgeGroupQuestion,\n};\n\nconst Question = ({\n type,\n title,\n questionOrder,\n helpText,\n totalSteps,\n infoLink,\n selectedAge,\n selectedGender,\n helpTextSecondary,\n ...rest\n}) => {\n const titleRef = useRef();\n const styles = useStyles();\n const { searchFor } = rest;\n const [headerTitle, setHeaderTitle] = useState();\n const questionTitle = searchFor ? title[searchFor] : EMPTY_STRING;\n\n useEffect(() => {\n setHeaderTitle(\n !selectedAge\n ? ageHeaderTitle(questionTitle)\n : !selectedGender && questionOrder === 3\n ? genderHeaderTitle(questionTitle)\n : questionOrder === 6 &&\n JSON.parse(sessionStorage.getItem('ISVOLUNTEER'))\n ? 'Would you like to volunteer in a disability team?'\n : questionTitle\n );\n }, [questionTitle, selectedAge, selectedGender, questionOrder]);\n\n // when the question is changed we want to focus on the new one\n useLayoutEffect(() => {\n setTimeout(() => {\n titleRef.current?.focus({ preventScroll: true });\n }, 200);\n }, [rest.id]);\n\n if (!type) {\n return null;\n }\n\n const CurrentQuestion = Questions[type];\n const progress = (questionOrder * 100) / totalSteps;\n\n return (\n
    \n
    \n \n \n {headerTitle}\n \n {helpText && (\n \n {selectedAge &&\n !selectedGender &&\n questionOrder === 3 &&\n JSON.parse(sessionStorage.getItem('ISVOLUNTEER'))\n ? 'Please choose the gender(s) that best suits you'\n : helpText}\n \n )}\n {helpTextSecondary && (\n \n {helpTextSecondary}\n \n )}\n
    \n
    \n
    \n {questionTitle}\n \n
    \n {infoLink && infoLink.href && (\n \n {infoLink.text}\n \n )}\n
    \n
    \n );\n};\n\nexport default Question;\n","import { css } from '@emotion/react';\n\nimport { AGE_GROUP_ID } from '../../const';\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { breakpoints, screenSizes, spacing, colors, utility, mediaQueries } =\n useTheme();\n\n return {\n base: css`\n display: grid;\n align-items: center;\n grid-gap: ${spacing.s};\n width: 100%;\n\n ${breakpoints.l} {\n grid-template-columns: 1fr 1fr;\n align-items: center;\n grid-gap: ${spacing.l};\n }\n\n ${mediaQueries.zoomedIn} {\n padding-bottom: ${spacing.m};\n }\n `,\n answers: css`\n ${mediaQueries.zoomedIn} {\n padding-left: 5px;\n padding-right: 5px;\n }\n `,\n title: readableId => css`\n font-family: 'FS Dillon Bold';\n font-size: ${spacing.m};\n font-style: italic;\n line-height: 2.25rem;\n text-align: center;\n color: ${colors.navy};\n margin-bottom: ${spacing.xs};\n width: ${readableId === AGE_GROUP_ID ? '91%' : '85%'};\n margin: auto;\n\n &:focus {\n outline: none;\n }\n\n ${breakpoints.l} {\n width: 90%;\n text-align: left;\n font-size: 3.25rem;\n line-height: 3.125rem;\n margin-bottom: ${spacing.s};\n margin-left: 0;\n }\n `,\n helpText: readableId => css`\n color: ${colors.darkGrey};\n text-align: center;\n margin-top: ${spacing.xs};\n margin-bottom: ${spacing.s};\n\n ${breakpoints.l} {\n margin-right: ${readableId === AGE_GROUP_ID ? '5rem' : '10rem'};\n margin-bottom: 0;\n text-align: left;\n }\n `,\n fieldset: css`\n display: contents;\n\n legend {\n ${utility.checkboxHidden}\n }\n `,\n infoLink: css`\n margin-top: ${spacing.s};\n text-align: center;\n\n ${breakpoints.l} {\n margin-top: ${spacing.m};\n }\n\n ${mediaQueries.zoomedIn} {\n background-position: 0 180%;\n }\n `,\n progressBar: css`\n margin-bottom: ${spacing.m};\n\n @media (max-width: ${screenSizes.l}) {\n position: absolute;\n top: 14%;\n left: 0;\n }\n\n ${mediaQueries.zoomedIn} {\n top: 0;\n left: 50%;\n transform: translateX(-50%);\n width: calc(100% - 2.5rem);\n }\n `,\n helpSecText: css`\n margin-bottom: 0;\n\n ${breakpoints.l} {\n margin: 0.8rem 5rem 0 0;\n padding-bottom: 1.5rem;\n }\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport isempty from 'lodash.isempty';\nimport {\n Fragment,\n useEffect,\n useLayoutEffect,\n useReducer,\n useRef,\n useState,\n} from 'react';\nimport { useHistory } from 'react-router-dom';\n\nimport { onBoardingModalAnalytics } from '../../analyticsConsts';\nimport {\n AGE_ID,\n CLUB,\n DONT_MIND,\n MO_PAGE_SIZE_VALUE,\n MYSELF,\n PAGE_SIZE,\n PLAY_WITH_ID,\n SEARCH_FOR_ID,\n SELECTED_FOOTBALL_TYPE_ID,\n SESSION_ID,\n SURFACE_TYPE,\n SURFACE_VALUES,\n TOTAL_STEPS,\n} from '../../const';\nimport { useFilterPanelToggleContext } from '../../context/filterPanelToggle';\nimport { useMORecommendations } from '../../context/moRecommendations';\nimport { useNestedFilterPanelContext } from '../../context/nestedFilterPanel';\nimport { useOnboardingDataContext } from '../../context/OnboardingData';\nimport { usePreferencesContext } from '../../context/preferences';\nimport { useRecommendations } from '../../context/recommendations';\nimport useErrorBoundary from '../../hooks/useErrorBoundary';\nimport useLocalStorage from '../../hooks/useLocalStorage';\nimport useMediaQuery from '../../hooks/useMediaQuery';\nimport useModalOverflow from '../../hooks/useModalOverflow';\nimport useStorageFilters from '../../hooks/useStorageFilters';\nimport preferencesReducer from '../../reducers/preferences';\nimport {\n getMiniOnboardingRecommendations,\n getOnboardingQuestions,\n getRecommendations,\n} from '../../services';\nimport getCategoryDataLayer from '../../utils/getCategoryDataLayer';\nimport uuid from '../../utils/uuid';\nimport ConfirmationQuestion from '../ConfirmationQuestion';\nimport { CircleArrow, CircleClose } from '../Icons';\nimport LinkButton from '../LinkButton';\nimport Loader from '../Loader';\nimport Modal from '../Modal';\nimport Question from '../Question';\nimport defaultPreferences from './DefaultPreferences';\nimport {\n filteredMiniOnboardingData,\n getCategoryName,\n getPayloadData,\n getRedirectUrl,\n} from './MiniOnboarding';\nimport useStyles from './styles';\n\nconst { ONBOARDING_CTA_EXIT, ONBOARDING_CTA_PREVIOUS_QUESTION } =\n onBoardingModalAnalytics;\n\nconst OnboardingModal = ({ onClose, isVisible }) => {\n const styles = useStyles();\n const history = useHistory();\n const throwError = useErrorBoundary();\n const [questions, setQuestions] = useState([]);\n const [questionsHistory, setQuestionsHistory] = useState([]);\n const [currentQuestionIndex, setCurrentQuestionIndex] = useState(0);\n const [showOnboarding, setShowOnboarding] = useState(false);\n const [confirmationVisible, setConfirmationVisible] = useState(false);\n const [isSaving, setIsSaving] = useState(false);\n const [sessionId, setSessionId] = useState('');\n const [savedPreferences, dispatch] = useReducer(preferencesReducer, {});\n const { setPreferences, resetPreferences } = usePreferencesContext();\n const { setRecommendations, resetRecommendations } = useRecommendations();\n const { setMORecommendations, resetMORecommendations } =\n useMORecommendations();\n const { clearFiltersStorage } = useStorageFilters();\n const { resetFilterPanelToggle } = useFilterPanelToggleContext();\n const { resetNestedFilterPanel } = useNestedFilterPanelContext();\n const { getLocalItem } = useLocalStorage();\n const isIframe = JSON.parse(getLocalItem('ISIFRAME'));\n const { OnboardingContext } = useOnboardingDataContext();\n\n useEffect(() => {\n // Remove applied filters from session storage\n clearFiltersStorage();\n\n // Resetting contexts and local storage\n resetPreferences();\n resetRecommendations();\n resetMORecommendations();\n resetFilterPanelToggle();\n resetNestedFilterPanel();\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isVisible]);\n\n const loader = useRef();\n\n const isNarrowScreen = useMediaQuery('screen and (max-height: 690px)');\n\n useModalOverflow();\n\n useEffect(() => {\n if (isVisible) {\n // Waiting a bit before transitioning\n setTimeout(() => {\n setShowOnboarding(true);\n }, 100);\n }\n }, [isVisible]);\n\n useEffect(() => {\n // Create session id\n setSessionId(uuid());\n getOnboardingQuestions( JSON.parse(sessionStorage.getItem('ISVOLUNTEER')))\n .then(({ data }) => {\n if (data) {\n const filteredData = filteredMiniOnboardingData(data);\n setQuestions(filteredData);\n // Add first question in questions history\n setQuestionsHistory([...questionsHistory, filteredData[0].id]);\n }\n })\n .catch(throwError);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [JSON.parse(sessionStorage.getItem('ISVOLUNTEER'))]);\n\n const saveMiniOnboardingRecommendations = preferences => {\n const { SelectedFootballType } = preferences;\n getMiniOnboardingRecommendations(SelectedFootballType, preferences)\n .then(({ data }) => {\n if (data) {\n setMORecommendations(data[0], SelectedFootballType);\n setTimeout(() => {\n history.push('/results');\n setIsSaving(false);\n }, 500);\n }\n })\n .catch(throwError);\n };\n\n // Saves recommendations in context and local storage\n const saveRecommendations = preferences => {\n const { SelectedFootballType } = preferences;\n\n Promise.all([\n getRecommendations(SelectedFootballType, preferences).catch(throwError),\n ]).then(data => {\n if (data) {\n const recommendationRecords = data[0].data; // recommenation data\n setRecommendations(recommendationRecords, SelectedFootballType);\n\n setTimeout(() => {\n history.push('/recommendations');\n setIsSaving(false);\n }, 500);\n }\n });\n };\n\n const onAnswer = ({ answerData, nextQuestionId }) => {\n dispatch({ type: 'save', payload: answerData });\n\n // We reached the end of the onboarding. No questions left.\n if (!nextQuestionId) {\n setIsSaving(true);\n const onboardingPayload = getPayloadData(answerData);\n // Merge last answer data with current state\n const allPreferences = {\n ...savedPreferences,\n ...onboardingPayload,\n [SESSION_ID]: sessionId,\n };\n\n // Merge default values to send all properties to API request\n const preferencesWithDefault = {\n ...defaultPreferences(\n allPreferences[AGE_ID],\n allPreferences['FootballType']\n ),\n ...allPreferences,\n };\n\n const { FootballType } = preferencesWithDefault;\n\n const preferencesExtended = {\n ...preferencesWithDefault,\n // This helper property will make our lives easier to switch between\n // football types using the preferences context\n [SELECTED_FOOTBALL_TYPE_ID]:\n FootballType === DONT_MIND ? CLUB : FootballType,\n [SURFACE_TYPE]: SURFACE_VALUES.join(),\n };\n\n // Save recommendations (context & local storage)\n if (sessionStorage.getItem('ISMINIONBOARDING') === 'true') {\n const categoryName = getCategoryName(preferencesExtended);\n const updatedPreference = {\n ...preferencesExtended,\n Category: categoryName,\n [PAGE_SIZE]: MO_PAGE_SIZE_VALUE,\n };\n saveMiniOnboardingRecommendations(updatedPreference);\n // Save preferences (context & local storage)\n setPreferences(updatedPreference);\n } else {\n saveRecommendations(preferencesExtended);\n // Save preferences (context & local storage)\n setPreferences(preferencesExtended);\n }\n } else {\n // Get index of next question\n const nextQuestionIndex = questions.findIndex(\n question => question.id === nextQuestionId\n );\n setCurrentQuestionIndex(nextQuestionIndex);\n setQuestionsHistory([...questionsHistory, nextQuestionId]);\n }\n };\n\n const goBack = () => {\n if (questionsHistory.length > 1) {\n // pushing into data layer\n if (OnboardingContext) {\n getCategoryDataLayer({\n eventAction: `Step ${OnboardingContext.step} - Back CTA`,\n eventLabel: OnboardingContext.question,\n eventparameter1: `${OnboardingContext.age}${\n OnboardingContext.agegroup ? ' , ' + OnboardingContext.agegroup : ''\n }`,\n eventparameter2: OnboardingContext.disability,\n eventparameter3: OnboardingContext.location,\n location: OnboardingContext.location,\n gender_group: OnboardingContext.gender_group,\n event_name: 'back_button_click',\n });\n }\n const lastEntryIndex = questionsHistory.length - 1;\n const secondLastId = questionsHistory[questionsHistory.length - 2];\n\n // Get next question index to be shown (second last)\n const nextCurrentIndex = questions.findIndex(\n question => question.id === secondLastId\n );\n\n // Remove saved preference from upcoming question\n // We do this to ensure we only save values\n // of the most recent pathway and we are not keeping\n // old ones from previous pathways\n const currentQuestionReadableId = questions[nextCurrentIndex]?.readableId;\n dispatch({ type: 'remove', readableId: currentQuestionReadableId });\n\n // Update state with upcoming next question index\n setCurrentQuestionIndex(nextCurrentIndex);\n\n // Remove last entry from history\n const newHistory = questionsHistory.filter(\n (_, i) => i !== lastEntryIndex\n );\n // Update state with new history\n setQuestionsHistory(newHistory);\n }\n };\n\n const setDataLayer = (actionName, linkTextName, isExiting = false) => {\n if (!isempty(OnboardingContext)) {\n getCategoryDataLayer({\n eventAction: `Step ${OnboardingContext.step} - ${actionName}`,\n eventLabel: OnboardingContext.question,\n eventparameter1: `${OnboardingContext.age}${\n OnboardingContext.agegroup ? ' , ' + OnboardingContext.agegroup : ''\n }`,\n eventparameter2: OnboardingContext.disability,\n eventparameter3: OnboardingContext.location,\n location: OnboardingContext.location,\n gender_group: OnboardingContext.gender_group,\n link_text: `${linkTextName}`,\n event_name: `${\n actionName === 'Close icon'\n ? 'close_button_click'\n : 'cta_select_option_click'\n }`,\n });\n }\n if (isExiting) {\n const url = getRedirectUrl();\n if (url) {\n window.location.href = url;\n return;\n }\n history.push('/');\n }\n };\n // when we save we want to send the focus to the loader\n // so that it is announced to screen readers\n useLayoutEffect(() => {\n if (isSaving) {\n loader.current?.focus({ preventScroll: true });\n }\n }, [isSaving, loader]);\n\n return (\n {\n !isIframe && setConfirmationVisible(true);\n }}\n skipInitialFocus\n >\n
    \n {confirmationVisible ? (\n {\n setDataLayer('Exit - Yes', 'exit-yes', true);\n\n onClose();\n }}\n onClickNo={() => {\n setConfirmationVisible(false);\n setDataLayer('Exit - No', 'exit-no');\n }}\n />\n ) : (\n \n {isSaving ? (\n \n ) : (\n \n {\n setConfirmationVisible(true);\n setDataLayer('Close icon');\n }}\n >\n {!isIframe && }\n \n {questions.length > 0 && (\n
    \n \n
    \n )}\n {questionsHistory.length > 1 && (\n goBack()}\n >\n Back\n \n )}\n
    \n
    \n )}\n
    \n )}\n
    \n \n );\n};\n\nexport default OnboardingModal;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\nimport publicPath from '../../utils/publicPath';\n\nexport default () => {\n const {\n screenSizes,\n spacing,\n colors,\n utility,\n borderRadius,\n breakpoints,\n mediaQueries,\n } = useTheme();\n\n return {\n base: (isVisible, isNarrowScreen) => css`\n display: grid;\n align-items: center;\n justify-items: center;\n position: absolute;\n z-index: 11;\n width: 100%;\n bottom: 0;\n left: 0;\n max-width: 375px;\n height: 95%;\n max-height: 800px;\n margin-left: 50%;\n transition: transform 0.5s ease-out;\n transform: translateX(-50%) translateY(100%);\n border-top-left-radius: 25px;\n border-top-right-radius: 25px;\n background: url(${publicPath('/images/mobile/waves-solid.png')}) left\n bottom no-repeat;\n background-color: ${colors.white};\n padding: ${spacing.s} ${spacing.m};\n\n &::before {\n content: '';\n position: absolute;\n z-index: -1;\n top: 0;\n left: 0;\n background: url(${publicPath('/images/mobile/waves-outline.png')}) 0 0\n no-repeat;\n width: 100%;\n height: 120px;\n }\n\n ${isVisible &&\n css`\n transform: translate(-50%, 0%);\n\n ${breakpoints.m} {\n margin-left: 0;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n `}\n\n ${breakpoints.l} {\n align-items: center;\n max-width: ${screenSizes.l};\n height: 80%;\n max-height: 720px;\n border-radius: 8px;\n background: url(${publicPath('/images/desktop/waves-solid.png')}) bottom\n right no-repeat;\n background-size: 65%;\n background-color: ${colors.white};\n padding: ${isNarrowScreen ? '2rem 7rem' : '7rem'};\n\n &::before {\n background: url(${publicPath('/images/desktop/waves-outline.png')}) 0 -50px\n no-repeat;\n background-size: 50%;\n height: 100%;\n top: 0;\n }\n\n /* EDGE CASE OF SUPER NARROW SCREEN\n Using this instead of media-query in the CSS\n as for some reason max-height is not being\n picked up by the browser */\n ${isNarrowScreen &&\n css`\n li {\n padding-bottom: ${spacing.s};\n\n button {\n padding: 1.6rem;\n }\n }\n `}\n\n ${breakpoints.xl} {\n max-width: 1190px;\n }\n }\n\n ${mediaQueries.zoomedIn ||\n mediaQueries.zoomedInL2 ||\n mediaQueries.zoomedInL3} {\n background-position: 0 250%;\n }\n\n ${mediaQueries.iphoneZoom} {\n background-position: 0 250%;\n }\n `,\n overlay: css`\n ${utility.overlay};\n `,\n closeBtn: css`\n ${utility.buttonDefault};\n position: absolute;\n border-radius: 50%;\n top: ${spacing.s};\n right: ${spacing.s};\n width: 40px;\n height: 40px;\n outline: 0;\n\n svg {\n padding: 0.1rem;\n border: 2px solid transparent;\n color: ${colors.navy};\n }\n\n &:focus {\n svg {\n padding: 0.1rem;\n border: ${borderRadius.s} solid ${colors.navy};\n border-radius: 50%;\n }\n }\n\n ${breakpoints.l} {\n right: auto;\n left: ${spacing.s};\n }\n\n ${mediaQueries.zoomedIn ||\n mediaQueries.zoomedInL2 ||\n mediaQueries.zoomedInL3} {\n background: ${colors.white};\n z-index: 2;\n }\n\n ${mediaQueries.iphoneZoom} {\n background: ${colors.white};\n z-index: 2;\n }\n `,\n question: css`\n @media (max-width: ${screenSizes.l}) {\n height: 100%;\n display: grid;\n align-items: center;\n position: relative;\n }\n\n ${mediaQueries.zoomedIn ||\n mediaQueries.zoomedInL2 ||\n mediaQueries.zoomedInL3} {\n position: unset;\n overflow: auto;\n }\n\n ${mediaQueries.iphoneZoom} {\n position: unset;\n overflow: auto;\n }\n `,\n backLink: css`\n display: flex;\n padding: 0.2rem;\n border-radius: ${borderRadius.m};\n align-items: center;\n position: absolute;\n bottom: ${spacing.s};\n left: ${spacing.m};\n color: ${colors.white};\n border: 1.5px solid transparent;\n text-decoration: none;\n outline: 0;\n\n &:focus:not(:hover) {\n padding: 0.2rem;\n border: 1.5px solid ${colors.navy};\n border-radius: ${borderRadius.m};\n text-decoration: underline;\n }\n\n svg {\n display: inline-block;\n width: 30px;\n height: 30px;\n margin-right: ${spacing.xs};\n }\n\n &:hover {\n outline: 0;\n text-decoration: underline;\n }\n\n ${breakpoints.l} {\n bottom: ${spacing.xl};\n left: 7rem;\n color: ${colors.navy};\n }\n\n ${mediaQueries.zoomedIn ||\n mediaQueries.zoomedInL2 ||\n mediaQueries.zoomedInL3} {\n bottom: ${spacing.xs};\n color: ${colors.navy};\n z-index: 2;\n\n &:hover {\n color: ${colors.blue};\n outline: 0;\n }\n }\n\n ${mediaQueries.iphoneZoom} {\n bottom: ${spacing.xs};\n color: ${colors.navy};\n z-index: 2;\n\n &:hover {\n color: ${colors.blue};\n outline: 0;\n }\n }\n `,\n // When the button would go over the content (ie zoom)\n // we want a white background for the button\n fakeButtonOverlay: css`\n display: none;\n\n ${mediaQueries.zoomedIn ||\n mediaQueries.zoomedInL2 ||\n mediaQueries.zoomedInL3} {\n display: block;\n position: absolute;\n bottom: ${spacing.xs};\n left: ${spacing.m};\n right: ${spacing.m};\n bottom: ${spacing.xs};\n height: 1.875rem;\n background: white;\n z-index: 1;\n }\n\n ${mediaQueries.iphoneZoom} {\n display: block;\n position: absolute;\n bottom: ${spacing.xs};\n left: ${spacing.m};\n right: ${spacing.m};\n bottom: ${spacing.xs};\n height: 1.875rem;\n background: white;\n z-index: 1;\n }\n `,\n };\n};\n","export default () =>\n 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\n // eslint-disable-next-line no-bitwise\n const r = (Math.random() * 16) | 0;\n\n // eslint-disable-next-line no-bitwise\n return (c === 'x' ? r : (r & 0x3) | 0x8).toString(16);\n });\n","import {\n AGE_ID,\n CLUB,\n DISABILITY_OPTION_ID,\n DISABILITY_TYPE,\n DISABILITY_TYPE_ID,\n FOOTBALL_TYPE_ID,\n KICKABOUT_CASUAL,\n LATITUDE_ID,\n LONGITUDE_ID,\n MO_PAGE_SIZE_VALUE,\n OPT_CURRENT_LOCATION_ID,\n PAGE_NUMBER,\n PAGE_NUMBER_VALUE,\n PAGE_SIZE,\n PAGE_SIZE_VALUE,\n PLAY_WITH_ID,\n SEARCH_FOR_ID,\n WEEKDAYS_ID,\n} from '../../const';\n\nexport default (selectedAge, footballtype) => ({\n [SEARCH_FOR_ID]: '',\n [AGE_ID]: 0,\n [PLAY_WITH_ID]: '',\n // Boys Under 18 don't see the football type question in the onboarding,\n // this logic will assign a football type under the hood in that case\n [FOOTBALL_TYPE_ID]: selectedAge < 18 ? CLUB : KICKABOUT_CASUAL,\n [WEEKDAYS_ID]: '',\n [DISABILITY_OPTION_ID]: '',\n [DISABILITY_TYPE_ID]: [],\n [DISABILITY_TYPE]: '',\n [OPT_CURRENT_LOCATION_ID]: '',\n [LATITUDE_ID]: '',\n [LONGITUDE_ID]: '',\n [PAGE_NUMBER]: PAGE_NUMBER_VALUE,\n [PAGE_SIZE]: footballtype === 1 ? MO_PAGE_SIZE_VALUE : PAGE_SIZE_VALUE,\n});\n","/** @jsxImportSource @emotion/react */\n\nimport { CHARLIMIT_HOMEPAGE } from '../../const';\nimport ExternalLink from '../ExternalLink';\nimport { RightArrow } from '../Icons';\nimport Text from '../Text';\nimport useStyles from './styles';\n\nconst QuickLinkCard = ({\n heading,\n description,\n images,\n indexVal,\n ctaId,\n href,\n}) => {\n const styles = useStyles();\n\n return (\n \n
    \n
    \n
    \n
    \n {heading}\n \n {description.substring(0, CHARLIMIT_HOMEPAGE)}\n \n \n Learn More \n \n
    \n
    \n
    \n
    \n );\n};\n\nexport default QuickLinkCard;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { breakpoints, colors, screenSizes, borderRadius } = useTheme();\n\n return {\n cards: css`\n position: relative;\n text-decoration: none;\n > div {\n border-bottom: 1px solid ${colors.white};\n }\n\n &:last-of-type > div {\n border: none;\n }\n\n ${breakpoints.l} {\n > div {\n border: none;\n }\n\n &:nth-of-type(1) > div,\n &:nth-of-type(3) > div {\n border-bottom: 1px solid ${colors.white};\n }\n\n :nth-of-type(2) {\n margin-top: -8rem;\n }\n\n :nth-of-type(3) {\n margin-top: 8rem;\n }\n\n &:hover,\n &:focus {\n outline: 0;\n p:nth-of-type(1){\n text-decoration: underline;\n display: inline-block;\n text-decoration-color:${colors.lightBlue};\n }\n &::after {\n content: '';\n position: absolute;\n top: 0;\n z-index: 1;\n border-radius: 8px;\n transition: all 0.5s ease;\n background: linear-gradient(\n 180deg,\n rgba(47, 46, 46, 0.64) 0%,\n rgba(0, 79, 158, 0.64) 100%\n );\n\n ${breakpoints.l} {\n width: 17.5rem;\n height: 12.5rem;\n }\n }\n\n a,\n span,\n svg\n {\n color: ${colors.darkGrey};\n }\n p::after {\n background: ${colors.darkGrey};\n }\n p:nth-of-type(1){\n &:after{\n opacity 1;\n transform: translate3d(-100%, 0, 0);\n \n } \n }\n svg {\n transition: 0.6s ease-in;\n transform: translateX(50%);\n }\n }\n }\n `,\n innerWrapper: css`\n padding-bottom: 1.5rem;\n `,\n card: css`\n display: grid;\n grid-template-columns: 1fr 1fr;\n grid-auto-rows: 8.3rem;\n align-items: center;\n\n ${breakpoints.l} {\n grid-auto-rows: 12.5rem;\n max-width: 17.5rem;\n grid-template-columns: 100% 85%;\n }\n `,\n header: css`\n color: ${colors.navy};\n font-family: 'FS Dillon Bold';\n font-style: italic;\n text-transform: capitalize;\n font-size: 28px;\n line-height: 26px;\n position: relative;\n display: inline;\n\n ${breakpoints.l} {\n font-size: 42px;\n line-height: 40px;\n font-weight: 700;\n }\n `,\n description: css`\n display: grid;\n @media (min-width: ${screenSizes.l}) and (max-width: ${screenSizes.xl}) {\n grid-template-columns: 85% 10%;\n }\n color: ${colors.darkGrey};\n padding: 0;\n letter-spacing: 0.02rem;\n font-size: 14px;\n line-height: 18px;\n ${breakpoints.l} {\n padding: 4px 18px 12px 0;\n font-size: 16px;\n line-height: 22px;\n margin-bottom: 10px;\n &::after {\n content: '';\n position: absolute;\n left: 0;\n bottom: 0;\n height: ${borderRadius.s};\n width: 3.75rem;\n background: ${colors.red};\n }\n }\n position: relative;\n `,\n infoSection: css`\n padding: 5px 10px;\n\n ${breakpoints.l} {\n padding: 10px 10px 10px 20px;\n min-width: 15.625rem;\n }\n `,\n learnMore: css`\n color: ${colors.blue};\n cursor: pointer;\n position: relative;\n text-decoration: none;\n text-transform: uppercase;\n padding: 5px 5px 5px 0;\n font-size: 14px;\n font-weight: normal;\n span {\n padding-right: 5px;\n }\n ${breakpoints.l} {\n font-size: 16px;\n }\n `,\n imgSection: ({ desktop, mobile }, indexVal) => css`\n border-radius: 8px;\n width: 100%;\n height: 100%;\n background: url(${mobile.src}) 0 0 no-repeat;\n background-size: cover;\n position: relative;\n border-radius: 8px;\n\n &::after {\n content: '';\n position: absolute;\n width: 100%;\n height: 100%;\n background: url(${`/images/desktop/home/crops/crop-${indexVal}.svg`});\n background-position: bottom right;\n background-repeat: no-repeat;\n }\n\n ${breakpoints.l} {\n background: url(${desktop.src}) 0 0 no-repeat;\n background-size: cover;\n }\n `,\n rightArrow: css`\n color: ${colors.red};\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport { useMsal } from '@azure/msal-react';\nimport { useEffect, useState } from 'react';\nimport { useHistory } from 'react-router';\n\nimport { homePageAnalytics } from '../../analyticsConsts';\nimport { ONBOARDING_PARAM } from '../../const';\nimport { useFilterPanelToggleContext } from '../../context/filterPanelToggle';\nimport { useMLRecommendations } from '../../context/mlRecommendations';\nimport { useMORecommendations } from '../../context/moRecommendations';\nimport { useNestedFilterPanelContext } from '../../context/nestedFilterPanel';\nimport { usePageInfo } from '../../context/pageInfo';\nimport { usePreferencesContext } from '../../context/preferences';\nimport { useRecommendations } from '../../context/recommendations';\nimport useQueryParams from '../../hooks/useQueryParams';\nimport useStorageFilters from '../../hooks/useStorageFilters';\nimport homePage from '../../mocks/data/homepage';\nimport normaliseHomePageData from '../../normaliser/homepage';\nimport { getHomepageData } from '../../services';\nimport FootballTypeCard from '../FootballTypeCard';\nimport Footer from '../Footer';\nimport Hero from '../Hero';\nimport InitiativeCard from '../InitiativeCard';\nimport OnboardingModal from '../OnboardingModal';\nimport QuickLinkCard from '../QuickLinkCard';\nimport Text from '../Text';\nimport useStyles from './styles';\n\nconst {\n FA_INITIATIVE_TYPES,\n FOOTBALL_CATEGORY_TYPES,\n QUICK_LINK_TYPES,\n CTA_START_SEARCHING,\n HERO_BANNER,\n FOOTBALL_CATEGORIES,\n QUICK_LINKS,\n FA_INITIATIVES,\n} = homePageAnalytics;\n\nconst HomePage = () => {\n const params = useQueryParams();\n const styles = useStyles();\n const [onboardingVisible, setOnboardingVisible] = useState(false);\n const [homeData, setHomeData] = useState({});\n const { resetPreferences } = usePreferencesContext();\n const { resetRecommendations } = useRecommendations();\n const {resetMORecommendations } = useMORecommendations();\n const { clearFiltersStorage } = useStorageFilters();\n const [, setPageInfo] = usePageInfo();\n const { resetMLRecommendations } = useMLRecommendations();\n const { resetFilterPanelToggle } = useFilterPanelToggleContext();\n const { resetNestedFilterPanel } = useNestedFilterPanelContext();\n const history = useHistory();\n const { accounts } = useMsal();\n\n useEffect(() => {\n // Remove applied filters from session storage\n clearFiltersStorage();\n\n // Resetting contexts and local storage\n resetPreferences();\n resetRecommendations();\n resetMORecommendations();\n resetMLRecommendations();\n resetFilterPanelToggle();\n resetNestedFilterPanel();\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n getHomepageData()\n .then(({ data }) => {\n if (data) {\n const HomepageData = normaliseHomePageData(data);\n setHomeData(HomepageData);\n }\n })\n .catch(() => {\n setHomeData(homePage);\n });\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n // set path information for b2c url redirect\n localStorage.setItem('pathInfomation', window.location.pathname);\n\n if (params.get(ONBOARDING_PARAM)) {\n setOnboardingVisible(true);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n // reset the page name when on-boarding modal is closed\n // user should only be at home page to close modal.\n onboardingVisible ? setPageInfo('onboardingModal') : setPageInfo('home');\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [onboardingVisible, accounts]);\n\n return (\n
    \n {homeData.hero && (\n setOnboardingVisible(true)}\n />\n )}\n
    \n
    \n {onboardingVisible && (\n {\n setOnboardingVisible(false);\n history.push('/');\n }}\n isVisible={onboardingVisible}\n />\n )}\n
    \n
    \n
    \n {homeData.footballTypeHeadings &&\n homeData.footballTypeHeadings.map((res, index) => {\n return (\n \n );\n })}\n
    \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n {homeData.quickLinks &&\n homeData.quickLinks.map((res, index) => {\n return (\n \n );\n })}\n
    \n
    \n
    \n
    \n
    \n \n
    It’s everyone’s game
    \n
    \n {homeData.faInitiatives && (\n \n {homeData.faInitiatives.map((res, index) => {\n return (\n \n );\n })}\n
    \n )}\n
    \n \n
    \n
    \n \n );\n};\n\nexport default HomePage;\n","import { useLocation } from 'react-router';\n\nexport default () => {\n const location = useLocation();\n\n // A custom hook that builds on useLocation to parse\n // the query string for you.\n return new URLSearchParams(location.search);\n};\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\nimport publicPath from '../../utils/publicPath';\n\nexport default () => {\n const {\n colors,\n breakpoints,\n screenSizes,\n spacing,\n typography,\n borderRadius,\n } = useTheme();\n\n return {\n base: css`\n height: 412px;\n max-height: 50.625rem;\n\n ${breakpoints.m} {\n height: 700px;\n }\n `,\n hero: css`\n grid-template-rows: 90% 10%;\n position: relative;\n\n > div {\n margin: 0 auto;\n width: 90vw;\n max-width: 360px;\n }\n\n\n ${breakpoints.m} {\n padding: 0;\n grid-template-rows: 1fr;\n background-position: -77px 0;\n\n\n > div {\n max-width: ${screenSizes.xl};\n align-self: center;\n }\n\n\n ${breakpoints.l} {\n background-position: 0 0;\n }\n `,\n footballTypeSection: css`\n position: relative;\n background-color: ${colors.navy};\n z-index: 1;\n margin-top:-1px;\n `,\n everyOneGameSection: css`\n position: relative;\n display: grid;\n background: url(${publicPath('/images/mobile/home/fa-initiative-bg.svg')})\n 0 0 no-repeat;\n background-size: cover;\n width: 100%;\n\n ${breakpoints.l} {\n background: url(${publicPath(\n '/images/desktop/home/fa-initiatives-bg.svg'\n )})\n 0 0 no-repeat;\n background-size: cover;\n margin-top: ${spacing.m};\n }\n `,\n everyOneGameContent: css`\n position: relative;\n display: grid;\n width: 100%;\n\n ${breakpoints.m} {\n grid-template-rows: 35% 65%;\n }\n\n ${breakpoints.l} {\n height: 47.5rem;\n grid-template-rows: 50% 50%;\n }\n `,\n footballTypeContainer: css`\n display: grid;\n grid-auto-rows: 14.625rem;\n grid-gap: ${spacing.s};\n padding: ${spacing.l} 0 1.5rem;\n grid-template-columns: 1fr;\n margin: auto;\n width: 90vw;\n justify-items: center;\n max-width: ${screenSizes.m};\n grid-template-rows: 42% 50%;\n\n ${breakpoints.m} {\n padding-bottom: 2.5rem;\n grid-template-columns: 1fr 1fr;\n grid-template-rows: unset;\n grid-gap: ${spacing.m};\n grid-auto-rows: 20.5rem;\n justify-items: initial;\n max-width: ${screenSizes.xl};\n }\n\n ${breakpoints.xl} {\n padding-bottom: 1.5rem;\n grid-auto-rows: 27.5rem;\n grid-gap: ${spacing.l};\n }\n `,\n initiativeContainer: count => css`\n display: grid;\n max-width: 500px;\n margin: auto;\n\n ${breakpoints.m} {\n max-width: ${screenSizes.xl};\n grid-template-columns: repeat(${count}, 1fr);\n grid-auto-rows: minmax(12.5rem, auto);\n align-content: center;\n }\n `,\n quickLinkSection: css`\n position: relative;\n background: url(${publicPath('/images/mobile/home/quick-link-bg.svg')}) 0\n 0 no-repeat;\n background-size: contain;\n margin-top: -1px;\n\n ${breakpoints.l} {\n background: url(${publicPath('/images/desktop/home/quick-link-bg.svg')})\n 0 0 no-repeat;\n background-size: cover;\n\n &::before {\n content: '';\n background: url(/images/desktop/home/play-watermark.svg) bottom right\n no-repeat;\n height: 86%;\n position: absolute;\n width: 25%;\n right: 0;\n top: -16rem;\n bottom: 0;\n z-index: 2;\n pointer-events: none;\n }\n }\n `,\n quickLinkContent: css`\n display: grid;\n grid-template-rows: 26% auto;\n max-width: 500px;\n margin: auto;\n width: 90vw;\n height: 60rem;\n\n ${breakpoints.m} {\n grid-template-rows: 32% auto;\n }\n\n ${breakpoints.l} {\n grid-template-rows: 40% 50%;\n max-width: ${screenSizes.xl};\n margin: auto;\n height: 50rem;\n }\n `,\n quickLinkContainer: css`\n display: grid;\n background-color: ${colors.lightGrey};\n grid-template-rows: repeat(4, 1fr);\n grid-gap: ${spacing.s};\n\n ${breakpoints.l} {\n grid-template-columns: 1fr 1fr;\n grid-template-rows: 1fr 1fr;\n grid-auto-flow: column;\n grid-gap: 1.5rem;\n background-color: transparent;\n z-index: 2;\n }\n `,\n quickLinkHeader: css`\n color: ${colors.navy};\n font-size: 28px;\n line-height: 26px;\n letter-spacing: -0.02em;\n font-weight: bold;\n font-style: italic;\n padding-bottom: ${spacing.s};\n position: relative;\n\n &::after {\n content: '';\n position: absolute;\n left: 5px;\n bottom: 0;\n height: ${borderRadius.m};\n width: 60px;\n background: ${colors.red};\n }\n\n ${breakpoints.l} {\n font-size: 48px;\n line-height: 42px;\n }\n `,\n quicklinkDescription: css`\n color: ${colors.darkGrey};\n letter-spacing: 0.02em;\n padding-top: ${spacing.s};\n `,\n initiativeHeading: css`\n ${typography.headings[5].mobile};\n color: ${colors.white};\n font-style: italic;\n text-transform: capitalize;\n margin-top: ${spacing.l};\n position: relative;\n width: 100%;\n display: grid;\n padding: 20px;\n align-content: end;\n\n div {\n text-align: center;\n }\n\n &::before {\n content: '';\n position: absolute;\n height: 100%;\n width: 100%;\n\n bottom: 0;\n align-content: end;\n\n ${breakpoints.m} {\n background: url(${publicPath(\n '/images/desktop/home/every-one-watermark.svg'\n )})\n center bottom no-repeat;\n background-size: contain;\n bottom: -2rem;\n }\n }\n\n ${breakpoints.l} {\n font-size: 3.875rem;\n line-height: 2.5rem;\n margin-top: ${spacing.xxl};\n padding: 0;\n }\n `,\n infoSection: css`\n display: grid;\n padding-bottom: 1.5rem;\n align-content: end;\n label {\n display: block;\n }\n\n ${breakpoints.l} {\n padding-bottom: ${spacing.m};\n }\n `,\n };\n};\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { breakpoints, colors, spacing, typography, borderRadius } = useTheme();\n\n return {\n base: css`\n min-height: 130px;\n max-width: 365px;\n border-radius: ${borderRadius.l};\n box-shadow: 0px 4px 6px rgba(91, 104, 133, 0.1);\n color: ${colors.navy};\n font-weight: 700;\n background-color: ${colors.white};\n cursor: pointer;\n text-decoration: none;\n margin: 0 ${spacing.xs} ${spacing.xs};\n padding: ${spacing.s};\n border: 3px solid transparent;\n outline: 0;\n\n &:focus {\n border: 3px solid ${colors.navy};\n }\n\n &[aria-expanded='true'] {\n margin: ${spacing.xs};\n margin-bottom: 0;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n\n height: 100%;\n cursor: default;\n\n ${breakpoints.l} {\n height: auto;\n border: 1px solid ${colors.navy};\n border-radius: ${borderRadius.l};\n }\n }\n\n &[aria-expanded='false']:hover {\n background-color: ${colors.lightBlue};\n }\n `,\n wrapper: isSelected => css`\n ${isSelected &&\n css`\n display: contents;\n\n ${breakpoints.l} {\n display: block;\n\n &:not(:first-of-type) {\n border-top: 1px solid ${colors.white};\n margin-top: ${spacing.s};\n padding-top: ${spacing.s};\n }\n\n &:not(:last-of-type) {\n border-bottom: 1px solid ${colors.white};\n margin-bottom: ${spacing.s};\n padding-bottom: ${spacing.s};\n }\n }\n `}\n `,\n titleWrapper: css`\n position: relative;\n &::after {\n content: '';\n position: absolute;\n left: 0;\n bottom: -4px;\n width: 32px;\n border-bottom: ${borderRadius.s} solid ${colors.red};\n }\n `,\n title: css`\n font-family: 'FS Dillon Bold';\n font-weight: bold;\n line-height: 1;\n width: 95%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n\n ${breakpoints.l} {\n font-family: 'FS Dillon Bold';\n font-weight: bold;\n line-height: 1.1;\n }\n `,\n info: (isTeamAvailable, providerid) => css`\n ${typography.body.mobile};\n display: grid;\n grid-template-columns: 100%;\n ${isTeamAvailable | providerid &&\n css`\n grid-template-columns: 70% 30%;\n `},\n grid-column-gap: 0.5rem;\n margin-top: 14px;\n `,\n distance: css`\n color: ${colors.darkGrey};\n font-size: 14px;\n line-height: 18px;\n font-weight: normal;\n\n svg {\n margin-right: 0.3rem;\n }\n `,\n address: css`\n font-size: 14px;\n line-height: 18px;\n color: ${colors.darkGrey};\n letter-spacing: 0.02em;\n font-weight: normal;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n text-transform: capitalize;\n `,\n search: css`\n font-size: 14px;\n line-height: 20px;\n margin: 7px 0;\n `,\n teamInfo: css`\n color: ${colors.darkGrey};\n padding-bottom: 5px;\n display: grid;\n grid-template-columns: 2fr auto 1fr;\n p {\n font-size: 14px;\n line-height: 20px;\n font-weight: normal;\n span {\n padding-left: 7px;\n }\n }\n `,\n teamName: css`\n width: 95%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n `,\n teamPlayDay: isCasual => css`\n text-align: center;\n &::before {\n content: '|';\n padding-right: 5px;\n }\n ${isCasual &&\n css`\n &::after {\n content: '|';\n padding-left: 4px;\n }\n `}\n `,\n image: css`\n max-width: 100%;\n max-height: 30px;\n margin: 0 auto;\n `,\n venueOfferWrapper: css`\n margin-top: 7px;\n p {\n font-size: 14px;\n line-height: 16px;\n &:first-of-type {\n font-weight: bold;\n }\n }\n `,\n otherType: css`\n color: ${colors.darkGrey};\n padding: 7px 0;\n `,\n buttonWrapper: css`\n margin-top: ${spacing.s};\n a {\n height: 2.063rem;\n padding: 9px 16px;\n }\n `,\n options: css`\n display: grid;\n grid-template-columns: 1fr 1fr;\n grid-gap: 10px;\n `,\n primaryBtn: css`\n text-transform: uppercase;\n `,\n secondaryBtn: css`\n background-color: ${colors.white};\n border: 1px solid ${colors.blue};\n `,\n logoWrapper: css`\n display: flex;\n align-items: center;\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport { forwardRef, Fragment, useLayoutEffect, useRef } from 'react';\n\nimport { recommendationsMapPageAnalytics } from '../../analyticsConsts';\nimport { CATEGORY_ICONS } from '../../const';\nimport formatAddress from '../../utils/formatAddress';\nimport idFromString from '../../utils/idFromString';\nimport Button from '../Button';\nimport HiddenContent from '../HiddenContent';\nimport { Directions, Pin } from '../Icons';\nimport Image from '../Image';\nimport LinkDirection from '../LinkDirection';\nimport useStyles from '../ProviderClubCard/styles';\nimport Text from '../Text';\nimport { providerCardImage } from '../VenuePage/conditionCheck';\n\nconst {\n CTA_PROVIDER_VENUE_CARD,\n PROVIDER_VENUE_CARD_TITLE,\n MORE_INFO,\n MAP_DIRECTION,\n} = recommendationsMapPageAnalytics;\n\nconst ProviderCenterCard = forwardRef(\n (\n {\n index,\n CentreName,\n CentreId,\n Address,\n DistanceFromUserLocation,\n SessionCartDto,\n SessionCount,\n OfferedCentres,\n onClick,\n isSelected,\n Latitude,\n Longitude,\n mapCardLogo,\n isDesktop,\n providerid,\n PitchFinderId,\n pitchfinderid,\n ...rest\n },\n ref\n ) => {\n const cardRef = useRef();\n const styles = useStyles();\n let desktopLogoRef = useRef();\n let mobLogoRef = useRef();\n const isSessionAvailable = SessionCartDto && SessionCartDto.length > 0;\n const selectId = CentreId ? CentreId : providerid;\n const navigate = providerid\n ? `/provider/${providerid}p${PitchFinderId}`\n : `/venue/${pitchfinderid}`;\n const sessionAvailable = isSessionAvailable\n ? 'This venue also offers:'\n : 'Next available session:';\n\n const handleKeyPress = event => {\n const enterOrSpace = event.which === 13 || event.which === 32;\n\n if (enterOrSpace) {\n event.preventDefault();\n onClick(selectId);\n }\n };\n\n // if the card gets selected move the focus to it\n useLayoutEffect(() => {\n if (isSelected && cardRef.current) {\n setTimeout(() => {\n cardRef?.current?.focus();\n cardRef?.current?.scrollIntoView({\n behaviour: 'smooth',\n block: 'nearest',\n });\n }, 300);\n }\n }, [isSelected]);\n\n const accessibleProps = isSelected ? {} : { role: 'button', tabIndex: 0 };\n\n return (\n
  • \n onClick(selectId)}\n onKeyPress={handleKeyPress}\n ref={cardRef}\n >\n
    \n \n {CentreName}\n \n
    \n
    \n
    {formatAddress(rest)}
    \n
    \n Distance \n \n {DistanceFromUserLocation} Miles\n
    \n
    \n {isSessionAvailable && (\n
    \n {SessionCount} sessions match your search\n
    \n )}\n {pitchfinderid && (\n
    \n View Provider details for session info\n
    \n )}\n {providerid && (\n
    \n View Provider details for session info\n
    \n )}\n {isSelected && (\n \n
    \n {isSessionAvailable &&\n SessionCartDto.map(teamData => {\n const categoryStringId = idFromString(teamData.Category);\n const categoryHasIcon =\n CATEGORY_ICONS.includes(categoryStringId);\n const CatergoryId = teamData.CategoryTypeId;\n mapCardLogo?.session?.map(sessionData => {\n const sessionDataId = sessionData?.sessionId;\n if (parseInt(sessionDataId) === CatergoryId) {\n desktopLogoRef.current =\n sessionData?.images?.desktop?.src;\n mobLogoRef.current = sessionData?.images?.mobile?.src;\n }\n return sessionDataId;\n });\n return (\n
    \n \n Session name \n {teamData.OrganizationName}\n \n \n Plays on \n {teamData.PlaysOnDay}\n \n \n \n \n
    \n );\n })}\n
    \n {OfferedCentres && (\n
    \n {sessionAvailable}\n {OfferedCentres}\n
    \n )}\n
    \n
    \n \n more info\n \n {(isSessionAvailable || providerid || pitchfinderid) && (\n \n Directions\n \n )}\n
    \n
    \n
    \n )}\n \n
  • \n );\n }\n);\n\nexport default ProviderCenterCard;\n","/** @jsxImportSource @emotion/react */\nimport { forwardRef, Fragment, useLayoutEffect, useRef } from 'react';\n\nimport { recommendationsMapPageAnalytics } from '../../analyticsConsts';\nimport { EMPTY_STRING } from '../../const';\nimport Button from '../Button';\nimport HiddenContent from '../HiddenContent';\nimport { Directions, Pin } from '../Icons';\nimport LinkDirection from '../LinkDirection';\nimport Text from '../Text';\nimport useStyles from './styles';\n\nconst {\n CTA_PROVIDER_CLUB_CARD,\n PROVIDER_CLUB_CARD_TITLE,\n MORE_INFO,\n MAP_DIRECTION,\n} = recommendationsMapPageAnalytics;\n\nconst onCheckDays = currentDay => {\n if (currentDay.IsPlaysOnMonday) {\n return 'Monday';\n } else if (currentDay.IsPlaysOnTuesday) {\n return 'Tuesday';\n } else if (currentDay.IsPlaysOnWednesday) {\n return 'Wednesday';\n } else if (currentDay.IsPlaysOnThursday) {\n return 'Thursday';\n } else if (currentDay.IsPlaysOnFriday) {\n return 'Friday';\n } else if (currentDay.IsPlaysOnSaturday) {\n return 'Saturday';\n } else {\n return 'Sunday';\n }\n};\n\nconst isAddressNullCheck = value => {\n return value !== null ? `${value},` : EMPTY_STRING;\n};\n\nconst ProviderClubCard = forwardRef(\n (\n {\n index,\n ClubName,\n ClubId,\n DistanceFromUserLocation,\n TeamsCartDto,\n TeamCount,\n OfferedClubs,\n onClick,\n isSelected,\n Latitude,\n Longitude,\n ...rest\n },\n ref\n ) => {\n const cardRef = useRef();\n const styles = useStyles();\n const isTeamAvailable = TeamsCartDto && TeamsCartDto.length > 0;\n\n const onCheckAddress = address => {\n return `${\n address.AddressLine1 || address.AddressLine2\n }, ${isAddressNullCheck(address.AddressLine3)}\n ${isAddressNullCheck(address.City)} ${isAddressNullCheck(\n address.PostCode\n )}`;\n };\n\n const handleKeyPress = event => {\n const enterOrSpace = event.which === 13 || event.which === 32;\n\n if (enterOrSpace) {\n event.preventDefault();\n onClick(ClubId);\n }\n };\n\n // if the card gets selected move the focus to it\n useLayoutEffect(() => {\n if (isSelected && cardRef.current) {\n setTimeout(() => {\n cardRef.current.focus();\n cardRef.current.scrollIntoView({\n behaviour: 'smooth',\n block: 'nearest',\n });\n }, 300);\n }\n }, [isSelected]);\n\n const accessibleProps = isSelected ? {} : { role: 'button', tabIndex: 0 };\n\n return (\n
  • \n onClick(ClubId)}\n onKeyPress={handleKeyPress}\n ref={cardRef}\n >\n
    \n \n {ClubName}\n \n
    \n
    \n
    {onCheckAddress(rest)}
    \n
    \n Distance \n \n {DistanceFromUserLocation} Miles\n
    \n
    \n {isTeamAvailable && (\n
    \n {TeamCount} sessions match your search\n
    \n )}\n {isSelected && (\n \n
    \n {isTeamAvailable &&\n TeamsCartDto.map(teamData => (\n
    \n \n Team name \n {teamData.TeamName}\n \n \n Plays on \n {onCheckDays(teamData)}\n \n
    \n ))}\n
    \n {OfferedClubs && (\n
    \n \n {isTeamAvailable\n ? 'This venue also offers:'\n : 'Next available session:'}\n \n {OfferedClubs}\n
    \n )}\n
    \n
    \n \n More info\n \n {isTeamAvailable && (\n \n Directions\n \n )}\n
    \n
    \n
    \n )}\n \n
  • \n );\n }\n);\n\nexport default ProviderClubCard;\n","/** @jsxImportSource @emotion/react */\nimport {\n Fragment,\n useEffect,\n useLayoutEffect,\n useMemo,\n useReducer,\n useRef,\n useState,\n} from 'react';\nimport { Link, Redirect } from 'react-router-dom';\nimport { useSwipeable } from 'react-swipeable';\n\nimport { recommendationsMapPageAnalytics } from '../../analyticsConsts';\nimport {\n CLUB,\n DISABILITY_TYPE,\n KICKABOUT_CASUAL,\n PAGE_NUMBER,\n PAGE_SIZE,\n SELECTED_FOOTBALL_TYPE_ID,\n SELECTED_RECOMMENDATIONS_TYPE_ID,\n} from '../../const';\nimport { usePreferencesContext } from '../../context/preferences';\nimport { useRecommendations } from '../../context/recommendations';\nimport { useSetHeaderHeightContext } from '../../context/setHeaderHeight';\nimport useBodyClass from '../../hooks/useBodyClass';\nimport useErrorBoundary from '../../hooks/useErrorBoundary';\nimport useMediaQuery from '../../hooks/useMediaQuery';\nimport usePageLoadInfo from '../../hooks/usePageLoadInfo';\nimport normaliseSessionLogo from '../../normaliser/sessionlogo';\nimport trayStateReducer, {\n EXPAND_ACTION,\n EXPAND_MAP_ACTION,\n SHRINK_ACTION,\n STANDARD,\n} from '../../reducers/trayState';\nimport { getRecommendations, getSessionLogo } from '../../services';\nimport normaliseRecommendations from '../../utils/normaliseRecommendations';\nimport AlertHiddenRegion from '../AlertHiddenRegion';\nimport Button from '../Button';\nimport { RightArrow } from '../Icons';\nimport Loader from '../Loader';\nimport ProviderCenterCard from '../ProviderCenterCard';\nimport ProviderClubCard from '../ProviderClubCard';\nimport ProvidersMap from '../ProvidersMap';\nimport Text from '../Text';\nimport useStyles from './styles';\n\nconst {\n CTA_BACK_TO_RECOMMENDATIONS,\n MAP_CTA_LOAD_MORE_RECOMMENDATIONS,\n RECOMMENDATIONS_RESULT_ON_MAP,\n} = recommendationsMapPageAnalytics;\n\nconst CardMap = {\n [KICKABOUT_CASUAL]: ProviderCenterCard,\n [CLUB]: ProviderClubCard,\n};\n\nconst SHOWN_INCREMENT = 10;\n\nconst MapPage = () => {\n useBodyClass('mapPage', '/recommendations/map');\n\n const styles = useStyles();\n const [mapLogo, setMapLogo] = useState();\n const throwError = useErrorBoundary();\n const { preferences } = usePreferencesContext();\n const {\n [SELECTED_FOOTBALL_TYPE_ID]: selectedFootballType,\n [SELECTED_RECOMMENDATIONS_TYPE_ID]: selectedRecommendationType,\n [DISABILITY_TYPE]: selectedDisabilityID,\n } = preferences || {};\n const { headerHeight } = useSetHeaderHeightContext();\n\n const { clubRecommendations, casualRecommendations, addRecommendations } =\n useRecommendations();\n // we pick the general type of recommendations the user has set (e.g. Club)\n const recommendationsGroup =\n selectedFootballType === CLUB ? clubRecommendations : casualRecommendations;\n // we extract the specific football type from the recommendations group (e.g. Futsal)\n const {\n TotalClubsRecords,\n TotalCentresRecords,\n RecommendationClubCartDto,\n RecommendationCentreCartDto,\n RecommendationProviderCartDto,\n } = useMemo(\n () =>\n recommendationsGroup?.find(\n group =>\n group.FootballType === selectedRecommendationType &&\n group.DisabilityId === selectedDisabilityID\n ) || {},\n [selectedRecommendationType, recommendationsGroup, selectedDisabilityID]\n );\n // here we try to read both values, since only one will be populated for a specific football type\n const totalRecommendations = TotalClubsRecords\n ? TotalClubsRecords\n : TotalCentresRecords;\n const recommendations = useMemo(() => {\n if (\n !RecommendationClubCartDto &&\n !RecommendationCentreCartDto &&\n !RecommendationProviderCartDto\n ) {\n return null;\n }\n const centerProviders = RecommendationCentreCartDto?.concat(\n RecommendationProviderCartDto\n );\n // we need to normalise the recommendations to make sure we offset\n // pins that are at the same location\n // sorting cards based on distance\n return normaliseRecommendations(\n RecommendationClubCartDto\n ? RecommendationClubCartDto\n : RecommendationCentreCartDto?.length < 0\n ? RecommendationProviderCartDto\n : centerProviders\n )?.sort((firstDistance, secondDistance) =>\n firstDistance.DistanceFromUserLocation >\n secondDistance.DistanceFromUserLocation\n ? 1\n : firstDistance.DistanceFromUserLocation <\n secondDistance.DistanceFromUserLocation\n ? -1\n : 0\n );\n }, [\n RecommendationClubCartDto,\n RecommendationCentreCartDto,\n RecommendationProviderCartDto,\n ]);\n\n const [trayState, dispatch] = useReducer(trayStateReducer, STANDARD);\n const handlers = useSwipeable({\n onSwipedUp: () => dispatch(EXPAND_ACTION),\n onSwipedDown: () => dispatch(SHRINK_ACTION),\n preventDefaultTouchmoveEvent: true,\n });\n\n const [numberShown, setNumberShown] = useState(SHOWN_INCREMENT);\n const [isLoadingMore, setIsLoadingMore] = useState(false);\n const loadingRef = useRef();\n const idref = useRef();\n\n // We keep track of what index the next card will be once we load more cards\n const [nextLoadedFirstIndex, setNextLoadedFirstIndex] = useState();\n const firstOfNewLoadedRef = useRef();\n\n const [selectedId, setSelectedId] = useState();\n const isListView = !selectedId;\n\n const shownRecommendations = useMemo(\n () => recommendations?.slice(0, numberShown),\n [numberShown, recommendations]\n );\n\n const pageTitle = `${\n selectedFootballType === CLUB ? 'Club' : 'Casual'\n } ${selectedRecommendationType}`;\n\n // set the page title.\n usePageLoadInfo('map', pageTitle);\n\n const isDesktop = useMediaQuery('screen and (min-width: 768px)');\n\n // If the number of cards shown changes we want to\n // move the focus to the first new card\n useLayoutEffect(() => {\n setTimeout(() => firstOfNewLoadedRef.current?.focus(), 200);\n }, [numberShown]);\n\n // set path information for redirect\n useEffect(() => {\n localStorage.setItem('pathInfomation', window.location.pathname);\n }, []);\n\n useEffect(() => {\n getSessionLogo()\n .then(({ data }) => {\n const logoData = normaliseSessionLogo(data);\n setMapLogo(logoData);\n })\n .catch(throwError);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // If the user loads more recommendations we want to move the focus to\n // the loading element\n useLayoutEffect(() => {\n setTimeout(() => loadingRef.current?.focus(), 200);\n }, [isLoadingMore]);\n\n if (!selectedFootballType || !selectedRecommendationType) {\n return ;\n }\n\n const backToList = () => {\n setSelectedId();\n };\n\n const Card = CardMap[selectedFootballType];\n\n const showNext = () => {\n setNextLoadedFirstIndex(numberShown + 1);\n setNumberShown(numberShown + SHOWN_INCREMENT);\n };\n\n const getMoreResults = () => {\n if (!recommendations) {\n return;\n }\n\n // if we already have more than the current shown amount\n // show the next 10\n if (recommendations?.length > numberShown) {\n showNext();\n return;\n }\n\n setIsLoadingMore(true);\n\n getRecommendations(selectedFootballType, {\n ...preferences,\n // get the page after the current one\n [PAGE_NUMBER]:\n preferences['FootballType'] === 1\n ? Math.floor(recommendations?.length / 10) +\n (Number.isInteger(recommendations?.length / 10) ? 1 : 2)\n : Math.floor(recommendations?.length / preferences[PAGE_SIZE]) + 1,\n })\n .then(({ data }) => {\n if (data) {\n addRecommendations(data, selectedFootballType);\n }\n\n setIsLoadingMore(false);\n showNext();\n })\n .catch(throwError);\n };\n\n if (!recommendations) {\n return

    No recommendations match the current filters

    ;\n }\n\n // We announce the new number of cards when it changes\n const ariaAnnouncement = `Showing ${numberShown} recommendations`;\n\n return (\n \n \n
    \n
    \n \n \n \n Back to recommendations\n \n \n
    \n
    \n dispatch(EXPAND_MAP_ACTION)}\n />\n
    \n \n {!isListView && (\n
    \n \n
    \n )}\n
    \n {`${totalRecommendations} Result${\n totalRecommendations > 1 ? 's' : ''\n }`}\n
    \n
    \n
      \n {shownRecommendations?.length > 0 &&\n shownRecommendations.map((providerData, index) => {\n const id = providerData.ClubId || providerData.CentreId;\n const isFirstOfNewLoaded = index === nextLoadedFirstIndex - 1;\n return providerData.ProviderCartDto?.length < 2 &&\n !providerData.SessionCartDto ? (\n providerData.ProviderCartDto.map((providers, index) => {\n idref.current = providers.ProviderId;\n return (\n \n setSelectedId(id ? id : providers.ProviderId)\n }\n isSelected={\n selectedId === (id ? id : providers.ProviderId)\n }\n key={id ? id : providers.ProviderId}\n ref={isFirstOfNewLoaded ? firstOfNewLoadedRef : null}\n mapCardLogo={mapLogo}\n isDesktop={isDesktop}\n providerid={idref.current}\n {...providerData}\n />\n );\n })\n ) : providerData.SessionCartDto && providerData?.CentreId ? (\n setSelectedId(id)}\n isSelected={selectedId === id}\n key={id}\n ref={isFirstOfNewLoaded ? firstOfNewLoadedRef : null}\n mapCardLogo={mapLogo}\n isDesktop={isDesktop}\n {...providerData}\n />\n ) : !providerData.SessionCartDto &&\n providerData.ProviderCartDto?.length > 1 ? (\n setSelectedId(providerData?.PitchFinderId)}\n isSelected={selectedId === providerData?.PitchFinderId}\n key={providerData?.PitchFinderId}\n ref={isFirstOfNewLoaded ? firstOfNewLoadedRef : null}\n mapCardLogo={mapLogo}\n isDesktop={isDesktop}\n pitchfinderid={providerData?.PitchFinderId}\n {...providerData}\n />\n ) : (\n \n setSelectedId(id ? id : providerData?.PitchFinderId)\n }\n isSelected={\n selectedId === id ? id : providerData?.PitchFinderId\n }\n key={id ? id : providerData?.PitchFinderId}\n ref={isFirstOfNewLoaded ? firstOfNewLoadedRef : null}\n mapCardLogo={mapLogo}\n isDesktop={isDesktop}\n pitchfinderid={providerData?.PitchFinderId}\n {...providerData}\n />\n );\n })}\n
    \n
    \n {isLoadingMore ? (\n \n ) : (\n totalRecommendations &&\n numberShown < totalRecommendations && (\n
    \n \n Load more\n \n
    \n )\n )}\n
    \n
    \n
    \n \n
    \n );\n};\n\nexport default MapPage;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\nimport { EXPANDED, SHRUNK } from '../../reducers/trayState';\n\nexport default () => {\n const { colors, breakpoints, spacing, borderRadius, heights } = useTheme();\n\n return {\n base: isListView => css`\n position: relative;\n height: 100%;\n display: grid;\n justify-content: center;\n grid-template-areas:\n 'header'\n 'map'\n 'results';\n grid-template-rows: auto 1fr auto;\n grid-template-columns: 1fr;\n\n ${breakpoints.m} {\n grid-template-areas:\n 'header map'\n 'results map';\n grid-template-columns: min(50%, 375px) 1fr;\n }\n\n ${breakpoints.l} {\n grid-template-rows: auto calc(\n 100vh - ${heights.mainNav.desktop} - ${heights.filterNav}\n );\n grid-template-columns: 375px 1fr;\n }\n\n ${breakpoints.l} {\n grid-template-rows: auto calc(\n 100vh - ${heights.mainNav.desktop} - ${heights.filterNav}\n );\n }\n\n ${!isListView &&\n css`\n ${breakpoints.m} {\n // TODO: fix the map view\n grid-template-areas:\n 'header header'\n 'map map';\n }\n\n ${breakpoints.l} {\n grid-template-areas:\n 'header map'\n 'results map';\n }\n `}\n `,\n header: (headerHeight) => css`\n grid-area: header;\n padding: ${spacing.s};\n background: ${colors.white};\n margin-top: ${heights.filterNav};\n border-top: 1px solid ${colors.lightGrey};\n border-bottom: 1px solid ${colors.lightGrey};\n\n ${breakpoints.m} {\n // remove it once header changes are completed.\n // margin-top: calc(${headerHeight} + ${heights.filterNav});\n margin-top: ${heights.mainNav.desktop};\n }\n\n ${breakpoints.l} {\n margin-top: ${headerHeight};\n }\n `,\n backLink: css`\n color: ${colors.navy};\n\n &:focus {\n outline: 0;\n p {\n text-decoration: underline;\n }\n }\n `,\n headerTitle: css`\n display: inline-block;\n `,\n mapAreaWrapper: (headerHeight) => css`\n grid-area: map;\n\n ${breakpoints.l} {\n margin-top: ${headerHeight};\n }\n `,\n providerCardWrapper: (isListView, trayState) => css`\n position: relative;\n grid-area: results;\n height: clamp(170px, 65vh, 280px);\n margin-top: -2rem;\n padding: ${spacing.s};\n background: ${colors.lightGrey};\n border-radius: 20px 20px 0 0;\n box-shadow: 0px 4px 6px ${colors.black};\n align-items: center;\n background-color: ${colors.lightGrey};\n transition: all 0.2s ease-in-out;\n overflow: hidden;\n z-index: 100;\n\n ${trayState === EXPANDED &&\n css`\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n height: 75vh;\n `}\n\n ${trayState === SHRUNK &&\n css`\n transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n height: 55px;\n `}\n\n ${breakpoints.m} {\n margin-top: 0;\n border-radius: 0;\n height: 100%;\n z-index: unset;\n }\n\n ${breakpoints.l} {\n padding: 0;\n box-shadow: none;\n }\n\n ${!isListView &&\n css`\n padding-bottom: 0;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n height: calc(317px + ${spacing.xs} + ${spacing.s});\n overflow: visible;\n box-sizing: content-box;\n\n ${breakpoints.m} {\n position: absolute;\n bottom: 0;\n left: 0;\n border-radius: 20px 20px 0 0;\n height: auto;\n z-index: 100;\n }\n\n ${breakpoints.l} {\n position: relative;\n bottom: unset;\n left: unset;\n border-radius: 0;\n height: 100%;\n }\n `}\n `,\n\n btnWrapper: css`\n padding: ${spacing.s} 0 1.5rem 0;\n `,\n\n scrollContainer: isListView => css`\n position: relative;\n height: 90%;\n overflow: auto;\n\n ${isListView &&\n css`\n &:before {\n content: '';\n position: absolute;\n top: -${spacing.xs};\n left: 0;\n width: 100%;\n height: ${spacing.m};\n background: transparent;\n background: linear-gradient(\n 180deg,\n ${colors.lightGrey} 0%,\n rgba(255, 255, 255, 0) 100%\n );\n z-index: 10;\n }\n `}\n `,\n providerCards: isListView => css`\n border-radius: ${borderRadius.l};\n align-items: center;\n\n ${!isListView &&\n css`\n padding: 0;\n display: contents;\n overflow-y: hidden;\n\n ${breakpoints.l} {\n display: block;\n }\n\n [aria-expanded='false'] {\n display: none;\n }\n\n ${breakpoints.l} {\n [aria-expanded='false'] {\n display: block;\n }\n }\n `}\n `,\n resultCard: css`\n border: ${borderRadius.m} solid ${colors.red};\n\n &:hover,\n &:focus {\n outline: 0;\n border: ${borderRadius.m} solid ${colors.navy};\n }\n `,\n totalResults: isListView => css`\n display: none;\n text-align: center;\n padding: ${spacing.s} 0;\n position: relative;\n\n span {\n padding-top: 5px;\n border-top: ${borderRadius.s} solid ${colors.black};\n }\n\n ${breakpoints.m} {\n span {\n padding-top: 0;\n border-top: 0;\n }\n }\n\n ${breakpoints.l} {\n display: block;\n }\n\n ${isListView &&\n css`\n display: block;\n `}\n `,\n primaryBtn: css`\n background-color: ${colors.blue};\n color: ${colors.white};\n border-radius: 50px;\n font-size: 14px;\n line-height: 18px;\n padding: 10px;\n font-weight: 400;\n text-transform: uppercase;\n `,\n backToWrapper: css`\n position: absolute;\n right: 10px;\n top: -3rem;\n z-index: 100;\n\n ${breakpoints.l} {\n display: none;\n }\n `,\n arrowRotate: css`\n transform: rotate(180deg);\n margin-right: 5px;\n `,\n loadMore: isListView => css`\n margin: 0 ${spacing.xs};\n text-transform: uppercase;\n button {\n text-transform: uppercase;\n }\n\n ${!isListView &&\n css`\n display: none;\n\n ${breakpoints.l} {\n display: block;\n }\n `}\n `,\n loader: css`\n margin-top: ${spacing.s};\n margin-bottom: ${spacing.s};\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport { useRef } from 'react';\n\nimport useScrollTop from '../../hooks/useScrollTop';\nimport Navigation from '../Navigation';\n\nconst Page = ({ children, isBanner = 'false' }) => {\n const pageRef = useRef();\n useScrollTop(pageRef);\n\n return (\n
    \n \n {children}\n
    \n );\n};\n\nexport default Page;\n","import isequal from 'lodash.isequal';\nimport isobject from 'lodash.isobject';\nimport transform from 'lodash.transform';\n\nexport default (object, base) => {\n function changes(object, base) {\n return transform(object, function (result, value, key) {\n if (!isequal(value, base[key])) {\n result[key] =\n isobject(value) && isobject(base[key])\n ? changes(value, base[key])\n : value;\n }\n });\n }\n return changes(object, base);\n};\n","/** @jsxImportSource @emotion/react */\nimport PropTypes from 'prop-types';\n\nimport { RightArrow } from '../Icons';\nimport useStyles from './styles';\n\nconst FilterListItem = ({\n analyticsId,\n label,\n valueFormatter,\n config,\n currentValue,\n onClick,\n isOpen,\n}) => {\n const styles = useStyles();\n\n // If filter has formatter, apply to filter value\n const value =\n typeof valueFormatter === 'function'\n ? valueFormatter(currentValue, config)\n : currentValue;\n\n return (\n \n {label}\n {value}\n \n \n );\n};\n\nFilterListItem.propTypes = {\n analyticsId: PropTypes.string,\n label: PropTypes.string,\n faInitiativeDetails: PropTypes.object,\n venueSessions: PropTypes.object,\n isDesktop: PropTypes.bool,\n isProvider: PropTypes.bool,\n};\n\nexport default FilterListItem;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { colors, spacing, borderRadius, typography, utility } = useTheme();\n\n return {\n filterItem: css`\n ${utility.buttonDefault};\n display: grid;\n grid-template-columns: 50% 40% 10%;\n align-items: center;\n width: 100%;\n padding: ${spacing.s} 0;\n border-bottom: 1px solid ${colors.lightGrey};\n outline: 0;\n\n @media only screen and (width: 768px) and (height: 1024px) and (orientation:portrait) {\n display: flex;\n column-gap: 30px;\n }\n \n svg {\n border: ${borderRadius.s} solid transparent;\n height: 23px;\n width: 23px;\n padding: ${borderRadius.s};\n margin-left: 3px;\n color: ${colors.navy};\n\n @media only screen and (width: 768px) and (height: 1024px) and (orientation: portrait) \n {\n flex-basis: 10%;\n }\n }\n &:hover {\n outline: 0;\n background-color: ${colors.lightBlue};\n }\n\n &:focus {\n span:first-of-type {\n text-decoration: underline;\n }\n svg {\n border: ${borderRadius.s} solid ${colors.navy};\n border-radius: ${borderRadius.l};\n padding: ${borderRadius.s};\n height: 23px;\n width: 23px;\n margin-left: 3px;\n }\n }\n }\n }\n `,\n label: css`\n ${typography.headings[6].mobile};\n text-align: left;\n color: ${colors.navy};\n font-weight: 600;\n\n @media only screen and (width: 768px) and (height: 1024px) and (orientation: portrait) {\n flex-grow: 1;\n flex-basis: 50%;\n }\n `,\n value: hasValue => css`\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n border: 1px solid transparent;\n padding: 0.625rem ${spacing.s};\n color: ${colors.navy};\n\n @media only screen and (width: 768px) and (height: 1024px) and (orientation: portrait) {\n flex-basis: 40%;\n }\n\n ${hasValue &&\n css`\n border: 1px solid ${colors.blue};\n padding: 0.625rem ${spacing.s};\n\n &:hover {\n border: 1px solid ${colors.navy};\n padding: 0.625rem ${spacing.s};\n }\n `}\n `,\n arrow: css`\n justify-self: end;\n `,\n };\n};\n","import PropTypes from 'prop-types';\n\n/** @jsxImportSource @emotion/react */\nimport { filtersPanelAnalytics } from '../../analyticsConsts';\nimport Button from '../Button';\nimport useStyles from './styles';\n\nconst { FILTERS_PANEL_CTA_SAVE_CHANGES } = filtersPanelAnalytics;\n\nconst FilterWrapper = ({\n label,\n helpText,\n currentValue,\n valueFormatter,\n config,\n onClick,\n children,\n disabled,\n}) => {\n const styles = useStyles();\n\n const value =\n typeof valueFormatter === 'function'\n ? valueFormatter(currentValue, config)\n : currentValue;\n\n return (\n
    \n
    \n {label}\n {value && {value}}\n
    \n {helpText &&
    {helpText}
    }\n {children}\n
    \n \n Save changes\n \n
    \n
    \n );\n};\n\nFilterWrapper.prototype = {\n label: PropTypes.string,\n helpText: PropTypes.string,\n currentValue: PropTypes.string,\n valueFormatter: PropTypes.func,\n config: PropTypes.func,\n onClick: PropTypes.func,\n children: PropTypes.object,\n disabled: PropTypes.bool,\n};\n\nexport default FilterWrapper;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { colors, spacing, typography } = useTheme();\n\n return {\n info: css`\n display: grid;\n grid-template-columns: 50% 50%;\n align-items: center;\n width: 100%;\n padding: ${spacing.s} 0;\n border-bottom: 1px solid ${colors.lightGrey};\n color: ${colors.navy};\n `,\n label: css`\n ${typography.headings[6].mobile};\n text-align: left;\n `,\n value: css`\n text-align: right;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n `,\n helpText: css`\n padding-top: ${spacing.s};\n color: ${colors.darkGrey};\n `,\n ctaWrapper: css`\n border-top: 1px solid ${colors.lightGrey};\n padding-top: ${spacing.s};\n `,\n saveBtn: css`\n text-transform: uppercase;\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport PropTypes from 'prop-types';\nimport { Fragment, useEffect, useState } from 'react';\n\nimport { filtersPanelAnalytics } from '../../analyticsConsts';\nimport useGeolocation, { LOADING_STATE } from '../../hooks/useGeolocation';\nimport FilterWrapper from '../FilterWrapper';\nimport LinkButton from '../LinkButton';\nimport Loader from '../Loader';\nimport LocationAutoSuggest from '../LocationAutoSuggest';\nimport useStyles from './styles';\n\nconst { FILTERS_PANEL_CTA_CURRENT_LOCATION } = filtersPanelAnalytics;\n\nconst FilterLocation = ({\n onSave,\n preferenceKey,\n currentValue: value,\n ...rest\n}) => {\n const styles = useStyles();\n const [currentValue, setCurrentValue] = useState(value);\n // saves the value from the autocomplete widget\n const [locationData, setLocationData] = useState();\n // saves the value from the browser geolocation\n const { geolocationData, getGeolocationData } = useGeolocation();\n const { coordinates, status, statusMessage } = geolocationData || {};\n\n const locationSelected = locationData || geolocationData;\n\n // Updates current value based on selected data\n useEffect(() => {\n if (locationData) {\n const { readableLocation } = locationData;\n setCurrentValue(readableLocation);\n }\n // Empty value will show \"My location\"\n if (geolocationData) {\n setCurrentValue();\n }\n }, [locationData, geolocationData]);\n\n const onClick = () => {\n const { latitude, longitude, readableLocation } =\n coordinates || locationData;\n\n onSave({\n [preferenceKey]: readableLocation,\n Latitude: latitude,\n Longitude: longitude,\n });\n };\n\n return (\n \n
    \n \n
    \n
    \n {status === LOADING_STATE ? (\n \n ) : (\n statusMessage\n )}\n
    \n {!locationSelected && (\n \n Or{' '}\n {\n getGeolocationData();\n // Reset location data (from autosuggest)\n setLocationData();\n }}\n >\n share current location\n \n \n )}\n
    \n
    \n \n );\n};\n\nFilterLocation.prototype = {\n onSave: PropTypes.func,\n preferenceKey: PropTypes.object,\n value: PropTypes.string,\n};\n\nexport default FilterLocation;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { colors, spacing } = useTheme();\n\n return {\n filterWrapper: css`\n padding: ${spacing.m} 0;\n `,\n locationLink: css`\n display: flex;\n padding-top: ${spacing.s};\n `,\n locationBtn: css`\n padding: 0;\n margin-left: ${spacing.xs};\n `,\n ctaWrapper: css`\n border-top: 1px solid ${colors.lightGrey};\n padding-top: ${spacing.m};\n `,\n saveBtn: css`\n text-transform: uppercase;\n `,\n };\n};\n","export default (state, action) => {\n switch (action.type) {\n case 'add':\n return [...state, action.payload.value];\n case 'remove':\n return state.filter(value => value !== action.payload.value);\n default:\n return state;\n }\n};\n","/** @jsxImportSource @emotion/react */\nimport PropTypes from 'prop-types';\nimport { useReducer } from 'react';\n\nimport { EMPTY_STRING } from '../../const';\nimport useMediaQuery from '../../hooks/useMediaQuery';\nimport optionsReducer from '../../reducers/multiOptions';\nimport FilterWrapper from '../FilterWrapper';\nimport { Tick } from '../Icons';\nimport useStyles from './styles';\n\nconst MAX_OPTIONS = 6;\n\nconst FilterMultiple = ({\n onSave,\n preferenceKey,\n options,\n currentValue = '',\n areOptionsMandatory,\n ...rest\n}) => {\n const styles = useStyles();\n const currentValueArray =\n (currentValue !== EMPTY_STRING && currentValue.split(',')) || [];\n const [optionsState, dispatch] = useReducer(\n optionsReducer,\n currentValueArray || []\n );\n const noOptionsSelected = optionsState.length === 0;\n const isLargeDesktop = useMediaQuery('screen and (min-width: 1680px)');\n const isMenuScrollable = options.length > MAX_OPTIONS && !isLargeDesktop;\n\n const onChange = event => {\n const selectedValue = event.target.value;\n const inOptions = !!optionsState.find(value => value === selectedValue);\n\n if (inOptions) {\n dispatch({ type: 'remove', payload: { value: selectedValue } });\n } else {\n dispatch({ type: 'add', payload: { value: selectedValue } });\n }\n };\n\n const onClick = () => {\n const filtersValue = optionsState.sort().join(',');\n\n onSave({ [preferenceKey]: filtersValue });\n };\n\n return (\n \n {options && (\n \n
    \n {options.map(({ id, text, value: optionValue }) => {\n const isChecked = !!optionsState.find(\n value => value === optionValue\n );\n\n return (\n \n );\n })}\n
    \n \n )}\n \n );\n};\n\nFilterMultiple.prototype = {\n onSave: PropTypes.func,\n preferenceKey: PropTypes.object,\n options: PropTypes.func,\n currentValue: PropTypes.string,\n areOptionsMandatory: PropTypes.bool,\n};\n\nexport default FilterMultiple;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { colors,borderRadius, spacing, utility } = useTheme();\n\n return {\n options: css`\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n grid-gap: ${spacing.xs};\n padding: ${spacing.s} 0;\n `,\n label: css`\n & > input[type='checkbox']:focus + span {\n border: borderRadius solid ${colors.navy} ;\n border-radius: ${borderRadius.m};\n }\n `,\n option: isChecked => css`\n display: block;\n cursor: pointer;\n font-size: 0.875rem;\n font-weight: 400;\n background-color: ${colors.white};\n color: ${colors.navy};\n border-radius: ${borderRadius.s};\n padding: 0.85rem ${spacing.s};\n transition: background-color 0.3s ease-in;\n border: 1px solid ${colors.blue};\n text-align: center;\n\n ${isChecked &&\n css`\n color: ${colors.white};\n background-color: ${colors.darkGrey};\n `}\n\n input[type='checkbox']:focus & {\n border: ${borderRadius.s} solid ${colors.navy} ;\n border-radius: ${borderRadius.m};\n }\n `,\n icon: css`\n margin-right: 0.3125rem;\n `,\n checkbox: css`\n ${utility.checkboxHidden};\n `,\n filterOptionWrapper: css`\n overflow: auto;\n -webkit-overflow-scrolling: auto;\n padding-right: ${spacing.xs};\n height: Calc(100vh - 63vh);\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport PropTypes from 'prop-types';\nimport { useState } from 'react';\n\nimport { filtersPanelAnalytics } from '../../analyticsConsts';\nimport FilterWrapper from '../FilterWrapper';\nimport Slider from '../Slider';\nimport useStyles from './styles';\n\nconst { FILTERS_PANEL_SELECTED_SESSION_DURATION_PREFERENCE } =\n filtersPanelAnalytics;\n\nconst FilterSessionDuration = ({\n onSave,\n preferenceKey,\n config,\n currentValue,\n valueFormatter,\n ...rest\n}) => {\n const styles = useStyles();\n const { defaultValue } = config;\n const [duration, setDuration] = useState(defaultValue);\n const [isSliderClicked, setIsSliderClicked] = useState(false);\n\n const onClick = () => {\n onSave({\n [preferenceKey]: isSliderClicked ? duration : currentValue,\n });\n };\n\n const setSliderValue = value => {\n setIsSliderClicked(true);\n setDuration(value);\n };\n\n return (\n \n
    \n {\n setSliderValue(value);\n }}\n />\n
    \n \n );\n};\n\nFilterSessionDuration.prototype = {\n onSave: PropTypes.func,\n preferenceKey: PropTypes.object,\n options: PropTypes.object,\n currentValue: PropTypes.number,\n valueFormatter: PropTypes.func,\n};\n\nexport default FilterSessionDuration;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { colors, spacing } = useTheme();\n\n return {\n filterWrapper: css`\n padding: ${spacing.m} 0;\n `,\n locationLink: css`\n display: flex;\n padding-top: ${spacing.s};\n `,\n locationBtn: css`\n padding: 0;\n margin-left: ${spacing.xs};\n `,\n ctaWrapper: css`\n border-top: 1px solid ${colors.lightGrey};\n padding-top: ${spacing.m};\n `,\n saveBtn: css`\n text-transform: uppercase;\n `,\n };\n};\n","import PropTypes from 'prop-types';\n\n/** @jsxImportSource @emotion/react */\nimport { filtersPanelAnalytics } from '../../analyticsConsts';\nimport Button from '../Button';\nimport LinkButton from '../LinkButton';\nimport Text from '../Text';\nimport useStyles from './styles';\n\nconst {\n FILTERS_PANEL_UNSAVED_CHANGES,\n FILTERS_PANEL_UNSAVED_CHANGES_CTA_SAVE,\n FILTERS_PANEL_UNSAVED_CHANGES_CTA_EXIT,\n FILTERS_PANEL_UNSAVED_CHANGES_CTA_BACK,\n} = filtersPanelAnalytics;\n\nconst FilterUnsavedPanel = ({ onSaveExit, onExit, onGoBack }) => {\n const styles = useStyles();\n\n return (\n
    \n
    \n \n You have unsaved changes to filters\n \n \n Save and exit\n \n \n Exit without saving\n \n \n Go Back\n \n
    \n
    \n );\n};\n\nFilterUnsavedPanel.prototype = {\n onSaveExit: PropTypes.func,\n onExit: PropTypes.func,\n onGoBack: PropTypes.func,\n};\n\nexport default FilterUnsavedPanel;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { colors, spacing, breakpoints } = useTheme();\n\n return {\n panel: css`\n margin-top: 20vh;\n `,\n title: css`\n font-size: 1.75rem;\n line-height: 1.625rem;\n text-align: center;\n color: ${colors.navy};\n margin: auto;\n margin-bottom: ${spacing.s};\n max-width: 80%;\n\n ${breakpoints.l} {\n font-size: 1.75rem;\n line-height: 1.625rem;\n }\n `,\n btn: css`\n text-transform: uppercase;\n margin-bottom: ${spacing.xs};\n `,\n linkBtn: css`\n margin: ${spacing.s} auto 0;\n text-decoration: none;\n font-size: 0.875rem;\n font-weight: normal;\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport useStyles from './styles';\n\nconst ToggleSwitch = ({\n children,\n isChecked,\n value,\n name,\n onChange,\n switchId,\n tabIndex,\n}) => {\n const styles = useStyles();\n\n return (\n \n );\n};\n\nexport default ToggleSwitch;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { utility, colors, spacing, borderRadius } = useTheme();\n\n return {\n hiddenInputs: css`\n input {\n ${utility.checkboxHidden}\n }\n\n input:focus:not(:focus-visible) + span:before {\n outline: none;\n }\n `,\n switch: css`\n position: relative;\n display: inline-block;\n width: 3.75rem;\n height: ${spacing.m};\n\n input {\n opacity: 0;\n width: 0;\n height: 0;\n\n &:checked {\n ~ span {\n &:focus {\n outline: 0;\n border: 1px solid ${colors.navy};\n\n &::before {\n background-color: ${colors.navy};\n }\n }\n\n &:before {\n transform: translateX(26px);\n }\n &:after {\n content: 'Yes';\n left: 36%;\n }\n }\n }\n }\n `,\n slider: isChecked => css`\n position: absolute;\n cursor: pointer;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n border: 1px solid ${isChecked ? colors.blue : 'transparent'};\n transition: 0.4s;\n border-radius: 6.25rem;\n background-color: ${isChecked ? colors.white : colors.lightGrey};\n outline: 0;\n\n &:before {\n content: '';\n position: absolute;\n height: 1.625rem;\n width: 1.625rem;\n left: ${borderRadius.m};\n bottom: ${borderRadius.s};\n background-color: ${isChecked ? colors.blue : colors.darkGrey};\n transition: 0.4s;\n border-radius: 50%;\n }\n\n &:after {\n content: 'No';\n color: ${isChecked ? colors.black : colors.darkGrey};\n display: block;\n position: absolute;\n transform: translate(-75%, -50%);\n top: 50%;\n left: 80%;\n font-size: 0.875rem;\n line-height: 1.125rem;\n }\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport { useCallback, useEffect, useState } from 'react';\n\nimport {\n BOYS_OR_MEN,\n BOYS_OR_MEN_MIXED,\n EMPTY_STRING,\n GIRLS_OR_WOMEN,\n GIRLS_OR_WOMEN_MIXED,\n} from '../../const';\nimport ToggleSwitch from '../ToggleSwitch';\nimport useStyles from './styles';\n\nconst DELAY = 0;\n\nconst MixedFilterItem = ({\n analyticsId,\n label,\n valueFormatter,\n config,\n currentValue,\n onClick,\n isOpen,\n}) => {\n const styles = useStyles();\n\n // If filter has formatter, apply to filter value\n const value =\n typeof valueFormatter === 'function'\n ? valueFormatter(currentValue, config)\n : currentValue;\n\n const selectedValue =\n currentValue === BOYS_OR_MEN_MIXED || currentValue === GIRLS_OR_WOMEN_MIXED;\n\n const [isMixed, setIsMixed] = useState(selectedValue);\n\n // if any changes in mixed selection\n useEffect(() => {\n let timeout;\n if (value) {\n timeout = setTimeout(() => {\n setIsMixed(selectedValue);\n }, DELAY);\n }\n\n return () => {\n clearTimeout(timeout);\n };\n }, [value, selectedValue]);\n\n // set gender value\n const setMixedValue = useCallback(isMixed => {\n let value = EMPTY_STRING;\n switch (currentValue) {\n case 1:\n case 4:\n value = isMixed ? BOYS_OR_MEN_MIXED : BOYS_OR_MEN;\n break;\n default:\n value = isMixed ? GIRLS_OR_WOMEN_MIXED : GIRLS_OR_WOMEN;\n break;\n }\n return value;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n onClick(setMixedValue(!isMixed))}\n css={styles.filterItem}\n tabIndex={isOpen ? 0 : -1}\n htmlFor={analyticsId}\n >\n \n {label}\n \n \n {\n setIsMixed(value);\n }}\n >\n \n \n );\n};\n\nexport default MixedFilterItem;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { colors, spacing, typography, utility } = useTheme();\n\n return {\n filterItem: css`\n ${utility.buttonDefault};\n display: grid;\n grid-template-columns: 80% 20%;\n align-items: center;\n width: 100%;\n padding: ${spacing.s} 0;\n border-bottom: 1px solid ${colors.lightGrey};\n cursor: pointer;\n outline: 0;\n `,\n label: css`\n ${typography.headings[6].mobile};\n text-align: left;\n `,\n toggleCheckbox: css`\n justify-self: end;\n `,\n };\n};\n","import { css } from '@emotion/react';\n\nimport { EMPTY_STRING, SCROLL_DOWN } from '../../const';\nimport useTheme from '../../hooks/useTheme';\n\nconst panelWidth = '310px';\n\nexport default () => {\n const { colors, spacing, breakpoints, utility, borderRadius, heights } =\n useTheme();\n\n return {\n panel: (\n isToggled,\n isLargeDesktop,\n scrolldirectionContext,\n headerHeight\n ) => css`\n display: grid;\n grid-template-rows: ${!isLargeDesktop ? '10% 90%' : '5% 95%'};\n position: fixed;\n top: ${scrolldirectionContext === SCROLL_DOWN ? `${headerHeight}` : '0'};\n left: -375px;\n width: 375px;\n height: ${scrolldirectionContext === SCROLL_DOWN\n ? `calc(100vh - ${headerHeight})`\n : '100vh'};\n z-index: 20001;\n padding: ${spacing.m} ${spacing.m} ${spacing.s};\n background-color: ${colors.white};\n border-right: 1px solid ${colors.lightGrey};\n border-top: 1px solid ${colors.lightGrey};\n transition: left 0.3s ease-out;\n\n ${isToggled &&\n css`\n left: 0;\n `}\n\n ${breakpoints.m} {\n top: ${scrolldirectionContext === 'down'\n ? ` ${heights.mainNav.desktop}`\n : '0'};\n height: ${scrolldirectionContext === SCROLL_DOWN\n ? `calc(100vh - ${headerHeight})`\n : '100vh'};\n }\n `,\n top: css`\n display: grid;\n grid-template-columns: 1fr 1fr;\n align-items: center;\n max-width: ${panelWidth};\n `,\n filters: isNested => css`\n overflow: ${isNested ? 'hidden' : EMPTY_STRING};\n margin-top: ${spacing.s};\n `,\n inner: isNested => css`\n display: grid;\n grid-template-columns: repeat(2, ${panelWidth});\n width: ${panelWidth};\n transform: translateX(0);\n transition: all 0.5s ease-out;\n\n ${isNested &&\n css`\n transform: translateX(-${panelWidth});\n `};\n `,\n column: css`\n outline: none;\n border-top: 1px solid ${colors.lightGrey};\n `,\n columnFooter: css`\n margin-top: ${spacing.s};\n `,\n title: css`\n position: relative;\n font-size: 1.75rem;\n color: ${colors.navy};\n\n &::after {\n content: '';\n position: absolute;\n left: 0;\n bottom: 0;\n width: 40%;\n height: ${borderRadius.s};\n background-color: ${colors.red};\n }\n\n ${breakpoints.l} {\n &::after {\n width: 60%;\n }\n }\n `,\n closeBtn: css`\n ${utility.buttonDefault};\n width: 30px;\n height: 30px;\n justify-self: end;\n border: ${borderRadius.s} solid transparent;\n color: ${colors.navy};\n &:focus {\n outline: 0;\n border: ${borderRadius.s} solid ${colors.navy};\n }\n `,\n noResults: css`\n color: ${colors.red};\n text-align: center;\n padding: ${spacing.s} 0;\n `,\n saveBtn: css`\n text-transform: uppercase;\n border: ${borderRadius.s} solid transparent;\n\n &:focus {\n outline: 0;\n border: ${borderRadius.s} solid ${colors.navy};\n }\n `,\n info: css`\n font-size: 0.875rem;\n line-height: 1.125rem;\n margin-top: ${spacing.s};\n color: ${colors.darkGrey};\n `,\n link: css`\n display: inline-block;\n outline: 0;\n `,\n scrollFilterData: css`\n height: Calc(100vh - 55%);\n overflow: auto;\n -webkit-overflow-scrolling: auto;\n padding-right: ${spacing.s};\n\n @media not all and (min-resolution: 0.001dpcm) {\n @supports (-webkit-appearance: none) {\n height: Calc(100vh - 60vh);\n }\n }\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport isequal from 'lodash.isequal';\nimport omit from 'lodash.omit';\nimport PropTypes from 'prop-types';\nimport { Fragment, useEffect, useLayoutEffect, useRef, useState } from 'react';\n\nimport { filtersPanelAnalytics } from '../../analyticsConsts';\nimport {\n CLUB,\n DONT_MIND,\n KICKABOUT_CASUAL,\n LOCATION_FILTER,\n MAP_PAGE,\n MULTI_FILTER,\n SELECTED_RECOMMENDATIONS_TYPE_ID,\n SESSION_DURATION,\n SLIDER_FILTER,\n} from '../../const';\nimport { useMORecommendations } from '../../context/moRecommendations';\nimport { useNestedFilterPanelContext } from '../../context/nestedFilterPanel';\nimport { usePreferencesContext } from '../../context/preferences';\nimport { useRecommendations } from '../../context/recommendations';\nimport { useScrollDirectionContext } from '../../context/scrollDirection';\nimport { useSetHeaderHeightContext } from '../../context/setHeaderHeight';\nimport useErrorBoundary from '../../hooks/useErrorBoundary';\nimport useMediaQuery from '../../hooks/useMediaQuery';\nimport useOnboardingURL from '../../hooks/useOnboardingURL';\nimport useStorageFilters from '../../hooks/useStorageFilters';\nimport {\n getMiniOnboardingRecommendations,\n getRecommendations,\n} from '../../services';\nimport objectsDiff from '../../utils/objectsDiff';\nimport Button from '../Button';\nimport FilterListItem from '../FilterListItem';\nimport FilterLocation from '../FilterLocation';\nimport FilterMultiple from '../FilterMultiple';\nimport FilterSessionDuration from '../FilterSessionDuration';\nimport FilterUnsavedPanel from '../FilterUnsavedPanel';\nimport { CircleArrow, CircleX } from '../Icons';\nimport Link from '../Link';\nimport Loader from '../Loader';\nimport MixedFilterItem from '../MixedFilterItem';\nimport Text from '../Text';\nimport filtersConfig from './filtersConfig';\nimport useStyles from './styles';\n\nconst {\n FILTERS_PANEL_CTA_CLOSE,\n FILTERS_PANEL_CTA_BACK_TO,\n FILTERS_PANEL_CTA_APPLY,\n FILTERS_PANEL_CTA_NEW_SEARCH,\n FILTERS_PANEL_FILTER_TYPES,\n FILTERS_PANEL_NESTED_FILTER,\n FILTERS_PANEL_CTA_OPEN,\n} = filtersPanelAnalytics;\n\nconst DELAY = 600;\n\nconst filtersMapping = {\n [MULTI_FILTER]: FilterMultiple,\n [LOCATION_FILTER]: FilterLocation,\n [SLIDER_FILTER]: FilterSessionDuration,\n};\n\nconst FiltersPanel = ({ isToggled, onClose, page }) => {\n const styles = useStyles();\n const throwError = useErrorBoundary();\n const {\n updateFiltersStorage,\n updateFiltersCasualStorage,\n currentFiltersCasualParsed,\n } = useStorageFilters();\n const { selectedFilterContext, setSelectedFilters, isNested, setNested } =\n useNestedFilterPanelContext();\n\n const [isLoading, setIsLoading] = useState(false);\n const [isExiting, setIsExiting] = useState(false);\n const { preferences, setPreferences } = usePreferencesContext();\n const [unsavedPreferences, setUnsavedPreferences] = useState(preferences);\n const { setRecommendations, resetRecommendations } = useRecommendations();\n const [filteredRecommendations, setFilteredRecommendations] = useState();\n const filtersRef = useRef(null);\n const nestedRef = useRef(null);\n const loadingRef = useRef(null);\n const scrollDiv = useRef(null);\n const { scrolldirectionContext } = useScrollDirectionContext();\n const getOnboardingURL = useOnboardingURL();\n const { headerHeight } = useSetHeaderHeightContext();\n const { setMORecommendations } = useMORecommendations();\n const isMiniOnboarding =\n sessionStorage.getItem('ISMINIONBOARDING') === 'true';\n\n const { SelectedFootballType, FootballType, PlayWith } = preferences;\n const filtersData = filtersConfig[SelectedFootballType];\n const unsavedChanges = !isequal(\n omit(preferences, ['SelectedRecommendationsType']),\n omit(unsavedPreferences, ['SelectedRecommendationsType'])\n );\n const isLargeDesktop = useMediaQuery('screen and (min-width: 1680px)');\n const isMenuScrollable = SelectedFootballType !== CLUB && !isLargeDesktop;\n\n const Filter =\n selectedFilterContext && filtersMapping[selectedFilterContext.type];\n\n const noResults =\n filteredRecommendations && filteredRecommendations.length === 0;\n\n useEffect(() => {\n // we need to cancel the timeout if we unmount before execution\n let timeout;\n\n if (isNested) {\n // Delay for CSS transition to finish\n // before focusing nested panel\n timeout = setTimeout(() => {\n nestedRef.current.focus();\n }, DELAY);\n } else {\n setFilteredRecommendations();\n // Delay for CSS transition to finish\n // before removing filter from panel\n timeout = setTimeout(() => {\n setSelectedFilters();\n filtersRef.current?.focus();\n }, DELAY);\n }\n\n return () => {\n clearTimeout(timeout);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isNested]);\n\n useLayoutEffect(() => {\n if (isToggled) {\n filtersRef.current?.focus();\n }\n }, [isToggled]);\n\n useLayoutEffect(() => {\n if (isLoading) {\n loadingRef.current?.focus();\n }\n }, [isLoading]);\n\n // this runs when the user changes the selected football type\n useEffect(() => {\n let preferencesTmp = preferences;\n\n // If we changed to \"Club\", remove \"Casual\" preferences\n // before sending with the request\n if (SelectedFootballType === CLUB) {\n const { [SESSION_DURATION]: SessionDuration, ...restPreferences } =\n preferencesTmp;\n\n // update the Casual filters temporary storage\n updateFiltersCasualStorage({\n SessionDuration,\n });\n\n preferencesTmp = restPreferences;\n } else {\n // Merge \"Casual\" preferences back to main object\n preferencesTmp = { ...preferencesTmp, ...currentFiltersCasualParsed };\n // Reset temp casual preferences local\n updateFiltersCasualStorage();\n }\n\n setPreferences(preferencesTmp);\n setUnsavedPreferences(preferencesTmp);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [SelectedFootballType, PlayWith]);\n\n const onPanelBack = () => setNested(false);\n\n const onPanelClose = () => {\n if (unsavedChanges) {\n setIsExiting(true);\n } else {\n onClose();\n }\n };\n\n // Single filter save handler\n const onFilterSave = updatedPreference => {\n const unsavedPref = {\n ...preferences,\n ...unsavedPreferences,\n ...updatedPreference,\n [SELECTED_RECOMMENDATIONS_TYPE_ID]:\n preferences[SELECTED_RECOMMENDATIONS_TYPE_ID],\n };\n // Update state object with new filter value\n setUnsavedPreferences(unsavedPref);\n // Delay to show updated results\n // before transitioning back to main panel\n setTimeout(() => {\n onPanelBack();\n }, DELAY);\n };\n\n const onMOFilterSaveAll = () => {\n if (unsavedPreferences && unsavedPreferences['FootballType'] === 1) {\n unsavedPreferences.PageNumber = 1;\n }\n setIsLoading(true);\n\n let unsavedObj = unsavedPreferences;\n getMiniOnboardingRecommendations(SelectedFootballType, unsavedObj)\n .then(({ data }) => {\n if (data) {\n setFilteredRecommendations(data);\n if (data.length > 0) {\n setMORecommendations(data[0], SelectedFootballType);\n // Update preferences context\n setPreferences(unsavedObj);\n const diffPreferences = objectsDiff(unsavedObj, preferences);\n // Save applied filters in storage\n updateFiltersStorage(diffPreferences);\n // Close panel\n onClose();\n }\n setIsLoading(false);\n }\n })\n .catch(throwError);\n };\n\n // Main save handler (saves all changes at once)\n const onFilterSaveAll = () => {\n setIsLoading(true);\n\n let unsavedObj = unsavedPreferences;\n\n if (FootballType === DONT_MIND) {\n const unselectedType =\n SelectedFootballType === CLUB ? KICKABOUT_CASUAL : CLUB;\n\n // For the \"I don't mind\" case, we also need to\n // fetch data from the unselected tab\n Promise.all([\n getRecommendations(SelectedFootballType, unsavedObj),\n ])\n .then(data => {\n const recommendationRecords = data[0].data; // recommendation data\n // Update recommendations context\n setRecommendations(recommendationRecords, unselectedType);\n resetRecommendations();\n })\n .catch(throwError);\n }\n\n Promise.all([\n getRecommendations(SelectedFootballType, unsavedObj),\n ])\n .then(data => {\n if (data) {\n let recommendationRecords = data[0].data; // recommendation data\n const backupData = recommendationRecords;\n //filter data based on footballType for map page\n if (page === MAP_PAGE && recommendationRecords.length > 0) {\n recommendationRecords = recommendationRecords.filter(\n selectedItem => {\n return (\n selectedItem['FootballType'] ===\n preferences['SelectedRecommendationsType']\n );\n }\n );\n }\n\n setFilteredRecommendations(recommendationRecords);\n\n // Only update states if there's results\n if (recommendationRecords.length > 0) {\n\n // Update preferences context\n setPreferences(unsavedObj);\n\n // Update recommendations context\n setRecommendations(\n page === MAP_PAGE ? backupData : recommendationRecords,\n SelectedFootballType\n );\n\n const diffPreferences = objectsDiff(unsavedObj, preferences);\n\n // Save applied filters in storage\n updateFiltersStorage(diffPreferences);\n\n // Close panel\n onClose();\n }\n setIsLoading(false);\n }\n })\n .catch(throwError);\n };\n\n return (\n \n
    \n \n Filters\n \n {!isExiting && (\n \n {selectedFilterContext && isNested ? (\n {\n onPanelBack();\n }}\n >\n \n \n ) : (\n {\n onPanelClose();\n setFilteredRecommendations();\n scrollDiv.current.scrollTo(0, 0);\n }}\n tabIndex={isToggled ? 0 : -1}\n >\n \n \n )}\n \n )}\n
    \n {isLoading ? (\n \n ) : (\n
    \n
    \n {/* Main level */}\n
    \n {isExiting ? (\n {\n setIsExiting(false);\n setUnsavedPreferences(preferences);\n onClose();\n // to reset no result section\n setFilteredRecommendations();\n }}\n onSaveExit={() => {\n setIsExiting(false);\n isMiniOnboarding ? onMOFilterSaveAll() : onFilterSaveAll();\n }}\n onGoBack={() => setIsExiting(false)}\n />\n ) : (\n \n \n {filtersData &&\n filtersData.map(({ id, ...filter }) => {\n const { preferenceKey, hasNestedFilter } = filter;\n const unsavedPreferenceValue =\n unsavedPreferences[preferenceKey];\n return hasNestedFilter ? (\n {\n setSelectedFilters(filter);\n setNested(true);\n }}\n isOpen={isToggled}\n />\n ) : (\n {\n setSelectedFilters(filter);\n setNested(false);\n onFilterSave({\n [preferenceKey]: value,\n });\n }}\n isOpen={isToggled}\n />\n );\n })}\n
    \n
    \n {noResults && (\n

    \n No results match your filter criteria\n

    \n )}\n
    \n
    \n {\n isMiniOnboarding\n ? onMOFilterSaveAll()\n : onFilterSaveAll();\n }}\n disabled={!unsavedChanges || isLoading}\n >\n {isLoading ? 'Applying filters...' : 'Apply filters'}\n \n

    \n To modify your age, who you want to play with, or to\n explore club football, you need to{' '}\n \n start a new search\n \n

    \n
    \n \n )}\n
    \n {/* Nested filter */}\n {selectedFilterContext && isNested && (\n \n \n
    \n )}\n \n \n )}\n \n );\n};\n\nFiltersPanel.prototype = {\n isToggled: PropTypes.bool,\n onClose: PropTypes.func,\n page: PropTypes.string,\n};\n\nexport default FiltersPanel;\n","/** @jsxImportSource @emotion/react */\nimport { forwardRef, Fragment } from 'react';\n\nimport { filtersPanelAnalytics } from '../../analyticsConsts';\nimport { SCROLL_UP } from '../../const';\nimport { useScrollDirectionContext } from '../../context/scrollDirection';\nimport { useSetHeaderHeightContext } from '../../context/setHeaderHeight';\nimport useStorageFilters from '../../hooks/useStorageFilters';\nimport { Stripes } from '../Icons';\nimport useStyles from './styles';\n\nconst { FILTERS_PANEL_CTA_OPEN } = filtersPanelAnalytics;\n\nconst FiltersToggle = forwardRef(\n ({ isToggled, onClick }, filtersToggleBtnRef) => {\n const styles = useStyles();\n const { currentFiltersParsed } = useStorageFilters();\n const currentFiltersKeys = Object.keys(currentFiltersParsed);\n const currentFiltersLength = currentFiltersKeys.length;\n const { headerHeight } = useSetHeaderHeightContext();\n const { scrolldirectionContext } = useScrollDirectionContext();\n\n const styleHeader = {\n active: {\n marginTop: headerHeight,\n },\n hidden: {\n marginTop: '0',\n },\n };\n\n return (\n \n
    \n \n Filters\n \n {currentFiltersLength}\n \n \n {currentFiltersLength > 0 && (\n
    \n {currentFiltersKeys.map((key, index) => (\n \n
    \n {currentFiltersParsed[key]}\n
    \n
    \n ))}\n
    \n )}\n
    \n \n );\n }\n);\n\nexport default FiltersToggle;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const {\n breakpoints,\n utility,\n colors,\n spacing,\n borderRadius,\n heights,\n screenSizes,\n } = useTheme();\n\n return {\n toggle: css`\n height: ${heights.filterNav};\n box-shadow: 0px ${borderRadius.s} 3px rgba(1, 30, 65, 0.14);\n\n ${breakpoints.l} {\n max-width: ${screenSizes.xl};\n box-shadow: none;\n margin: 0 auto;\n width: 90vw;\n }\n `,\n inner: css`\n height: 100%;\n background-color: ${colors.white};\n display: grid;\n grid-auto-flow: column;\n\n ${breakpoints.m} {\n display: inline-block;\n background-color: transparent;\n }\n `,\n toggleBtn: css`\n ${utility.buttonDefault};\n display: flex;\n align-items: center;\n color: ${colors.navy};\n font-size: 0.875rem;\n font-weight: 500;\n letter-spacing: 0.01em;\n background-color: ${colors.white};\n padding: ${spacing.s};\n text-transform: uppercase;\n height: 100%;\n outline: 0;\n position: relative;\n\n &:focus {\n &::before {\n content: '';\n position: absolute;\n top: 75%;\n left: 2;\n width: 75%;\n height: 0.15rem;\n }\n }\n\n svg {\n color: ${colors.navy};\n transition: all 0.3s ease-in;\n\n ${breakpoints.m} {\n color: ${colors.red};\n }\n }\n\n span {\n margin-left: ${spacing.xs};\n }\n\n &:hover {\n svg {\n color: ${colors.navy};\n }\n }\n\n ${breakpoints.m} {\n font-size: 1.125rem;\n border-radius: 0 0 ${borderRadius.m} ${borderRadius.m};\n box-shadow: 0px ${borderRadius.s} 3px rgba(1, 30, 65, 0.14);\n }\n `,\n Button: css`\n position: relative;\n text-decoration: underline;\n background-color: ${colors.red};\n\n &::before {\n content: '';\n position: absolute;\n top: 150%;\n left: 0;\n width: 100%;\n height: 0.6rem;\n background-color: rgb(61, 61, 61);\n }\n `,\n counter: css`\n display: none;\n\n ${breakpoints.m} {\n display: block;\n font-size: 0.875rem;\n line-height: 1.125rem;\n font-weight: 700;\n width: 18px;\n height: 18px;\n border-radius: 18px;\n background-color: ${colors.red};\n color: ${colors.white};\n }\n `,\n valuesWrapper: css`\n display: grid;\n grid-auto-flow: column;\n grid-gap: 5px;\n width: calc(100% - 12px);\n overflow: scroll;\n align-items: center;\n padding-left: ${borderRadius.s};\n\n ${breakpoints.m} {\n display: none;\n }\n `,\n value: css`\n border: 1px solid ${colors.blue};\n text-transform: none;\n padding: ${spacing.xs};\n white-space: nowrap;\n\n &:first-of-type {\n margin-left: 0;\n }\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport { useEffect, useRef } from 'react';\n\nimport { useFilterPanelToggleContext } from '../../context/filterPanelToggle';\nimport useScrollTop from '../../hooks/useScrollTop';\nimport FiltersPanel from '../FiltersPanel';\nimport FiltersToggle from '../FiltersToggle';\nimport Navigation from '../Navigation';\nimport useStyles from './styles';\n\nconst PageWithFilters = ({ children, pageName }) => {\n const pageRef = useRef();\n useScrollTop(pageRef);\n const styles = useStyles();\n const {\n isFilterPanelToggled,\n setFilterPanelToggle,\n isFilterEnabled,\n setFilterEnabledTab,\n } = useFilterPanelToggleContext();\n const filtersToggleBtnRef = useRef(null);\n\n useEffect(() => {\n filtersToggleBtnRef.current.focus();\n }, [isFilterPanelToggled]);\n\n return (\n
    \n
    \n \n {\n setFilterPanelToggle(!isFilterPanelToggled);\n setFilterEnabledTab(!isFilterEnabled);\n }}\n ref={filtersToggleBtnRef}\n />\n
    \n {\n setFilterEnabledTab(false);\n setFilterPanelToggle(false);\n }}\n />\n {children}\n {isFilterPanelToggled &&
    }\n
    \n );\n};\n\nexport default PageWithFilters;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { utility } = useTheme();\n\n return {\n navigation: css`\n width: 100%;\n position: fixed;\n z-index: 17;\n `,\n overlay: css`\n ${utility.overlay};\n `,\n };\n};\n","import isempty from 'lodash.isempty';\n\nimport {\n CarIcon,\n Disability,\n FaInitiative,\n FootballTypes,\n Person,\n Pitch,\n} from '../../components/Icons';\nimport {\n DISABILITY_FACILITIES_MAPPING,\n DISABILITY_TYPES_MAPPING,\n EMAIL,\n EMPTY_STRING,\n PHONE_NUMBER,\n WEBSITE,\n} from '../../const';\nimport formatAddress from '../../utils/formatAddress';\n\nconst normaliseProviderDetails = apiData => {\n const {\n CentreName,\n ProviderId,\n ProviderName,\n DisableFacility,\n DistanceFromUserLocation,\n PitchFinderId,\n PitchTypes,\n Facility,\n SessionInfo,\n ProviderInfo,\n EmailAddress,\n OrganiserEmail,\n Website,\n TelephoneNumber,\n SessionTab,\n Latitude,\n Longitude,\n OrganiserFirstName,\n OrganiserLastName,\n MaxAge,\n MinAge,\n PlaysOnDay,\n Price,\n Category,\n ...rest\n } = apiData;\n\n const pitchCategory = PitchTypes?.split('|');\n const genderAge = ProviderInfo.Gender.map(gender => `${gender} Football `);\n genderAge.push(`Age ${MinAge}-${MaxAge}`);\n const isDisableFacilityAvailable =\n DisableFacility &&\n Object.keys(DisableFacility).every(value => !DisableFacility[value]);\n const isFacilityAvailable =\n Facility && Object.keys(Facility).every(value => !Facility[value]);\n\n const PlaysOnDayPrice = PlaysOnDay.map(day => {\n const days = day.charAt(0).toUpperCase();\n return `${days.concat(day.slice(1))}`;\n });\n PlaysOnDayPrice.push(`£${Price} per session`);\n\n return {\n title: ProviderName,\n centername: CentreName,\n address: formatAddress(rest),\n contactAddress: formatAddress(rest, '\\n'),\n distance: DistanceFromUserLocation,\n latitude: Latitude,\n longitude: Longitude,\n facilities:\n isFacilityAvailable && isDisableFacilityAvailable && isempty(PitchTypes)\n ? EMPTY_STRING\n : {\n title: 'Venue Facilities',\n values: [\n {\n title: 'Facilities',\n icon: CarIcon,\n rows: [\n ...(Facility.CarPark && Facility.CarParkCapacity > 0\n ? [`${Facility.CarParkCapacity} Parking Spaces`]\n : []),\n ...(Facility.ChangingRooms ? ['Changing Rooms'] : []),\n ...(Facility.Floodlit ? ['Floodlights'] : []),\n ],\n },\n ...(PitchTypes\n ? [\n {\n title: 'Pitch types',\n icon: Pitch,\n rows: pitchCategory,\n },\n ]\n : []),\n {\n title: 'Disability Facilities',\n icon: Disability,\n rows: Object.keys(DisableFacility)\n .map(\n facility =>\n DisableFacility[facility] &&\n DISABILITY_FACILITIES_MAPPING[facility]\n )\n .filter(Boolean),\n },\n ],\n },\n\n footballtypes: !isempty(\n ProviderInfo.FootballType &&\n ProviderInfo.DisabilityType &&\n ProviderInfo.Gender\n )\n ? {\n title: 'Football types played here',\n values: [\n {\n title: 'Sessions football types',\n icon: FootballTypes,\n rows: ProviderInfo.FootballType,\n },\n {\n title: 'Sessions disability types',\n icon: FaInitiative,\n rows: ProviderInfo.DisabilityType.map(\n type => DISABILITY_TYPES_MAPPING[type]\n ).filter(Boolean),\n },\n {\n title: 'Sessions gender groups',\n icon: Person,\n rows: ProviderInfo.Gender.map(gender => `${gender} Football`),\n },\n ],\n }\n : EMPTY_STRING,\n providerfootballtypes: !isempty(\n ProviderInfo.FootballType &&\n ProviderInfo.DisabilityType &&\n ProviderInfo.Gender\n )\n ? {\n title: 'Football types played here',\n values: [\n {\n title: 'Sessions gender groups',\n icon: Person,\n rows: genderAge,\n },\n {\n title: 'Sessions football types',\n icon: FootballTypes,\n rows: ProviderInfo.FootballType,\n },\n {\n title: 'Sessions football types',\n icon: FaInitiative,\n rows: PlaysOnDayPrice,\n },\n ...(ProviderInfo?.DisabilityType.length > 1 ||\n ProviderInfo?.DisabilityType[0] !== 'Non Disability'\n ? [\n {\n title: 'Sessions disability types',\n icon: FaInitiative,\n rows: 'Inclusive Sessions',\n },\n ]\n : []),\n ],\n }\n : EMPTY_STRING,\n events: ProviderInfo?.FaInitiative,\n providercontact: {\n title: 'Reception',\n details: {\n ...(OrganiserEmail ? { [EMAIL]: OrganiserEmail } : {}),\n },\n },\n contact: {\n title: 'Reception',\n details: {\n ...(TelephoneNumber ? { [PHONE_NUMBER]: TelephoneNumber } : {}),\n ...(EmailAddress ? { [EMAIL]: EmailAddress } : {}),\n ...(Website ? { [WEBSITE]: Website } : {}),\n },\n },\n organisername: OrganiserFirstName + ' ' + OrganiserLastName,\n providerid: ProviderId,\n sessionsCount: SessionInfo?.SessionCount,\n venueTabs: SessionTab?.map((session, index) => ({\n id: index,\n label: `${session.Month} (${session.CntSessionMonth})`,\n })),\n category: Category,\n sessions: Category,\n };\n};\n\nexport default normaliseProviderDetails;\n","/** @jsxImportSource @emotion/react */\n\nimport { Fragment } from 'react';\n\nimport useStyles from '../ClubDetails/styles';\nimport ContactDetails from '../ContactDetails';\nimport InfoFacilities from '../InfoFacilities';\nimport Text from '../Text';\n\nconst ProviderDetails = ({\n footballtypes,\n contactAddress,\n onClick,\n providercontact,\n organisername,\n providerfootballtypes,\n category,\n}) => {\n const styles = useStyles();\n const isprovider = true;\n\n return (\n \n
    \n
    \n
    \n \n About The Provider\n \n
    \n
    \n

    \n This approved provider currently has no sessions bookable via\n England Football’s online system. To find out when their{' '}\n {category} sessions are taking place please contact them directly\n via the details provided.\n

    \n
    \n
    \n {footballtypes && (\n \n )}\n
    \n
    \n {\n
    \n \n {contactAddress}\n \n
    \n }\n
    \n
    \n );\n};\n\nexport default ProviderDetails;\n","import {\n AGE_ID,\n DISABILITY_OPTION_ID,\n DISABILITY_TYPE_ID,\n FOOTBALL_TYPE_ID,\n LATITUDE_ID,\n LONGITUDE_ID,\n PAGE_NUMBER,\n PAGE_NUMBER_VALUE,\n PAGE_SIZE,\n PLAY_WITH_ID,\n VENUE_PAGE_SIZE_VALUE,\n WEEKDAYS_ID,\n } from '../../const';\n \n export default {\n [AGE_ID]: 0,\n [PLAY_WITH_ID]: 0,\n [FOOTBALL_TYPE_ID]: null,\n [WEEKDAYS_ID]: '',\n [DISABILITY_OPTION_ID]: 0,\n [DISABILITY_TYPE_ID]: [],\n [LATITUDE_ID]: null,\n [LONGITUDE_ID]: null,\n [PAGE_NUMBER]: PAGE_NUMBER_VALUE,\n [PAGE_SIZE]: VENUE_PAGE_SIZE_VALUE,\n };\n ","/** @jsxImportSource @emotion/react */\nimport React, {\n Fragment,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport { useParams } from 'react-router-dom';\n\nimport {\n BACK_TO_RESULTS,\n venueDetailsPageAnalytics,\n} from '../../analyticsConsts';\nimport {\n PAGE_NUMBER,\n PAGE_SIZE,\n PREVIOUSPAGE,\n PROVIDER_TAB,\n SELECTED_RECOMMENDATIONS_TYPE_ID,\n} from '../../const';\nimport { useMLRecommendations } from '../../context/mlRecommendations';\nimport { usePageHistory } from '../../context/pageHistory';\nimport { usePageInfo } from '../../context/pageInfo';\nimport { usePreferencesContext } from '../../context/preferences';\nimport { useRecommendations } from '../../context/recommendations';\nimport weekdaysFormatter from '../../formatters/weekdays';\nimport useClubVenueCoordination from '../../hooks/useClubVenueCoordination';\nimport useElementHeight from '../../hooks/useElementHeight';\nimport useErrorBoundary from '../../hooks/useErrorBoundary';\nimport useLocalStorage from '../../hooks/useLocalStorage';\nimport useMediaQuery from '../../hooks/useMediaQuery';\nimport normaliseSessionLogo from '../../normaliser/sessionlogo';\nimport {\n getProviderDetails,\n getSessionLogo,\n getVenueDetails,\n getVenuePageData,\n} from '../../services';\nimport normaliseProviderPage from '../../utils/normaliseProviderPage';\nimport normaliseVenueDetails from '../../utils/normaliseVenueDetails';\nimport useStylesClub from '../ClubPage/styles';\nimport ContactMap from '../ContactMap';\nimport FAInitiativeEvent from '../FAInitiativeEvent';\nimport Footer from '../Footer';\nimport HeroProvider from '../HeroProvider';\nimport { RightArrow } from '../Icons';\nimport Link from '../Link';\nimport Loader from '../Loader';\nimport ProviderDetails from '../ProviderDetails';\nimport StickyScrollSpyNav from '../StickyScrollSpyNav';\nimport VenueDetails from '../VenueDetails';\nimport {\n backURL,\n providerMLCard,\n providerPreviousPageName,\n} from '../VenuePage/conditionCheck';\nimport useStylesVenue from '../VenuePage/styles';\nimport defaultPreferences from './defaultPreferences';\nimport useStyles from './styles';\n\nconst { VENUE_NAME_HEADING, VENUE_DETAILS_WRAPPER } = venueDetailsPageAnalytics;\n\n//change the weekdaysFormatter to say `Any days`\nexport const getWeekdays = days =>\n weekdaysFormatter(days) === 'Any' ? 'any days' : weekdaysFormatter(days);\n\nconst ProviderPage = () => {\n const { id } = useParams();\n const throwError = useErrorBoundary();\n const [providerPageData, setProviderPageData] = useState();\n const [isLoadingPageData, setIsLoadingPageData] = useState(true);\n const { preferences } = usePreferencesContext();\n const {\n [SELECTED_RECOMMENDATIONS_TYPE_ID]: selectedRecommendationType,\n Category,\n } = preferences || {};\n const [venueDetails, setVenueDetails] = useState();\n const [logoDetails, setLogoDetails] = useState();\n const isDesktop = useMediaQuery('screen and (min-width: 768px)');\n const { casualRecommendations } = useRecommendations();\n const [isLoading, setIsLoading] = useState(false);\n const [isVenueDetailsLoading, setIsVenueDetailsLoading] = useState(false);\n const loadingRef = useRef();\n const venueLoadingRef = useRef();\n const providerRef = useRef();\n const { height: titleHeight, elementRef: titleElement } = useElementHeight();\n const styles = useStyles();\n const stylesClub = useStylesClub();\n const stylesVenue = useStylesVenue();\n const { isMLCard } = useMLRecommendations();\n const [, setPageInfo] = usePageInfo();\n const { getLocalItem } = useLocalStorage();\n const previousUrl = getLocalItem(PREVIOUSPAGE);\n const { previousPage } = usePageHistory();\n const backUrl = backURL(previousPage, previousUrl);\n const previousPageName = providerPreviousPageName(previousUrl);\n\n const sourceLoction = useClubVenueCoordination(\n selectedRecommendationType,\n preferences\n );\n\n useEffect(() => {\n casualRecommendations?.map(casualItem => {\n if (casualItem?.RecommendationProviderCartDto) {\n casualItem?.RecommendationProviderCartDto?.map(centerData => {\n centerData?.ProviderCartDto?.map(providerItem => {\n if (parseInt(id) === providerItem.ProviderId) {\n providerRef.current = centerData?.PitchFinderId;\n }\n return providerItem;\n });\n return centerData;\n });\n }\n return casualItem;\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [casualRecommendations, id, venueDetails]);\n\n // set page info only when we have the venue name\n useEffect(() => {\n if (!venueDetails?.title) {\n return;\n }\n setPageInfo('venue', venueDetails.title);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [venueDetails]);\n\n useEffect(() => {\n localStorage.setItem('pathInfomation', window.location.pathname);\n }, []);\n\n useEffect(() => {\n getVenuePageData()\n .then(({ data }) => {\n const venuePageDetails = data;\n const randomNumber = Math.round(Math.random() * 4) + 1;\n venuePageDetails.hero.images.desktop.src = `/images/desktop/venue/hero/${randomNumber}.jpg`;\n venuePageDetails.hero.images.mobile.src = `/images/mobile/venue/hero/${randomNumber}.jpg`;\n setProviderPageData(venuePageDetails);\n setIsLoadingPageData(false);\n })\n .catch(throwError);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n getSessionLogo()\n .then(({ data }) => {\n const logoData = normaliseSessionLogo(data);\n setLogoDetails(logoData);\n })\n .catch(throwError);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (isLoading) {\n return;\n }\n setIsLoading(true);\n setIsVenueDetailsLoading(true);\n\n const preferenceWithPagination = {\n ...defaultPreferences, // get the page after the current one\n [PAGE_SIZE]: 6,\n [PAGE_NUMBER]: 1,\n };\n\n const idsplit = id.indexOf('p');\n const sliceid = id.slice(0, idsplit);\n\n Promise.all([\n getProviderDetails(\n id.slice(idsplit + 1),\n sliceid,\n providerMLCard(\n isMLCard,\n preferenceWithPagination,\n defaultPreferences,\n preferences\n )\n )\n .then(({ data }) => {\n if (data) {\n const { sessions, sessionsCount, venueTabs, ...normalisedDetails } =\n normaliseProviderPage(data);\n if (!venueDetails) {\n setVenueDetails(normalisedDetails);\n }\n\n setIsLoading(false);\n setIsVenueDetailsLoading(false);\n }\n })\n .catch(() => {\n getVenueDetails(\n id,\n providerMLCard(\n isMLCard,\n preferenceWithPagination,\n defaultPreferences,\n preferences\n )\n ).then(({ data }) => {\n if (data) {\n const {\n sessions,\n sessionsCount,\n venueTabs,\n ...normalisedDetails\n } = normaliseVenueDetails(data);\n if (!venueDetails) {\n setVenueDetails(normalisedDetails);\n }\n\n setIsLoading(false);\n setIsVenueDetailsLoading(false);\n }\n });\n }),\n ]);\n\n // we send the preferences only if we want the filters applied\n // otherwise we pass an empty object\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // if we are loading and we already have the venue details and\n // at least one type of session then we are fetching\n // the other type of sessions\n const isRefreshingSessions = isLoading && venueDetails;\n\n // we are using useLayoutEffect here because we cannot rely on\n // setIsRefreshingDetails having run before we shift focus above\n // due to React async setting of state\n useLayoutEffect(() => {\n // if we're refreshing then shift focus to the loading message\n if (isRefreshingSessions) {\n loadingRef.current?.focus({ preventScroll: true });\n return;\n }\n // filtersApplied has changed\n // if both filtered and unfiltered data have been loaded\n // we can shift the focus to the list when the button is clicked\n }, [isRefreshingSessions]);\n\n useLayoutEffect(() => {\n if (isVenueDetailsLoading) {\n venueLoadingRef.current?.focus();\n }\n }, [isVenueDetailsLoading]);\n\n if (isLoadingPageData) {\n return ;\n }\n\n return (\n
    \n
    \n {providerPageData && (\n \n )}\n
    \n \n
    \n {isVenueDetailsLoading && (\n \n )}\n {!isVenueDetailsLoading && (\n \n
    \n {(!!selectedRecommendationType || Category) && isDesktop && (\n \n {' '}\n Back to {previousPageName} view\n \n )}\n {venueDetails && (\n \n \n \n )}\n
    \n
    \n \n \n \n
    \n
    \n {venueDetails && (\n \n \n {\n \n }\n \n )}\n
    \n \n )}\n
    \n \n
    \n
    \n );\n};\n\nexport default ProviderPage;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { breakpoints, colors, typography, spacing } = useTheme();\n\n return {\n base: css`\n height: 100%;\n display: grid;\n grid-template-rows: auto 1fr;\n grid-template-columns: 100%;\n `,\n hero: css`\n h1 {\n font-size: 2.625rem;\n\n ${breakpoints.m} {\n ${typography.headings[3].desktop};\n max-width: 85%;\n text-align: center;\n padding: 7px 20px;\n }\n }\n `,\n navSection: css`\n padding-bottom: 0;\n `,\n title: isClubInfo => css`\n display: inline-block;\n font-size: 1.75rem;\n color: ${colors.navy};\n text-decoration: underline ${colors.red} 2px;\n -webkit-text-decoration-line: underline;\n -webkit-text-decoration-color: ${colors.red};\n -webkit-text-decoration-style: solid;\n -webkit-text-decoration-thickness: 2px;\n margin-bottom: ${spacing.xs};\n\n ${breakpoints.l} {\n ${typography.headings[4].desktop};\n }\n `,\n externalLink: css`\n display: grid;\n grid-template-columns: max-content;\n grid-gap: 10px;\n border-top: 1px solid ${colors.red};\n width: 40px;\n padding-top: 1rem;\n\n ${breakpoints.m} {\n padding-top: 0.5rem;\n }\n `,\n venueInfo: css`\n padding-bottom: 1rem;\n font-weight: 500;\n font-size: 14px;\n\n ${breakpoints.m} {\n padding-top: 0.5rem;\n font-size: 18px;\n }\n `,\n link: css`\n font-size: 14px;\n font-weight: 400;\n text-transform: uppercase;\n padding-top: 1rem;\n\n ${breakpoints.m} {\n font-size: 16px;\n }\n `,\n alertIcon: css`\n fill: ${colors.darkGrey};\n color: ${colors.white};\n transform: rotate(180deg);\n\n ${breakpoints.m} {\n margin-top: 0.5rem;\n }\n `,\n rightArrow: css`\n vertical-align: middle;\n color: ${colors.red};\n margin-left: 0.3125rem;\n `,\n };\n};\n","import publicPath from '../../utils/publicPath';\n\nconst categoryHeroData = {\n 1: {\n title: 'Play Kickabout Football',\n footballType: 'casual football',\n images: {\n desktop: {\n src: publicPath('/images/desktop/recommendations/casual-tab.png'),\n },\n mobile: {\n src: publicPath('/images/desktop/recommendations/casual-tab.png'),\n },\n },\n benefitsItems: [\n {\n id: 1,\n value: 'Informal',\n },\n {\n id: 2,\n value: 'All skill and experience levels',\n },\n {\n id: 3,\n value: 'Choose when you want to play',\n },\n ],\n },\n 2: {\n title: 'Play Club Football',\n footballType: 'club football',\n images: {\n desktop: {\n src: publicPath('/images/desktop/recommendations/club-tab.png'),\n },\n mobile: {\n src: publicPath('/images/desktop/recommendations/club-tab.png'),\n },\n },\n benefitsItems: [\n {\n id: 1,\n value: 'Competitive',\n },\n {\n id: 2,\n value: 'All skill and experience levels',\n },\n {\n id: 3,\n value: 'Regular team games and training',\n },\n ],\n },\n};\n\nexport default categoryHeroData;\n","/** @jsxImportSource @emotion/react */\nimport { CASUAL_LINK, CLUB_LINK } from '../../const';\nimport ExternalLink from '../ExternalLink';\nimport Text from '../Text';\nimport useStyles from './styles';\n\nconst CategoryHeroCard = ({\n title,\n benefitsItems,\n images,\n footballType,\n selectedType,\n}) => {\n const styles = useStyles();\n\n return (\n
    \n
    \n
    \n \n {title}\n \n
    \n\n
    \n
    \n {benefitsItems &&\n benefitsItems.map((item, index) => (\n
    \n - \n {item.value}\n
    \n ))}\n
    \n
    \n {`Learn more about ${footballType}`}\n
    \n
    \n
    \n\n
    \n {images &&
    }\n
    \n
    \n );\n};\n\nexport default CategoryHeroCard;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { colors, breakpoints, spacing, borderRadius } = useTheme();\n\n return {\n card: css`\n z-index: 1;\n position: relative;\n padding-top: ${spacing.s};\n background-color: ${colors.white};\n display: grid;\n grid-gap: ${spacing.m};\n\n ${breakpoints.m} {\n padding-top: ${spacing.m};\n grid-template-columns: 1fr 1fr;\n grid-template-rows: minmax(225px, auto);\n grid-gap: ${spacing.s};\n border-radius: ${borderRadius.m};\n }\n `,\n grid: css`\n order: 2;\n display: grid;\n grid-template-rows: 10% 1fr;\n\n grid-template-areas:\n 'top'\n 'middle'\n 'bottom';\n\n ${breakpoints.m} {\n grid-template-rows: 10% 35% 20%;\n align-self: center;\n order: 0;\n }\n\n ${breakpoints.xl} {\n grid-template-rows: 10% 1fr 20%;\n }\n `,\n top: css`\n display: flex;\n align-items: center;\n grid-area: top;\n `,\n title: css`\n color: ${colors.navy};\n position: relative;\n border-bottom: ${borderRadius.s} solid ${colors.red};\n `,\n middle: css`\n grid-area: middle;\n padding-top: 1.5rem;\n `,\n middleWrapper: css`\n display: grid;\n grid-gap: 5px;\n color: ${colors.darkGrey};\n\n ${breakpoints.xl} {\n grid-template-columns: auto auto;\n grid-auto-flow: dense;\n grid-gap: 5px;\n\n > div {\n &:nth-of-type(3n + 2) {\n grid-column: 1 / 2;\n }\n }\n }\n `,\n bottom: css`\n grid-area: bottom;\n padding-top: ${spacing.s};\n `,\n link: css`\n color: ${colors.navy};\n font-weight: 400;\n display: inline-block;\n\n &:focus {\n outline: 0;\n border: 1px solid ${colors.navy};\n }\n `,\n imgWrapper: css`\n display: grid;\n grid-template-rows: minmax(150px, auto);\n grid-gap: ${spacing.s};\n border-bottom: ${borderRadius.s} solid ${colors.red};\n align-items: baseline;\n justify-items: center;\n align-items: end;\n\n ${breakpoints.m} {\n align-self: start;\n }\n\n ${breakpoints.l} {\n align-self: unset;\n }\n\n ${breakpoints.xl} {\n align-items: end;\n border-bottom: 0;\n }\n `,\n imgSection: ({ desktop, mobile }) => css`\n width: 100%;\n height: 100%;\n background: url(${mobile.src}) center bottom no-repeat;\n background-size: contain;\n\n ${breakpoints.l} {\n background: url(${desktop.src}) center bottom no-repeat;\n background-size: contain;\n }\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\n\nimport { recommendationsPageAnalytics } from '../../analyticsConsts';\nimport { CLUB, KICKABOUT_CASUAL, SELECTED_FOOTBALL_TYPE_ID } from '../../const';\nimport { usePreferencesContext } from '../../context/preferences';\nimport useOnboardingImage from '../../hooks/useOnboardingImage';\nimport categoryHeroData from '../../mocks/data/categoryHero';\nimport CategoryHero from '../CategoryHero';\nimport Tabs from '../Tabs';\nimport useStyles from './styles';\n\nconst { FOOTBALL_RECOMMENDATIONS_RESULTS_TABS } = recommendationsPageAnalytics;\n\nconst tabs = [\n {\n id: CLUB,\n label: 'Play club',\n },\n {\n id: KICKABOUT_CASUAL,\n label: 'Play casual',\n },\n];\n\nconst SetImagePath = (data, SelectedFootballType) => {\n const useImageValue = `/images/desktop/recommendations/tab-images/${useOnboardingImage()}.jpg`;\n data[SelectedFootballType].images.desktop.src = useImageValue;\n data[SelectedFootballType].images.mobile.src = useImageValue;\n return data;\n};\n\nconst FootballTypeTabs = () => {\n const styles = useStyles();\n const { preferences, setPreferences } = usePreferencesContext();\n const { SelectedFootballType } = preferences;\n SetImagePath(categoryHeroData, SelectedFootballType);\n\n const onClick = selected => {\n setPreferences({\n ...preferences,\n ...{ [SELECTED_FOOTBALL_TYPE_ID]: selected },\n });\n };\n\n return (\n
    \n \n \n
    \n );\n};\n\nexport default FootballTypeTabs;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { breakpoints, colors, spacing, typography } = useTheme();\n\n return {\n base: css`\n background-color: ${colors.white};\n box-shadow: 0px 4px 6px rgba(91, 104, 133, 0.1);\n border-radius: 8px;\n padding: ${spacing.s};\n margin-bottom: ${spacing.s};\n position: relative;\n\n ${breakpoints.xl} {\n padding: ${spacing.m} ${spacing.l};\n padding-bottom: 0;\n margin-bottom: ${spacing.m};\n }\n `,\n tabs: css`\n display: grid;\n grid-template-columns: 1fr 1fr;\n border: 1px solid ${colors.blue};\n `,\n tab: isSelected => css`\n ${typography.headings[6].mobile};\n color: ${colors.blue};\n padding: 0.8125rem;\n letter-spacing: 0.01rem;\n font-size: 0.875rem;\n font-weight: 400;\n text-transform: uppercase;\n border-radius: 0;\n\n ${isSelected &&\n css`\n color: ${colors.white};\n `};\n\n ${breakpoints.xl} {\n padding: ${spacing.s};\n }\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport { useEffect, useLayoutEffect, useRef, useState } from 'react';\n\nimport { recommendationsPageAnalytics } from '../../analyticsConsts';\nimport {\n BOYS_OR_MEN,\n BOYS_OR_MEN_MIXED,\n GIRLS_OR_WOMEN_MIXED,\n PLAY_WITH_ID,\n} from '../../const';\nimport { usePreferencesContext } from '../../context/preferences';\nimport { useRecommendations } from '../../context/recommendations';\nimport useErrorBoundary from '../../hooks/useErrorBoundary';\nimport { getRecommendations } from '../../services';\nimport publicPath from '../../utils/publicPath';\nimport Button from '../Button';\nimport Image from '../Image';\nimport Loader from '../Loader';\nimport Text from '../Text';\nimport useStyles from './styles';\n\nconst {\n RECOMMENDED_FOOTBALL_TYPE_CTA_MIXED_RESULTS,\n RECOMMENDED_FOOTBALL_TYPE_MIXED_HEADING,\n RECOMMENDED_FOOTBALL_MIXED_IMAGE,\n RECOMMENDED_FOOTBALL_TYPE_MIXED_CONTAINER,\n RECOMMENDED_FOOTBALL_TYPE_MIXED_WRAPPER,\n} = recommendationsPageAnalytics;\n\nconst DELAY = 500;\n\nconst MixedSignPost = () => {\n const styles = useStyles();\n const [isLoading, setIsLoading] = useState(false);\n const loadingRef = useRef();\n const throwError = useErrorBoundary();\n const { preferences, setPreferences } = usePreferencesContext();\n const { SelectedFootballType: selectedFootballType, PlayWith: playWith } =\n preferences || {};\n const { setRecommendations } = useRecommendations();\n const isMounted = useRef(true);\n\n useEffect(() => {\n return () => {\n // ComponentWillUnmount to avoid memory leak issue\n isMounted.current = false;\n };\n }, []);\n\n const getMixedRecommendations = () => {\n setIsLoading(true);\n const playWithID =\n playWith === BOYS_OR_MEN ? BOYS_OR_MEN_MIXED : GIRLS_OR_WOMEN_MIXED;\n\n const updatedPreference = {\n ...preferences,\n [PLAY_WITH_ID]: playWithID,\n };\n\n Promise.all([\n getRecommendations(selectedFootballType, updatedPreference),\n ])\n .then(data => {\n if (isMounted.current && data) {\n const recommendationRecords = data[0].data; // recommendation data\n setRecommendations(recommendationRecords, selectedFootballType);\n\n // when we are sure the preferences have been set\n setPreferences(updatedPreference);\n\n setTimeout(() => {\n // to scroll top of the page\n window.scrollTo(0, 0);\n }, DELAY);\n\n setIsLoading(false);\n }\n })\n .catch(throwError);\n };\n\n useLayoutEffect(() => {\n if (isLoading) {\n loadingRef.current?.focus();\n }\n }, [isLoading]);\n\n return (\n \n {!isLoading ? (\n \n
    \n
    \n \n Try mixed football\n \n {playWith === BOYS_OR_MEN ? (\n \n Many Casual sessions are run for a mix of genders. Find more\n social games to try out by including mixed football options in\n your search.\n \n ) : (\n \n Casual sessions are fun and friendly, with many ran for a mix\n of genders. Expand your search results by including mixed\n football options.\n \n )}\n
    \n getMixedRecommendations()}\n >\n Include mixed football results\n \n
    \n
    \n
    \n
    \n \n
    \n
    \n ) : (\n \n )}\n \n );\n};\n\nexport default MixedSignPost;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const {\n colors,\n spacing,\n breakpoints,\n borderRadius,\n typography,\n screenSizes,\n } = useTheme();\n\n return {\n signPostWrapper: css`\n background-color: ${colors.white};\n position: relative;\n display: grid;\n width: 100%;\n padding: ${spacing.m} 0;\n margin-top: ${spacing.s};\n\n ${breakpoints.l} {\n margin-top: ${spacing.m};\n max-height: 500px;\n min-height: 500px;\n }\n\n ${breakpoints.xl} {\n padding: ${spacing.xl} 0;\n }\n `,\n signPostContainer: css`\n display: grid;\n border: 1px solid ${colors.lightGrey};\n border-radius: ${borderRadius.l};\n width: 90vw;\n margin: 0 auto;\n\n ${breakpoints.l} {\n grid-template-columns: 1fr 1fr;\n max-width: ${screenSizes.xl};\n max-height: 400px;\n }\n `,\n textWrapper: css`\n position: relative;\n z-index: 1;\n align-items: center;\n display: grid;\n order: 2;\n\n ${breakpoints.l} {\n order: 1;\n }\n `,\n mainText: css`\n font-size: 1.75rem;\n line-height: 1.625rem;\n font-weight: 700;\n margin-bottom: ${spacing.s};\n color: ${colors.navy};\n\n ${breakpoints.l} {\n ${typography.headings[4].desktop};\n }\n `,\n cta: css`\n background-color: ${colors.red};\n color: ${colors.white};\n text-transform: uppercase;\n max-width: 21.563rem;\n\n ${breakpoints.l} {\n width: 21.313rem;\n }\n `,\n description: css`\n fontSize: 1.25rem,\n lineHeight: ${spacing.m},\n padding: 4px 18px 12px 7px;\n letter-spacing: 0.02em;\n position: relative;\n margin-bottom: ${spacing.m};\n width: 90%;\n\n &::after {\n content: '';\n position: absolute;\n left: 0;\n bottom: -${spacing.s};\n height: ${borderRadius.s};\n width: 60px;\n background: ${colors.red};\n }\n `,\n image: css`\n width: 100%;\n max-width: 100%;\n height: 100%;\n position: relative;\n object-fit: cover;\n border-radius: ${borderRadius.l} ${borderRadius.l} 0 0;\n\n ${breakpoints.l} {\n border-radius: 0 ${borderRadius.l} ${borderRadius.l} 0;\n }\n `,\n innerTextWrapper: css`\n padding: ${spacing.s};\n\n ${breakpoints.l} {\n padding: 0 ${spacing.xl};\n }\n\n ${breakpoints.xl} {\n padding: 0 ${spacing.xl} 0 6rem;\n }\n `,\n imgWrapper: css`\n order: 1;\n\n ${breakpoints.l} {\n order: 2;\n }\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport { forwardRef } from 'react';\n\nimport { CLUB } from '../../const';\nimport Loader from '../Loader';\nimport useStyles from './styles';\n\nconst RecommendationCardLoading = forwardRef(({ selectedType }, ref) => {\n const styles = useStyles();\n\n return (\n
    \n \n
    \n );\n});\n\nexport default RecommendationCardLoading;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\nimport publicPath from '../../utils/publicPath';\n\nexport default () => {\n const { colors, breakpoints, spacing, borderRadius } = useTheme();\n\n return {\n card: css`\n display: grid;\n align-items: center;\n z-index: 1;\n position: relative;\n padding: ${spacing.m} 1.5rem ${spacing.xl} 1.5rem;\n background-color: ${colors.white};\n border-radius: ${borderRadius.l};\n margin-bottom: ${spacing.m};\n min-height: 300px;\n box-shadow: 0px 4px 6px rgba(91, 104, 133, 0.1);\n\n &::after {\n z-index: -1;\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n /* we need a border-radius here because\n the image overrides the parent border radius */\n border-radius: ${borderRadius.l};\n background: left bottom no-repeat;\n background-image: url(${publicPath(\n '/images/mobile/recommendations/crop-1@x1.png'\n )});\n background-size: 100%;\n z-index: -1;\n }\n\n ${breakpoints.xl} {\n padding: ${spacing.l};\n min-height: 500px;\n border-radius: ${borderRadius.l};\n\n &::after {\n background: 101% bottom no-repeat;\n background-image: url(${publicPath(\n '/images/desktop/recommendations/crop-1@x1.png'\n )});\n background-size: contain;\n }\n }\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\n\nimport { useLayoutEffect, useRef, useState } from 'react';\n\nimport { recommendationsPageAnalytics } from '../../analyticsConsts';\nimport {\n BOYS_OR_MEN,\n BOYS_OR_MEN_MIXED,\n GIRLS_OR_WOMEN,\n GIRLS_OR_WOMEN_MIXED,\n KICKABOUT_CASUAL,\n PLAY_WITH_ID,\n} from '../../const';\nimport { useFilterPanelToggleContext } from '../../context/filterPanelToggle';\nimport { usePreferencesContext } from '../../context/preferences';\nimport { useRecommendations } from '../../context/recommendations';\nimport useErrorBoundary from '../../hooks/useErrorBoundary';\nimport {getRecommendations } from '../../services';\nimport Button from '../Button';\nimport LinkButton from '../LinkButton';\nimport Loader from '../Loader';\nimport Text from '../Text';\nimport useStyles from './styles';\n\nconst {\n RECOMMENDED_NO_RESULTS_DISABILITY_CTA_EXPAND_SEARCH,\n RECOMMENDED_NO_RESULTS_DISABILITY_LINK_FILTERS,\n RECOMMENDED_NO_RESULTS_DISABILITY_TITLE,\n RECOMMENDED_NO_RESULTS_DISABILITY_CONTAINER,\n RECOMMENDED_NO_RESULTS_DISABILITY_WRAPPER,\n} = recommendationsPageAnalytics;\n\nconst NoDisabilityResults = () => {\n const styles = useStyles();\n const { isFilterPanelToggled, setFilterPanelToggle } =\n useFilterPanelToggleContext();\n const [isLoading, setIsLoading] = useState(false);\n const loadingRef = useRef();\n const throwError = useErrorBoundary();\n const { preferences, setPreferences } = usePreferencesContext();\n const { SelectedFootballType: selectedFootballType, PlayWith: playWith } =\n preferences || {};\n const { setRecommendations } = useRecommendations();\n\n const getMixedRecommendations = () => {\n setIsLoading(true);\n const playWithID =\n playWith === BOYS_OR_MEN ? BOYS_OR_MEN_MIXED : GIRLS_OR_WOMEN_MIXED;\n\n const updatedPreference = {\n ...preferences,\n [PLAY_WITH_ID]: playWithID,\n };\n\n Promise.all([\n getRecommendations(selectedFootballType, updatedPreference),\n ])\n .then(data => {\n if (data) {\n const recommendationRecords = data[0].data; // recommendation data\n setRecommendations(recommendationRecords, selectedFootballType);\n\n // when we are sure the preferences have been set\n setPreferences(updatedPreference);\n setIsLoading(false);\n }\n })\n .catch(throwError);\n };\n\n useLayoutEffect(() => {\n if (isLoading) {\n loadingRef.current?.focus();\n }\n }, [isLoading]);\n\n const isCasual = selectedFootballType === KICKABOUT_CASUAL;\n\n return (\n
    \n {!isLoading ? (\n \n \n We couldn't find results matching your criteria.\n \n
    \n \n Try broadening\n setFilterPanelToggle(!isFilterPanelToggled)}\n >\n your filters\n {' '}\n like days and location, or have a look at the results below as\n they might be of interest\n \n
    \n {(playWith === BOYS_OR_MEN || playWith === GIRLS_OR_WOMEN) &&\n isCasual && (\n
    \n getMixedRecommendations()}\n >\n expand search\n \n
    \n )}\n
    \n ) : (\n \n )}\n \n );\n};\n\nexport default NoDisabilityResults;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { breakpoints, colors, spacing, typography, borderRadius } = useTheme();\n\n return {\n base: css`\n background-color: ${colors.white};\n box-shadow: 0px 4px 6px rgba(91, 104, 133, 0.1);\n border-radius: 8px;\n position: relative;\n display: grid;\n align-items: center;\n justify-items: center;\n width: 100%;\n padding: ${spacing.m} ${spacing.s};\n grid-auto-columns: 1fr;\n text-align: center;\n margin-bottom: 2rem;\n\n ${breakpoints.m} {\n min-height: 216px;\n max-height: 256px;\n padding: 0;\n }\n `,\n header: css`\n font-size: 1.75rem;\n line-height: 1.625rem;\n padding: 0 0 ${spacing.s} 0;\n width: 80%;\n margin: 0 auto;\n\n ${breakpoints.m} {\n ${typography.headings[5].desktop};\n width: 100%;\n padding: 25px 25px 15px 25px;\n line-height: 2.25rem;\n }\n\n ${breakpoints.xl} {\n padding: 0 0 ${spacing.s} 0;\n }\n\n color: ${colors.navy};\n position: relative;\n margin-bottom: ${spacing.s};\n text-align: center;\n &::before {\n content: '';\n position: absolute;\n right: 0;\n bottom: 0;\n height: ${borderRadius.s};\n width: 100px;\n background: ${colors.red};\n left: 50%;\n transform: translate(-50%, -50%);\n }\n `,\n description: css`\n width: 90%;\n margin: 0 auto;\n p {\n color: ${colors.darkGrey};\n line-height: 1.3rem;\n padding: 0 ${spacing.s};\n\n ${breakpoints.m} {\n line-height: 1.375rem;\n }\n }\n\n ${breakpoints.m} {\n width: 100%;\n }\n `,\n newSearch: css`\n color: ${colors.darkGrey};\n display: inline-block;\n font-weight: bold;\n margin-left: 3px;\n text-decoration: none;\n border-bottom: 2px solid ${colors.darkGrey};\n display: inline-block;\n padding: 0;\n `,\n cta: css`\n background-color: ${colors.red};\n color: ${colors.white};\n text-transform: uppercase;\n max-width: 17.625rem;\n margin: 0 auto;\n margin-top: ${spacing.s};\n text-transform: uppercase;\n line-height: 1.75rem;\n\n ${breakpoints.l} {\n width: 17.625rem;\n }\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\n\nimport { recommendationsPageAnalytics } from '../../analyticsConsts';\nimport { AlertIcon } from '../Icons';\nimport useStyles from './styles';\n\nconst { RECOMMENDED_PAN_DISABILITY_SUGGESTION_WRAPPER } =\n recommendationsPageAnalytics;\n\nconst PanDisabilitySuggestion = () => {\n const styles = useStyles();\n\n return (\n \n
    \n \n
    \n We've also included some pan disability options that you could participate\n in and might be suitable for your needs\n \n );\n};\n\nexport default PanDisabilitySuggestion;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { breakpoints, colors, spacing, typography } = useTheme();\n\n return {\n base: css`\n background-color: ${colors.darkGrey};\n color: ${colors.white};\n box-shadow: 0px 4px 6px rgba(91, 104, 133, 0.1);\n border-radius: 8px;\n position: relative;\n display: flex;\n align-items: center;\n justify-items: center;\n width: 100%;\n padding: ${spacing.m} ${spacing.s};\n grid-auto-columns: 1fr;\n text-align: left;\n min-height: 152px;\n max-height: 152px;\n ${typography.headings[7].mobile};\n margin: 2rem 0 2rem 0;\n font-weight: 400;\n\n ${breakpoints.m} {\n ${typography.headings[7].desktop};\n margin: 2rem 0 2rem 0;\n min-height: 94px;\n max-height: 94px;\n padding: 32px 56px 32px 56px;\n font-weight: 400;\n }\n `,\n alertIcon: css`\n padding-right: 0.5rem;\n svg {\n transform: rotate(180deg);\n transform-origin: 50% 50%;\n }\n\n ${breakpoints.m} {\n align-items: flex-start;\n }\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\n\nimport { useCallback, useState } from 'react';\nimport Carousel, { consts } from 'react-elastic-carousel';\n\nimport Button from '../Button';\nimport { NextArrow, PreviousArrow } from '../Icons';\nimport useStyles from './styles';\n\nconst CarouselCard = ({\n children,\n itemtoscroll = 1,\n itemtoshow = 3,\n itemspadding = [20, 7, 10, 0],\n}) => {\n const styles = useStyles();\n const [isGradient, setIsGradient] = useState(false);\n\n const setActiveBtn = type => {\n if (type === consts.PREV) {\n document.getElementById('rec-next-arrow').classList.add('active');\n document.getElementById('rec-prev-arrow').classList.remove('active');\n } else {\n document.getElementById('rec-prev-arrow').classList.add('active');\n document.getElementById('rec-next-arrow').classList.remove('active');\n }\n };\n\n // to set custom icon for left and right arrow\n const myArrow = useCallback(\n ({ type, onClick, isEdge }) => {\n const pointer =\n type === consts.PREV ? (\n \n ) : (\n \n );\n\n return (\n
    \n {\n onClick();\n setActiveBtn(type);\n }}\n disabled={isEdge}\n aria-label={`Carousel ${type === consts.PREV ? 'previous' : 'next'\n }`}\n >\n {pointer}\n \n
    \n );\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [isGradient]\n );\n\n const rollbackGradientEffect = useCallback(() => {\n setIsGradient(false);\n document.getElementById('rec-prev-arrow').classList.remove('active');\n document.getElementById('rec-next-arrow').classList.remove('active');\n }, []);\n\n const setGradientEffect = useCallback(() => {\n setIsGradient(true);\n }, []);\n\n return (\n
    \n myArrow(e)}\n onChange={rollbackGradientEffect}\n >\n {children}\n \n
    \n );\n};\n\nexport default CarouselCard;\n","import { css } from '@emotion/react';\nimport { consts } from 'react-elastic-carousel';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { borderRadius, colors } = useTheme();\n\n return {\n carouselButton: (type, isGradient) => css`\n display: grid;\n button {\n position: relative;\n align-self: center;\n padding: 5px;\n height: 100%;\n background-color: transparent;\n color: ${colors.navy};\n border: ${borderRadius.s} solid transparent;\n\n &:focus {\n outline: 0;\n height: 100%;\n background-color: transparent;\n\n svg {\n color: ${type === consts.PREV ? colors.red : colors.white};\n }\n }\n\n &:focus-visible {\n svg {\n border: ${borderRadius.s} solid ${colors.white};\n border-radius: ${borderRadius.m};\n }\n }\n\n &:not(:disabled):hover,\n &:focus {\n outline: 0;\n background-color: transparent;\n }\n\n &:disabled {\n background-color: transparent;\n cursor: not-allowed;\n\n svg {\n color: ${colors.lightGrey};\n }\n\n &:focus {\n outline: 0;\n border: ${borderRadius.s} solid ${colors.navy};\n border-radius: ${borderRadius.m};\n // height: 20%;\n background-color: transparent;\n\n svg {\n color: ${colors.navy};\n }\n }\n }\n\n ${type === consts.PREV &&\n isGradient &&\n css`\n &::before {\n content: '';\n position: absolute;\n right: -2.3rem;\n width: 100%;\n height: 90%;\n top: 7%;\n bottom: 0;\n background: linear-gradient(\n 270deg,\n ${colors.white} 0%,\n rgba(255, 255, 255, 0) 79.17%\n );\n transform: rotate(180deg);\n z-index: 1;\n }\n `}\n\n ${type !== consts.PREV &&\n isGradient &&\n css`\n &::after {\n content: '';\n position: absolute;\n right: 2.4rem;\n width: 100%;\n height: 90%;\n top: 7%;\n bottom: 0;\n background: linear-gradient(\n 90deg,\n ${colors.lightRed} -37.5%,\n rgba(206, 17, 36, 0) 75%\n );\n transform: rotate(-180deg);\n border-top-left-radius: ${borderRadius.m};\n border-bottom-left-radius: ${borderRadius.m};\n }\n `}\n }\n `,\n arrowStyle: css`\n color: ${colors.navy};\n &:hover {\n color: ${colors.lightBlue};\n }\n &.active {\n color: ${colors.dodgerBlue};\n }\n `,\n };\n};\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { breakpoints, colors, spacing, typography, borderRadius } = useTheme();\n\n return {\n base: css`\n position: relative;\n display: grid;\n width: 195px;\n height: 170px;\n justify-items: center;\n align-items: center;\n text-align: center;\n border-radius: 8px;\n border: 1px solid ${colors.greyShade1};\n box-shadow: 0px 4px 6px rgba(91, 104, 133, 0.1);\n color: ${colors.navy};\n font-weight: 700;\n background-color: ${colors.white};\n text-decoration: none;\n transition: all 0.2s ease-out;\n outline: 0;\n\n &:hover {\n border-bottom: ${borderRadius.s} solid ${colors.red};\n background-color: ${colors.lightBlue};\n transform: translateY(-10px);\n }\n\n ${breakpoints.xl} {\n padding: ${spacing.s} 0;\n height: 235px;\n\n &:focus {\n outline: 0;\n border: ${borderRadius.s} solid ${colors.navy};\n transform: translateY(-10px);\n }\n }\n `,\n titleWrapper: css`\n display: flex;\n position: relative;\n margin: 0 ${spacing.s};\n\n &::after {\n content: '';\n position: absolute;\n left: 0;\n bottom: -10px;\n width: 100%;\n border-bottom: 1px solid ${colors.red};\n }\n\n ${breakpoints.xl} {\n display: block;\n\n &::after {\n content: '';\n position: absolute;\n left: 50%;\n bottom: -10px;\n width: 66px;\n margin-left: -33px;\n }\n }\n `,\n title: isCenter => css`\n font-family: 'FS Dillon Bold';\n font-weight: bold;\n line-height: 1;\n width: 90%;\n margin: auto;\n ${isCenter &&\n css`\n text-transform: lowercase;\n\n &::first-letter {\n text-transform: uppercase;\n }\n `}\n ${breakpoints.l} {\n font-family: 'FS Dillon Bold';\n font-weight: bold;\n line-height: 1.1;\n }\n `,\n crest: css`\n margin: auto;\n width: 46px;\n `,\n crestDefault: css`\n margin: auto;\n width: 46px;\n color: ${colors.lightGrey};\n `,\n info: css`\n ${typography.body.mobile};\n `,\n teams: isCenter => css`\n ${isCenter &&\n css`\n padding: 0 8px;\n `}\n `,\n distance: isCenter => css`\n ${isCenter &&\n css`\n margin-top: 0.5rem;\n `}\n margin-top: ${spacing.xs};\n color: ${colors.darkGrey};\n\n svg {\n margin-right: ${spacing.xs};\n }\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\n\nimport { Fragment } from 'react';\nimport { useHistory } from 'react-router';\n\nimport {\n EMPTY_STRING,\n RECOMMENDATION_PROVIDER,\n SELECTED_RECOMMENDATIONS_TYPE_ID,\n} from '../../const';\nimport { useMLRecommendations } from '../../context/mlRecommendations';\nimport { usePreferencesContext } from '../../context/preferences';\nimport useStyles from '../ClubCard/styles';\nimport HiddenContent from '../HiddenContent';\nimport {Crest, Pin } from '../Icons';\nimport Link from '../Link';\nimport Text from '../Text';\n\nconst CenterCard = ({\n CentreId,\n analyticsId,\n CentreName,\n CrestImage,\n SessionCount,\n SessionPlayDays,\n SessionCartDto,\n ProviderCartDto,\n DistanceFromUserLocation,\n ageTitle,\n footballType,\n isMLCard = false,\n MlSessionCartDto,\n providerid,\n providerCard,\n pitchFinder,\n PitchFinderId,\n}) => {\n const history = useHistory();\n const { preferences, setPreferences } = usePreferencesContext();\n const sessions = SessionCartDto\n ? SessionCartDto\n : ProviderCartDto;\n const providers = ProviderCartDto ? ProviderCartDto : EMPTY_STRING;\n const centersCard = SessionCartDto ? SessionCartDto : EMPTY_STRING;\n const styles = useStyles();\n const hasSessions = Array.isArray(sessions) && sessions.length > 0;\n const isCenter= true;\n\n const cardUrl = `${\n CentreId\n ? `/venue/${CentreId}`\n : providerid\n ? `/provider/${providerid}p${PitchFinderId}`\n : `/venue/${pitchFinder}`\n }`;\n\n const { setMLCard } = useMLRecommendations();\n const sessionProvider = centersCard && providers;\n\n const setRecommendationsPreference = e => {\n // we want to block the default link and only navigate\n // when we are sure the preferences have been set\n e.preventDefault();\n\n setPreferences({\n ...preferences,\n [SELECTED_RECOMMENDATIONS_TYPE_ID]: footballType,\n });\n\n // set clickable card is ML or not\n setMLCard(isMLCard);\n\n history.push(cardUrl);\n };\n\n return (\n \n
    \n {CrestImage ? (\n \"\"\n ) : (\n \n )}\n \n {CentreName}\n \n
    \n
    \n {hasSessions && (\n \n \n \n {!providers && sessions\n ? SessionCount === 1 && 'Suitable session '\n : RECOMMENDATION_PROVIDER}\n \n {!providers || sessionProvider\n ? SessionCount === 1\n ? `${sessions[0].OrganizationName}`\n : `${SessionCount} suitable sessions`\n : RECOMMENDATION_PROVIDER}\n \n \n Play on \n {SessionPlayDays}\n \n \n Distance \n \n {DistanceFromUserLocation\n ? DistanceFromUserLocation\n : ProviderCartDto.DistanceFromUserLocation}{' '}\n Miles\n \n \n )}\n
    \n \n );\n};\n\nexport default CenterCard;\n","/** @jsxImportSource @emotion/react */\nimport PropTypes from 'prop-types';\nimport { Fragment } from 'react';\nimport { useHistory } from 'react-router';\n\nimport { SELECTED_RECOMMENDATIONS_TYPE_ID } from '../../const';\nimport { useMLRecommendations } from '../../context/mlRecommendations';\nimport { usePreferencesContext } from '../../context/preferences';\nimport HiddenContent from '../HiddenContent';\nimport { Crest, Pin } from '../Icons';\nimport Link from '../Link';\nimport Text from '../Text';\nimport useStyles from './styles';\n\nconst ClubCard = ({\n ClubId,\n analyticsId,\n ClubName,\n CrestImage,\n TeamCount,\n TeamsPlayDays,\n TeamsCartDto,\n DistanceFromUserLocation,\n ageTitle,\n footballType,\n MlTeamsCartDto,\n isMLCard = false,\n}) => {\n const history = useHistory();\n const { preferences, setPreferences } = usePreferencesContext();\n const teams = isMLCard ? MlTeamsCartDto : TeamsCartDto;\n const styles = useStyles();\n const hasTeams = Array.isArray(teams) && teams.length > 0;\n const cardUrl = `/club/${ClubId}`;\n const { setMLCard } = useMLRecommendations();\n\n const setRecommendationsPreference = e => {\n // we want to block the default link and only navigate\n // when we are sure the preferences have been set\n e.preventDefault();\n\n setPreferences({\n ...preferences,\n [SELECTED_RECOMMENDATIONS_TYPE_ID]: footballType,\n });\n\n // set clickable card is ML or not\n setMLCard(isMLCard);\n\n history.push(cardUrl);\n };\n\n return (\n \n
    \n {CrestImage ? (\n \"\"\n ) : (\n \n )}\n \n {ClubName}\n \n
    \n
    \n {hasTeams && (\n \n \n \n {TeamCount === 1 && 'Suitable teams '}\n \n {TeamCount === 1\n ? `${teams[0].TeamName}`\n : `${TeamCount} suitable teams`}\n \n \n Play on \n {TeamsPlayDays}\n \n \n Distance \n \n {DistanceFromUserLocation} Miles\n \n \n )}\n
    \n \n );\n};\n\nClubCard.prototype = {\n ClubId: PropTypes.number,\n analyticsId: PropTypes.string,\n ClubName: PropTypes.string,\n TeamCount: PropTypes.number,\n TeamsPlayDays: PropTypes.string,\n TeamsCartDto: PropTypes.object,\n DistanceFromUserLocation: PropTypes.number,\n ageTitle: PropTypes.string,\n footballType: PropTypes.string,\n MlTeamsCartDto: PropTypes.object,\n isMLCard: PropTypes.bool,\n};\n\nexport default ClubCard;\n","/** @jsxImportSource @emotion/react */\n\nimport { CompassRounded } from '../Icons';\nimport Link from '../Link';\nimport Text from '../Text';\nimport useStyles from './styles';\n\nconst MoreCard = ({ to, label, analyticsId, onClick }) => {\n const styles = useStyles();\n\n return (\n
    \n \n \n {label}\n \n
    \n );\n};\n\nexport default MoreCard;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { colors, breakpoints, spacing, borderRadius } = useTheme();\n\n return {\n moreCard: css`\n display: grid;\n width: 195px;\n height: 170px;\n justify-items: center;\n align-items: center;\n text-align: center;\n border-radius: ${borderRadius.l};\n border: 1px solid ${colors.greyShade1};\n box-shadow: 0px 4px 6px rgba(91, 104, 133, 0.1);\n color: ${colors.navy};\n font-weight: 700;\n background-color: ${colors.white};\n\n ${breakpoints.xl} {\n padding: ${spacing.s} 0;\n height: 235px;\n\n &:focus {\n outline: 0;\n border: ${borderRadius.spacing} solid ${colors.navy};\n }\n }\n `,\n moreLink: css`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-transform: uppercase;\n font-size: 0.875rem;\n font-weight: 400;\n text-decoration: none;\n outline: 0;\n\n svg {\n margin-bottom: ${spacing.xs};\n width: ${spacing.l};\n height: ${spacing.l};\n }\n\n ${breakpoints.xl} {\n svg {\n margin-left: ${spacing.xs};\n }\n }\n `,\n };\n};\n","const recommendationVideo = {\n 'club': 'https://www.youtube.com/embed/BLnUEm8hOfM',\n 'casual': 'https://www.youtube.com/embed/8W2N5IRedIs',\n '11v11': 'https://www.youtube.com/embed/b4BoZKY2UFw',\n 'walking-football': 'https://www.youtube.com/embed/850ydOP13hs',\n 'futsal': 'https://www.youtube.com/embed/Xk3bS3F6hGE',\n 'small-sided': 'https://www.youtube.com/embed/jb-Cqanx6SE',\n};\n\nexport default recommendationVideo;\n","/** @jsxImportSource @emotion/react */\nimport { useState } from 'react';\n\nimport { recommendationsPageAnalytics } from '../../analyticsConsts';\nimport {\n CASUAL,\n CLUBS,\n KICKABOUT_CASUAL,\n SUBCATEGORY_TYPES\n} from '../../const';\nimport useImage from '../../hooks/useImage';\nimport recommendationVideo from '../../mocks/data/recommendationVideo';\nimport idFromString from '../../utils/idFromString';\nimport publicPath from '../../utils/publicPath';\nimport { VideoPlayIcon } from '../Icons';\nimport Image from '../Image';\nimport useStyles from './styles';\n\nconst { RECOMMENDED_FOOTBALL_TYPE_IMAGE } = recommendationsPageAnalytics;\n\nconst RecommendationCardVideo = ({\n index,\n FootballType,\n selectedFootballType,\n}) => {\n const styles = useStyles();\n const img = useImage();\n const [isToggled, setIsToggled] = useState(false);\n const categoryStringId = idFromString(FootballType.toString());\n const categoryHasImage = SUBCATEGORY_TYPES.includes(categoryStringId);\n\n return (\n
    \n {!isToggled && (\n \n )}\n {isToggled && (\n \n )}\n
    \n );\n};\n\nexport default RecommendationCardVideo;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { breakpoints, colors, spacing, borderRadius } = useTheme();\n\n return {\n image: css`\n width: 100%;\n max-width: 100%;\n height: 100%;\n position: relative;\n margin: ${spacing.xs} 0;\n outline: 0;\n\n ${breakpoints.m} {\n margin: ${spacing.s} 0;\n }\n `,\n imgWrapper: css`\n position: relative;\n height: 100%;\n cursor: pointer;\n outline: 0;\n border: none;\n background-color: white;\n padding: 0;\n width: 100%;\n\n img {\n border: ${borderRadius.s} solid transparent;\n }\n\n &:focus {\n img {\n border: ${borderRadius.s} solid ${colors.navy};\n }\n }\n `,\n videoPlayIconWrapper: css`\n width: 100%;\n position: absolute;\n text-align: center;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n `,\n videoWrapper: css`\n margin-top: ${spacing.s};\n }\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\nimport { Fragment, useCallback, useRef } from 'react';\nimport { useHistory } from 'react-router-dom';\n\nimport { recommendationsPageAnalytics } from '../../analyticsConsts';\nimport {\n CASUAL_INTRO_TEXT,\n CASUAL_LEARN_MORE_LINK,\n CLUB,\n CLUB_INTRO_TEXT,\n CLUB_LEARN_MORE_LINK,\n DISABILITY_INTRO_TEXT,\n DISABILITY_TYPE,\n EMPTY_STRING,\n KICKABOUT_CASUAL,\n RECOMMENDATION_DESCRIPTION,\n SELECTED_RECOMMENDATIONS_TYPE_ID,\n} from '../../const';\nimport { usePreferencesContext } from '../../context/preferences';\nimport useAgeTitle from '../../hooks/useAgeTitle';\nimport useDisabilityTitle from '../../hooks/useDisabilityTitle';\nimport useMediaQuery from '../../hooks/useMediaQuery';\nimport idFromString from '../../utils/idFromString';\nimport Button from '../Button';\nimport CarouselCard from '../CarouselCard';\nimport CenterCard from '../CenterCard';\nimport ClubCard from '../ClubCard';\nimport ExternalLink from '../ExternalLink';\nimport { Compass } from '../Icons';\nimport MoreCard from '../MoreCard';\nimport RecommendationCardVideo from '../RecommendationCardVideo';\nimport Text from '../Text';\nimport useStyles from './styles';\n\nconst {\n RECOMMENDED_FOOTBALL_TYPE_CTA_VIEW_MORE_CARDS,\n RECOMMENDED_FOOTBALL_TYPE_TITLE,\n RECOMMENDED_FOOTBALL_TYPE_CTA_LEAR_MORE,\n RECOMMENDED_FOOTBALL_TYPE_CTA_VIEW_MAPS_OF,\n RECOMMENDED_FOOTBALL_TYPE_CTA_CLUB_CARD,\n RECOMMENDED_FOOTBALL_TYPE_CTA_VENUE_CARD,\n} = recommendationsPageAnalytics;\n\nconst MAX_CARDS_DESKTOP = 10;\nconst MAX_CARDS_MOBILE = 10;\n\nconst RecommendationClubCard = ({\n index,\n FootballType,\n Disability,\n DisabilityId,\n selectedFootballType,\n RecommendationClubCartDto: clubs,\n RecommendationCentreCartDto: centers,\n RecommendationProviderCartDto: providers,\n TotalCentresRecords,\n TotalClubsRecords,\n TotalProvidersRecords,\n}) => {\n const styles = useStyles();\n const history = useHistory();\n const { preferences, setPreferences } = usePreferencesContext();\n const isDesktop = useMediaQuery('screen and (min-width: 1205px)');\n const ageTitle = useAgeTitle();\n const disabilityTitle = useDisabilityTitle();\n\n const mapUrl = '/recommendations/map';\n\n const isClub = selectedFootballType === CLUB;\n const venueType = isClub ? 'clubs' : 'venue';\n const analyticsIdOfCard = isClub\n ? RECOMMENDED_FOOTBALL_TYPE_CTA_CLUB_CARD\n : RECOMMENDED_FOOTBALL_TYPE_CTA_VENUE_CARD;\n const providerCenters = centers?.concat(providers);\n\n // Min of 3 grid columns for club/centers cards\n // sorting cards based on distance\n const cards = (\n isClub ? clubs : centers?.length < 0 ? providers : providerCenters\n )?.sort((firstDistance, secondDistance) =>\n firstDistance.DistanceFromUserLocation >\n secondDistance.DistanceFromUserLocation\n ? 1\n : firstDistance.DistanceFromUserLocation <\n secondDistance.DistanceFromUserLocation\n ? -1\n : 0\n );\n\n const cardsTotal = cards && cards?.length;\n\n const columnsCountMobile = cardsTotal > 10 ? MAX_CARDS_MOBILE : cardsTotal;\n const sliceCount = isDesktop ? MAX_CARDS_DESKTOP : columnsCountMobile;\n\n const totalRecords = isClub ? TotalClubsRecords : TotalCentresRecords;\n\n const categoryStringId = idFromString(FootballType.toString());\n\n // dynamically set categoryName\n const categoryName = disabilityTitle\n ? DISABILITY_INTRO_TEXT\n : selectedFootballType === 1\n ? CASUAL_INTRO_TEXT\n : CLUB_INTRO_TEXT;\n\n const categoryHasText = categoryName.hasOwnProperty(categoryStringId);\n\n //dynamically set learn more about links\n const learnMoreLink =\n selectedFootballType === 1 ? CASUAL_LEARN_MORE_LINK : CLUB_LEARN_MORE_LINK;\n\n const categoryHasLink = learnMoreLink.hasOwnProperty(categoryStringId);\n\n const CardMap = {\n [KICKABOUT_CASUAL]: CenterCard,\n [CLUB]: ClubCard,\n };\n const providerIdRef = useRef();\n const providersCards = useRef();\n const pitchFinderRef = useRef();\n const Card = CardMap[selectedFootballType];\n\n const CardLayout = isDesktop && cardsTotal > 3 ? CarouselCard : 'div';\n\n const selectRecommendationsPreference = e => {\n // we want to block the default link and only navigate\n // when we are sure the preferences have been set\n e.preventDefault();\n\n setPreferences({\n ...preferences,\n [SELECTED_RECOMMENDATIONS_TYPE_ID]: FootballType,\n [DISABILITY_TYPE]: DisabilityId,\n });\n\n history.push(mapUrl);\n };\n\n // check total number of characters\n const getTotalStringCount = useCallback(() => {\n var string = `${FootballType}${ageTitle}${Disability}`;\n var count = (string || [])?.length;\n return count > 25 && Disability !== undefined;\n }, [FootballType, ageTitle, Disability]);\n\n const checkDisability = useCallback(() => {\n let string = `${FootballType}${ageTitle}${Disability}`;\n let count = (string || [])?.length;\n return count > 40 && DisabilityId === 10 && Disability !== undefined\n ? `-
    ${Disability}`\n : count > 29 && Disability !== undefined\n ? ` - ${Disability.split(' ')[0]} ${\n isDesktop ? '
    ' : ''\n } ${Disability.split(' ').splice(1, 4).join(' ')}`\n : count > 25 && Disability !== undefined\n ? `
    ${Disability}`\n : ` - ${Disability}`;\n }, [FootballType, ageTitle, Disability, isDesktop, DisabilityId]);\n\n return (\n
    \n
    \n
    {index}
    \n \n \n {ageTitle} {FootballType}\n {Disability && (\n \n )}\n \n \n
    \n\n
    \n
    \n \n {categoryHasText && categoryName[categoryStringId]}\n \n \n
    \n\n
    \n {categoryHasLink && (\n {`Learn more about ${learnMoreLink[categoryStringId].name}`}\n )}\n
    \n
    \n\n
    \n
    \n \n {RECOMMENDATION_DESCRIPTION[selectedFootballType]}\n \n
    \n {cards && (\n \n 3\n ? EMPTY_STRING\n : styles.cards(cardsTotal, totalRecords)\n }\n >\n {cards.slice(0, sliceCount).map((card, index) => {\n card?.ProviderCartDto?.map(providersDetails => {\n providerIdRef.current = providersDetails.ProviderId;\n if (card.ProviderCartDto?.length > 1) {\n providersCards.current = card;\n providerIdRef.current = undefined;\n pitchFinderRef.current = card.PitchFinderId;\n }\n return providersDetails.ProviderId;\n });\n return (\n \n );\n })}\n {totalRecords > 10 && (\n \n )}\n \n \n )}\n
    \n
    \n
    \n
    \n \n {`View maps of ${venueType} near you`} \n \n
    \n
    \n
    \n
    \n );\n};\n\nexport default RecommendationClubCard;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\nimport publicPath from '../../utils/publicPath';\n\nconst alternateBackgrounds = (elementIndex, numberOfBackgrounds) => {\n const remainder = elementIndex % numberOfBackgrounds;\n\n return remainder === 0 ? numberOfBackgrounds : remainder;\n};\n\nexport default () => {\n const { colors, breakpoints, spacing, typography, borderRadius } = useTheme();\n\n return {\n card: index => css`\n z-index: 1;\n position: relative;\n padding: ${spacing.m} 1.5rem ${spacing.xl} 1.5rem;\n background-color: ${colors.white};\n border-radius: ${borderRadius.l};\n display: grid;\n grid-template-rows: auto auto;\n margin-bottom: ${spacing.m};\n box-shadow: 0px 4px 6px rgba(91, 104, 133, 0.1);\n\n &::after {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n /* we need a border-radius here because\n the image overrides the parent border radius */\n border-radius: ${borderRadius.l};\n background: left bottom no-repeat;\n background-image: url(${publicPath(\n '/images/mobile/recommendations/crop-' +\n alternateBackgrounds(index, 3) +\n '@x1.png'\n )});\n background-size: 100%;\n z-index: -1;\n }\n\n ${breakpoints.xl} {\n padding: ${spacing.l} ${spacing.xs} ${spacing.m} ${spacing.l};\n grid-template-columns: 38% minmax(auto, 62%);\n grid-template-rows: 12% auto;\n grid-column-gap: ${spacing.xs};\n min-height: 300px;\n border-radius: ${borderRadius.l};\n grid-row-gap: ${spacing.s};\n\n &::after {\n outline: 0;\n background: 118% bottom no-repeat;\n background-image: url(${publicPath(\n '/images/desktop/recommendations/card-crop.png'\n )});\n background-size: contain;\n }\n }\n `,\n grid: css`\n display: grid;\n grid-template-rows: minmax(215px, auto) 1fr;\n grid-template-areas:\n 'middle'\n 'bottom';\n `,\n heading: index => css`\n display: grid;\n align-items: center;\n grid-template-columns: 40px auto;\n padding-bottom: ${spacing.xs};\n position: relative;\n\n &:after {\n border-bottom: 1px solid ${colors.grey};\n content: '';\n position: absolute;\n left: 0;\n bottom: ${index ? '-15px' : '0'};\n width: 100%;\n }\n\n ${breakpoints.xl} {\n grid-column: 1 / 3;\n padding-bottom: 0.75rem;\n\n &:after {\n width: 96%;\n }\n }\n `,\n title: css`\n font-size: 1.75rem;\n color: ${colors.navy};\n padding-left: ${spacing.xs};\n position: relative;\n line-height: 36px;\n font-family: FS Dillon;\n\n ${breakpoints.xl} {\n font-family: FS Dillon;\n padding-left: ${spacing.s};\n }\n `,\n circle: css`\n display: flex;\n align-items: center;\n justify-content: center;\n ${typography.headings[6].mobile};\n color: ${colors.navy};\n width: 32px;\n height: 32px;\n border-radius: 32px;\n border: ${borderRadius.s} solid ${colors.red};\n\n ${breakpoints.xl} {\n width: 40px;\n height: 40px;\n border-radius: 40px;\n ${typography.headings[6].desktop};\n }\n `,\n middle: css`\n grid-area: middle;\n `,\n bottom: css`\n grid-area: bottom;\n `,\n image: css`\n width: 100%;\n max-width: 100%;\n height: auto;\n margin: ${spacing.xs} 0;\n\n ${breakpoints.m} {\n margin: ${spacing.s} 0;\n }\n `,\n link: css`\n color: ${colors.navy};\n font-weight: 400;\n\n &:focus {\n outline: 0;\n color: ${colors.darkGrey};\n }\n `,\n mapCta: css`\n text-transform: uppercase;\n border: ${borderRadius.s} solid transparent;\n\n svg {\n margin-left: ${spacing.xs};\n }\n\n ${breakpoints.xl} {\n width: 80%;\n max-width: 294px;\n\n &:focus:not(:hover) {\n background-color: transparent;\n outline: 0;\n border: ${borderRadius.s} solid ${colors.white};\n border-radius: ${borderRadius.m};\n }\n\n &:hover {\n outline: 0;\n }\n }\n `,\n cards: (clubCount, totalRecords) => css`\n display: grid;\n grid-area: middle;\n grid-gap: ${spacing.xs};\n grid-template-columns: repeat(\n ${totalRecords > 10 ? 11 : clubCount},\n minmax(195px, auto)\n );\n align-items: center;\n justify-items: center;\n overflow-x: scroll;\n overflow-y: hidden;\n -webkit-overflow-scrolling: touch;\n\n ${breakpoints.xl} {\n padding-top: 1.5rem;\n overflow-x: hidden;\n ${clubCount <= 5 &&\n css`\n justify-self: center;\n justify-content: center;\n `}\n }\n `,\n gradientFeather: css`\n position: relative;\n\n &:after {\n content: '';\n position: absolute;\n right: 0;\n width: 36px;\n height: 90%;\n top: 5%;\n bottom: 0;\n background: linear-gradient(\n 270deg,\n ${colors.white} 0%,\n rgba(255, 255, 255, 0) 79.17%\n );\n }\n `,\n moreCards: css`\n display: grid;\n grid-area: bottom;\n align-items: center;\n justify-items: center;\n padding: ${spacing.xs} 0 ${spacing.m} 0;\n\n ${breakpoints.m} {\n padding: ${spacing.m} 0;\n }\n\n ${breakpoints.xl} {\n padding: ${spacing.s} 0;\n }\n `,\n moreCard: css`\n display: grid;\n width: 195px;\n height: 170px;\n justify-items: center;\n align-items: center;\n text-align: center;\n border-radius: ${borderRadius.l};\n border: 1px solid ${colors.greyShade1};\n box-shadow: 0px 4px 6px rgba(91, 104, 133, 0.1);\n color: ${colors.navy};\n font-weight: 700;\n background-color: ${colors.white};\n outline: 0;\n\n ${breakpoints.xl} {\n padding: ${spacing.s} 0;\n height: 235px;\n }\n `,\n moreLink: css`\n display: flex;\n flex-direction: column-reverse;\n align-items: center;\n justify-content: center;\n text-transform: uppercase;\n font-size: 0.875rem;\n font-weight: 400;\n text-decoration: none;\n\n svg {\n margin-bottom: ${spacing.xs};\n }\n\n ${breakpoints.xl} {\n flex-direction: unset;\n\n svg {\n margin-left: ${spacing.xs};\n }\n }\n `,\n ageTitle: css`\n text-transform: capitalize;\n `,\n categoryText: css`\n min-height: 2.4rem;\n padding-top: 0.625rem;\n `,\n introDecription: css`\n text-align: left;\n padding-top: 0.625rem;\n\n ${breakpoints.xl} {\n text-align: center;\n color: ${colors.white};\n }\n `,\n };\n};\n","/** @jsxImportSource @emotion/react */\n\nimport { Fragment, useEffect, useState } from 'react';\n\nimport { recommendationsPageAnalytics } from '../../analyticsConsts';\nimport { usePreferencesContext } from '../../context/preferences';\nimport useScrollFadeOut from '../../hooks/useScrollFadeOut';\nimport Button from '../Button';\nimport NoDisabilityResults from '../NoDisabilityResults';\nimport PanDisabilitySuggestion from '../PanDisabilitySuggestion';\nimport RecommendationCard from '../RecommendationCard';\nimport useStyles from './styles';\n\nconst PAGINATION_COUNT = 3;\nconst { CTA_VIEW_MORE_RECOMMENDATIONS, FOOTBALL_RECOMMENDATIONS_RESULT } =\n recommendationsPageAnalytics;\n\nconst RecommendationsList = ({\n recommendations,\n selectedFootballType,\n pageData,\n}) => {\n const styles = useStyles();\n const [count, setCount] = useState(PAGINATION_COUNT);\n const [hasLoaded, setHasLoaded] = useState(false);\n const { preferences } = usePreferencesContext();\n const { Disabilityoption, DisabilityType } = preferences;\n const [isDisabilityResultsExist, setIsDisabilityResultsExist] =\n useState(false);\n const [noPanDisability, setNoPanDisability] = useState(false);\n\n useScrollFadeOut();\n\n useEffect(() => {\n setTimeout(() => {\n setHasLoaded(true);\n }, 300);\n }, []);\n\n const loadMore = () => setCount(recommendations.length);\n\n // check selected disbilities results are exist in API response.\n useEffect(() => {\n const isDisabilityResult = recommendations?.some(obj =>\n DisabilityType?.some(obj2 => obj.DisabilityId === obj2.DisabilityId)\n );\n setIsDisabilityResultsExist(isDisabilityResult);\n }, [DisabilityType, recommendations]);\n\n useEffect(() => {\n const noPanDisabilityType =\n !DisabilityType?.some(disable => disable.DisabilityId === 10) &&\n isDisabilityResultsExist &&\n recommendations.some(obj => obj.DisabilityId === 10);\n setNoPanDisability(noPanDisabilityType);\n }, [isDisabilityResultsExist, recommendations, DisabilityType]);\n\n const selectedPanDisability = recommendations?.filter(\n item => item.DisabilityId === 10\n );\n\n if (!recommendations || recommendations.length === 0) return null;\n\n return (\n \n {!isDisabilityResultsExist && Disabilityoption === 1 && (\n \n )}\n {recommendations\n .slice(0, Disabilityoption === 2 ? count : recommendations.length)\n .map((item, index) => (\n \n {noPanDisability &&\n item.DisabilityId === 10 &&\n selectedPanDisability[0].FootballType === item.FootballType && (\n \n )}\n types.FootballType === item.FootballType\n )?.IntroText\n }\n {...item}\n />\n \n ))}\n {recommendations.length > count && Disabilityoption === 2 && (\n
    \n \n View more recommendations\n \n
    \n )}\n \n );\n};\n\nexport default RecommendationsList;\n","import { css } from '@emotion/react';\n\nimport useTheme from '../../hooks/useTheme';\n\nexport default () => {\n const { screenSizes, spacing } = useTheme();\n\n return {\n recommendations: hasLoaded => css`\n opacity: 0;\n transition: opacity 0.5s;\n transition-delay: 0.2s;\n\n ${hasLoaded &&\n css`\n opacity: 1;\n `}\n `,\n loadMore: css`\n width: 100%;\n max-width: ${screenSizes.xl};\n `,\n cta: css`\n padding: 0.75rem ${spacing.s};\n text-transform: uppercase;\n font-size: 0.875rem;\n font-weight: 400;\n max-width: 375px;\n margin: auto;\n `,\n };\n};\n","import { useEffect } from 'react';\n\nexport default () => {\n useEffect(() => {\n const recommendationsList = document.querySelector('[data-test-id=\"list\"]');\n const heroText = document.querySelector('[data-test-id=\"hero-text\"]');\n\n const listener = () => {\n if (!recommendationsList || !heroText) return;\n\n if (\n recommendationsList.getBoundingClientRect().top <=\n heroText.getBoundingClientRect().bottom - 100\n ) {\n heroText.classList.add('fadeOut');\n } else {\n heroText.classList.remove('fadeOut');\n }\n };\n document.addEventListener('scroll', listener);\n\n return () => {\n document.removeEventListener('scroll', listener);\n };\n }, []);\n};\n","/** @jsxImportSource @emotion/react */\n\nimport { useEffect, useRef, useState } from 'react';\nimport { Redirect } from 'react-router-dom';\n\nimport {\n BOYS_OR_MEN_MIXED,\n CLUB,\n DONT_MIND,\n GIRLS_OR_WOMEN_MIXED,\n KICKABOUT_CASUAL,\n RECOMMENDATIONS_PAGE_TITLE_MAPPING,\n} from '../../const';\nimport { usePreferencesContext } from '../../context/preferences';\nimport { useRecommendations } from '../../context/recommendations';\nimport { useScrollDirectionContext } from '../../context/scrollDirection';\nimport { useSetHeaderHeightContext } from '../../context/setHeaderHeight';\nimport useErrorBoundary from '../../hooks/useErrorBoundary';\nimport useImage from '../../hooks/useImage';\nimport usePageLoadInfo from '../../hooks/usePageLoadInfo';\nimport {\n getRecommendations,\n getRecommendationsPageData,\n} from '../../services';\nimport FootballTypeTabs from '../FootballTypeTabs';\nimport Footer from '../Footer';\nimport Hero from '../Hero';\nimport MixedSignPost from '../MixedSignPost';\nimport NoResultsRecommendations from '../NoResultsRecommendations';\nimport RecommendationCardLoading from '../RecommendationCardLoading';\nimport RecommendationFooter from '../RecommendationFooter';\nimport RecommendationsList from '../RecommendationsList';\nimport TabPanel from '../TabPanel';\nimport useStyles from './styles';\n\nconst SetImagePath = (data, FootballType, imgData) => {\n const dataKey = Object.keys(data.hero);\n dataKey.forEach(detailKey => {\n if (FootballType === parseInt(detailKey)) {\n data.hero[\n detailKey\n ].images.desktop.src = `/images/desktop/recommendations/hero/${imgData}.jpg`;\n\n data.hero[\n detailKey\n ].images.mobile.src = `/images/mobile/recommendations/hero/${imgData}.jpg`;\n }\n });\n return data;\n};\n\nconst RecommendationsPage = () => {\n const styles = useStyles();\n const throwError = useErrorBoundary();\n const [pageData, setPageData] = useState();\n const [footballTypeFilter, setFootballTypeFilter] = useState();\n const [isLoading, setIsLoading] = useState(false);\n const loadingRef = useRef();\n const { preferences } = usePreferencesContext();\n const {\n FootballType,\n SelectedFootballType: selectedFootballType,\n PlayWith: playWith,\n } = preferences || {};\n const { clubRecommendations, casualRecommendations, setRecommendations } =\n useRecommendations();\n // to get dynamic image url path\n const imagePath = useImage();\n const { scrolldirectionContext } = useScrollDirectionContext();\n const { headerHeight } = useSetHeaderHeightContext();\n\n const recommendations =\n selectedFootballType === CLUB ? clubRecommendations : casualRecommendations;\n\n // set the page title based on user preference of football type.\n usePageLoadInfo(\n 'recommendations',\n `${RECOMMENDATIONS_PAGE_TITLE_MAPPING[FootballType]}`\n );\n\n useEffect(() => {\n if (JSON.parse(sessionStorage.getItem('ISADULTCLUB'))) {\n const filterFootballType = recommendations?.filter(\n item => item.FootballType === '11v11'\n );\n setFootballTypeFilter(filterFootballType);\n } else {\n setFootballTypeFilter(recommendations);\n }\n }, [recommendations]);\n\n useEffect(() => {\n getRecommendationsPageData()\n .then(({ data }) => {\n if (data) {\n // set dynamic src for hero images\n data = SetImagePath(data, FootballType, imagePath);\n setPageData({ ...data });\n }\n })\n .catch(throwError);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedFootballType, imagePath]);\n\n useEffect(() => {\n if (!recommendations && !!selectedFootballType) {\n const previouslyFocusedElement = document.activeElement;\n setIsLoading(true);\n\n Promise.all([\n getRecommendations(selectedFootballType, preferences).catch(throwError),\n ]).then(data => {\n if (data) {\n const recommendationRecords = data[0].data; // recommendation data\n setRecommendations(recommendationRecords, selectedFootballType);\n\n setIsLoading(false);\n\n setTimeout(() => {\n // if the user focuses on the loading message\n // we want to focus back on the previously focused element\n if (loadingRef.current?.contains(document.activeElement)) {\n previouslyFocusedElement?.focus();\n }\n }, 100);\n }\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n preferences,\n selectedFootballType,\n setRecommendations,\n recommendations,\n throwError,\n ]);\n\n useEffect(() => {\n localStorage.setItem('pathInfomation', window.location.pathname);\n }, []);\n\n if (!selectedFootballType) {\n return ;\n }\n\n return (\n
    \n {selectedFootballType && pageData?.hero && (\n \n )}\n
    \n {FootballType === DONT_MIND && }\n \n {isLoading && (\n \n )}\n {recommendations && selectedFootballType && pageData && (\n \n )}\n\n {recommendations && recommendations.length === 0 && (\n
    \n \n
    \n )}\n
    \n
    \n {recommendations && (\n \n {!(\n playWith === BOYS_OR_MEN_MIXED || playWith === GIRLS_OR_WOMEN_MIXED\n ) &&\n selectedFootballType === KICKABOUT_CASUAL && }\n \n
    \n )}\n