{"version":3,"file":"static/js/9802.7a520969.chunk.js","mappings":"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","sources":["components/pages/use-translated-title.js","components/pages/use-page-standard-functionality.js","../node_modules/@churchofjesuschrist/eden-image/lib/es/index.js","components/pages/institutes/program-page-context.js","components/generic/hooks/use-titan-api/titan-api-service.js","components/generic/hooks/use-titan-api/use-titan-api.js","components/generic/hooks/use-button-link-as-navigate/use-button-link-as-navigate.js","components/pages/home-page/home-page-content.js","components/pages/home-page/home-page.js","components/generic/page-hero-banner/page-hero-banner.js","components/pages/hubs/hub-page-context.js"],"sourcesContent":["import { useEffect } from \"react\";\r\n\r\nimport useTranslation from \"../../utils/use-translations\";\r\n\r\nconst stringGroups = [\r\n {\r\n key: \"shared\",\r\n values: [\"myInstitute\"],\r\n }\r\n];\r\n\r\nconst useTranslatedTitle = ({ menuTitle }) => {\r\n\r\n const { managedStrings } = useTranslation(stringGroups);\r\n\r\n useEffect(() => {\r\n let title = managedStrings.myInstitute || 'myInstitute';\r\n if (menuTitle) {\r\n title = `${title} - ${menuTitle}`;\r\n };\r\n document.title = title;\r\n }, [managedStrings, menuTitle]);\r\n}\r\n\r\nexport default useTranslatedTitle;","import {useEffect, useContext, useState} from \"react\";\r\n\r\nimport { useParams } from \"react-router-dom\";\r\n\r\nimport useTranslatedTitle from \"./use-translated-title\";\r\nimport stringHasValue from \"../../utils/string-has-value\";\r\nimport useStatus from \"../generic/hooks/use-status/use-status\";\r\nimport AnalyticsAppContext from \"../global-layout/master-layout/analytics-app-context\";\r\nimport masterTranslationsContext from \"../global-layout/master-layout/master-translations-context\";\r\nimport menuContext from \"../global-layout/top-bar/menu-context\";\r\n\r\n\r\nconst defaultArray = [];\r\nconst defaultFunction = () => {}\r\nconst usePageStandardFunctionality = ({\r\n stringGroups = defaultArray,\r\n menuTitle = \"\",\r\n menuHref = \"/\",\r\n service,\r\n dataParams,\r\n pageName\r\n}) => {\r\n const {\r\n stringsStatus,\r\n requestLanguageGroups,\r\n } = useContext(masterTranslationsContext);\r\n\r\n const {\r\n analyticsPageEvent\r\n } = useContext(AnalyticsAppContext) ?? {};\r\n\r\n useEffect(() => {\r\n if (typeof analyticsPageEvent === \"function\" && stringHasValue(pageName)) {\r\n analyticsPageEvent(pageName, dataParams);\r\n }\r\n },[analyticsPageEvent, pageName, dataParams])\r\n\r\n const [data, setData] = useState();\r\n const {\r\n status:dataStatus,\r\n setSavingStatus:loading,\r\n setErrorStatus:error,\r\n setResetStatus:clearStatus,\r\n } = useStatus({saving:true});\r\n\r\n useEffect(() => {\r\n const load = async() => {\r\n try {\r\n loading();\r\n const pageData = await service.pageLoad(dataParams);\r\n setData(pageData);\r\n clearStatus()\r\n } catch (e) {\r\n error(e);\r\n }\r\n\r\n }\r\n if (typeof service?.pageLoad === \"function\") {\r\n load();\r\n }\r\n // eslint-disable-next-line -- Prevent multiple API calls on load\r\n },[dataParams])\r\n\r\n /*If we want to have the main menu deal be a navigate action\r\n which plays nicer with our SPA without the flicker\r\n then we need to do some additional work. I think we could put an onclick on the menuTitleObject\r\n , prevent default and then call navigate. */\r\n const {\r\n setMenuTitleObj = defaultFunction,\r\n setHubOrProgram = defaultFunction\r\n } = useContext(menuContext);\r\n const {programId, hubId} = useParams();\r\n useEffect(() => {\r\n const pId = parseInt(programId);\r\n const hId = parseInt(hubId);\r\n if (isNaN(pId) && isNaN(hId)) {\r\n setHubOrProgram();\r\n }\r\n },[hubId, programId, setHubOrProgram]);\r\n\r\n useEffect(() => {\r\n requestLanguageGroups([...stringGroups, \"shared\"]);\r\n },[stringGroups,requestLanguageGroups]);\r\n useEffect(() => {\r\n setMenuTitleObj({\r\n text: menuTitle,\r\n href: menuHref\r\n });\r\n }, [menuTitle, menuHref, setMenuTitleObj]);\r\n\r\n useTranslatedTitle({ menuTitle });\r\n\r\n return {\r\n stringsStatus,\r\n dataStatus,\r\n data,\r\n setMenuTitleObj\r\n }\r\n}\r\n\r\nexport default usePageStandardFunctionality;","\"use client\";\nimport { jsx } from \"react/jsx-runtime\";\nimport { forwardRef } from \"react\";\nimport styled from \"styled-components\";\nconst Img = styled.img`\n max-width: 100%;\n ${({ $focalPoint }) => $focalPoint ? `height: 100%;\n width: 100%;\n object-fit: cover;\n object-position: ${$focalPoint.x} ${$focalPoint.y};\n ` : \"\"};\n`;\nconst ImageComponent = ({ src, srcSet, sizes, alt, disableLazy, focalPoint, onLoad, ...props }, ref) => /* @__PURE__ */ jsx(\n Img,\n {\n src,\n srcSet,\n sizes,\n alt,\n role: alt ? null : \"presentation\",\n $focalPoint: focalPoint,\n onLoad,\n loading: disableLazy ? \"eager\" : \"lazy\",\n ...props,\n ref\n }\n);\nconst Image = forwardRef(ImageComponent);\nImage.displayName = \"Image\";\nexport {\n Image\n};\n","import { createContext } from \"react\";\r\n\r\n\r\nexport default createContext({\r\n id:null,//a widget component uses both this and program context, looking for numeric\r\n //id to know if it is in a hub or institute at a given place. Thus we don't want to give this a default number\r\n programName:\"\"});","import { localStorageBackedLoad } from \"../../../../utils/cached-data-load\";\r\n\r\nconst titanApiService = () => {\r\n const getImageSizes = async (imageId) => {\r\n try {\r\n const url = `api/titan/${imageId}`;//`https://titanapi.churchofjesuschrist.org/assetsearch/api/v2/asset/details/versionID/${imageId}`\r\n const key = `titan-${imageId}`;\r\n const expiration = {days:14};\r\n\r\n const data = await localStorageBackedLoad({url,key,expiration, crossDomain:true});\r\n\r\n return data?.result?.renditions ?? [];\r\n\r\n } catch {\r\n return [];\r\n }\r\n }\r\n return {\r\n getImageSizes\r\n };\r\n}\r\n\r\nexport default titanApiService;","import {useState, useContext, useEffect, useCallback, useMemo} from \"react\";\r\n\r\nimport titanApiService from \"./titan-api-service\";\r\nimport stringHasValue from \"../../../../utils/string-has-value\";\r\nimport menuContext from \"../../../global-layout/top-bar/menu-context\";\r\n\r\n/*\r\n{\r\n id:\"abcd1234ce\",//some titan api image id\r\n mobileTarget:200,\r\n target:400,\r\n dimension:\"width\" //\"height\"\r\n}\r\n*/\r\nconst service = titanApiService();\r\nconst useTitanApi = ({\r\n id,\r\n mobileTarget,\r\n target,\r\n dimension\r\n}) => {\r\n const {isMobile} = useContext(menuContext);\r\n\r\n const [sizes, setSizes] = useState([]);\r\n\r\n const load = useCallback(async () => {\r\n if (stringHasValue(id)) {\r\n try {\r\n const data = await service.getImageSizes(id);\r\n setSizes(data);\r\n } catch (e) {\r\n setSizes([]);\r\n }\r\n }\r\n },[id]);\r\n //because load is async, we can't just do useEffect(load,[load]);\r\n useEffect(() => {load()},[load]);\r\n\r\n const url = useMemo(() => {\r\n if (sizes.length === 0) {\r\n return \"\"\r\n }\r\n const simplified = sizes.map(rendition => {\r\n const size = parseInt(rendition[dimension]);\r\n const useLink = rendition.links.find(l => l.rel === \"distribution\") ??\r\n rendition.links.find(l => l.rel === \"resource\");\r\n const href = useLink?.href;\r\n return {\r\n size,\r\n href\r\n }\r\n }).sort((a,b) => a.size - b.size);\r\n\r\n const sizeThreshold = isMobile ? mobileTarget : target;\r\n const sizeCandidates = simplified.filter(r => r.size >= sizeThreshold);\r\n if (sizeCandidates.length === 0) {\r\n //none that are larger than our target so we either return an empty href or the href on the largets rendition we have\r\n return simplified.length === 0 ? \"\" :\r\n simplified[simplified.length - 1].href;\r\n } else {\r\n //candidates are sorted ascending, and we filtered to eliminate any lower than our target\r\n return sizeCandidates[0].href;\r\n }\r\n\r\n },[sizes, isMobile, mobileTarget, target, dimension])\r\n\r\n return url;\r\n\r\n}\r\n\r\nexport default useTitanApi;\r\n","import {useCallback} from \"react\";\r\n\r\nimport {useNavigate} from \"react-router-dom\";\r\n\r\n//we have instances of styled primary, secondary and a11y buttons\r\n//with lots of other props and things on them already. It is simpler\r\n//to just generify the on click creation work with this hook than to write a\r\n//wrapped Primary, Secondary, A11y etc and make sure references and styles pass etc.\r\nconst useButtonLinkAsNavigate = ({href}) => {\r\n const navigate = useNavigate();\r\n const onClick = useCallback((e) => {\r\n e.preventDefault();\r\n navigate(href);\r\n },[navigate, href]);\r\n\r\n return {\r\n onClick\r\n }\r\n};\r\n\r\nexport default useButtonLinkAsNavigate;","const content = [\r\n {\r\n component:\"invitation\",\r\n },\r\n {\r\n component: \"split-hero\",\r\n data: {\r\n color: \"blue\",\r\n image: {\r\n id: \"a2bb976fbcdd11ecb9eeeeeeac1e6378b9ebe3e5\",\r\n target: 310,\r\n mobileTarget: 200,\r\n dimension: \"height\"\r\n },\r\n dataId: \"new-to-institute-split-hero\",\r\n primaryCallToActionHref: \"/findClasses\",\r\n secondaryCallToActionHref: \"/findInstitute\",\r\n tertiaryCallToActionHref: \"/findClasses?ct=ACT\",\r\n //this is used in instituteLocal and homePage\r\n //hence being put in shared strings\r\n stringGroupName: \"shared\",\r\n translatedProps: {\r\n title: \"welcomeToInstitute\",\r\n body: \"instituteAbout\",\r\n primaryCallToActionText: \"findClasses\",\r\n secondaryCallToActionText: \"findAnInstitute\",\r\n tertiaryCallToActionText: \"findActivitiesNearMe\"\r\n }\r\n },\r\n },\r\n {\r\n component: \"quarter-boxes\",\r\n data: {\r\n items: [\r\n {\r\n visible:true,\r\n image: {\r\n id: \"1a6e5800e0de54dd7918dfb064c7250730c6ebac\",\r\n mobileTarget: 340,\r\n target: 620,\r\n dimension: \"width\"\r\n },\r\n dataId: \"new-to-institute-card\",\r\n color: \"blue40\",//these are names of styleconstants from eden style constants\r\n callToActionHref: \"/welcome\",\r\n minHeight: \"550px\",\r\n stringGroupName: \"home\",\r\n translatedProps: {\r\n title: \"newToInstitute\",\r\n body: \"learnMoreAndFindClasses\",\r\n callToActionText: \"learnMoreHere\"\r\n }\r\n },\r\n {\r\n visible:true,\r\n image: {\r\n id: \"acffe1d735f4190194769cffa1468ed40234b8eb\",\r\n mobileTarget: 340,\r\n target: 620,\r\n dimension: \"width\"\r\n },\r\n dataId: \"seminary-card\",\r\n color: \"green40\",\r\n callToActionHref: \"/welcome#seminary\",\r\n minHeight: \"550px\",\r\n stringGroupName: \"home\",\r\n translatedProps: {\r\n title: \"seminaryToInstitute\",\r\n body: \"comingFromSeminary\",\r\n callToActionText: \"learnMoreHere\"\r\n }\r\n },\r\n {\r\n visible:true,\r\n image: {\r\n id: \"d8fafbc711a974b3c66bcf1b23c1d53ecb219388\",\r\n mobileTarget: 340,\r\n target: 620,\r\n dimension: \"width\"\r\n },\r\n dataId: \"visit-institute-card\",\r\n color: \"red40\",\r\n callToActionHref: \"/student\",\r\n minHeight: \"550px\",\r\n stringGroupName: \"home\",\r\n translatedProps: {\r\n title: \"visitYourPage\",\r\n body: \"checkProgress\",\r\n callToActionText: \"viewInstituteInfo\"\r\n }\r\n },\r\n {\r\n visible:true,\r\n image:{\r\n id:\"b3c1799102968fbde54b9282ffdfdff16e09a5cb\",\r\n mobileTarget:340,\r\n target:620,\r\n dimension:\"width\"\r\n },\r\n dataId: \"pathway-card\",\r\n color: \"grey40\",\r\n callToActionHref: \"https://www.byupathway.org/\",\r\n minHeight: \"550px\",\r\n stringGroupName: \"home\",\r\n translatedProps: {\r\n title: \"pathwayStudents\",\r\n body: \"pathwayStartHere\",\r\n callToActionText: \"goToPathway\"\r\n }\r\n },\r\n ],\r\n }\r\n },\r\n {\r\n component: \"poster-block\",\r\n data: {\r\n background: \"grey\",\r\n image: {\r\n id: \"b6a2809704f9e3b85fbf18c25cc748c0dca1e6be\",\r\n mobileTarget: 150,\r\n target: 560,\r\n dimension: \"height\"\r\n },\r\n dataId: \"find-institute-poster-block\",\r\n callToActionHref: \"/findInstitute/online\",\r\n stringGroupName: \"home\",\r\n translatedProps: {\r\n title: \"cantInPerson\",\r\n body: \"discoverNewWay\",\r\n callToActionText: \"findOnlineInstitute\"\r\n }\r\n }\r\n },\r\n {\r\n component: \"newsroom\",\r\n },\r\n {\r\n component: \"poster-block\",\r\n data: {\r\n image: {\r\n id: \"4b117c69383611eda455eeeeac1ed272d3123ff4\",\r\n mobileTarget: 150,\r\n target: 560,\r\n dimension: \"height\"\r\n },\r\n dataId: \"what-is-institute-poster-block\",\r\n imagePlacement: \"left\",\r\n stringGroupName: \"home\",\r\n translatedProps: {\r\n title: \"whatIsInstitute\",\r\n body: \"whatIsAnswer\"\r\n }\r\n }\r\n },\r\n {\r\n component: \"poster-block\",\r\n data: {\r\n image: {\r\n id: \"b4ccc300160d86cc6ff539936d3b7f37a4bc2acc\",\r\n mobileTarget: 150,\r\n target: 560,\r\n dimension: \"height\"\r\n },\r\n dataId: \"you-belong-poster-block\",\r\n imagePlacement: \"right\",\r\n stringGroupName: \"home\",\r\n translatedProps: {\r\n title: \"youBelong\",\r\n body: \"youBelongBody\"\r\n }\r\n }\r\n },\r\n {\r\n component: \"poster-block\",\r\n data: {\r\n title: \"Participate In Relevant Classes\",\r\n callToActionText: \"Visit Our Course Catalog\",\r\n callToActionHref: \"/courses\",\r\n image: {\r\n id: \"6fc20898383611edb87deeeeac1e5e26db910575\",\r\n mobileTarget: 150,\r\n target: 560,\r\n dimension: \"height\"\r\n },\r\n dataId: \"relevant-classes-poster-block\",\r\n imagePlacement: \"left\",\r\n stringGroupName: \"home\",\r\n translatedProps: {\r\n title: \"participateTitle\",\r\n body: \"participateBody\",\r\n callToActionText: \"visitCourseCatalog\"\r\n }\r\n }\r\n },\r\n {\r\n component: \"poster-block\",\r\n data: {\r\n image: {\r\n id: \"45d67c784f70b36e9b4b508d6fe8e009cdcdb14e\",\r\n mobileTarget: 320,\r\n target: 1080,\r\n dimension: \"width\"\r\n },\r\n callToActionHref: \"/institute/46494\",\r\n dataId: \"accessibility-poster-block\",\r\n imagePlacement: \"right\",\r\n stringGroupName: \"home\",\r\n translatedProps: {\r\n title: \"accessibility\",\r\n body: \"accessibilityBody\",\r\n callToActionText: \"aslText\",\r\n }\r\n }\r\n },\r\n {\r\n component: \"image-card\",\r\n data: {\r\n callToActionHref: \"/instituteTypes\",\r\n image: {\r\n id: \"1b0898221f3111eda766eeeeac1e2a9c4063658a\",\r\n target: 400,\r\n mobileTarget: 200,\r\n dimension: \"height\"\r\n },\r\n dataId: \"home-image-card\",\r\n stringGroupName: \"home\",\r\n translatedProps: {\r\n body: \"chooseHowToParticipate\",\r\n callToActionText: \"viewCourseTypes\",\r\n heading: \"choiceIsYours\"\r\n },\r\n }\r\n },\r\n {\r\n component: \"get-started\",\r\n data: {}\r\n },\r\n {\r\n component: \"video-slideshow\",\r\n data: {\r\n stringGroupName: \"shared\",\r\n translatedProps: {\r\n title: \"iLoveInstituteVideos\",\r\n }\r\n }\r\n }\r\n];\r\n\r\nexport default content;","import React from \"react\";\r\n\r\nimport content from \"./home-page-content\";\r\nimport useTranslation from \"../../../utils/use-translations\";\r\nimport ContentLoader from \"../../generic/content-loader/content-loader\";\r\nimport usePageStandardFunctionality from \"../use-page-standard-functionality\";\r\n\r\nconst stringGroups = [\r\n {\r\n name:\"shared\",\r\n keys:[\"homePageTitle\"]\r\n }\r\n]\r\n\r\nconst pageGroups = [\"home\"];\r\nconst HomePage = () => {\r\n\r\n const {managedStrings} = useTranslation(stringGroups);\r\n usePageStandardFunctionality({\r\n stringGroups:pageGroups,\r\n menuTitle:managedStrings.homePageTitle,\r\n menuHref:\"#\",\r\n pageName:\"home-page\"\r\n });\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default HomePage;\r\n","import React, {useContext} from \"react\";\r\n\r\nimport {A11y, Secondary} from \"@churchofjesuschrist/eden-buttons\";\r\nimport {H2,H4} from \"@churchofjesuschrist/eden-headings\";\r\nimport HTMLFragment from \"@churchofjesuschrist/eden-html-fragment\";\r\nimport { Image } from \"@churchofjesuschrist/eden-image\";\r\nimport { Regular } from \"@churchofjesuschrist/eden-light-rays\";\r\nimport { blue30, white,\r\n spacing16,\r\n spacing8 } from \"@churchofjesuschrist/eden-style-constants\";\r\nimport {Text3} from \"@churchofjesuschrist/eden-text\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport styled from \"styled-components\";\r\n\r\nimport stringHasValue from \"../../../utils/string-has-value\";\r\nimport menuContext from \"../../global-layout/top-bar/menu-context\";\r\nimport useButtonLinkAsNavigate from\r\n \"../hooks/use-button-link-as-navigate/use-button-link-as-navigate\";\r\nimport useTitanApi from \"../hooks/use-titan-api/use-titan-api\";\r\n\r\n\r\nconst Container = styled.div`\r\ndisplay:flex;\r\nheight:${({height}) => height};\r\nwidth:100%;\r\nbackground-color:${blue30};\r\noverflow-y:hidden;\r\n`;\r\nconst Contents = styled.div`\r\nposition:relative;\r\ndisplay:flex;\r\ncolor:${white};\r\nbackground-color:${blue30};\r\nflex:1;\r\n${({isMobile}) => isMobile ? \"justify-content:space-around;\" : \"\" }\r\n`\r\nconst Rays = styled.div`\r\nposition:absolute;\r\nleft:${({left}) => left};\r\nwidth:30px;\r\nheight:100%;\r\n\r\n`;\r\n\r\nconst StyledText3 = styled(Text3)`\r\ncolor:${white};\r\ndisplay:inline-block;\r\nmargin-bottom:${spacing8};\r\n`\r\n\r\nconst Text = styled.div`\r\npadding:${spacing16};\r\n`;\r\nconst MarkupHolder = styled.div`\r\npadding-bottom:${spacing16};\r\n`\r\nconst Btn = styled(A11y)`\r\npadding:${spacing16};\r\n`;\r\nconst Btn2 = styled(Secondary)`\r\nmargin-top:${spacing16};\r\n`\r\nconst PageHeroBanner = ({\r\n pageTitle = \"\",//this is expected to be the same title that is in the menu and is used on desktop only\r\n dataTitle = \"\",//this is the program name, or other dynamic value used both in desktop and mobile\r\n markup = \"\",\r\n route = \"\",\r\n buttonText = \"\",\r\n titanImageId = \"\",\r\n imageUrl = \"\"\r\n}) => {\r\n const image = {\r\n id:titanImageId,\r\n target:180,\r\n mobileTarget:100,\r\n dimension:\"height\"\r\n }\r\n const titanUrl = useTitanApi(image);\r\n const url = stringHasValue(imageUrl) ? imageUrl : titanUrl;\r\n\r\n const navigate = useNavigate();\r\n const {isMobile} = useContext(menuContext);\r\n\r\n\r\n const pickHeight = isMobile ? \"100px\" : \"180px\";\r\n const raysLeft = isMobile ? \"-60px\" : \"-112px\";\r\n\r\n const hasRoute = stringHasValue(route);\r\n const TextHolder = hasRoute && !stringHasValue(buttonText) ? Btn : Text;\r\n\r\n const clickProps = hasRoute && !stringHasValue(buttonText) ? {\r\n onClick:() => navigate(route)\r\n } : {};\r\n\r\n const btnProps = useButtonLinkAsNavigate({href:route});\r\n\r\n return (\r\n {url && }\r\n \r\n \r\n \r\n \r\n \r\n {isMobile ? (

{dataTitle}

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

{pageTitle}

\r\n {stringHasValue(dataTitle) &&

{dataTitle}

}\r\n {stringHasValue(markup) && \r\n \r\n }\r\n {stringHasValue(buttonText) && {buttonText}}\r\n )}\r\n
\r\n
\r\n
)\r\n};\r\n\r\nexport default PageHeroBanner;","import { createContext } from \"react\";\r\n\r\n\r\nexport default createContext({\r\n hubName:\"\",\r\n id:null,//a widget component uses both this and program context, looking for numeric\r\n //id to know if it is in a hub or institute at a given place. Thus we don't want to give this a default number\r\n programs:[]});"],"names":["stringGroups","key","values","_ref","menuTitle","managedStrings","useTranslation","useEffect","title","myInstitute","document","defaultArray","defaultFunction","_useContext","menuHref","service","dataParams","pageName","stringsStatus","requestLanguageGroups","useContext","masterTranslationsContext","analyticsPageEvent","AnalyticsAppContext","stringHasValue","data","setData","useState","status","dataStatus","setSavingStatus","loading","setErrorStatus","error","setResetStatus","clearStatus","useStatus","saving","pageLoad","async","pageData","e","load","setMenuTitleObj","setHubOrProgram","menuContext","programId","hubId","useParams","pId","parseInt","hId","isNaN","text","href","useTranslatedTitle","Img","styled","img","$focalPoint","x","y","Image","forwardRef","ImageComponent","_ref2","ref","src","srcSet","sizes","alt","disableLazy","focalPoint","onLoad","props","jsx","role","displayName","createContext","id","programName","titanApiService","getImageSizes","_data$result$renditio","_data$result","url","imageId","expiration","days","localStorageBackedLoad","crossDomain","result","renditions","mobileTarget","target","dimension","isMobile","setSizes","useCallback","useMemo","length","simplified","map","rendition","_rendition$links$find","size","useLink","links","find","l","rel","sort","a","b","sizeThreshold","sizeCandidates","filter","r","navigate","useNavigate","onClick","preventDefault","component","color","image","dataId","primaryCallToActionHref","secondaryCallToActionHref","tertiaryCallToActionHref","stringGroupName","translatedProps","body","primaryCallToActionText","secondaryCallToActionText","tertiaryCallToActionText","items","visible","callToActionHref","minHeight","callToActionText","background","imagePlacement","heading","name","keys","pageGroups","HomePage","usePageStandardFunctionality","homePageTitle","_jsx","ContentLoader","content","Container","div","height","blue30","Contents","white","Rays","_ref3","left","StyledText3","Text3","spacing8","Text","spacing16","MarkupHolder","Btn","A11y","Btn2","Secondary","_ref4","pageTitle","dataTitle","markup","route","buttonText","titanImageId","imageUrl","titanUrl","useTitanApi","pickHeight","raysLeft","hasRoute","TextHolder","clickProps","btnProps","useButtonLinkAsNavigate","_jsxs","children","Regular","origin","noShoulder","H2","_Fragment","H4","HTMLFragment","mappings","p","small","hubName","programs"],"sourceRoot":""}