{"version":3,"sources":["webpack:///../@mod/components/MastheadBanner/MastheadBanner.styles.ts","webpack:///../@mod/components/MastheadBanner/MastheadBanner.component.tsx","webpack:///../@mod/components/MastheadBanner/index.ts","webpack:///../@mod/features/src/DashboardTabs/Latest.tsx","webpack:///./src/pages/index.tsx"],"names":["primary","css","props","theme","colors","ERROR_RED","secondary","BACKGROUND_NAVY","StyledMastheadBanner","styled","div","attrs","role","tabIndex","variant","getVariant","StyledMastheadBannerHeading","h2","typography","HEADING_S","spacing","StyledMastheadBannerWrapper","Link","TEXT_WHITE","StyledMastheadBannerMessage","p","BODY","StyledMastheadBannerIcon","Icon","name","MastheadBanner","title","alert","link","message","className","id","aria-labelledby","ContentWrapper","href","target","displayName","Prompt","StyledCTA","CTA","breakpoints","BREAKPOINT_MD","sizing","CTA_DESKTOP_MAX_WIDTH","Latest","background","dismissedMessage","site","latestMessage","badge","cta","alwaysShowCta","showCtaAsBanner","latestFeatures","dismissedTitle","dismissedIntro","intro","ctaLink","ctaLinkText","ctaText","useAnnouncements","announcementsStatus","announcements","useActions","actionsStatus","actions","useState","selectedAnnouncement","setSelectedAnnouncement","announcementsCleared","setAnnouncementsCleared","closeAnnouncement","useCloseAnnouncement","announcementsCarousel","useMutation","mutations","forEach","mutation","nodeName","childNodes","length","useEffect","Announcements","React","useMemo","map","a","i","announcement","category","categoryName","summary","announcementsLength","expiryDate","index","onClose","ref","act","xs","x","md","key","tag","urgentCount","filter","status","action","date","dueDate","linkText","renderActions","allClear","renderCTA","as","color","spacingUnits","replace","showCtaBanner","setVideoID","useVideoContext","afixToSummary","innerHTML","AnnouncementCarousel","LocalHub","slides","setVideo","query","Home","location","navigate","data","pageContext","umbraco","content","dashSettings","myInfo","useMyInfo","serviceName","serviceHeaderLatest","latestHeaders","find","element","service","latestHero","backgroundImage","fileNode","childImageSharp","fluid","defaultLatestBackgroundImage","badgeImage","fixed","template","defaultLatestMessage","ctaIntroduction","ctaUrl","defaultLatestCTAIntroduction","defaultLatestCTAText","defaultLatestCTAUrl","ctaAlwaysDisplay","defaultLatestCTAAlwaysDisplay","introduction","defaultLatestDismissedMessage","defaultLatestIntroduction","latestFeaturesSlides","_contentData","children","items","feature","featureCta","url","image","video","umbracoFile","resetTab","isDashboard"],"mappings":"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","file":"component---src-pages-index-tsx-d04cb56b35f1c814c9c0.js","sourcesContent":["import styled, { css } from 'styled-components'\r\nimport Icon from '../Icon'\r\nimport Link from '../Link'\r\nimport { StyledMastheadBannerProps, MastheadBannerVariant } from './MastheadBanner.types';\r\n\r\nconst primary = css`\r\n background-color: ${props => props.theme.colors.ERROR_RED};\r\n`;\r\n\r\nconst secondary = css`\r\n background-color: ${props => props.theme.colors.BACKGROUND_NAVY};\r\n`;\r\n\r\nconst getVariant = (variant: MastheadBannerVariant) => {\r\n switch (variant) {\r\n case 'secondary':\r\n return secondary\r\n default:\r\n return primary\r\n }\r\n}\r\n/*\r\n\r\n*/\r\nexport const StyledMastheadBanner = styled.div.attrs(() => ({\r\n role: 'alert',\r\n tabIndex: -1,\r\n}))`\r\n ${props => getVariant(props.variant)};\r\n`\r\n\r\nexport const StyledMastheadBannerHeading = styled.h2`\r\n ${props => props.theme.typography.HEADING_S};\r\n margin-bottom: ${props => props.theme.spacing()};\r\n`\r\n\r\nexport const StyledMastheadBannerWrapper = styled(Link)`\r\n display: block;\r\n position: relative;\r\n color: ${props => props.theme.colors.TEXT_WHITE};\r\n padding: ${props => props.theme.spacing(3, 3, 3, 0)};\r\n\r\n &:hover,\r\n &:focus {\r\n ${StyledMastheadBannerHeading} {\r\n text-decoration: underline;\r\n }\r\n }\r\n`\r\n\r\nexport const StyledMastheadBannerMessage = styled.p`\r\n ${props => props.theme.typography.BODY};\r\n`\r\n\r\nexport const StyledMastheadBannerIcon = styled(Icon).attrs(() => ({\r\n name: 'rightChevron',\r\n}))`\r\n height: 2.9rem;\r\n position: absolute;\r\n right: 0;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n transition: all 0.3s ease-in-out;\r\n ${StyledMastheadBannerWrapper}:hover &,\r\n ${StyledMastheadBannerWrapper}:focus & {\r\n transform: translate(5px, -50%);\r\n }\r\n`\r\n","import React from 'react'\r\nimport ContentWrapper from '../ContentWrapper'\r\nimport {\r\n StyledMastheadBanner,\r\n StyledMastheadBannerWrapper,\r\n StyledMastheadBannerHeading,\r\n StyledMastheadBannerMessage,\r\n StyledMastheadBannerIcon,\r\n} from './MastheadBanner.styles'\r\nimport { MastheadBannerProps } from './MastheadBanner.types'\r\n\r\nexport const MastheadBanner: React.FunctionComponent = ({\r\n variant,\r\n title,\r\n alert: { link, message } = {\r\n link: '/',\r\n message: '',\r\n },\r\n className,\r\n id,\r\n}) => (\r\n \r\n \r\n \r\n {title}\r\n {message}\r\n \r\n \r\n \r\n \r\n)\r\n\r\nMastheadBanner.displayName = 'MastheadBanner'\r\n","import { MastheadBanner } from './MastheadBanner.component'\r\n\r\nexport default MastheadBanner\r\n","import React, { useState, useEffect } from 'react'\r\nimport styled from 'styled-components'\r\nimport { useAnnouncements, useCloseAnnouncement, useActions } from '@mod/api'\r\nimport {\r\n AnnouncementCardError,\r\n APIErrorCard,\r\n Grid,\r\n GridItem,\r\n DashboardMasthead,\r\n AnnouncementCarousel,\r\n AnnouncementsThrobber,\r\n MainContent,\r\n SectionTitle,\r\n ActionCard,\r\n DefaultCardThrobber,\r\n CTA,\r\n SrOnly,\r\n RichText,\r\n Typography,\r\n LatestFeatures,\r\n} from '@mod/components'\r\nimport { useMutation } from '@mod/components/utils'\r\nimport MastheadBanner from '@mod/components/MastheadBanner'\r\nimport { FixedObject, FluidObject } from 'gatsby-image'\r\nimport { LatestFeaturesSlide } from '@mod/components/LatestFeatures/LatestFeatures.types'\r\nimport { LocalHubLoader } from '@mod/components/LocalHub'\r\nimport { useVideoContext } from '../Video/Video.context'\r\n\r\ninterface Props {\r\n background: FluidObject\r\n dismissedMessage: {\r\n title: string\r\n intro?: string\r\n }\r\n site: SiteProfile\r\n latestMessage?: string\r\n badge?: FixedObject\r\n cta?: {\r\n ctaText?: string\r\n ctaLinkText?: string\r\n ctaLink?: string\r\n }\r\n alwaysShowCta?: boolean\r\n showCtaAsBanner?: boolean\r\n latestFeatures?: LatestFeaturesSlide[]\r\n}\r\n\r\nconst Prompt = styled.div.attrs(() => ({\r\n 'aria-live': 'assertive',\r\n role: 'alert',\r\n}))`\r\n margin-top: ${props => props.theme.spacing(4)};\r\n &:empty {\r\n display: none;\r\n }\r\n`\r\n\r\nconst StyledCTA = styled(CTA)`\r\n ${props => `@media screen and (min-width: ${props.theme.breakpoints.BREAKPOINT_MD})`} {\r\n max-width: ${props => props.theme.sizing.CTA_DESKTOP_MAX_WIDTH}px;\r\n }\r\n`\r\n\r\nexport const Latest: React.FunctionComponent = ({\r\n background,\r\n dismissedMessage,\r\n site,\r\n latestMessage = 'Hello, here’s the latest',\r\n badge,\r\n cta,\r\n alwaysShowCta,\r\n showCtaAsBanner,\r\n latestFeatures,\r\n}) => {\r\n const { title: dismissedTitle, intro: dismissedIntro } = dismissedMessage\r\n\r\n const { ctaLink, ctaLinkText, ctaText } = cta\r\n\r\n const [announcementsStatus, announcements] = useAnnouncements()\r\n const [actionsStatus, actions] = useActions()\r\n const [selectedAnnouncement, setSelectedAnnouncement] = useState(-1)\r\n const [announcementsCleared, setAnnouncementsCleared] = useState(false)\r\n const closeAnnouncement = useCloseAnnouncement(selectedAnnouncement)\r\n\r\n const subscriber = mutations => {\r\n mutations.forEach(mutation => {\r\n if (mutation.target.nodeName !== 'OL') {\r\n return\r\n }\r\n if (mutation.target.childNodes.length === 0) {\r\n setAnnouncementsCleared(true)\r\n }\r\n })\r\n }\r\n\r\n const announcementsCarousel = useMutation(subscriber)\r\n\r\n useEffect(() => {\r\n if (selectedAnnouncement !== -1) {\r\n closeAnnouncement()\r\n }\r\n }, [selectedAnnouncement])\r\n\r\n useEffect(() => {\r\n if (announcementsStatus === 'ok') {\r\n if (announcements.length === 0) {\r\n setAnnouncementsCleared(true)\r\n }\r\n }\r\n }, [announcementsStatus])\r\n\r\n const Announcements = React.useMemo(() => {\r\n if (announcementsStatus === 'pending') {\r\n return \r\n }\r\n\r\n if (announcementsStatus === 'error') {\r\n return \r\n }\r\n\r\n if (announcementsStatus !== 'ok') {\r\n return null\r\n }\r\n\r\n return (\r\n {\r\n return {\r\n id: `announcement-${i}`,\r\n announcement: {\r\n category: a.category?.categoryName,\r\n title: a.title,\r\n summary: a.summary,\r\n link: `/announcement/${a.id}`,\r\n announcementsLength: announcements.length,\r\n expiryDate: a.expiryDate,\r\n index: i + 1,\r\n onClose: () => {\r\n setSelectedAnnouncement(a.id)\r\n },\r\n },\r\n }\r\n })}\r\n ref={announcementsCarousel}\r\n />\r\n )\r\n }, [announcements, announcementsCarousel, announcementsStatus])\r\n\r\n const renderActions = () => {\r\n if (actionsStatus === 'pending') {\r\n return (\r\n \r\n \r\n  \r\n \r\n\r\n {['a', 'b', 'c', 'd'].map(x => (\r\n \r\n \r\n \r\n ))}\r\n \r\n )\r\n }\r\n if (actionsStatus === 'error') {\r\n return (\r\n \r\n \r\n Actions\r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n if (actionsStatus !== 'ok' || !actions.length) {\r\n return null\r\n }\r\n\r\n const urgentCount = actions.filter(a => a.status === 'urgent').length\r\n\r\n return (\r\n \r\n \r\n \r\n You have {urgentCount} urgent action{urgentCount === 1 ? '' : 's'}\r\n \r\n \r\n\r\n {actions.map(action => (\r\n \r\n \r\n \r\n ))}\r\n \r\n )\r\n }\r\n\r\n const act = renderActions()\r\n\r\n const allClear = !act && announcementsCleared\r\n\r\n const title = allClear ? dismissedTitle : latestMessage\r\n const summary = allClear ? dismissedIntro : ''\r\n\r\n const renderCTA = () => {\r\n return (\r\n ctaText &&\r\n !showCtaAsBanner && (\r\n <>\r\n \r\n {ctaText}\r\n \r\n {ctaLinkText}\r\n \r\n )\r\n )\r\n }\r\n\r\n const showCtaBanner = ctaText && showCtaAsBanner && (alwaysShowCta || allClear)\r\n\r\n // Latest Features\r\n\r\n const { setVideoID } = useVideoContext()\r\n\r\n return (\r\n <>\r\n {showCtaBanner && (\r\n \r\n )}\r\n \r\n {dismissedTitle}\r\n \r\n {!!dismissedIntro && }\r\n \r\n {renderCTA()}\r\n \r\n ) : (\r\n <>{alwaysShowCta ? {renderCTA()} : ''}\r\n )\r\n }\r\n // AnnouncementCarousel={!announcementsCleared && Announcements}\r\n AnnouncementCarousel={Announcements}\r\n />\r\n \r\n \r\n \r\n\r\n {!!act && {act}}\r\n\r\n {latestFeatures && latestFeatures.length > 0 && (\r\n \r\n New App Features\r\n \r\n \r\n )}\r\n \r\n )\r\n}\r\n","import React from 'react'\r\nimport { graphql } from 'gatsby'\r\nimport { UmbracoPage } from '@mod/umbraco'\r\nimport { Latest } from '@mod/features/src/DashboardTabs'\r\n\r\nimport { template } from '@mod/components/utils'\r\nimport { useMyInfo } from '@mod/api'\r\nimport { DashboardSettings } from '@mod/features/src/DashboardTabs/DashboardTabs.types'\r\nimport { Layout } from '../layout'\r\n\r\nconst Home: UmbracoPage = ({ location, navigate, data, pageContext }) => {\r\n const { dashSettings, latestFeatures } = data.umbraco.content as {\r\n dashSettings?: DashboardSettings\r\n latestFeatures?: any\r\n }\r\n\r\n const [, myInfo] = useMyInfo()\r\n const { serviceName } = myInfo\r\n\r\n // Latest Tab\r\n const serviceHeaderLatest =\r\n dashSettings.latestHeaders &&\r\n dashSettings.latestHeaders.find(element => element.service === serviceName)\r\n\r\n // Latest Tab - Background\r\n const hasLatestBg = serviceHeaderLatest && serviceHeaderLatest.backgroundImage\r\n const latestHero = hasLatestBg\r\n ? serviceHeaderLatest.backgroundImage.fileNode.childImageSharp.fluid\r\n : dashSettings.defaultLatestBackgroundImage.fileNode.childImageSharp.fluid\r\n\r\n // Latest Tab - Badge\r\n const hasBadge = serviceHeaderLatest && serviceHeaderLatest.badgeImage\r\n const badge = hasBadge ? serviceHeaderLatest.badgeImage.fileNode.childImageSharp.fixed : null\r\n\r\n // Latest Tab - Latest Message\r\n const hasLatestMessage =\r\n serviceHeaderLatest &&\r\n serviceHeaderLatest.latestMessage &&\r\n serviceHeaderLatest.latestMessage !== ''\r\n\r\n const latestMessage = hasLatestMessage\r\n ? template(serviceHeaderLatest.latestMessage, myInfo)\r\n : template(dashSettings.defaultLatestMessage, myInfo)\r\n\r\n // Latest Tab - CTA\r\n const hasCta =\r\n serviceHeaderLatest && serviceHeaderLatest.ctaText && serviceHeaderLatest.ctaText !== ''\r\n\r\n const cta = hasCta\r\n ? {\r\n ctaText: serviceHeaderLatest.ctaIntroduction,\r\n ctaLinkText: serviceHeaderLatest.ctaText,\r\n ctaLink: serviceHeaderLatest.ctaUrl || '/',\r\n }\r\n : {\r\n ctaText: dashSettings.defaultLatestCTAIntroduction,\r\n ctaLinkText: dashSettings.defaultLatestCTAText,\r\n ctaLink: dashSettings.defaultLatestCTAUrl || '/',\r\n }\r\n\r\n // Always show the CTA regardless of announcements\r\n const alwaysShowCta = serviceHeaderLatest\r\n ? serviceHeaderLatest.ctaAlwaysDisplay\r\n : dashSettings.defaultLatestCTAAlwaysDisplay || false\r\n\r\n // Latest Tab - Dismissed message\r\n\r\n const hasDismissed =\r\n serviceHeaderLatest &&\r\n serviceHeaderLatest.dismissedMessage &&\r\n serviceHeaderLatest.dismissedMessage !== ''\r\n\r\n const dismissedMessage = hasDismissed\r\n ? {\r\n title: template(serviceHeaderLatest.dismissedMessage, myInfo),\r\n intro: serviceHeaderLatest.introduction,\r\n }\r\n : {\r\n title: template(dashSettings.defaultLatestDismissedMessage, myInfo),\r\n intro: dashSettings.defaultLatestIntroduction,\r\n }\r\n\r\n const showCtaAsBanner = serviceName === 'RFA'\r\n\r\n const latestFeaturesSlides = latestFeatures._contentData.children.items.map(feature => {\r\n const featureCta = feature.cta && feature.cta.url.replace(/\\/home-my-(navy|raf)/gi, '')\r\n const { id } = feature._contentData\r\n const image = feature.image && feature.image.fileNode.childImageSharp.fluid\r\n const video = feature.video && feature.video.umbracoFile\r\n\r\n return { ...feature, cta: featureCta, id, image, video }\r\n })\r\n\r\n const resetTab = () => {\r\n return true\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport const query = graphql`\r\n {\r\n umbraco {\r\n content {\r\n latestFeatures: byUrl(url: \"/home-my-navy/settings/latest-features/\") {\r\n ... on UMBRACO_LatestFeaturesFolder {\r\n _contentData {\r\n children(filter: { index_lte: 2 }) {\r\n items {\r\n ... on UMBRACO_LatestFeature {\r\n _contentData {\r\n id\r\n }\r\n overlayTitle\r\n title\r\n summary\r\n image {\r\n ... on UMBRACO_Image {\r\n umbracoFile\r\n fileNode {\r\n childImageSharp {\r\n fluid(maxWidth: 500, quality: 100) {\r\n ...GatsbyImageSharpFluid\r\n }\r\n }\r\n }\r\n }\r\n }\r\n video {\r\n ... on UMBRACO_File {\r\n umbracoFile\r\n }\r\n }\r\n cta {\r\n url\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n dashSettings: byUrl(url: \"/home-my-navy/settings/dashboard-settings\") {\r\n ... on UMBRACO_DashboardSettings {\r\n defaultLatestBackgroundImage {\r\n ... on UMBRACO_Image {\r\n umbracoFile\r\n fileNode {\r\n childImageSharp {\r\n fluid(maxWidth: 1439, quality: 100) {\r\n ...GatsbyImageSharpFluid\r\n }\r\n }\r\n }\r\n }\r\n }\r\n defaultLatestDismissedMessage\r\n defaultLatestMessage\r\n defaultLatestIntroduction\r\n defaultLatestCTAUrl\r\n defaultLatestCTAText\r\n defaultLatestCTAIntroduction\r\n defaultLatestCTAAlwaysDisplay\r\n latestHeaders {\r\n ... on UMBRACO_LatestTabSettings {\r\n service\r\n title\r\n dismissedMessage\r\n latestMessage\r\n introduction\r\n ctaUrl\r\n ctaText\r\n ctaIntroduction\r\n ctaAlwaysDisplay\r\n backgroundImage {\r\n ... on UMBRACO_Image {\r\n umbracoFile\r\n fileNode {\r\n childImageSharp {\r\n fluid(maxWidth: 1439, quality: 100) {\r\n ...GatsbyImageSharpFluid\r\n }\r\n }\r\n }\r\n }\r\n }\r\n badgeImage {\r\n ... on UMBRACO_Image {\r\n umbracoFile\r\n fileNode {\r\n childImageSharp {\r\n fixed(width: 150, quality: 100) {\r\n ...GatsbyImageSharpFixed\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n`\r\n\r\nexport default Home\r\n"],"sourceRoot":""}