{"version":3,"sources":["webpack:///./src/hooks/useBreakpoints.tsx","webpack:///./src/modules/Header/Navigation.tsx","webpack:///./src/modules/Header/ServiceMenu.tsx","webpack:///./src/modules/Header/DesktopNavigation.tsx","webpack:///./src/icons/MenuIcon.tsx","webpack:///./src/modules/Header/MobileMenuModal.tsx","webpack:///./src/modules/Header/MobileNavigation.tsx","webpack:///./src/components/AlertBanner/AlertBanner.tsx","webpack:///./src/modules/Header/Header.tsx","webpack:///./src/icons/CloseIcon.tsx"],"names":["defaultBreakpoints","Navigation","links","onClick","map","link","key","Anchor","prefetch","sx","display","background","Colors","White","borderBottom","navigationLinkStyle","serviceLinkStyle","fontSize","lineHeight","marginLeft","textDecoration","color","Black","Secondary","padding","borderBottomColor","VeryLightPink","transition","onFocus","window","scrollTo","ServiceMenu","useAuth","loginUrl","logoutUrl","useUser","user","userReady","t","useDictionary","style","visibility","undefined","external","href","label","displayName","DesktopNavigation","serviceMenuLinks","navigationLinks","logo","scrollY","useViewportScroll","y","useTransform","value","Math","min","opacity","motion","header","initial","boxShadow","position","top","zIndex","flexDirection","justifyContent","alignItems","pt","rem","pb","css","Logo","width","div","mt","textAlign","MenuIcon","React","props","svgRef","height","viewBox","focusable","ref","fill","fillRule","d","navigationVariants","show","type","duration","hide","MobileMenuModal","isOpen","onDismiss","useState","shouldRender","setShouldRender","aria-label","animate","onAnimationComplete","onAnimationStart","variants","bg","PureWhite","py","variant","ButtonVariant","Flat","minHeight","mr","CloseIcon","animateIn","mb","ml","borderTop","borderTopColor","menuVariants","MobileNavigation","rest","setIsOpen","px","AlertBanner","message","role","backgroundColor","p","data-nosnippet","RichText","TextVariant","Alert","maxWidth","fontWeight","FontWeight","Medium","hydrated","themeBreaks","breakpoints","queryMatch","setQueryMatch","alertMessage","useClientHydrated","useTheme","Array","isArray","media","matchMedia","matches","length","useEffect","handleQueryListener","match","query","addEventListener","addListener","forEach","removeEventListener","removeListener","sm"],"mappings":"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","file":"static/scripts/header-5519f9d595fa146986b4.js","sourcesContent":["import { useEffect, useState } from 'react';\nimport useClientHydrated from '@charlietango/use-client-hydrated';\nimport { useTheme } from '@emotion/react';\n\nconst defaultBreakpoints = [];\n\n/**\n * useBreakpoints returns the state of all our breakpoints defined in the theme.\n * You'll get back an array containing a boolean, indicating of the current breakpoint matches.\n * Initially the value will be `undefined` until the application has been fully hydrated.\n *\n * The state is not shared between hooks.\n * */\nfunction useBreakpoints() {\n const hydrated = useClientHydrated();\n const { breakpoints: themeBreaks } = useTheme();\n const breakpoints = Array.isArray(themeBreaks)\n ? themeBreaks\n : defaultBreakpoints;\n\n const [queryMatch, setQueryMatch] = useState>(\n () => {\n if (hydrated) {\n // Once the client has been hydrated, we can read the value into the initial state\n breakpoints.map((media: string) => {\n return window.matchMedia(`(min-width: ${media})`).matches;\n });\n }\n return Array(breakpoints.length).fill(undefined);\n },\n );\n\n useEffect(() => {\n const handleQueryListener = () => {\n setQueryMatch(matches.map((match) => match.matches));\n };\n\n const matches: MediaQueryList[] = breakpoints.map((media: string) => {\n const query = `(min-width: ${media})`;\n const match = window.matchMedia(query);\n if ('addEventListener' in match) {\n match.addEventListener('change', handleQueryListener);\n } else {\n // @ts-ignore\n match.addListener(handleQueryListener);\n }\n\n return match;\n });\n\n setQueryMatch(matches.map((match) => match.matches));\n\n return () => {\n matches.forEach((match) => {\n if ('removeEventListener' in match) {\n match.removeEventListener('change', handleQueryListener);\n } else {\n // @ts-ignore\n match.removeListener(handleQueryListener);\n }\n });\n };\n }, [breakpoints]);\n\n return queryMatch;\n}\n\nexport { useBreakpoints };\n","import React from 'react';\n\nimport Anchor from '../../components/Anchor/Anchor';\nimport { Colors } from '../../styles/colors';\nimport LinkViewModel from '../../view-models/LinkViewModel';\nimport { navigationLinkStyle } from './Header';\n\nexport type NavigationProps = {\n links: LinkViewModel[];\n onClick?: () => void;\n};\n\nfunction Navigation({ links, onClick }: NavigationProps) {\n return (\n <>\n {links.map((link, key) => (\n \n ))}\n \n );\n}\n\nexport default Navigation;\n","import React from 'react';\n\nimport { useAuth } from '../../api/AuthProvider';\nimport { useUser } from '../../api/hooks/useUser';\nimport Anchor from '../../components/Anchor/Anchor';\nimport { useDictionary } from '../../hooks/useDictionary';\nimport { Colors } from '../../styles/colors';\nimport LinkViewModel from '../../view-models/LinkViewModel';\n\nexport type ServiceMenuProps = {\n links?: LinkViewModel[];\n onClick?: () => void;\n};\n\nconst serviceLinkStyle = {\n background: [Colors.White, 'transparent'],\n display: ['block', 'inline-block'],\n fontSize: [2, 1],\n lineHeight: [1.53, 1.71],\n marginLeft: [0, '20px', '24px'],\n textDecoration: 'none',\n color: [Colors.Black, Colors.Secondary],\n padding: ['16px 20px', 0],\n borderBottom: ['1px solid', 'none'],\n borderBottomColor: Colors.VeryLightPink,\n transition: 'color .3s ease',\n '&:hover': {\n color: [null, Colors.Black],\n },\n};\n\nconst onFocus = () => {\n // If the anchor gets focus, make sure to reset the scroll to the top of the viewport\n if (typeof window !== 'undefined') {\n window.scrollTo(0, 0);\n }\n};\n\nfunction ServiceMenu({ links, onClick }: ServiceMenuProps) {\n const { loginUrl, logoutUrl } = useAuth();\n const { user, userReady } = useUser();\n\n const { t } = useDictionary();\n\n return (\n
\n {links?.map((link, key) => (\n \n ))}\n {userReady ? (\n \n ) : null}\n
\n );\n}\n\nServiceMenu.displayName = 'ServiceMenu';\n\nexport default ServiceMenu;\n","import React from 'react';\nimport { Container } from '@charlietango/ui';\nimport { rem } from 'polished';\n\nimport Anchor from '../../components/Anchor/Anchor';\nimport { Colors } from '../../styles/colors';\nimport {\n MotionValue,\n motion,\n useTransform,\n useViewportScroll,\n} from '../../utils/motion';\nimport LinkViewModel from '../../view-models/LinkViewModel';\nimport Navigation from './Navigation';\nimport ServiceMenu from './ServiceMenu';\nimport Logo from '../../components/Logo/Logo';\n\ntype Props = {\n logo?: LinkViewModel;\n navigationLinks?: LinkViewModel[];\n serviceMenuLinks?: LinkViewModel[];\n};\n\nfunction DesktopNavigation({ serviceMenuLinks, navigationLinks, logo }: Props) {\n const { scrollY } = process.env.SERVER\n ? { scrollY: new MotionValue(0) }\n : // eslint-disable-next-line react-hooks/rules-of-hooks\n useViewportScroll();\n\n const distancePxValue = 37;\n const y = useTransform(\n scrollY,\n (value) => (Math.min(value / 2, distancePxValue) * -1) / 16 + 'rem',\n );\n const opacity = useTransform(\n scrollY,\n (value) => (value - distancePxValue) / (0 - distancePxValue),\n );\n\n return (\n \n \n \n \n \n
\n \n \n \n \n {navigationLinks && }\n
\n \n \n \n );\n}\n\nexport default DesktopNavigation;\n","/*\n GENERATED FILE - DO NOT MODIFY\n Any changes will be overwritten when `yarn svgs` is executed.\n \n Generated from: assets/menu.svg\n If you need to make changes the attributes, modify the original .svg file.\n \n If you need to modify the file further, consider copying this generated file to a new location,\n or into the component that uses it. If you do this, it might make sense to remove the original .svg file, \n or it could be regenerated the next time SVGs are generated.\n*/\nimport * as React from 'react';\nconst MenuIcon = React.forwardRef(\n (props: React.SVGProps, svgRef: any) => (\n \n \n \n \n \n \n ),\n);\nexport default MenuIcon;\n","import React, { useState } from 'react';\nimport { Button, Dialog, DialogContent } from '@charlietango/ui';\nimport { rem } from 'polished';\n\nimport Logo from '../../components/Logo/Logo';\nimport { useDictionary } from '../../hooks/useDictionary';\nimport CloseIcon from '../../icons/CloseIcon';\nimport { ButtonVariant } from '../../styles/buttons';\nimport { Colors } from '../../styles/colors';\nimport { motion } from '../../utils/motion';\nimport LinkViewModel from '../../view-models/LinkViewModel';\nimport Navigation from './Navigation';\nimport ServiceMenu from './ServiceMenu';\n\nexport type Props = {\n isOpen?: boolean;\n onDismiss: () => void;\n navigationLinks?: LinkViewModel[];\n serviceMenuLinks?: LinkViewModel[];\n};\n\nconst navigationVariants = {\n show: {\n opacity: 1,\n transition: {\n type: 'tween',\n duration: 0.3,\n },\n },\n hide: {\n opacity: 0,\n transition: {\n type: 'tween',\n duration: 0.3,\n },\n },\n};\n\nexport default function MobileMenuModal({\n isOpen = false,\n onDismiss,\n navigationLinks,\n serviceMenuLinks,\n}: Props) {\n const { t } = useDictionary();\n // Normally we would use `` from ../../utils/motion for handling if we should render.\n // But, for some reason this creates an obscure error on some iPhones, that breaks the animation early\n // leaving us in a faded state.\n const [shouldRender, setShouldRender] = useState(isOpen);\n // If the modal isn't open, and it shouldn't render, just return `null`\n if (!isOpen && !shouldRender) return null;\n\n return (\n \n \n {\n setShouldRender(isOpen);\n }}\n onAnimationStart={() => {\n setShouldRender(true);\n }}\n initial=\"hide\"\n variants={navigationVariants}\n sx={{\n height: '100%',\n bg: Colors.PureWhite,\n }}\n >\n \n \n \n \n \n
\n \n
\n \n {navigationLinks && (\n \n )}\n \n \n \n
\n
\n );\n}\n","import React, { useState } from 'react';\nimport { Button, Container } from '@charlietango/ui';\nimport { rem } from 'polished';\n\nimport Anchor from '../../components/Anchor/Anchor';\nimport { useDictionary } from '../../hooks/useDictionary';\nimport MenuIcon from '../../icons/MenuIcon';\nimport { ButtonVariant } from '../../styles/buttons';\nimport { Colors } from '../../styles/colors';\nimport { motion } from '../../utils/motion';\nimport LinkViewModel from '../../view-models/LinkViewModel';\nimport MobileMenuModal from './MobileMenuModal';\nimport Logo from '../../components/Logo/Logo';\n\nexport type MobileNavigationProps = {\n logo?: LinkViewModel;\n navigationLinks?: LinkViewModel[];\n serviceMenuLinks?: LinkViewModel[];\n};\n\nconst menuVariants = {\n show: { opacity: 1 },\n hide: { opacity: 0 },\n};\n\nfunction MobileNavigation({ logo, ...rest }: MobileNavigationProps) {\n const { t } = useDictionary();\n const [isOpen, setIsOpen] = useState(false);\n\n return (\n <>\n \n \n \n \n \n setIsOpen(true)}\n sx={{\n height: rem(56),\n px: 2,\n mr: 2,\n }}\n >\n \n \n \n \n setIsOpen(false)}\n isOpen={isOpen}\n />\n \n );\n}\n\nexport default MobileNavigation;\n","import React from 'react';\nimport { Container } from '@charlietango/ui';\nimport RichText from '../RichText/RichText';\nimport { TextVariant } from '../../styles/typography';\n\nexport type AlertBannerProps = {\n message?: string;\n};\n\nfunction AlertBanner({ message }: AlertBannerProps) {\n if (!message) return null;\n return (\n \n \n \n {message}\n \n \n \n );\n}\n\nexport default AlertBanner;\n","import React from 'react';\nimport { hot } from 'react-hot-loader/root';\nimport { rem } from 'polished';\n\nimport { useBreakpoints } from '../../hooks/useBreakpoints';\nimport { Colors } from '../../styles/colors';\nimport { FontWeight } from '../../styles/typography';\nimport LinkViewModel from '../../view-models/LinkViewModel';\nimport DesktopNavigation from './DesktopNavigation';\nimport MobileNavigation from './MobileNavigation';\nimport AlertBanner from '../../components/AlertBanner/AlertBanner';\n\nexport type HeaderProps = {\n navigationLinks?: LinkViewModel[];\n serviceMenuLinks?: LinkViewModel[];\n /** Link and aria-label used for the logo (Go back to frontpage) */\n logo?: LinkViewModel;\n alertMessage?: string;\n};\n\nexport const navigationLinkStyle = {\n marginLeft: [0, '20px', '24px', '30px'],\n fontSize: [rem(17), 2],\n fontWeight: FontWeight.Medium,\n lineHeight: [1.53, 1.71],\n color: [Colors.Black, Colors.Secondary],\n textDecoration: 'none',\n borderBottomColor: Colors.VeryLightPink,\n padding: ['16px 20px', 0],\n transition: 'color .3s ease',\n '&:hover': {\n color: Colors.Black,\n },\n};\n\nfunction Header({\n alertMessage,\n logo,\n navigationLinks,\n serviceMenuLinks,\n}: HeaderProps) {\n const [sm] = useBreakpoints();\n\n // Initially we render both mobile and desktop navigation. Once we know the current breakpoint, we can remove the unused view.\n // This is why the `!==` toggle is used - By default it would be `undefined`, until the actual breakpoint state is known.\n return (\n <>\n {sm !== false && (\n \n )}\n {sm !== true && (\n \n )}\n \n \n );\n}\n\nexport default !process.env.HOT ? Header : hot(Header);\n","/*\n GENERATED FILE - DO NOT MODIFY\n Any changes will be overwritten when `yarn svgs` is executed.\n \n Generated from: assets/close.svg\n If you need to make changes the attributes, modify the original .svg file.\n \n If you need to modify the file further, consider copying this generated file to a new location,\n or into the component that uses it. If you do this, it might make sense to remove the original .svg file, \n or it could be regenerated the next time SVGs are generated.\n*/\nimport * as React from 'react';\nconst CloseIcon = React.forwardRef(\n (props: React.SVGProps, svgRef: any) => (\n \n \n \n \n \n \n ),\n);\nexport default CloseIcon;\n"],"sourceRoot":""}