{"version":3,"file":"8623-2c36f3b77644f681d2df.js","mappings":"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","sources":["webpack://tipton/./src/helpers/api.ts","webpack://tipton/./src/helpers/utils.ts","webpack://tipton/./src/hoc/withMotionMax.tsx","webpack://tipton/./src/hooks/useApi.ts","webpack://tipton/./src/hooks/useForm.ts","webpack://tipton/./src/hooks/useMedia.ts","webpack://tipton/./src/hooks/useOutsideClick.ts","webpack://tipton/./src/stories/Components/Misc/Carousels/Carousel/Dots/Dots.styles.ts","webpack://tipton/./src/stories/Components/Misc/Carousels/Carousel/Dots/Dots.tsx","webpack://tipton/./src/stories/Components/Misc/Forms/Inputs/Textbox/Textbox.styles.ts","webpack://tipton/./src/stories/Components/Misc/Forms/Inputs/Textbox/Textbox.tsx","webpack://tipton/./src/stories/Components/Misc/Forms/Searchbox/Searchbox.styles.ts","webpack://tipton/./src/stories/Components/Misc/Forms/Searchbox/Searchbox.tsx","webpack://tipton/./src/stories/Widgets/Global/Navigation/Navigation.styles.ts","webpack://tipton/./src/img/logo.svg","webpack://tipton/./src/stories/Widgets/Global/Navigation/AnnouncementBar/AnnouncementBar.styles.tsx","webpack://tipton/./src/stories/Widgets/Global/Navigation/AnnouncementBar/AnnouncementBar.tsx","webpack://tipton/./src/hooks/useAutoplay.ts","webpack://tipton/./src/stories/Widgets/Global/Navigation/types.ts","webpack://tipton/./src/stories/Widgets/Global/Navigation/NavigationLinks/NavigationLinks.styles.ts","webpack://tipton/./src/stories/Widgets/Global/Navigation/NavigationLinks/NavigationLinks.tsx","webpack://tipton/./src/stories/Widgets/Global/Navigation/Navigation.tsx","webpack://tipton/./src/hooks/useScrollPeek.ts"],"sourcesContent":["// ADD API URLS BELOW\r\nexport const API_URLS = {\r\n searchSubmit: '/search-results',\r\n searchTypeahead: '/umbraco/api/searchapi/gettypeahead',\r\n // Listings\r\n mortgagesListing: '/umbraco/api/mortgagesapi/getmortgages',\r\n newsListing: '/api/newsapi/getnews',\r\n savingsListing: '/umbraco/api/savingsapi/getsavings',\r\n searchResults: '/umbraco/api/searchapi/search',\r\n vacancyListing: '/api/vacancyapi/getvacancies',\r\n // Forms\r\n affordabilityCalculator: '/api/calculatorsapi/affordability-calculator',\r\n buyToLetRentalIncomeCalculator: '/api/calculatorsapi/buytolet-rental-income-calculator',\r\n decisionInPrinciple: '/api/multistepforms/submit',\r\n savingsInterestCalculator: '/api/calculatorsapi/savings-interest-calculator',\r\n};\r\n","export function sleep(ms) {\r\n return new Promise((resolve) => setTimeout(resolve, ms));\r\n}\r\n// Make sure links and buttons are not focusable when they are within an inactive container.\r\nexport function tabIndexHTML(html, active) {\r\n return html\r\n .replaceAll(' {\r\n return (React.createElement(LazyMotion, { features: domMax, strict: true },\r\n React.createElement(WrappedComponent, { ...props })));\r\n };\r\n ComponentWithMotionMax.displayName = `withMotionMax(${displayName})`;\r\n return ComponentWithMotionMax;\r\n}\r\n","import { sleep } from '@helpers/utils';\r\nimport * as React from 'react';\r\nimport { useFirstMountState } from 'react-use';\r\nexport function useApi(params) {\r\n const refAbortController = React.useRef();\r\n const isFirstMount = useFirstMountState();\r\n const [data, setData] = React.useState(params.initialData);\r\n const [status, setStatus] = React.useState('initial');\r\n const minTime = 500;\r\n const clear = () => {\r\n setData(undefined);\r\n };\r\n React.useEffect(() => {\r\n // Ignore first mount if initial data is supplied.\r\n if (isFirstMount && params.initialData) {\r\n return;\r\n }\r\n // Ignore if validate is supplied and returns false.\r\n if (params.validate && !params.validate()) {\r\n return;\r\n }\r\n // Setup abortable fetch.\r\n refAbortController.current = new AbortController();\r\n const signal = refAbortController.current.signal;\r\n // Trigger fetch with abort signal.\r\n doAsync(signal);\r\n return () => {\r\n // Abort pending request if re-fetching.\r\n refAbortController.current?.abort();\r\n };\r\n async function doAsync(signal) {\r\n setStatus('loading');\r\n const start = Date.now();\r\n const res = await fetch(params.url, {\r\n cache: 'no-cache',\r\n credentials: 'same-origin',\r\n headers: {\r\n Accept: 'application/json',\r\n },\r\n method: 'get',\r\n signal,\r\n });\r\n const resData = await res.json();\r\n const end = Date.now();\r\n const diff = end - start;\r\n /** Ensure at least 500ms is taken to return results to prevent loader flash */\r\n if (diff < minTime) {\r\n await sleep(minTime - diff);\r\n }\r\n setData(resData);\r\n setStatus('complete');\r\n }\r\n }, [params.url]);\r\n return { clear, data, status };\r\n}\r\n","import qs from 'query-string';\r\nimport * as React from 'react';\r\nimport { useForm as useReactHookForm, } from 'react-hook-form';\r\nexport const validateNotWhitespaceOnly = (value, error) => typeof value === 'string' ? value.trim().length > 0 || error : true;\r\nexport function useForm(params) {\r\n const refContainer = React.useRef(null);\r\n const refCustomData = React.useRef(null);\r\n const useReactHookFormReturn = useReactHookForm({\r\n defaultValues: params.defaultValues,\r\n mode: 'onSubmit',\r\n reValidateMode: 'onChange',\r\n shouldUseNativeValidation: false,\r\n });\r\n const { handleSubmit } = useReactHookFormReturn;\r\n const [status, setStatus] = React.useState('initial');\r\n const [confirmationMessage, setConfirmationMessage] = React.useState('');\r\n const [serverErrors, setServerErrors] = React.useState([]);\r\n const [customResponseData, setCustomResponseData] = React.useState();\r\n const reset = () => {\r\n setStatus('initial');\r\n setServerErrors([]);\r\n setCustomResponseData(undefined);\r\n setConfirmationMessage('');\r\n };\r\n const onSubmit = async (formData, event) => {\r\n let res;\r\n if (params.mode === 'querystring') {\r\n window.location.href = `${params.endpoint}${params.endpoint.includes('?') ? '&' : '?'}${qs.stringify({\r\n ...formData,\r\n })}`;\r\n return;\r\n }\r\n else if (params.mode === 'multipart') {\r\n const formData = new FormData(event?.target);\r\n // We have to create the FormData instance before changing status\r\n // as disabled fields/fieldsets are not included otherwise.\r\n setStatus('pending');\r\n res = await fetch(params.endpoint, {\r\n body: formData,\r\n method: 'POST',\r\n });\r\n }\r\n else {\r\n setStatus('pending');\r\n res = await fetch(params.endpoint, {\r\n body: JSON.stringify(formData),\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n });\r\n }\r\n // If we're showing an error message then change to error.\r\n if (!res.ok) {\r\n setStatus('error');\r\n setServerErrors([`Something went wrong.`]);\r\n refContainer.current?.scrollIntoView({ behavior: 'auto', block: 'start' });\r\n return;\r\n }\r\n const { errors, message, redirect, ...resData } = (await res.json());\r\n // If we're showing an error message then change to error.\r\n if (errors?.length) {\r\n setStatus('error');\r\n setServerErrors(errors);\r\n setTimeout(() => {\r\n refContainer.current?.scrollIntoView({ behavior: 'auto', block: 'start' });\r\n }, 100);\r\n return;\r\n }\r\n // At this stage we consider the submission successful so we\r\n // can trigger the optional callback.\r\n if (params.postSubmitCallback) {\r\n await params.postSubmitCallback();\r\n }\r\n // If returning custom data then set it.\r\n if (Object.keys(resData).length > 0) {\r\n setStatus('fulfilled');\r\n setCustomResponseData(resData);\r\n setTimeout(() => {\r\n refCustomData.current?.scrollIntoView({ behavior: 'auto', block: 'start' });\r\n }, 100);\r\n return;\r\n }\r\n // If we're showing a message then change to fulfilled.\r\n if (message) {\r\n setStatus('fulfilled');\r\n setConfirmationMessage(message);\r\n setTimeout(() => {\r\n refContainer.current?.scrollIntoView({ behavior: 'auto', block: 'start' });\r\n }, 100);\r\n return;\r\n }\r\n // If we're redirecting leave status pending.\r\n if (redirect) {\r\n window.location.href = redirect;\r\n return;\r\n }\r\n };\r\n return {\r\n confirmationMessage,\r\n refContainer,\r\n refCustomData,\r\n serverErrors,\r\n status,\r\n onSubmit: handleSubmit(onSubmit),\r\n reset,\r\n customResponseData,\r\n useReactHookFormReturn,\r\n };\r\n}\r\n","import { useEffect, useState } from 'react';\r\n/**\r\n * Store a value in state based on the specified media queries.\r\n * @param {Array} queries\r\n * @param {Array} values\r\n * @param {T} defaultValue\r\n */\r\nfunction useMedia(queries, values, defaultValue) {\r\n // Function that gets value based on matching media query\r\n const getValue = () => {\r\n // Get index of first media query that matches\r\n const index = mediaQueryLists.findIndex((mql) => mql.matches);\r\n // Return related value or defaultValue if none\r\n return typeof values[index] !== 'undefined' ? values[index] : defaultValue;\r\n };\r\n // State and setter for matched value\r\n const [value, setValue] = useState(defaultValue);\r\n const [mediaQueryLists, setMediaQueryLists] = useState([]);\r\n useEffect(() => {\r\n // Array containing a media query list for each query\r\n setMediaQueryLists(queries.map((query) => window.matchMedia(query)));\r\n }, []);\r\n useEffect(() => {\r\n setValue(getValue);\r\n // Event listener callback\r\n // Note: By defining getValue outside of useEffect we ensure that it has ...\r\n // ... current values of hook args (as this hook callback is created once on mount).\r\n const handler = () => setValue(getValue);\r\n // Set a listener for each media query with above handler as callback.\r\n mediaQueryLists.forEach((mql) => mql.addListener(handler));\r\n // Remove listeners on cleanup\r\n return () => mediaQueryLists.forEach((mql) => mql.removeListener(handler));\r\n }, [mediaQueryLists]); // Empty array ensures effect is only run on mount and unmount\r\n return value;\r\n}\r\nexport default useMedia;\r\n","import * as React from 'react';\r\nexport const useOutsideClick = (callback) => {\r\n const ref = React.useRef(null);\r\n React.useEffect(() => {\r\n const handleClick = (event) => {\r\n if (ref.current && !ref.current.contains(event.target)) {\r\n callback();\r\n }\r\n };\r\n document.addEventListener('click', handleClick, true);\r\n document.addEventListener('focus', handleClick, true);\r\n return () => {\r\n document.removeEventListener('click', handleClick, true);\r\n document.removeEventListener('focus', handleClick, true);\r\n };\r\n }, [ref]);\r\n return ref;\r\n};\r\n","import { transition } from '@helpers/animate';\r\nimport brand from '@helpers/brand';\r\nimport { Device, from } from '@helpers/media';\r\nimport { Background, ContentType } from '@stories/Components/Misc/SectionWrapper/SectionWrapper';\r\nimport styled from 'styled-components';\r\nconst Dots = styled.div `\r\n --borderRadius: 8px;\r\n\r\n &[data-variant=${ContentType.Savings}] {\r\n --activeColour: ${brand.blue.default};\r\n --inactiveColour: ${brand.blue.light};\r\n\r\n [data-background=${Background.Blue}] & {\r\n --inactiveColour: ${brand.global.white};\r\n }\r\n }\r\n\r\n &[data-variant=${ContentType.Default}] {\r\n --activeColour: ${brand.green.default};\r\n --inactiveColour: ${brand.green.light};\r\n\r\n [data-background=${Background.Green}] & {\r\n --inactiveColour: ${brand.global.white};\r\n }\r\n }\r\n\r\n &[data-variant=${ContentType.Intermediaries}] {\r\n --activeColour: ${brand.blue.navy};\r\n --inactiveColour: ${brand.global.beige};\r\n\r\n [data-background=${Background.Green}] & {\r\n --inactiveColour: ${brand.global.white};\r\n }\r\n }\r\n\r\n [data-background=${Background.Beige}] & {\r\n --inactiveColour: ${brand.global.white};\r\n }\r\n\r\n display: flex;\r\n align-items: stretch;\r\n border-radius: var(--borderRadius);\r\n background-color: var(--inactiveColour);\r\n height: 4px;\r\n width: 100%;\r\n\r\n @media ${from(Device.DesktopSmall)} {\r\n min-width: 128px;\r\n }\r\n`;\r\nconst Dot = styled.span `\r\n ${transition('max-width')};\r\n\r\n display: block;\r\n max-width: var(--progress, 0px);\r\n width: 100%;\r\n height: 100%;\r\n border-radius: var(--borderRadius);\r\n background-color: var(--activeColour);\r\n\r\n &[data-active='true'] {\r\n max-width: var(--dotActiveWidth);\r\n }\r\n`;\r\nexport const DotsStyles = {\r\n Dot,\r\n Dots,\r\n};\r\n","import React from 'react';\r\nimport { DotsStyles as S } from './Dots.styles';\r\nimport { ContentType } from '@stories/Components/Misc/SectionWrapper/SectionWrapper';\r\nconst Dots = ({ activeIndex, itemCount, variant }) => {\r\n return (React.createElement(S.Dots, { \"data-variant\": variant ?? ContentType.Default },\r\n React.createElement(S.Dot, { style: { '--progress': `${((activeIndex + 1) / itemCount) * 100}%` } })));\r\n};\r\nexport default Dots;\r\n","import brand from '@helpers/brand';\r\nimport { fluid } from '@helpers/fluid';\r\nimport fonts from '@helpers/fonts';\r\nimport { paragraphRegular } from '@helpers/typography';\r\nimport styled, { css } from 'styled-components';\r\nexport const CommonTextInputStyles = css `\r\n ${fonts.proximaNova.regular};\r\n\r\n --bgColour: ${brand.global.white};\r\n --borderRadius: 10px;\r\n --placeholderColour: ${brand.grey.dark};\r\n --readOnlyColour: ${brand.grey.dark};\r\n\r\n /* Ensure iOS doesn't apply default border radius */\r\n -webkit-appearance: none !important;\r\n display: block;\r\n background: var(--bgColour);\r\n border: 1px solid var(--borderColour);\r\n border-radius: var(--borderRadius);\r\n color: var(--textColour);\r\n height: ${fluid(48, 55)};\r\n font-size: 16px;\r\n line-height: 26px;\r\n margin: 0;\r\n padding: ${fluid(10, 14)} 12px;\r\n width: 100%;\r\n scroll-margin: calc(var(--headerHeight, 0px) + ${fluid(16, 32)}) 0 0;\r\n\r\n &:disabled {\r\n opacity: 0.5;\r\n color: var(--readOnlyColour);\r\n cursor: not-allowed;\r\n }\r\n\r\n &:read-only,\r\n &[readonly] {\r\n color: var(--readOnlyColour);\r\n }\r\n\r\n &::placeholder {\r\n color: var(--placeholderColour);\r\n opacity: 0.5;\r\n }\r\n\r\n &:-webkit-autofill,\r\n &:-webkit-autofill:hover,\r\n &:-webkit-autofill:focus {\r\n -webkit-text-fill-color: var(--textColour);\r\n -webkit-box-shadow: 0 0 0px 1000px ${brand.green.light} inset;\r\n }\r\n\r\n &.focus-ring {\r\n outline: auto;\r\n outline-offset: 3px;\r\n outline-width: 2px;\r\n outline-style: solid;\r\n }\r\n`;\r\nconst Input = styled.input `\r\n ${CommonTextInputStyles};\r\n`;\r\nconst AdditionalElementStyles = css `\r\n ${paragraphRegular};\r\n ${fonts.proximaNova.bold};\r\n\r\n --borderRadius: 10px;\r\n\r\n display: flex;\r\n align-items: center;\r\n height: ${fluid(48, 55)};\r\n border: 1px solid var(--borderColour);\r\n padding: 0 ${fluid(16, 24)};\r\n background-color: ${brand.green.light};\r\n color: var(--textColour);\r\n white-space: nowrap;\r\n margin: 0;\r\n`;\r\nconst Prefix = styled.span `\r\n ${AdditionalElementStyles};\r\n\r\n border-right: 0;\r\n border-radius: var(--borderRadius) 0 0 var(--borderRadius);\r\n`;\r\nconst Suffix = styled.span `\r\n ${AdditionalElementStyles};\r\n\r\n border-left: 0;\r\n border-radius: 0 var(--borderRadius) var(--borderRadius) 0;\r\n`;\r\nconst InputWrapper = styled.div `\r\n display: flex;\r\n\r\n &[data-type='currency'] {\r\n > input {\r\n ${CommonTextInputStyles};\r\n }\r\n }\r\n\r\n &:has(${Prefix}) {\r\n input {\r\n border-top-left-radius: 0;\r\n border-bottom-left-radius: 0;\r\n }\r\n }\r\n\r\n &:has(${Suffix}) {\r\n input {\r\n border-top-right-radius: 0;\r\n border-bottom-right-radius: 0;\r\n }\r\n }\r\n`;\r\nconst TextboxStyles = {\r\n Input,\r\n InputWrapper,\r\n Prefix,\r\n Suffix,\r\n};\r\nexport default TextboxStyles;\r\n","import * as React from 'react';\r\nimport { FocusRing } from 'react-aria';\r\nimport MaskedInput from 'react-text-mask';\r\nimport createNumberMask from 'text-mask-addons/dist/createNumberMask';\r\nimport S from './Textbox.styles';\r\nconst maskOptions = {\r\n prefix: '',\r\n suffix: '',\r\n includeThousandsSeparator: true,\r\n thousandsSeparatorSymbol: ',',\r\n allowDecimal: true,\r\n decimalSymbol: '.',\r\n decimalLimit: 2,\r\n integerLimit: 8,\r\n allowNegative: false,\r\n allowLeadingZeroes: false,\r\n};\r\nconst Textbox = React.forwardRef(({ prefix, suffix, setValue, initialValue, ...props }, ref) => {\r\n const currencyMask = createNumberMask(maskOptions);\r\n const [maskedValue, setMaskedValue] = React.useState(initialValue ?? '');\r\n React.useEffect(() => {\r\n setMaskedValue(initialValue ?? '');\r\n setValue?.(initialValue ? initialValue.replace(/,/g, '') : '');\r\n }, [initialValue]);\r\n const otherProps = {};\r\n if (props.type === 'number') {\r\n otherProps.step = 'any';\r\n }\r\n if (prefix && prefix === '£') {\r\n return (React.createElement(FocusRing, { focusRingClass: \"focus-ring\" },\r\n React.createElement(S.InputWrapper, { \"data-type\": \"currency\" },\r\n prefix && React.createElement(S.Prefix, null, prefix),\r\n React.createElement(MaskedInput, { mask: currencyMask, onChange: (e) => {\r\n setValue?.(e.target.value.replace(/,/g, ''));\r\n setMaskedValue(e.target.value);\r\n }, inputMode: \"numeric\", value: maskedValue }),\r\n React.createElement(\"input\", { ref: ref, ...props, \"aria-labelledby\": `${props.name}-label`, ...otherProps, type: \"hidden\" }),\r\n suffix && React.createElement(S.Suffix, null, suffix))));\r\n }\r\n return (React.createElement(FocusRing, { focusRingClass: \"focus-ring\" },\r\n React.createElement(S.InputWrapper, null,\r\n prefix && React.createElement(S.Prefix, null, prefix),\r\n React.createElement(S.Input, { ref: ref, ...props, \"aria-labelledby\": `${props.name}-label`, ...otherProps }),\r\n suffix && React.createElement(S.Suffix, null, suffix))));\r\n});\r\nTextbox.displayName = 'Textbox';\r\nexport default Textbox;\r\n","import { transition } from '@helpers/animate';\r\nimport brand from '@helpers/brand';\r\nimport { fluid } from '@helpers/fluid';\r\nimport fonts from '@helpers/fonts';\r\nimport { ButtonReset } from '@helpers/global';\r\nimport { Device, from, until } from '@helpers/media';\r\nimport srOnly from '@helpers/srOnly';\r\nimport { link, paragraphRegular } from '@helpers/typography';\r\nimport { m } from 'framer-motion';\r\nimport { rgba } from 'polished';\r\nimport styled from 'styled-components';\r\nimport { ContentType } from '../../SectionWrapper/SectionWrapper';\r\nimport Textbox from '../Inputs/Textbox/Textbox';\r\nimport TextboxStyles from '../Inputs/Textbox/Textbox.styles';\r\nconst Container = styled.div `\r\n ${transition('opacity')};\r\n\r\n --textLinkColour: ${brand.global.black};\r\n\r\n position: relative;\r\n\r\n &:has(input[aria-disabled='true'], button[aria-disabled='true']) {\r\n opacity: 0.5;\r\n pointer-events: none;\r\n }\r\n`;\r\nconst Form = styled.form `\r\n ${transition('border-color')};\r\n\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n border-radius: 40px;\r\n border: 1px solid ${brand.grey.light};\r\n width: 100%;\r\n padding: 0 6px;\r\n\r\n &:has(span) {\r\n border-color: ${brand.validation.invalid} !important;\r\n }\r\n\r\n ${TextboxStyles.InputWrapper} {\r\n display: contents;\r\n }\r\n`;\r\nconst Label = styled.label `\r\n ${srOnly};\r\n`;\r\nconst Input = styled(Textbox) `\r\n ${fonts.proximaNova.semiBold};\r\n\r\n --borderRadius: 40px;\r\n --textColour: ${brand.blue.navy};\r\n\r\n border: 0;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n flex: 1;\r\n margin: 0;\r\n padding-top: 0;\r\n padding-bottom: 0;\r\n height: ${fluid(44, 48)};\r\n font-size: 16px;\r\n line-height: 26px;\r\n\r\n &::placeholder {\r\n color: ${brand.grey.dark};\r\n }\r\n`;\r\nconst Button = styled(m.button) `\r\n ${ButtonReset};\r\n ${transition('background-color, color')};\r\n\r\n --primaryColour: ${brand.green.default};\r\n --contrastColour: ${brand.global.white};\r\n\r\n display: grid;\r\n place-content: center;\r\n width: ${fluid(32, 40)};\r\n height: ${fluid(32, 40)};\r\n border-radius: 50%;\r\n background-color: var(--primaryColour);\r\n color: var(--contrastColour);\r\n border: 2px solid var(--primaryColour);\r\n\r\n svg {\r\n display: block;\r\n width: ${fluid(18, 24)};\r\n }\r\n\r\n &:focus-visible,\r\n &:hover {\r\n color: var(--primaryColour);\r\n background-color: var(--contrastColour);\r\n }\r\n\r\n &[data-type=${ContentType.Savings}] {\r\n --primaryColour: ${brand.blue.default};\r\n }\r\n\r\n &[data-type=${ContentType.Intermediaries}] {\r\n --primaryColour: ${brand.blue.navy};\r\n --contrastColour: ${brand.green.light};\r\n }\r\n\r\n &[data-type='clear'] {\r\n --primaryColour: ${brand.green.light};\r\n --contrastColour: ${brand.blue.navy};\r\n\r\n svg {\r\n width: ${fluid(12, 16)};\r\n }\r\n }\r\n\r\n /* Mobile click styles - button should mimic press */\r\n @media ${until(Device.TabletLarge)} {\r\n ${transition('transform', 0.15)};\r\n\r\n &:active {\r\n transform: translateY(1.5px);\r\n }\r\n }\r\n`;\r\nconst Suggestions = styled.ul `\r\n ${transition('opacity, transform')};\r\n\r\n --borderRadius: ${fluid(10, 20)};\r\n\r\n position: absolute;\r\n z-index: 1;\r\n top: calc(100% + 16px);\r\n left: 0;\r\n background-color: ${brand.global.white};\r\n box-shadow: 0px 1px 4px 0px ${rgba(brand.blue.navy, 0.1)};\r\n display: flex;\r\n flex-direction: column;\r\n gap: 8px;\r\n padding: 10px;\r\n border-radius: var(--borderRadius) var(--borderRadius) var(--borderRadius) 0px;\r\n width: 100%;\r\n\r\n ${Container}:has(${Input}[aria-expanded='false']) & {\r\n opacity: 0;\r\n pointer-events: none;\r\n transform: translateY(-20px);\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n min-width: 424px;\r\n }\r\n`;\r\nconst AutosuggestOption = styled.button `\r\n ${ButtonReset};\r\n ${paragraphRegular};\r\n ${fonts.proximaNova.bold};\r\n ${link};\r\n\r\n padding: ${fluid(8, 16)};\r\n text-align: left;\r\n margin: 0;\r\n color: ${brand.global.black};\r\n text-decoration-color: transparent;\r\n\r\n > span {\r\n color: ${brand.green.default};\r\n }\r\n\r\n &:focus-visible,\r\n &:hover {\r\n text-decoration-color: transparent;\r\n }\r\n`;\r\nconst SearchboxStyles = {\r\n Container,\r\n Button,\r\n Label,\r\n Input,\r\n AutosuggestOption,\r\n Form,\r\n Suggestions,\r\n};\r\nexport default SearchboxStyles;\r\n","import { API_URLS } from '@helpers/api';\r\nimport { SystemIcon, getSystemIcon } from '@helpers/icons';\r\nimport { clamp } from '@helpers/utils';\r\nimport { useApi } from '@hooks/useApi';\r\nimport { useForm, validateNotWhitespaceOnly } from '@hooks/useForm';\r\nimport { useOutsideClick } from '@hooks/useOutsideClick';\r\nimport { AnimatePresence } from 'framer-motion';\r\nimport qs from 'qs';\r\nimport * as React from 'react';\r\nimport { useFirstMountState } from 'react-use';\r\nimport S from './Searchbox.styles';\r\nconst Searchbox = (props) => {\r\n const isFirstMount = useFirstMountState();\r\n const { onSubmit, useReactHookFormReturn: { watch, register, setValue, setFocus, formState: { errors }, }, status, } = useForm({\r\n defaultValues: { searchTerm: props.searchTerm },\r\n endpoint: props.submitUrl ? props.submitUrl : API_URLS.searchSubmit,\r\n mode: props.submitUrl ? 'querystring' : 'json',\r\n });\r\n const { searchTerm: searchValue } = watch();\r\n const [searchTerm, setSearchTerm] = React.useState(props.searchTerm ?? '');\r\n const [showSuggestions, setShowSuggestions] = React.useState(false);\r\n const [selectedTerm, setSelectedTerm] = React.useState('');\r\n React.useEffect(() => {\r\n if (searchValue &&\r\n searchValue.length > 1 &&\r\n searchTerm !== searchValue &&\r\n searchValue !== selectedTerm) {\r\n setSearchTerm(searchValue);\r\n setShowSuggestions(true);\r\n }\r\n else {\r\n setShowSuggestions(false);\r\n }\r\n }, [searchValue]);\r\n // Submit the search term when the user selects a suggestion\r\n React.useEffect(() => {\r\n if (!isFirstMount && selectedTerm === searchValue) {\r\n props.onSubmit?.(selectedTerm);\r\n }\r\n }, [selectedTerm, searchValue]);\r\n React.useEffect(() => {\r\n props.onSuggestionsVisible?.(showSuggestions);\r\n }, [showSuggestions]);\r\n React.useEffect(() => {\r\n setSearchTerm(props.searchTerm ?? '');\r\n setValue('searchTerm', props.searchTerm ?? '');\r\n }, [props.searchTerm]);\r\n const result = useApi({\r\n url: `${API_URLS.searchTypeahead}?${qs.stringify({\r\n searchTerm,\r\n cultureCode: props.cultureCode,\r\n })}`,\r\n validate: () => !props.noTypeahead && !!searchTerm && searchTerm !== props.searchTerm,\r\n });\r\n const itemsRef = React.useRef([]);\r\n const containerRef = useOutsideClick(() => setShowSuggestions(false));\r\n const submitRef = React.useRef(null);\r\n return (React.createElement(S.Container, { ref: containerRef },\r\n React.createElement(S.Form, { onSubmit: props.onSubmit !== undefined\r\n ? (event) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n props.onSubmit?.(searchTerm);\r\n showSuggestions && setShowSuggestions(false);\r\n }\r\n : onSubmit },\r\n React.createElement(\"input\", { type: \"hidden\", ...register('cultureCode') }),\r\n React.createElement(S.Label, { id: `${props.idPrefix ?? ''}-searchbox-label` }, props.label),\r\n React.createElement(S.Input, { type: \"search\", placeholder: props.placeholder, role: \"combobox\", \"aria-autocomplete\": \"list\", \"aria-expanded\": showSuggestions && !!result.data && result.data.suggestions.length > 0, \"aria-controls\": `${props.idPrefix ?? ''}-typeahead-listbox`, \"aria-labelledby\": `${props.idPrefix ?? ''}-searchbox-label`, ...register('searchTerm', {\r\n required: props.translations?.['global.search.validation'] ?? '',\r\n validate: (value) => validateNotWhitespaceOnly(value, props.translations?.['global.search.validation'] ?? ''),\r\n }), \"aria-invalid\": !!errors.searchTerm, \"aria-errormessage\": `${props.idPrefix ?? ''}-searchbox-error`, onKeyDown: (event) => {\r\n switch (event.key) {\r\n case 'ArrowDown':\r\n if (itemsRef.current.length > 0) {\r\n itemsRef.current[0]?.focus();\r\n }\r\n break;\r\n case 'Escape':\r\n setShowSuggestions(false);\r\n break;\r\n }\r\n }, \"aria-disabled\": status === 'pending', autoComplete: \"off\" }),\r\n errors.searchTerm && React.createElement(S.Label, { id: `${props.idPrefix ?? ''}-searchbox-error`, as: \"span\" }),\r\n props.onClear !== undefined ? (React.createElement(AnimatePresence, null, searchTerm !== '' ? (React.createElement(S.Button, { ref: submitRef, type: \"button\", \"aria-label\": props.clearLabel, \"data-type\": \"clear\", initial: { opacity: 0, y: 10 }, animate: { opacity: 1, y: 0 }, exit: { opacity: 0, y: 0 }, onClick: (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n props.onClear?.();\r\n setValue('searchTerm', '');\r\n setSearchTerm('');\r\n } }, getSystemIcon(SystemIcon.Close))) : null)) : null,\r\n React.createElement(S.Button, { ref: submitRef, type: \"submit\", \"aria-label\": props.buttonLabel, \"aria-disabled\": status === 'pending', \"data-type\": props.buttonType }, getSystemIcon(SystemIcon.Search))),\r\n React.createElement(S.Suggestions, { id: `${props.idPrefix ?? ''}-typeahead-listbox`, \"aria-hidden\": !result.data || result.data.suggestions.length === 0, tabIndex: showSuggestions ? -1 : undefined }, !!result.data && (React.createElement(React.Fragment, null, result.data.suggestions.map((suggestion, i) => {\r\n const regex = new RegExp(searchTerm, 'gi');\r\n const textValue = suggestion.value.replaceAll(regex, (match) => `${match}`);\r\n return (React.createElement(\"li\", { key: suggestion.id }, suggestion.url !== undefined ? (React.createElement(S.AutosuggestOption, { ref: (el) => (itemsRef.current[i] = el), as: \"a\", href: suggestion.url, onKeyDown: (e) => onKeyPress(e, i, (result.data?.suggestions).length - 1), tabIndex: showSuggestions ? -1 : undefined, dangerouslySetInnerHTML: { __html: textValue } })) : (React.createElement(S.AutosuggestOption, { ref: (el) => (itemsRef.current[i] = el), onClick: (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setValue('searchTerm', suggestion.value);\r\n setSelectedTerm(suggestion.value);\r\n }, onKeyDown: (e) => onKeyPress(e, i, (result.data?.suggestions).length - 1), tabIndex: showSuggestions ? -1 : undefined, dangerouslySetInnerHTML: { __html: textValue } }))));\r\n }))))));\r\n function onKeyPress(event, i, maxIndex) {\r\n const nextIndex = i === maxIndex ? 0 : clamp(i + 1, maxIndex);\r\n const prevIndex = i === 0 ? maxIndex : clamp(i - 1, maxIndex);\r\n switch (event.key) {\r\n case 'ArrowDown':\r\n event.preventDefault();\r\n event.stopPropagation();\r\n itemsRef.current[nextIndex]?.focus();\r\n break;\r\n case 'ArrowUp':\r\n event.preventDefault();\r\n event.stopPropagation();\r\n itemsRef.current[prevIndex]?.focus();\r\n break;\r\n case 'Escape':\r\n setShowSuggestions(false);\r\n setFocus('searchTerm');\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n};\r\nexport default Searchbox;\r\n","import { transition } from '@helpers/animate';\r\nimport brand from '@helpers/brand';\r\nimport { fluid } from '@helpers/fluid';\r\nimport fonts from '@helpers/fonts';\r\nimport { ButtonReset } from '@helpers/global';\r\nimport { siteWide } from '@helpers/grid';\r\nimport { Layers } from '@helpers/layers';\r\nimport { Device, from, until } from '@helpers/media';\r\nimport srOnly from '@helpers/srOnly';\r\nimport { paragraphRegular, paragraphSmall } from '@helpers/typography';\r\nimport SearchboxStyles from '@stories/Components/Misc/Forms/Searchbox/Searchbox.styles';\r\nimport { ContentType } from '@stories/Components/Misc/SectionWrapper/SectionWrapper';\r\nimport { rgba } from 'polished';\r\nimport styled, { createGlobalStyle } from 'styled-components';\r\nconst GlobalStyles = createGlobalStyle `\r\n :root {\r\n --announcementHeight: ${fluid(28, 48)};\r\n --navigationHeight: 48px;\r\n --tabsHeight: 38px;\r\n \r\n --headerHeight: calc(var(--announcementHeight) + var(--navigationHeight));\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n --navigationHeight: 112px;\r\n }\r\n }\r\n`;\r\nconst Container = styled.header `\r\n ${transition('transform')};\r\n\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n z-index: ${Layers.Navigation};\r\n height: var(--headerHeight);\r\n\r\n &[data-reduce='true'] {\r\n transform: translateY(calc(var(--announcementHeight) * -1));\r\n }\r\n\r\n /* Use pseudo elements to ensure that the background colours cover the entire screen width */\r\n &::before,\r\n &::after {\r\n content: '';\r\n position: absolute;\r\n left: 0;\r\n width: 100%;\r\n z-index: -1;\r\n }\r\n\r\n &::before {\r\n top: 0;\r\n height: var(--announcementHeight);\r\n background-color: ${brand.blue.navy};\r\n }\r\n\r\n &::after {\r\n top: var(--announcementHeight);\r\n height: var(--navigationHeight);\r\n background-color: ${brand.global.white};\r\n box-shadow: 0px 1px 4px 0px ${rgba(brand.blue.navy, 0.1)};\r\n }\r\n`;\r\nconst Backdrop = styled.button `\r\n ${ButtonReset};\r\n ${transition('opacity, backdrop-filter')};\r\n\r\n position: fixed;\r\n z-index: ${Layers.Navigation - 1};\r\n top: var(--headerHeight, 0px);\r\n left: 0;\r\n width: 100%;\r\n height: calc(100dvh - var(--headerHeight, 0px));\r\n background-color: ${rgba(brand.global.black, 0.46)};\r\n cursor: pointer;\r\n backdrop-filter: blur(4px);\r\n cursor: not-allowed;\r\n\r\n &[data-visible='false'] {\r\n opacity: 0;\r\n pointer-events: none;\r\n backdrop-filter: blur(0px);\r\n }\r\n`;\r\nconst Inner = styled.div `\r\n display: contents;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n ${siteWide};\r\n\r\n display: grid;\r\n grid-template-columns: 1fr auto 1fr;\r\n column-gap: 24px;\r\n }\r\n`;\r\nconst NavigationTabs = styled.div `\r\n display: flex;\r\n align-items: stretch;\r\n background-color: ${brand.blue.navy};\r\n height: var(--tabsHeight);\r\n padding-left: ${fluid(18, 64)};\r\n\r\n @media ${until(Device.TabletLarge)} {\r\n ${transition('transform, opacity')};\r\n\r\n position: relative;\r\n z-index: -2; // Ensure the tabs slide out from beneath the main body\r\n\r\n &[data-mobile='false'] {\r\n display: none;\r\n }\r\n\r\n ${Container}[data-menu-open='false'] & {\r\n opacity: 0;\r\n transform: translateY(-100%);\r\n pointer-events: none;\r\n }\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n &[data-mobile='true'] {\r\n display: none;\r\n }\r\n\r\n height: var(--announcementHeight);\r\n grid-column: 1;\r\n }\r\n`;\r\nconst NavigationTab = styled.a `\r\n ${paragraphSmall};\r\n ${fonts.proximaNova.medium};\r\n ${transition('color')};\r\n\r\n display: flex;\r\n align-items: center;\r\n padding: 0 ${fluid(18, 22)};\r\n margin: 0;\r\n color: ${brand.global.white};\r\n text-decoration: none;\r\n\r\n &:focus {\r\n outline: none;\r\n }\r\n\r\n &:focus-visible {\r\n outline: auto;\r\n outline-offset: -2px;\r\n outline-width: 2px;\r\n outline-style: solid;\r\n outline-color: ${brand.green.default};\r\n }\r\n\r\n &:focus-visible,\r\n &:hover {\r\n color: ${brand.green.default};\r\n }\r\n\r\n &[aria-selected='true'] {\r\n color: ${brand.green.dark};\r\n outline-color: ${brand.green.dark};\r\n }\r\n\r\n &[aria-selected='true'] {\r\n ${fonts.proximaNova.bold};\r\n\r\n background-color: ${brand.global.white};\r\n }\r\n`;\r\nconst Main = styled.div `\r\n display: flex;\r\n height: var(--navigationHeight);\r\n background-color: ${brand.global.white};\r\n padding: 6px var(--sitePadding);\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n position: relative;\r\n grid-column: 1 / -1;\r\n grid-row: 2;\r\n padding: 0;\r\n gap: ${fluid(24, 76)};\r\n }\r\n`;\r\nconst Logo = styled.a `\r\n display: block;\r\n width: ${fluid(74, 167, Device.DesktopSmall)};\r\n\r\n svg {\r\n display: block;\r\n height: 100%;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n margin: 12px 0;\r\n display: flex;\r\n align-items: center;\r\n }\r\n`;\r\nconst CtaWrapper = styled.div `\r\n display: flex;\r\n gap: ${fluid(22, 54, Device.Desktop)};\r\n margin-left: auto;\r\n align-items: center;\r\n order: 2;\r\n`;\r\nconst SearchBoxContainer = styled.div `\r\n ${transition('transform, opacity')};\r\n\r\n position: absolute;\r\n top: var(--headerHeight, 0px);\r\n left: 0;\r\n z-index: -2; // Ensure the search slides out from beneath the main body\r\n padding: 8px var(--sitePadding);\r\n background-color: ${brand.global.white};\r\n width: 100%;\r\n border-bottom-right-radius: ${fluid(16, 32)};\r\n\r\n @media ${until(Device.DesktopSmall)} {\r\n &[data-open='false'] {\r\n opacity: 0;\r\n transform: translateY(-100%);\r\n pointer-events: none;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n top: 100%;\r\n padding: 8px;\r\n }\r\n }\r\n\r\n @media ${from(Device.DesktopSmall)} {\r\n display: contents;\r\n\r\n ${SearchboxStyles.Container} {\r\n flex: 2 1 340px;\r\n max-width: 340px;\r\n\r\n ${CtaWrapper}:not(:has(${() => CtaLink}[data-mobile=\"false\"])) & {\r\n min-width: 280px;\r\n flex-grow: 3;\r\n }\r\n }\r\n\r\n ${SearchboxStyles.Button}[data-type='clear'] {\r\n display: none;\r\n }\r\n }\r\n`;\r\nconst CtaLink = styled.a `\r\n ${transition('text-decoration-color, color')};\r\n ${ButtonReset};\r\n ${paragraphRegular};\r\n ${fonts.proximaNova.bold};\r\n\r\n --primaryColour: ${brand.green.default};\r\n --contrastColour: ${brand.global.white};\r\n\r\n display: flex;\r\n align-items: center;\r\n height: ${fluid(28, 42)};\r\n text-decoration: underline;\r\n text-decoration-color: transparent;\r\n text-decoration-thickness: 2px;\r\n text-underline-offset: 4px;\r\n color: ${brand.blue.navy};\r\n margin: 0;\r\n text-align: left;\r\n\r\n &[data-type=${ContentType.Intermediaries}] {\r\n --primaryColour: ${brand.green.light};\r\n --contrastColour: ${brand.blue.navy};\r\n }\r\n\r\n &[data-type=${ContentType.Savings}] {\r\n --primaryColour: ${brand.blue.default};\r\n }\r\n\r\n svg {\r\n display: block;\r\n width: ${fluid(18, 24)};\r\n }\r\n\r\n span:nth-child(1) {\r\n ${transition('background-color, color')};\r\n\r\n display: grid;\r\n place-content: center;\r\n border-radius: 5000px;\r\n height: 100%;\r\n aspect-ratio: 1;\r\n background-color: var(--primaryColour);\r\n color: var(--contrastColour);\r\n border: 2px solid var(--primaryColour);\r\n }\r\n\r\n span:nth-child(2) {\r\n @media ${until(Device.DesktopSmall)} {\r\n ${srOnly};\r\n }\r\n }\r\n\r\n &:focus-visible,\r\n &:hover {\r\n text-decoration-color: currentColor;\r\n\r\n span:nth-child(1) {\r\n color: var(--primaryColour);\r\n background-color: var(--contrastColour);\r\n }\r\n }\r\n\r\n &[aria-expanded] {\r\n svg {\r\n ${transition('transform, opacity')};\r\n\r\n grid-area: 1 / 1 / 1 / 1;\r\n margin: auto;\r\n }\r\n\r\n svg:nth-child(2) {\r\n width: 12px;\r\n }\r\n }\r\n\r\n &[aria-expanded='false'] {\r\n svg:nth-child(2) {\r\n transform: scale(0.5);\r\n opacity: 0;\r\n }\r\n }\r\n\r\n &[aria-expanded='true'] {\r\n svg:nth-child(1) {\r\n transform: scale(0.5);\r\n opacity: 0;\r\n }\r\n }\r\n\r\n /* Mobile click styles - button should mimic press */\r\n @media ${until(Device.TabletLarge)} {\r\n ${transition('transform', 0.15)};\r\n\r\n &:active {\r\n transform: translateY(1.5px);\r\n }\r\n }\r\n\r\n @media ${from(Device.DesktopSmall)} {\r\n white-space: nowrap;\r\n gap: 8px;\r\n\r\n &[data-style='solid'] {\r\n ${transition('background-color, color')};\r\n\r\n color: var(--contrastColour);\r\n background-color: var(--primaryColour);\r\n text-decoration: none;\r\n border-radius: 30px;\r\n padding: 0 16px;\r\n border: 2px solid var(--primaryColour);\r\n\r\n span:nth-child(1) {\r\n display: contents;\r\n }\r\n\r\n &:focus-visible,\r\n &:hover {\r\n color: var(--primaryColour);\r\n background-color: var(--contrastColour);\r\n }\r\n }\r\n\r\n &[data-mobile='true'] {\r\n display: none;\r\n }\r\n }\r\n`;\r\nconst MenuButton = styled.button `\r\n ${transition('background-size, border-color, color, transform', 0.15)};\r\n ${ButtonReset};\r\n\r\n display: grid;\r\n height: 24px;\r\n width: 24px;\r\n color: ${brand.blue.navy};\r\n\r\n svg {\r\n ${transition('transform, opacity')};\r\n\r\n display: block;\r\n margin: auto 0 auto auto;\r\n grid-area: 1 / 1 / 1 / 1;\r\n\r\n &:nth-child(1) {\r\n width: 21px;\r\n }\r\n\r\n &:nth-child(2) {\r\n width: 17px;\r\n }\r\n }\r\n\r\n &[aria-expanded='false'] {\r\n svg:nth-child(2) {\r\n transform: scale(0.5);\r\n opacity: 0;\r\n }\r\n }\r\n\r\n &[aria-expanded='true'] {\r\n svg:nth-child(1) {\r\n transform: scale(0.5);\r\n opacity: 0;\r\n }\r\n }\r\n\r\n &:focus-visible {\r\n outline: auto;\r\n outline-offset: 3px;\r\n outline-width: 2px;\r\n outline-style: solid;\r\n }\r\n\r\n /* button should mimic press */\r\n &:active {\r\n transform: translateY(1.5px);\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n display: none;\r\n }\r\n`;\r\nconst NavigationStyles = {\r\n Backdrop,\r\n Container,\r\n CtaLink,\r\n CtaWrapper,\r\n GlobalStyles,\r\n Inner,\r\n Logo,\r\n Main,\r\n MenuButton,\r\n NavigationTab,\r\n NavigationTabs,\r\n SearchBoxContainer,\r\n};\r\nexport default NavigationStyles;\r\n","var _path, _path2, _path3, _path4;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgLogo = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 167 88\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M40.164 46.619H31.94v14.42c0 1.476.258 2.545.811 3.246.553.7 1.586 1.033 3.135 1.033.738 0 1.438-.037 2.14-.148.663-.11 1.29-.221 1.88-.406v4.353c-.922.331-2.028.59-3.356.774a28.74 28.74 0 0 1-3.946.258c-2.84 0-5.09-.811-6.713-2.47-1.66-1.66-2.47-4.058-2.47-7.156V46.545h-3.69v-3.91l4.058-.184 2.877-9.405h5.348v9.331h8.224v4.242h-.074ZM52.41 35.554c0 1.18-.443 2.176-1.328 2.95-.886.775-1.955 1.18-3.21 1.18-1.253 0-2.286-.405-3.171-1.18-.885-.774-1.328-1.77-1.328-2.95 0-1.106.443-2.065 1.328-2.877.885-.811 1.955-1.18 3.172-1.18 1.254 0 2.323.406 3.209 1.18.922.775 1.327 1.734 1.327 2.877Zm-.259 34.3h-8.593v-28.03h8.593v28.03ZM84.017 56.872c0 4.278-1.143 7.56-3.43 9.884-2.287 2.324-5.459 3.467-9.553 3.467-1.07 0-2.25-.147-3.54-.406-1.254-.258-2.36-.737-3.246-1.438v6.454h-8.593V41.787h8.298l.185 4.094c.7-1.438 1.88-2.582 3.614-3.43 1.734-.848 3.651-1.29 5.717-1.29 2.84 0 5.31.958 7.376 2.84 2.065 1.88 3.135 5.089 3.135 9.588v3.283h.037Zm-8.925-.443v-1.844c0-3.024-.443-5.09-1.328-6.196-.885-1.107-2.102-1.66-3.651-1.66-1.218 0-2.361.332-3.43.96-1.07.626-1.845 1.327-2.324 2.065v13.609c.147.627.7 1.254 1.66 1.844.959.59 2.176.885 3.577.885 1.291 0 2.508-.59 3.725-1.77 1.144-1.217 1.77-3.836 1.77-7.893ZM104.855 46.619h-8.188v14.42c0 1.476.258 2.545.812 3.246.553.7 1.586 1.033 3.135 1.033.737 0 1.438-.037 2.139-.148.664-.11 1.328-.221 1.881-.406v4.353c-.922.331-2.029.59-3.393.774a28.75 28.75 0 0 1-3.947.258c-2.84 0-5.09-.811-6.712-2.47-1.66-1.66-2.471-4.058-2.471-7.156V46.545h-3.689v-3.91l4.058-.184 2.876-9.405h5.348v9.331h8.188v4.242h-.037ZM137.053 56.687c0 4.352-1.365 7.709-4.131 10.143-2.766 2.434-6.528 3.651-11.359 3.651-4.758 0-8.557-1.254-11.397-3.725-2.803-2.47-4.241-5.864-4.241-10.069V54.88c0-4.13 1.401-7.487 4.167-9.995 2.766-2.545 6.565-3.799 11.397-3.799 4.831 0 8.63 1.291 11.396 3.836s4.131 5.901 4.131 9.995v1.77h.037Zm-8.962-.7v-.406c0-3.762-.627-6.344-1.918-7.745-1.291-1.365-2.84-2.066-4.684-2.066-1.918 0-3.504.738-4.758 2.213-1.217 1.476-1.807 4.02-1.807 7.598v.406c0 3.946.59 6.565 1.77 7.855 1.18 1.291 2.766 1.955 4.795 1.955 1.807 0 3.356-.627 4.684-1.88 1.254-1.292 1.918-3.91 1.918-7.93ZM166.558 69.854h-8.556V50.16c0-.737-.332-1.401-1.033-2.065-.701-.627-1.696-.959-2.987-.959-1.254 0-2.324.221-3.283.7-.922.48-1.733 1.07-2.397 1.771v20.211h-8.594v-28.03h8.262l.147 4.39c.627-1.329 1.845-2.509 3.615-3.505 1.77-1.032 3.946-1.512 6.528-1.512 2.582 0 4.61.738 6.085 2.213 1.476 1.475 2.213 3.725 2.213 6.75v19.731ZM62.072 26.666h-3.024v5.31c0 .554.11.923.295 1.18.184.259.59.37 1.143.37.258 0 .517-.037.775-.074s.48-.074.7-.148v1.623c-.331.11-.737.221-1.253.258-.48.074-.96.11-1.439.11-1.032 0-1.88-.294-2.47-.921-.591-.627-.923-1.512-.923-2.656v-5.126h-1.365v-1.439l1.476-.073 1.07-3.467h1.99v3.43h3.025v1.623ZM73.505 35.259h-3.171v-7.266c0-.332-.111-.59-.295-.811-.222-.221-.554-.332-.996-.332-.443 0-.885.074-1.291.258a3.354 3.354 0 0 0-.996.664v7.487h-3.172V21.686h3.172v4.795c.332-.442.848-.848 1.475-1.254.627-.369 1.439-.553 2.398-.553.959 0 1.66.258 2.139.811.48.554.7 1.365.7 2.508v7.266h.037ZM85.75 30.612h-7.782c0 1.18.295 1.955.885 2.397.59.443 1.328.664 2.25.664.627 0 1.217-.074 1.881-.221.627-.148 1.291-.332 1.992-.627v1.733a7.846 7.846 0 0 1-1.918.664c-.7.148-1.512.222-2.434.222-1.77 0-3.172-.443-4.205-1.291-1.032-.849-1.586-2.102-1.586-3.725v-.738c0-1.438.48-2.655 1.439-3.614.959-.996 2.36-1.476 4.167-1.476 1.734 0 3.062.48 3.984 1.402.922.922 1.364 2.139 1.364 3.651-.037.553-.037.885-.037.96Zm-2.95-1.475c-.074-1.033-.332-1.734-.738-2.213-.442-.443-.996-.664-1.66-.664-.59 0-1.143.221-1.622.664-.48.442-.738 1.18-.775 2.213H82.8ZM30.538 86.082H28.878c-.184-.147-.294-.295-.405-.405-.11-.111-.221-.259-.406-.406-.332.369-.7.59-1.106.737a3.541 3.541 0 0 1-1.217.222c-.775 0-1.365-.185-1.77-.517-.407-.331-.59-.811-.59-1.364 0-.517.147-.922.442-1.291.295-.369.737-.738 1.364-1.107-.405-.479-.664-.81-.774-1.032-.074-.221-.148-.443-.148-.627 0-.48.185-.885.553-1.217.37-.332.849-.48 1.402-.48.7 0 1.217.148 1.549.48.332.295.516.7.516 1.143 0 .406-.11.738-.332.996-.22.295-.59.59-1.143.959.184.221.369.442.553.627.185.184.406.442.664.774.295-.295.48-.553.627-.811.148-.258.295-.59.48-.996l1.18.59a7.034 7.034 0 0 1-.59 1.18c-.258.406-.517.738-.775.96.443.442.775.81.96 1.032.257.148.442.369.626.553Zm-3.356-1.807a9.04 9.04 0 0 1-.664-.738c-.148-.184-.369-.405-.627-.737-.332.295-.553.516-.7.737-.148.222-.222.406-.222.627a.75.75 0 0 0 .221.554c.148.147.37.184.664.184.222 0 .443-.037.664-.148.221-.073.443-.22.664-.479Zm-.258-4.02c0-.184-.037-.369-.148-.48-.11-.147-.258-.184-.516-.184-.221 0-.406.074-.48.221-.073.148-.147.295-.147.443 0 .074.037.184.11.295.074.148.222.332.443.627.258-.184.443-.369.59-.48.074-.147.148-.295.148-.442ZM38.837 85.64c-.074.073-.296.147-.664.258-.37.11-.775.184-1.18.184-1.107 0-1.992-.258-2.656-.774-.664-.517-.996-1.328-.996-2.36v-.259c0-.959.332-1.733.96-2.286.663-.554 1.511-.849 2.618-.849.442 0 .811.037 1.18.148.369.11.59.221.738.332v1.106c-.185-.147-.406-.258-.701-.369a2.545 2.545 0 0 0-.922-.147c-.59 0-1.033.184-1.328.553-.295.369-.48.922-.48 1.549v.11c0 .738.111 1.255.37 1.587.258.295.663.48 1.216.48.37 0 .738-.038 1.107-.149.369-.11.59-.184.738-.294v1.18ZM46.324 83.021c0 .959-.295 1.733-.922 2.25-.627.553-1.439.811-2.545.811-1.07 0-1.918-.258-2.545-.811s-.959-1.291-.959-2.25v-.406c0-.922.295-1.66.922-2.212.627-.554 1.475-.849 2.545-.849 1.07 0 1.918.295 2.545.849.627.553.922 1.29.922 2.212v.406h.037Zm-1.992-.147V82.8c0-.849-.148-1.402-.443-1.734a1.418 1.418 0 0 0-1.07-.442c-.442 0-.774.147-1.069.48-.258.331-.405.884-.405 1.696v.074c0 .885.147 1.438.405 1.733.258.295.627.443 1.07.443.406 0 .774-.148 1.033-.406.331-.295.479-.885.479-1.77ZM51.708 84.054c0 .59-.221 1.07-.7 1.475-.48.369-1.218.59-2.287.59-.443 0-.848-.037-1.217-.11-.369-.074-.627-.148-.812-.259v-1.106c.185.11.443.221.812.295.332.11.7.148 1.07.148.479 0 .81-.074 1.069-.222.258-.147.369-.332.369-.553 0-.221-.074-.369-.258-.516-.148-.148-.59-.296-1.254-.48-.627-.184-1.07-.406-1.291-.737-.222-.296-.332-.701-.332-1.218 0-.516.221-.922.627-1.29.406-.332 1.07-.517 1.918-.517.405 0 .737.037 1.032.074.295.037.554.147.812.221v.996a5.241 5.241 0 0 0-.775-.221c-.332-.074-.664-.074-.959-.074-.368 0-.627.037-.848.148-.221.11-.332.258-.332.442 0 .221.074.369.258.443.185.073.553.221 1.144.368.737.185 1.254.48 1.549.775.258.406.405.848.405 1.328ZM58.827 83.169h-4.684c0 .7.184 1.18.516 1.475.332.258.811.406 1.364.406a6.3 6.3 0 0 0 1.144-.111c.369-.074.774-.221 1.18-.369v1.033c-.369.184-.738.295-1.18.406a8.292 8.292 0 0 1-1.475.147c-1.07 0-1.918-.258-2.545-.775-.627-.516-.96-1.254-.96-2.25v-.442c0-.848.296-1.586.886-2.176.59-.59 1.401-.922 2.508-.922 1.033 0 1.844.295 2.397.848.553.554.849 1.291.849 2.176v.554Zm-1.77-.886c-.038-.627-.185-1.032-.443-1.327a1.362 1.362 0 0 0-.996-.406c-.369 0-.7.11-.996.406-.295.258-.443.7-.48 1.327h2.914ZM61.519 85.972H59.6v-8.225h1.918v8.225ZM69.08 83.169h-4.684c0 .7.184 1.18.516 1.475.332.258.811.406 1.365.406a6.3 6.3 0 0 0 1.143-.111c.369-.074.775-.221 1.18-.369v1.033c-.368.184-.737.295-1.18.406a8.67 8.67 0 0 1-1.475.147c-1.07 0-1.918-.258-2.545-.775-.627-.516-.959-1.254-.959-2.25v-.442c0-.848.295-1.586.885-2.176.59-.59 1.402-.922 2.508-.922 1.033 0 1.844.295 2.397.848.554.554.849 1.291.849 2.176v.554Zm-1.77-.886c-.038-.627-.185-1.032-.443-1.327-.258-.258-.59-.406-1.033-.406-.369 0-.7.11-.996.406-.295.258-.442.7-.48 1.327h2.951ZM76.235 79.702l-3.984 8.114h-1.585l1.106-2.103-2.692-6.011h1.954l1.734 4.204 1.918-4.204h1.549ZM85.382 83.095c0 .885-.259 1.623-.738 2.139-.48.553-1.217.811-2.14.811-.258 0-.516-.037-.81-.11-.296-.074-.554-.185-.738-.332l-.037.369h-1.844v-8.225h1.918v2.84c.295-.406.627-.701.959-.812a3.2 3.2 0 0 1 1.032-.184c.7 0 1.291.221 1.734.7.442.48.663 1.18.663 2.103v.7Zm-1.992-.148v-.442c0-.664-.11-1.144-.332-1.365-.221-.221-.48-.332-.848-.332-.258 0-.48.074-.738.221-.258.148-.406.295-.516.517v2.987c.037.148.147.295.368.406.222.11.48.184.775.184.332 0 .627-.147.885-.442.295-.259.406-.849.406-1.734ZM92.241 85.972h-1.844l-.037-.96a3.236 3.236 0 0 1-.922.738c-.405.222-.885.332-1.438.332-.553 0-.959-.147-1.29-.442-.296-.295-.48-.812-.48-1.55v-4.388h1.918v4.241c0 .332.073.553.22.664.148.11.333.184.554.184.295 0 .516-.037.775-.147.22-.11.442-.222.59-.443v-4.5h1.918v6.27h.036ZM95.303 78.337c0 .258-.111.48-.295.664-.185.184-.443.258-.701.258-.258 0-.517-.074-.701-.258a.924.924 0 0 1-.295-.664c0-.258.11-.48.295-.664.184-.184.443-.258.7-.258.296 0 .517.074.702.258.22.185.295.406.295.664Zm-.037 7.635h-1.918v-6.27h1.918v6.27ZM98.106 85.972h-1.918v-8.225h1.918v8.225ZM105.261 85.972h-1.844l-.037-.849c-.295.332-.59.59-.885.738-.295.147-.664.221-1.107.221-.701 0-1.254-.221-1.696-.627-.48-.406-.701-1.143-.701-2.176v-.664c0-.959.258-1.696.737-2.213.48-.516 1.218-.811 2.176-.811.222 0 .48.037.775.11.258.074.516.185.701.37v-2.324h1.918v8.225h-.037Zm-1.918-1.77v-3.136c-.074-.147-.221-.258-.406-.369a1.8 1.8 0 0 0-.701-.147c-.405 0-.7.147-.958.442-.222.295-.332.849-.332 1.66v.443c0 .664.11 1.106.295 1.364.184.258.479.406.885.406.258 0 .516-.074.737-.184.185-.148.369-.295.48-.48ZM108.174 78.337c0 .258-.11.48-.295.664-.184.184-.442.258-.7.258-.259 0-.517-.074-.701-.258a.921.921 0 0 1-.295-.664c0-.258.11-.48.295-.664.184-.184.442-.258.701-.258.295 0 .516.074.7.258a.921.921 0 0 1 .295.664Zm-.036 7.635h-1.918v-6.27h1.918v6.27ZM114.961 85.972h-1.918v-4.39a.527.527 0 0 0-.221-.442c-.148-.147-.369-.221-.664-.221-.258 0-.517.074-.738.147-.221.111-.369.258-.516.406v4.5h-1.918v-6.27h1.844l.037.996c.147-.295.406-.554.811-.775.406-.221.885-.332 1.439-.332.59 0 1.032.148 1.364.48.332.332.48.848.48 1.512v4.389ZM122.19 85.123c0 .885-.332 1.586-.959 2.103-.627.516-1.513.774-2.619.774-.332 0-.701-.037-1.143-.074a4.651 4.651 0 0 1-1.144-.332v-1.217c.332.148.701.258 1.107.295.369.074.701.074.996.074.774 0 1.29-.11 1.549-.369.295-.221.405-.553.405-.922v-.627c-.11.222-.332.443-.664.664-.331.221-.848.369-1.512.369-.737 0-1.327-.221-1.807-.7-.442-.48-.701-1.218-.701-2.324v-.185c0-1.032.259-1.807.775-2.286.516-.517 1.254-.775 2.176-.775.369 0 .701.074.996.148.295.11.553.258.737.479v-.516h1.771v5.421h.037Zm-1.881-2.47v-.407c0-.626-.111-1.069-.295-1.327-.185-.258-.517-.406-.959-.406-.406 0-.738.148-.996.443-.222.295-.369.811-.369 1.475v.148c0 .81.111 1.327.332 1.585.221.296.553.443.959.443.406 0 .737-.147.959-.48.258-.22.369-.737.369-1.475ZM130.34 84.054c0 .59-.221 1.07-.7 1.475-.48.369-1.218.59-2.287.59-.443 0-.848-.037-1.217-.11-.369-.074-.627-.148-.775-.259v-1.106c.185.11.443.221.812.295.332.11.7.148 1.069.148.48 0 .812-.074 1.07-.222.258-.147.369-.332.369-.553 0-.221-.074-.369-.259-.516-.147-.148-.59-.296-1.253-.48-.627-.184-1.07-.406-1.291-.737-.222-.296-.332-.701-.332-1.218 0-.516.221-.922.627-1.29.405-.332 1.069-.517 1.954-.517.406 0 .738.037 1.033.074.295.037.553.147.812.221v.996a5.267 5.267 0 0 0-.775-.221c-.332-.074-.664-.074-.959-.074-.332 0-.627.037-.848.148-.221.11-.332.258-.332.442 0 .221.074.369.258.443.184.073.553.221 1.143.368.738.185 1.254.48 1.549.775.185.406.332.848.332 1.328ZM137.864 83.021c0 .959-.295 1.733-.922 2.25-.627.553-1.475.811-2.545.811-1.069 0-1.918-.258-2.544-.811-.627-.553-.959-1.291-.959-2.25v-.406c0-.922.295-1.66.922-2.212.627-.554 1.475-.849 2.544-.849 1.07 0 1.918.295 2.545.849.627.553.922 1.29.922 2.212v.406h.037Zm-1.991-.147V82.8c0-.849-.148-1.402-.443-1.734-.295-.295-.627-.442-1.033-.442-.442 0-.811.147-1.069.48-.258.331-.406.884-.406 1.696v.074c0 .885.148 1.438.406 1.733.258.295.627.443 1.069.443.406 0 .738-.148 1.033-.406.295-.295.443-.885.443-1.77ZM143.987 85.64c-.074.073-.295.147-.664.258-.369.11-.775.184-1.18.184-1.107 0-1.992-.258-2.656-.774-.664-.517-.996-1.328-.996-2.36v-.259c0-.959.332-1.733.959-2.286.627-.554 1.512-.849 2.619-.849.442 0 .811.037 1.18.148.369.11.59.221.738.332v1.106c-.185-.147-.406-.258-.701-.369a2.545 2.545 0 0 0-.922-.147c-.59 0-1.033.184-1.328.553-.295.369-.442.922-.442 1.549v.11c0 .738.11 1.255.368 1.587.259.295.664.48 1.217.48.369 0 .738-.038 1.107-.149.369-.11.59-.184.738-.294v1.18h-.037ZM146.937 78.337c0 .258-.11.48-.295.664-.184.184-.442.258-.701.258-.258 0-.516-.074-.7-.258a.921.921 0 0 1-.295-.664c0-.258.11-.48.295-.664.184-.184.442-.258.7-.258.295 0 .517.074.701.258a.921.921 0 0 1 .295.664Zm-.037 7.635h-1.918v-6.27h1.918v6.27ZM154.387 83.169h-4.684c0 .7.185 1.18.517 1.475.332.258.811.406 1.364.406.369 0 .738-.037 1.144-.111.405-.074.774-.221 1.18-.369v1.033c-.369.184-.738.295-1.18.406a8.295 8.295 0 0 1-1.476.147c-1.069 0-1.918-.258-2.545-.775-.627-.516-.958-1.254-.958-2.25v-.442a3.1 3.1 0 0 1 .848-2.176c.59-.59 1.438-.922 2.508-.922 1.032 0 1.844.295 2.397.848.553.554.812 1.291.812 2.176.073.295.073.517.073.554Zm-1.807-.886c-.037-.627-.184-1.032-.443-1.327a1.36 1.36 0 0 0-.995-.406c-.369 0-.701.11-.959.406-.295.258-.443.7-.48 1.327h2.877ZM159.108 80.771h-1.807v3.246c0 .332.074.59.184.737.111.148.332.222.701.222.148 0 .332 0 .479-.037.148-.037.296-.074.406-.11v.995c-.221.074-.442.148-.774.184-.295.037-.59.074-.885.074-.627 0-1.144-.184-1.513-.553-.368-.369-.553-.922-.553-1.586v-3.135h-.811v-.922l.885-.037.627-2.102h1.217v2.065h1.807v.96h.037ZM166.558 79.702l-3.983 8.114h-1.586l1.107-2.103-2.693-6.011h1.955l1.733 4.204 1.918-4.204h1.549Z\",\n fill: \"#0086FF\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.502 1.18c-11.249 0-20.359 5.127-20.359 11.47 0 3.725 3.135 7.045 8.004 9.147.922 5.09-2.914 6.897-2.914 6.897s3.467 1.66 8.225-1.733c1.549-1.107 2.323-2.324 2.692-3.098 1.402.184 2.877.258 4.389.258 11.249 0 20.359-5.127 20.359-11.47C41.86 6.306 32.75 1.18 21.502 1.18Z\",\n fill: \"#2FB457\"\n})), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 12.65c0 3.947 2.95 7.524 8.114 9.885.7 4.352-4.13 6.012-4.13 6.012s4.905 4.056 11.137-.664c1.291-.96 2.14-1.955 2.656-2.803 1.254.11 2.471.22 3.725.22 12.06 0 21.502-5.568 21.502-12.65C43.004 5.57 33.562 0 21.502 0 9.442.037 0 5.57 0 12.65Zm10.438 10.66c0-.554-.037-1.107-.148-1.734l-.11-.59-.554-.258c-4.573-1.992-7.302-4.98-7.302-8.078 0-5.606 8.814-10.326 19.215-10.326 10.4 0 19.215 4.72 19.215 10.326 0 5.606-8.814 10.327-19.215 10.327-1.402 0-2.84-.073-4.241-.258l-.812-.11-.369.737c-.332.664-.996 1.697-2.323 2.656-1.992 1.438-3.688 1.844-4.905 1.918.848-1.07 1.549-2.582 1.549-4.61Z\",\n fill: \"#fff\"\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.502 1.18c-11.249 0-20.359 5.127-20.359 11.47 0 3.725 3.135 7.045 8.004 9.147.922 5.09-3.025 6.786-3.025 6.786s3.578 1.808 8.299-1.622c1.549-1.107 2.323-2.324 2.692-3.098 1.402.184 2.877.258 4.39.258 11.248 0 20.358-5.127 20.358-11.47 0-6.344-9.11-11.47-20.359-11.47Z\",\n fill: \"#2FB457\"\n})));\nexport default SvgLogo;","import { shouldAnimate, transition } from '@helpers/animate';\r\nimport brand from '@helpers/brand';\r\nimport fonts from '@helpers/fonts';\r\nimport { ButtonReset } from '@helpers/global';\r\nimport { Device, from, until } from '@helpers/media';\r\nimport { contentStyles, paragraphSmall } from '@helpers/typography';\r\nimport { DotsStyles } from '@stories/Components/Misc/Carousels/Carousel/Dots/Dots.styles';\r\nimport { ContentType } from '@stories/Components/Misc/SectionWrapper/SectionWrapper';\r\nimport styled, { css } from 'styled-components';\r\nconst Container = styled.div `\r\n --speed: 10s;\r\n --itemGap: 20px;\r\n\r\n display: flex;\r\n align-items: center;\r\n white-space: nowrap;\r\n background-color: ${brand.blue.navy};\r\n height: var(--announcementHeight);\r\n overflow: hidden;\r\n\r\n @media ${until(Device.TabletLarge)} {\r\n padding-left: var(--sitePadding);\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n gap: 24px;\r\n grid-column: 2 / span 1;\r\n }\r\n`;\r\nconst AnnouncementTrack = styled.div `\r\n @media ${until(Device.TabletLarge)} {\r\n display: flex;\r\n gap: var(--itemGap);\r\n\r\n ${shouldAnimate(css `\r\n animation: scrolling var(--speed) linear infinite;\r\n `)}\r\n\r\n @keyframes scrolling {\r\n 0% {\r\n transform: translateX(0);\r\n }\r\n\r\n 100% {\r\n transform: translateX(calc(-50% - (var(--itemGap) * 0.5)));\r\n }\r\n }\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n display: grid;\r\n }\r\n`;\r\nconst AnnouncementItem = styled.div `\r\n ${contentStyles};\r\n\r\n --linkColour: ${brand.green.default};\r\n\r\n position: relative;\r\n display: flex;\r\n gap: 8px;\r\n align-items: center;\r\n justify-content: center;\r\n\r\n p {\r\n ${paragraphSmall};\r\n ${fonts.proximaNova.medium};\r\n\r\n margin: 0;\r\n color: ${brand.global.white};\r\n\r\n a {\r\n ${fonts.proximaNova.bold};\r\n\r\n color: var(--linkColour);\r\n }\r\n }\r\n\r\n &[data-type=${ContentType.Intermediaries}] {\r\n --linkColour: ${brand.green.light};\r\n }\r\n\r\n &[data-type=${ContentType.Savings}] {\r\n --linkColour: ${brand.blue.light};\r\n }\r\n\r\n @media ${until(Device.TabletLarge)} {\r\n &::before {\r\n content: '\\\\2022';\r\n position: absolute;\r\n top: 50%;\r\n left: 0;\r\n width: var(--itemGap);\r\n text-align: center;\r\n transform: translate(-100%, -50%);\r\n color: var(--linkColour);\r\n }\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n ${transition('opacity', 1)};\r\n\r\n grid-area: 1 / 1 / 1 / 1;\r\n\r\n &[data-duplicate] {\r\n display: none;\r\n }\r\n\r\n &[data-active='false'] {\r\n opacity: 0;\r\n pointer-events: none;\r\n }\r\n }\r\n`;\r\nconst AnnouncementControls = styled.div `\r\n --dotsWidth: calc(100% - 28px);\r\n --width: 4ch;\r\n\r\n display: none;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n display: grid;\r\n color: ${brand.global.white};\r\n grid-template-columns: 24px 1fr 24px;\r\n\r\n ${DotsStyles.Dots} {\r\n grid-column: 1 / span 3;\r\n min-width: var(--dotsWidth);\r\n margin: 0 auto;\r\n width: var(--dotsWidth);\r\n }\r\n }\r\n`;\r\nconst AnnouncementButton = styled.button `\r\n ${ButtonReset};\r\n ${transition('transform')};\r\n\r\n display: grid;\r\n place-content: center;\r\n width: 24px;\r\n height: 24px;\r\n color: currentColor;\r\n\r\n > svg {\r\n display: block;\r\n width: 10px;\r\n transform: rotate(-90deg);\r\n }\r\n\r\n &:focus-visible {\r\n outline: auto;\r\n outline-offset: 2px;\r\n outline-width: 1px;\r\n outline-style: solid;\r\n }\r\n\r\n &:nth-of-type(1) {\r\n transform: scale(-1);\r\n }\r\n\r\n &:hover {\r\n transform: scale(1.15);\r\n }\r\n\r\n &:nth-of-type(1):hover {\r\n transform: scale(-1.15);\r\n }\r\n`;\r\nconst AnnouncementCount = styled.p `\r\n ${paragraphSmall};\r\n\r\n margin: 0;\r\n min-width: var(--width);\r\n text-align: center;\r\n`;\r\nconst AnnouncementBarStyles = {\r\n Container,\r\n AnnouncementButton,\r\n AnnouncementControls,\r\n AnnouncementCount,\r\n AnnouncementItem,\r\n AnnouncementTrack,\r\n};\r\nexport default AnnouncementBarStyles;\r\n","import { getSystemIcon, SystemIcon } from '@helpers/icons';\r\nimport { clamp, tabIndexHTML } from '@helpers/utils';\r\nimport { useAutoplay } from '@hooks/useAutoplay';\r\nimport Dots from '@stories/Components/Misc/Carousels/Carousel/Dots/Dots';\r\nimport * as React from 'react';\r\nimport S from './AnnouncementBar.styles';\r\nconst AnnouncementBar = (props) => {\r\n const { activeIndex, setActiveIndex, setPaused } = useAutoplay({\r\n enabled: true,\r\n duration: props.duration ?? 5000,\r\n items: props.items ?? [],\r\n });\r\n return (React.createElement(S.Container, null, props.items && (React.createElement(React.Fragment, null,\r\n React.createElement(S.AnnouncementControls, null,\r\n React.createElement(S.AnnouncementButton, { onClick: () => {\r\n setPaused(true);\r\n if (activeIndex === 0) {\r\n return setActiveIndex((props.items?.length ?? 0) - 1);\r\n }\r\n setActiveIndex(clamp(activeIndex - 1, (props.items?.length ?? 0) - 1));\r\n }, \"aria-label\": props.translations?.['global.announcements.previous'] }, getSystemIcon(SystemIcon.ChevronDown)),\r\n React.createElement(S.AnnouncementCount, { style: {\r\n '--width': props.items.length > 10 ? `${6}ch` : undefined,\r\n } },\r\n activeIndex + 1,\r\n \" / \",\r\n props.items.length),\r\n React.createElement(S.AnnouncementButton, { onClick: () => {\r\n setPaused(true);\r\n if (activeIndex === (props.items?.length ?? 0) - 1) {\r\n return setActiveIndex(0);\r\n }\r\n setActiveIndex(clamp(activeIndex + 1, (props.items?.length ?? 0) - 1));\r\n }, \"aria-label\": props.translations?.['global.announcements.next'] }, getSystemIcon(SystemIcon.ChevronDown)),\r\n React.createElement(Dots, { activeIndex: activeIndex, itemCount: props.items.length })),\r\n React.createElement(S.AnnouncementTrack, { style: {\r\n '--speed': `${props.speed ?? props.items.length * 8}s`,\r\n } },\r\n props.items.map((item, i) => (React.createElement(S.AnnouncementItem, { key: item.id, \"data-type\": item.type, dangerouslySetInnerHTML: { __html: tabIndexHTML(item.text, activeIndex === i) }, \"data-active\": activeIndex === i }))),\r\n props.items.map((item) => (React.createElement(S.AnnouncementItem, { key: `${item.id}-duplicate`, \"data-type\": item.type, dangerouslySetInnerHTML: { __html: tabIndexHTML(item.text, false) }, \"data-duplicate\": true }))))))));\r\n};\r\nexport default AnnouncementBar;\r\n","import * as React from 'react';\r\nexport function useAutoplay(params) {\r\n const refInterval = React.useRef();\r\n const [activeIndex, setActiveIndex] = React.useState(0);\r\n const [paused, setPaused] = React.useState(params.duration === 0);\r\n const activeItem = params.items[activeIndex];\r\n const activeItemDuration = activeItem.duration ?? params.duration;\r\n React.useEffect(() => {\r\n if (params.enabled && !paused) {\r\n refInterval.current = window.setTimeout(update, activeItemDuration);\r\n }\r\n return cleanup;\r\n function update() {\r\n if (paused) {\r\n return;\r\n }\r\n let newIndex = activeIndex + 1;\r\n if (newIndex === params.items.length) {\r\n newIndex = 0;\r\n }\r\n setActiveIndex(newIndex);\r\n }\r\n function cleanup() {\r\n if (refInterval.current) {\r\n window.clearInterval(refInterval.current);\r\n }\r\n }\r\n }, [activeIndex, activeItemDuration, paused, params.enabled]);\r\n return {\r\n activeIndex,\r\n duration: activeItemDuration,\r\n setActiveIndex,\r\n paused,\r\n setPaused,\r\n };\r\n}\r\n","export function isDropdownLink(link) {\r\n return link.variant !== 'link';\r\n}\r\n","import { transition } from '@helpers/animate';\r\nimport brand from '@helpers/brand';\r\nimport { fluid } from '@helpers/fluid';\r\nimport fonts from '@helpers/fonts';\r\nimport { ButtonReset } from '@helpers/global';\r\nimport { Device, from, until } from '@helpers/media';\r\nimport scrollbars from '@helpers/scrollbars';\r\nimport { link, paragraphSmall } from '@helpers/typography';\r\nimport { ContentType } from '@stories/Components/Misc/SectionWrapper/SectionWrapper';\r\nimport { rgba } from 'polished';\r\nimport styled, { css } from 'styled-components';\r\nimport NavigationStyles from '../Navigation.styles';\r\nconst dropdownBaseStyles = css `\r\n ${transition('opacity, transform', 0.5)};\r\n\r\n display: flex;\r\n flex-direction: column;\r\n gap: ${fluid(22, 24)};\r\n position: absolute;\r\n top: 0;\r\n z-index: 1;\r\n left: 0;\r\n width: 100%;\r\n padding: var(--dropdownPadTop) var(--dropdownPadX) var(--dropdownPadBottom);\r\n background-color: ${brand.global.white};\r\n max-height: calc(100dvh - var(--headerHeight) - var(--tabsHeight) - 16px);\r\n border-radius: var(--dropdownRadius);\r\n overflow: auto;\r\n pointer-events: auto;\r\n overscroll-behavior: contain;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n z-index: -2; // Ensure the dropdown slides out from beneath the main body of the header\r\n max-height: calc(100dvh - var(--headerHeight) - 32px);\r\n }\r\n`;\r\nconst dropdownHiddenStyles = css `\r\n opacity: 0;\r\n pointer-events: none;\r\n transform: translateX(33%);\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n transform: translateY(-33%);\r\n }\r\n`;\r\nconst Container = styled.nav `\r\n --dropdownPadTop: ${fluid(12, 22)};\r\n --dropdownPadX: var(--sitePadding);\r\n --dropdownPadBottom: ${fluid(20, 34)};\r\n --dropdownRadius: 0px 0px ${fluid(20, 40)} 0px;\r\n\r\n color: ${brand.blue.navy};\r\n background-color: ${brand.global.white};\r\n`;\r\nconst Links = styled.ul `\r\n display: flex;\r\n flex-direction: column;\r\n gap: ${fluid(22, 40)};\r\n\r\n @media ${until(Device.TabletLarge)} {\r\n ${dropdownBaseStyles};\r\n ${transition('opacity, transform, background-color', 0.5)};\r\n\r\n top: calc(var(--headerHeight) + var(--tabsHeight));\r\n z-index: -2; // Ensure the dropdown slides out from beneath the main body of the header\r\n overflow: initial;\r\n\r\n ${NavigationStyles.Container}[data-menu-open='false'] & {\r\n ${dropdownHiddenStyles};\r\n\r\n transform: translateY(-33%);\r\n }\r\n\r\n li {\r\n width: 100%;\r\n }\r\n\r\n &:has(${() => TopLevelLink}[aria-expanded='true']) {\r\n background-color: transparent;\r\n pointer-events: none;\r\n\r\n ${() => TopLevelLink} {\r\n opacity: 0;\r\n }\r\n }\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n flex-direction: row;\r\n justify-content: center;\r\n height: 100%;\r\n\r\n li {\r\n display: inline-flex;\r\n height: 100%;\r\n\r\n &:has(${() => Dropdown}[data-variant='simple']) {\r\n position: relative;\r\n }\r\n }\r\n }\r\n`;\r\nconst TopLevelLink = styled.a `\r\n ${ButtonReset};\r\n ${fonts.proximaNova.bold};\r\n\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n gap: 14px;\r\n color: currentColor;\r\n font-size: 18px;\r\n line-height: 26px;\r\n text-decoration: none;\r\n text-align: left;\r\n\r\n svg {\r\n display: block;\r\n flex-shrink: 0;\r\n }\r\n\r\n /* Mobile click styles - button should mimic press */\r\n @media ${until(Device.TabletLarge)} {\r\n ${transition('transform, opacity', 0.15)};\r\n\r\n width: 100%;\r\n\r\n &:active {\r\n transform: translateY(1.5px);\r\n }\r\n\r\n svg {\r\n transform: rotate(-90deg);\r\n width: 13px;\r\n }\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n position: relative;\r\n height: 100%;\r\n font-size: ${fluid(14, 18)};\r\n\r\n svg {\r\n ${transition('transform')};\r\n\r\n width: ${fluid(8, 10)};\r\n color: ${brand.green.default};\r\n }\r\n\r\n &::after {\r\n ${transition('transform')};\r\n\r\n content: '';\r\n position: absolute;\r\n bottom: 0;\r\n left: 0;\r\n height: 5px;\r\n width: 100%;\r\n background-color: currentColor;\r\n transform: scaleX(0);\r\n }\r\n\r\n &:focus-visible,\r\n &:hover,\r\n &[aria-expanded='true'] {\r\n &::after {\r\n transform: scaleX(1);\r\n }\r\n }\r\n\r\n &[aria-expanded='true'] svg {\r\n transform: rotate(180deg);\r\n }\r\n }\r\n`;\r\nconst Dropdown = styled.div `\r\n ${dropdownBaseStyles};\r\n\r\n li:has(${TopLevelLink}[aria-expanded='false']) & {\r\n ${dropdownHiddenStyles};\r\n }\r\n\r\n > ul,\r\n > ul > li {\r\n display: contents;\r\n\r\n > a,\r\n > button {\r\n ${transition('opacity', 0.5)};\r\n }\r\n }\r\n\r\n @media ${until(Device.TabletLarge)} {\r\n overflow: hidden;\r\n\r\n > ul {\r\n display: flex;\r\n flex-direction: column;\r\n gap: inherit;\r\n overflow: auto;\r\n overscroll-behavior: contain;\r\n padding-bottom: 1px; // Prevents a slight scroll on the dropdown\r\n }\r\n\r\n &:has(${() => ColumnLinks}[data-active='true']) {\r\n background-color: transparent;\r\n pointer-events: none;\r\n overflow: visible;\r\n\r\n > ul > li > a,\r\n > ul > li > button,\r\n ${() => CardWrapper} {\r\n opacity: 0;\r\n }\r\n }\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n --dropdownPadX: ${fluid(16, 20)};\r\n\r\n top: 100%;\r\n box-shadow: 0px 14px 16px 2px ${rgba(brand.global.black, 0.1)};\r\n gap: 18px;\r\n\r\n &[data-variant='simple'] {\r\n white-space: nowrap;\r\n width: auto;\r\n min-width: 362px;\r\n padding-right: calc(var(--dropdownPadX) * 2);\r\n }\r\n\r\n &[data-variant='complex'] {\r\n --dropdownPadBottom: ${fluid(34, 84)};\r\n\r\n display: grid;\r\n grid-template-columns: 1fr 1fr 1fr 1fr 2fr;\r\n grid-template-rows: min-content min-content min-content;\r\n gap: 26px 18px;\r\n }\r\n }\r\n\r\n @media ${from(Device.DesktopSmall)} {\r\n ${scrollbars};\r\n }\r\n\r\n /* Dropdown colour definitions */\r\n --iconBackground: ${brand.green.default};\r\n --iconColour: ${brand.global.white};\r\n --cardWrapperBackground: ${brand.green.light};\r\n --cardBackground: ${brand.green.gradient};\r\n --cardIconColour: ${brand.green.default};\r\n\r\n &[data-type=${ContentType.Intermediaries}] {\r\n --iconBackground: ${brand.green.light};\r\n --iconColour: ${brand.blue.navy};\r\n --cardBackground: ${brand.blue.navy};\r\n }\r\n\r\n &[data-type=${ContentType.Savings}] {\r\n --direction: 0deg;\r\n --iconBackground: ${brand.blue.default};\r\n --cardWrapperBackground: ${brand.blue.light};\r\n --cardBackground: ${brand.blue.gradient};\r\n --cardIconColour: ${brand.blue.default};\r\n }\r\n`;\r\nconst PrimaryPageLink = styled.a `\r\n ${fonts.proximaNova.bold};\r\n\r\n font-size: ${fluid(18, 30)};\r\n line-height: 1.2;\r\n display: inline-flex;\r\n align-items: center;\r\n gap: ${fluid(14, 22)};\r\n color: currentColor;\r\n text-decoration: none;\r\n margin-bottom: -4px;\r\n\r\n span {\r\n ${transition('transform')};\r\n\r\n display: grid;\r\n place-content: center;\r\n width: ${fluid(20, 28)};\r\n height: ${fluid(20, 28)};\r\n background-color: var(--iconBackground);\r\n border-radius: 5000px;\r\n }\r\n\r\n svg {\r\n display: block;\r\n width: ${fluid(13, 18)};\r\n color: var(--iconColour);\r\n }\r\n\r\n /* Mobile click styles - button should mimic press */\r\n @media ${until(Device.TabletLarge)} {\r\n ${transition('transform', 0.15)};\r\n\r\n &:active {\r\n transform: translateY(1.5px);\r\n }\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n margin-bottom: ${fluid(4, 8)};\r\n grid-column: 1 / span 4;\r\n\r\n ${Dropdown}[data-variant='complex'] & {\r\n margin-bottom: 0;\r\n }\r\n\r\n &:focus-visible,\r\n &:hover {\r\n span {\r\n transform: translateX(4px);\r\n }\r\n }\r\n }\r\n`;\r\nconst ColumnLinks = styled.ul `\r\n display: flex;\r\n flex-direction: column;\r\n\r\n @media ${until(Device.TabletLarge)} {\r\n ${dropdownBaseStyles};\r\n\r\n z-index: 2;\r\n\r\n &[data-active='false'] {\r\n ${dropdownHiddenStyles};\r\n }\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n gap: 13px;\r\n margin-bottom: auto;\r\n }\r\n`;\r\nconst CardWrapper = styled.ul `\r\n display: grid;\r\n grid-template-columns: repeat(2, 1fr);\r\n gap: ${fluid(10, 24)};\r\n\r\n > li {\r\n display: contents;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n background-color: var(--cardWrapperBackground);\r\n padding: ${fluid(26, 32)} ${fluid(18, 26)};\r\n margin: calc(var(--dropdownPadTop) * -1) calc(var(--dropdownPadX) * -1)\r\n calc(var(--dropdownPadBottom) * -1) 0;\r\n grid-column: 5 / span 1;\r\n grid-row: 1 / -1;\r\n border-radius: var(--dropdownRadius);\r\n place-content: center;\r\n }\r\n`;\r\nconst ColumnLink = styled.a `\r\n ${ButtonReset};\r\n ${fonts.proximaNova.regular};\r\n ${link};\r\n\r\n font-size: 16px;\r\n line-height: 24px;\r\n color: currentColor;\r\n text-decoration-color: transparent;\r\n text-align: left;\r\n\r\n button& {\r\n ${fonts.proximaNova.bold};\r\n\r\n display: inline-flex;\r\n gap: 14px;\r\n align-items: center;\r\n justify-content: space-between;\r\n\r\n svg {\r\n display: block;\r\n transform: rotate(-90deg);\r\n width: 13px;\r\n }\r\n }\r\n\r\n &[data-heading='true'],\r\n ${Dropdown}[data-variant='simple'] & {\r\n ${fonts.proximaNova.bold};\r\n\r\n font-size: 18px;\r\n }\r\n\r\n a& {\r\n &:focus-visible,\r\n &:hover {\r\n text-decoration-color: currentColor;\r\n }\r\n\r\n /* Mobile click styles - button should mimic press */\r\n @media ${until(Device.TabletLarge)} {\r\n ${transition('transform', 0.15)};\r\n\r\n &:active {\r\n transform: translateY(1.5px);\r\n }\r\n }\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n button& {\r\n display: none;\r\n }\r\n\r\n &[data-heading='true'] {\r\n margin-bottom: 7px;\r\n }\r\n }\r\n`;\r\nconst Card = styled.a `\r\n ${transition('transform, opacity')};\r\n\r\n ${paragraphSmall};\r\n ${fonts.proximaNova.bold};\r\n\r\n --borderRadius: ${fluid(10, 20)};\r\n\r\n display: flex;\r\n align-items: center;\r\n flex-direction: column;\r\n gap: ${fluid(4, 10)};\r\n padding: ${fluid(12, 18)} 18px;\r\n background: var(--cardBackground);\r\n border-radius: var(--borderRadius) var(--borderRadius) var(--borderRadius) 0px;\r\n text-decoration: none;\r\n text-align: center;\r\n color: ${brand.global.white};\r\n margin: 0;\r\n\r\n span {\r\n display: grid;\r\n place-content: center;\r\n border-radius: 5000px;\r\n width: ${fluid(26, 70)};\r\n height: ${fluid(26, 70)};\r\n background-color: ${brand.global.beige};\r\n }\r\n\r\n svg {\r\n display: block;\r\n width: ${fluid(20, 40)};\r\n color: var(--cardIconColour);\r\n }\r\n\r\n &:focus-visible {\r\n outline: auto;\r\n outline-offset: 2px;\r\n outline-width: 1px;\r\n outline-style: solid;\r\n outline-color: var(--iconBackground);\r\n }\r\n\r\n /* Mobile click styles - button should mimic press */\r\n @media ${until(Device.TabletLarge)} {\r\n &:active {\r\n transform: translateY(1.5px);\r\n }\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n &:focus-visible,\r\n &:hover {\r\n opacity: 0.8;\r\n transform: translateY(-4px);\r\n }\r\n }\r\n`;\r\nconst BackButton = styled.button `\r\n ${ButtonReset};\r\n ${fonts.proximaNova.semiBold};\r\n\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 8px;\r\n color: currentColor;\r\n text-align: left;\r\n font-size: 12px;\r\n line-height: 24px;\r\n margin-bottom: -14px;\r\n\r\n &:active {\r\n transform: translateY(1.5px);\r\n }\r\n\r\n svg {\r\n transform: rotate(90deg);\r\n width: 13px;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n display: none;\r\n }\r\n`;\r\nconst NavigationLinksStyles = {\r\n Container,\r\n Links,\r\n TopLevelLink,\r\n Dropdown,\r\n CardWrapper,\r\n PrimaryPageLink,\r\n Card,\r\n ColumnLinks,\r\n ColumnLink,\r\n BackButton,\r\n};\r\nexport default NavigationLinksStyles;\r\n","import { getSystemIcon, SystemIcon } from '@helpers/icons';\r\nimport { Device, until } from '@helpers/media';\r\nimport { clamp } from '@helpers/utils';\r\nimport useMedia from '@hooks/useMedia';\r\nimport { useOutsideClick } from '@hooks/useOutsideClick';\r\nimport * as React from 'react';\r\nimport { isDropdownLink } from '../types';\r\nimport S from './NavigationLinks.styles';\r\nconst NavigationLinks = (props) => {\r\n const itemsRef = React.useRef([]);\r\n const containerRef = useOutsideClick(() => {\r\n props.setActive(-1);\r\n });\r\n const [activeColumn, setActiveColumn] = React.useState(-1);\r\n const isMobile = useMedia([until(Device.TabletLarge)], [true], false);\r\n if (!props.links || props.links.length === 0) {\r\n return null;\r\n }\r\n return (React.createElement(S.Container, { id: \"main-nav\", ref: containerRef, \"aria-label\": props.translations?.['global.navigation.label'] ?? '', onMouseLeave: () => {\r\n if (isMobile)\r\n return;\r\n props.setActive(-1);\r\n } },\r\n React.createElement(S.Links, { role: \"menubar\" }, props.links?.map((link, i) => (React.createElement(\"li\", { key: link.id, role: \"none\" },\r\n React.createElement(S.TopLevelLink, { id: i === 0 ? 'nav-first-link' : undefined, role: \"menuitem\", ref: (el) => (itemsRef.current[i] = el), href: link.url, target: link.target, ...(isDropdownLink(link) && link.children && link.children.length > 0\r\n ? {\r\n 'aria-haspopup': 'menu',\r\n 'aria-expanded': props.active === i,\r\n onClick: (e) => {\r\n if (isMobile) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n props.setActive(props.active === i ? -1 : i);\r\n }\r\n },\r\n onMouseEnter: () => {\r\n if (isMobile) {\r\n return;\r\n }\r\n props.setActive(i);\r\n },\r\n onFocus: () => {\r\n if (isMobile) {\r\n return;\r\n }\r\n props.setActive(i);\r\n },\r\n }\r\n : {\r\n onMouseEnter: () => {\r\n if (isMobile) {\r\n return;\r\n }\r\n props.setActive(-1);\r\n },\r\n onFocus: () => {\r\n if (isMobile) {\r\n return;\r\n }\r\n props.setActive(-1);\r\n },\r\n }), onKeyDown: (event) => {\r\n const maxIndex = props.links.length - 1;\r\n const nextIndex = i === maxIndex ? 0 : clamp(i + 1, maxIndex);\r\n const prevIndex = i === 0 ? maxIndex : clamp(i - 1, maxIndex);\r\n switch (event.key) {\r\n case 'ArrowDown':\r\n case 'Enter':\r\n if (isDropdownLink(link) && link.children && link.children.length > 0) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n props.setActive(i);\r\n }\r\n break;\r\n case 'Escape':\r\n case 'ArrowUp':\r\n if (isDropdownLink(link) && link.children && link.children.length > 0) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n props.setActive(-1);\r\n }\r\n break;\r\n case 'ArrowRight':\r\n event.preventDefault();\r\n event.stopPropagation();\r\n itemsRef.current[nextIndex]?.focus();\r\n break;\r\n case 'ArrowLeft':\r\n event.preventDefault();\r\n event.stopPropagation();\r\n itemsRef.current[prevIndex]?.focus();\r\n break;\r\n case 'Home':\r\n event.preventDefault();\r\n event.stopPropagation();\r\n itemsRef.current[0]?.focus();\r\n break;\r\n case 'End':\r\n event.preventDefault();\r\n event.stopPropagation();\r\n itemsRef.current[maxIndex]?.focus();\r\n break;\r\n default:\r\n break;\r\n }\r\n } },\r\n link.text,\r\n isDropdownLink(link) && link.children && link.children.length > 0 ? (React.createElement(React.Fragment, null, getSystemIcon(SystemIcon.ChevronDown))) : null),\r\n isDropdownLink(link) && link.children && link.children.length > 0 ? (React.createElement(S.Dropdown, { role: \"none\", \"data-type\": link.type, \"data-variant\": link.variant },\r\n React.createElement(\"ul\", { role: \"menu\", \"aria-label\": link.text },\r\n React.createElement(\"li\", { role: \"none\" },\r\n React.createElement(S.BackButton, { onClick: () => props.setActive(-1), role: \"menuitem\" },\r\n getSystemIcon(SystemIcon.ChevronDown),\r\n ' ',\r\n props.translations?.['global.navigation.back'])),\r\n link.url ? (React.createElement(\"li\", { role: \"none\" },\r\n React.createElement(S.PrimaryPageLink, { href: link.url, target: link.target, role: \"menuitem\", tabIndex: props.active === i ? undefined : -1, onKeyDown: (event) => handleKeyPress(event, i) },\r\n link.text,\r\n \" \",\r\n React.createElement(\"span\", null, getSystemIcon(SystemIcon.ArrowRight))))) : null,\r\n link.variant === 'complex' ? (React.createElement(React.Fragment, null,\r\n React.createElement(\"li\", { role: \"none\" },\r\n React.createElement(S.CardWrapper, { role: \"menu\" }, link.cards?.map((card, j) => (React.createElement(\"li\", { role: \"none\", key: `${link.id}-card-${j}` },\r\n React.createElement(S.Card, { href: card.url, target: card.target, role: \"menuitem\", tabIndex: props.active === i ? undefined : -1, onKeyDown: (event) => handleKeyPress(event, i) },\r\n React.createElement(\"span\", null, getSystemIcon(card.icon ?? SystemIcon.None)),\r\n ' ',\r\n card.text)))))),\r\n link.children.map((column, j) => (React.createElement(\"li\", { role: \"none\", key: `${link.id}-column-${j}` },\r\n React.createElement(S.ColumnLink, { role: \"menuitem\", as: \"button\", onClick: () => {\r\n setActiveColumn(j);\r\n const dropdown = itemsRef.current[i]?.nextElementSibling;\r\n // Ensure the dropdown is scrolled to the top when a child column is opened on mobile\r\n if (dropdown) {\r\n dropdown.scrollTop = 0;\r\n }\r\n }, \"aria-expanded\": activeColumn === j && i === props.active, onKeyDown: (event) => handleKeyPress(event, i) },\r\n column.text,\r\n \" \",\r\n getSystemIcon(SystemIcon.ChevronDown)),\r\n React.createElement(S.ColumnLinks, { role: \"menu\", \"aria-labelledby\": `${link.id}-${j}-label`, \"data-active\": activeColumn === j && i === props.active },\r\n React.createElement(\"li\", { role: \"none\" },\r\n React.createElement(S.BackButton, { role: \"menuitem\", onClick: () => setActiveColumn(-1) },\r\n getSystemIcon(SystemIcon.ChevronDown),\r\n ' ',\r\n props.translations?.['global.navigation.back'])),\r\n React.createElement(\"li\", { role: \"none\", id: `${link.id}-${j}-label` },\r\n React.createElement(S.ColumnLink, { \"data-heading\": true, ...(column.url\r\n ? {\r\n href: column.url,\r\n target: column.target,\r\n onKeyDown: (event) => handleKeyPress(event, i),\r\n }\r\n : { as: 'span' }), role: \"menuitem\", tabIndex: !isMobile\r\n ? props.active === i\r\n ? undefined\r\n : -1\r\n : activeColumn === j && props.active === i\r\n ? undefined\r\n : -1 }, column.text)),\r\n column.children?.map((child, k) => (React.createElement(\"li\", { role: \"none\", key: `${link.id}-child-${k}` },\r\n React.createElement(S.ColumnLink, { href: child.url, target: child.target, role: \"menuitem\", tabIndex: !isMobile\r\n ? props.active === i\r\n ? undefined\r\n : -1\r\n : activeColumn === j && props.active === i\r\n ? undefined\r\n : -1, onKeyDown: (event) => handleKeyPress(event, i) }, child.text)))))))))) : (React.createElement(React.Fragment, null, link.children.map((child, j) => (React.createElement(\"li\", { role: \"none\", key: `${link.id}-child-${j}` },\r\n React.createElement(S.ColumnLink, { href: child.url, target: child.target, role: \"menuitem\", tabIndex: props.active === i ? undefined : -1, onKeyDown: (event) => handleKeyPress(event, i) }, child.text))))))))) : null))))));\r\n function handleKeyPress(event, index) {\r\n switch (event.key) {\r\n case 'Escape':\r\n case 'ArrowUp':\r\n event.preventDefault();\r\n event.stopPropagation();\r\n props.setActive(-1);\r\n itemsRef.current[index]?.focus();\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n};\r\nexport default NavigationLinks;\r\n","import { getSystemIcon, SystemIcon } from '@helpers/icons';\r\nimport { withMotionMax } from '@hoc/withMotionMax';\r\nimport { useScrollPeek } from '@hooks/useScrollPeek';\r\nimport SvgLogo from '@img/logo.svg';\r\nimport Searchbox from '@stories/Components/Misc/Forms/Searchbox/Searchbox';\r\nimport SkipLink from '@stories/Components/Misc/SkipLink/SkipLink';\r\nimport * as React from 'react';\r\nimport { useCookies } from 'react-cookie';\r\nimport AnnouncementBar from './AnnouncementBar/AnnouncementBar';\r\nimport S from './Navigation.styles';\r\nimport NavigationLinks from './NavigationLinks/NavigationLinks';\r\nconst Navigation = (props) => {\r\n const cookieName = props.cookieName ?? 'navigation-cookie';\r\n const [, setCookie] = useCookies([cookieName]);\r\n const [menuOpen, setMenuOpen] = React.useState(false);\r\n const [searchOpen, setSearchOpen] = React.useState(false);\r\n const [searchSuggestionsVisible, setSearchSuggestionsVisible] = React.useState(false);\r\n const [activeMenu, setActiveMenu] = React.useState(-1);\r\n const isPeeking = useScrollPeek({ threshold: 100 });\r\n return (React.createElement(React.Fragment, null,\r\n React.createElement(S.GlobalStyles, null),\r\n React.createElement(SkipLink, { type: 'header', translations: props.translations }),\r\n React.createElement(S.Container, { id: \"header\", \"data-reduced\": !isPeeking, \"data-menu-open\": menuOpen },\r\n React.createElement(S.Inner, null,\r\n renderNavigationTabs(false),\r\n React.createElement(AnnouncementBar, { items: props.announcementItems, translations: props.translations, duration: props.announcementDuration, speed: props.announcementSpeed }),\r\n React.createElement(S.Main, null,\r\n React.createElement(S.Logo, { href: \"/\", \"aria-label\": props.translations?.['global.navigation.home'] },\r\n React.createElement(SvgLogo, null)),\r\n React.createElement(S.CtaWrapper, null,\r\n React.createElement(S.CtaLink, { as: \"button\", onClick: () => {\r\n setSearchOpen(!searchOpen);\r\n setMenuOpen(false);\r\n }, \"aria-controls\": \"nav-search\", \"aria-expanded\": searchOpen, \"data-type\": props.searchCtaType, \"data-mobile\": true },\r\n React.createElement(\"span\", null,\r\n getSystemIcon(SystemIcon.Search),\r\n getSystemIcon(SystemIcon.Close)),\r\n React.createElement(\"span\", null, searchOpen\r\n ? props.translations?.['global.search.close']\r\n : props.translations?.['global.search.open'])),\r\n React.createElement(S.SearchBoxContainer, { id: \"nav-search\", \"data-open\": searchOpen },\r\n React.createElement(Searchbox, { ...props.searchbox, idPrefix: \"navigation-\", translations: props.translations, onSuggestionsVisible: (visible) => setSearchSuggestionsVisible(visible), buttonType: props.searchCtaType, onClear: () => {\r\n setSearchSuggestionsVisible(false);\r\n setSearchOpen(false);\r\n } })),\r\n props.ctas?.map((cta) => (React.createElement(S.CtaLink, { key: cta.id, href: cta.url, target: cta.target, \"data-type\": cta.type, \"data-style\": cta.style, \"data-mobile\": false },\r\n React.createElement(\"span\", null, getSystemIcon(cta.icon ?? SystemIcon.None)),\r\n React.createElement(\"span\", null, cta.text)))),\r\n React.createElement(S.MenuButton, { onClick: () => {\r\n setMenuOpen(!menuOpen);\r\n setSearchOpen(false);\r\n }, \"aria-controls\": \"main-nav\", \"aria-expanded\": menuOpen, \"aria-label\": menuOpen\r\n ? props.translations?.['global.navigation.close']\r\n : props.translations?.['global.navigation.open'] },\r\n getSystemIcon(SystemIcon.Menu),\r\n getSystemIcon(SystemIcon.Close))),\r\n React.createElement(NavigationLinks, { active: activeMenu, links: props.links, setActive: setActiveMenu, translations: props.translations })),\r\n renderNavigationTabs(true))),\r\n React.createElement(S.Backdrop, { \"aria-label\": searchOpen || searchSuggestionsVisible\r\n ? props.translations?.['global.search.close']\r\n : props.translations?.['global.navigation.close'], \"data-visible\": menuOpen || searchOpen || searchSuggestionsVisible || activeMenu !== -1, onClick: () => {\r\n setMenuOpen(false);\r\n setSearchOpen(false);\r\n } })));\r\n function renderNavigationTabs(mobile) {\r\n return (React.createElement(S.NavigationTabs, { \"data-mobile\": !!mobile, role: \"tablist\" }, props.navigationTabs.map((tab) => (React.createElement(S.NavigationTab, { key: tab.id, href: tab.url, \"aria-selected\": tab.active, role: \"tab\", onClick: () => setCookie(cookieName, tab.id, { path: '/', maxAge: 24 * 60 * 60 }) }, tab.text)))));\r\n }\r\n};\r\nexport default withMotionMax(Navigation);\r\n","import throttle from 'lodash/throttle';\r\nimport * as React from 'react';\r\nexport function useScrollPeek(params = {}) {\r\n const [isPeeking, setIsPeeking] = React.useState(true);\r\n const lastScrollY = React.useRef(0);\r\n const handleScroll = React.useCallback(throttle(() => {\r\n if (params.debug) {\r\n console.log(`Current: ${window.scrollY}, Last: ${lastScrollY.current}`);\r\n }\r\n // Check if the user has scrolled.\r\n if (window.scrollY > (params.threshold ?? 0)) {\r\n // Check if they scrolled up.\r\n setIsPeeking(window.scrollY < lastScrollY.current);\r\n // Update the last scroll value.\r\n lastScrollY.current = window.scrollY;\r\n }\r\n else {\r\n setIsPeeking(true);\r\n }\r\n }, 16.66666666666667), [params.debug, params.threshold]);\r\n React.useEffect(() => {\r\n window.addEventListener('scroll', handleScroll);\r\n return () => window.removeEventListener('scroll', handleScroll);\r\n }, [params.debug, params.threshold]);\r\n return isPeeking;\r\n}\r\n"],"names":["API_URLS","searchSubmit","searchTypeahead","mortgagesListing","newsListing","savingsListing","searchResults","vacancyListing","affordabilityCalculator","buyToLetRentalIncomeCalculator","decisionInPrinciple","savingsInterestCalculator","sleep","ms","Promise","resolve","setTimeout","tabIndexHTML","html","active","replaceAll","clamp","value","max","min","Math","withMotionMax","WrappedComponent","displayName","name","ComponentWithMotionMax","props","React","LazyMotion","features","domMax","strict","useApi","params","refAbortController","isFirstMount","useFirstMountState","data","setData","initialData","status","setStatus","validate","current","AbortController","async","signal","start","Date","now","res","fetch","url","cache","credentials","headers","Accept","method","resData","json","diff","doAsync","_refAbortController$c","abort","clear","undefined","validateNotWhitespaceOnly","error","trim","length","useForm","refContainer","refCustomData","useReactHookFormReturn","useReactHookForm","defaultValues","mode","reValidateMode","shouldUseNativeValidation","handleSubmit","confirmationMessage","setConfirmationMessage","serverErrors","setServerErrors","customResponseData","setCustomResponseData","onSubmit","formData","event","window","location","href","endpoint","includes","qs","FormData","target","body","JSON","stringify","_refContainer$current","ok","scrollIntoView","behavior","block","errors","message","redirect","_refContainer$current2","postSubmitCallback","Object","keys","_refCustomData$curren","_refContainer$current3","reset","queries","values","defaultValue","getValue","index","mediaQueryLists","findIndex","mql","matches","setValue","useState","setMediaQueryLists","useEffect","map","query","matchMedia","handler","forEach","addListener","removeListener","useOutsideClick","callback","ref","handleClick","contains","document","addEventListener","removeEventListener","Dots","styled","div","withConfig","componentId","ContentType","Savings","brand","blue","default","light","Background","Blue","global","white","Default","green","Green","Intermediaries","navy","beige","Beige","from","Device","DesktopSmall","DotsStyles","Dot","span","transition","_ref","activeIndex","itemCount","variant","S","style","CommonTextInputStyles","css","fonts","proximaNova","regular","grey","dark","fluid","Input","input","AdditionalElementStyles","paragraphRegular","bold","Prefix","Suffix","InputWrapper","maskOptions","prefix","suffix","includeThousandsSeparator","thousandsSeparatorSymbol","allowDecimal","decimalSymbol","decimalLimit","integerLimit","allowNegative","allowLeadingZeroes","Textbox","initialValue","currencyMask","createNumberMask","maskedValue","setMaskedValue","replace","otherProps","type","step","FocusRing","focusRingClass","MaskedInput","mask","onChange","e","inputMode","Container","black","Form","form","validation","invalid","TextboxStyles","Label","label","srOnly","semiBold","Button","m","button","ButtonReset","until","TabletLarge","Suggestions","ul","rgba","AutosuggestOption","link","_props$searchTerm","_props$idPrefix","_props$idPrefix2","_props$idPrefix3","_props$translations$g","_props$translations","_props$idPrefix4","_props$idPrefix5","_props$idPrefix6","watch","register","setFocus","formState","searchTerm","submitUrl","searchValue","setSearchTerm","showSuggestions","setShowSuggestions","selectedTerm","setSelectedTerm","_props$onSubmit","call","_props$onSuggestionsV","onSuggestionsVisible","_props$searchTerm2","_props$searchTerm3","result","cultureCode","noTypeahead","itemsRef","containerRef","submitRef","_props$onSubmit2","preventDefault","stopPropagation","id","idPrefix","placeholder","role","suggestions","required","translations","_props$translations$g2","_props$translations2","onKeyDown","key","_itemsRef$current$","focus","autoComplete","as","onClear","AnimatePresence","clearLabel","initial","opacity","y","animate","exit","onClick","_props$onClear","getSystemIcon","SystemIcon","Close","buttonLabel","buttonType","Search","tabIndex","suggestion","i","regex","RegExp","textValue","match","el","_result$data","onKeyPress","dangerouslySetInnerHTML","__html","_result$data2","maxIndex","_itemsRef$current$nex","_itemsRef$current$pre","nextIndex","prevIndex","GlobalStyles","createGlobalStyle","header","Layers","Navigation","Backdrop","Inner","siteWide","NavigationTabs","NavigationTab","a","paragraphSmall","medium","Main","Logo","CtaWrapper","Desktop","SearchBoxContainer","SearchboxStyles","CtaLink","MenuButton","_path","_path2","_path3","_path4","_extends","assign","bind","n","arguments","t","r","hasOwnProperty","apply","viewBox","fill","xmlns","d","AnnouncementTrack","shouldAnimate","AnnouncementItem","contentStyles","AnnouncementControls","AnnouncementButton","AnnouncementCount","p","_props$duration","_props$items","_props$speed","setActiveIndex","setPaused","_activeItem$duration","refInterval","paused","duration","activeItemDuration","items","enabled","newIndex","clearInterval","useAutoplay","_props$items$length2","_props$items3","_props$items$length","_props$items2","ChevronDown","_props$items$length3","_props$items4","_props$items$length4","_props$items5","speed","item","text","isDropdownLink","dropdownBaseStyles","dropdownHiddenStyles","nav","Links","NavigationStyles","TopLevelLink","Dropdown","ColumnLinks","CardWrapper","scrollbars","gradient","PrimaryPageLink","ColumnLink","Card","BackButton","_props$links","setActive","activeColumn","setActiveColumn","isMobile","useMedia","links","onMouseLeave","_link$cards","children","onMouseEnter","onFocus","_itemsRef$current$max","handleKeyPress","ArrowRight","cards","card","j","_card$icon","icon","None","column","_props$translations3","_column$children","_itemsRef$current$i","dropdown","nextElementSibling","scrollTop","child","k","_itemsRef$current$ind","_props$cookieName","_props$ctas","_props$translations4","_props$translations5","_props$translations6","_props$translations7","cookieName","setCookie","useCookies","menuOpen","setMenuOpen","searchOpen","setSearchOpen","searchSuggestionsVisible","setSearchSuggestionsVisible","activeMenu","setActiveMenu","isPeeking","setIsPeeking","lastScrollY","handleScroll","throttle","_params$threshold","debug","console","log","scrollY","threshold","useScrollPeek","SkipLink","renderNavigationTabs","AnnouncementBar","announcementItems","announcementDuration","announcementSpeed","SvgLogo","searchCtaType","Searchbox","searchbox","visible","ctas","cta","_cta$icon","Menu","NavigationLinks","mobile","navigationTabs","tab","path","maxAge"],"sourceRoot":""}