{"version":3,"file":"8974-c0401d92f23b037f61fa.js","mappings":"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","sources":["webpack://tipton/./src/helpers/api.ts","webpack://tipton/./src/hoc/withQueryParams.tsx","webpack://tipton/./src/hoc/withRouter.tsx","webpack://tipton/./src/hooks/useApi.ts","webpack://tipton/./src/stories/Components/CardGrid/CardGrid.styles.ts","webpack://tipton/./src/stories/Components/CardGrid/CardGrid.tsx","webpack://tipton/./src/stories/Components/Cards/ProductCard/ProductCard.styles.ts","webpack://tipton/./src/stories/Components/Listings/SavingsProductFilters/SavingsProductFilters.styles.ts","webpack://tipton/./src/stories/Components/Listings/SortByDropdown/SortByDropdown.styles.ts","webpack://tipton/./src/stories/Components/Misc/Forms/Searchbox/Searchbox.styles.ts","webpack://tipton/./src/stories/Components/Misc/LoadingIndicator/LoadingIndicator.styles.ts","webpack://tipton/./src/stories/Components/Misc/LoadingIndicator/LoadingIndicator.tsx","webpack://tipton/./src/stories/Widgets/Global/Navigation/Navigation.styles.ts","webpack://tipton/./src/stories/Widgets/ProductListingSavings/ProductListingSavings.styles.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","import React from 'react';\r\nimport { Route } from 'react-router';\r\nimport { QueryParamProvider } from 'use-query-params';\r\nimport { withRouter } from './withRouter';\r\nexport function withQueryParams(WrappedComponent) {\r\n const displayName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\r\n const ComponentWithQueryParams = (props) => {\r\n return (React.createElement(QueryParamProvider, { ReactRouterRoute: Route },\r\n React.createElement(WrappedComponent, { ...props })));\r\n };\r\n ComponentWithQueryParams.displayName = `withQueryParams(${displayName})`;\r\n return withRouter(ComponentWithQueryParams);\r\n}\r\n","import React from 'react';\r\nimport { BrowserRouter, StaticRouter } from 'react-router-dom';\r\nexport function withRouter(WrappedComponent) {\r\n const displayName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\r\n const ComponentWithRouter = (props) => {\r\n if (typeof window === 'undefined') {\r\n if (!props.location) {\r\n throw new Error(`The \"location\" prop was not provided when the \"withRouter\" HOC was used. Ensure the Tag Helper is using the \"use-router\" parameter.`);\r\n }\r\n return (React.createElement(StaticRouter, { basename: props.basename, context: props.context, location: props.location },\r\n React.createElement(WrappedComponent, { ...props })));\r\n }\r\n return (React.createElement(BrowserRouter, { basename: props.basename },\r\n React.createElement(WrappedComponent, { ...props })));\r\n };\r\n ComponentWithRouter.displayName = `withRouter(${displayName})`;\r\n return ComponentWithRouter;\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 { Device, from, until } from '@helpers/media';\r\nimport styled, { css } from 'styled-components';\r\nimport MotionTrack from '../Misc/Carousels/Carousel/MotionTrack/MotionTrack';\r\nimport MotionTrackStyles from '../Misc/Carousels/Carousel/MotionTrack/MotionTrack.styles';\r\nimport PaginationStyles from '../Misc/Carousels/Carousel/Pagination/Pagination.styles';\r\nexport const cardWidth = css `\r\n flex: var(--grow) 0\r\n calc(\r\n 100% / var(--rowItems) - (var(--gap) * ((var(--rowItems) - 1) / var(--rowItems))) -\r\n (var(--itemPeek, 0px) / var(--rowItems))\r\n );\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n max-width: var(--maxWidth);\r\n }\r\n`;\r\nconst Track = styled(MotionTrack) `\r\n margin: 0 calc(var(--gap) * -0.5);\r\n width: calc(100% + var(--gap));\r\n\r\n // Unset container when carousel is disabled\r\n @media ${from(Device.TabletLarge)} {\r\n display: contents;\r\n\r\n ${MotionTrackStyles.Track} {\r\n display: contents;\r\n }\r\n }\r\n`;\r\nconst Item = styled.li `\r\n display: flex;\r\n padding: 0 calc(var(--gap) * 0.5);\r\n flex: 0 0 calc(100% / var(--rowItems) - (var(--itemPeek, 0px) / var(--rowItems)));\r\n\r\n // Remove flex styling from the card whilst the mobile carousel is enabled\r\n @media ${until(Device.TabletLarge)} {\r\n > div,\r\n > a,\r\n > article {\r\n flex: 0 0 100% !important;\r\n }\r\n }\r\n\r\n // Unset container when carousel is disabled\r\n @media ${from(Device.TabletLarge)} {\r\n display: contents;\r\n }\r\n`;\r\nconst Container = styled.section `\r\n --alignment: center; // Flexbox alignment (eg. flex-start, center, flex-end)\r\n --grow: 1; // Flex grow - 0 for equal width, 1 for auto width\r\n --rowItems: 1; // Number of items per row\r\n --maxWidth: 50%; // Max width a card can be\r\n --gap: var(--gutterWidth); // Defaults to global grid gap\r\n\r\n --controlsMargin: 24px; // Margin above the carousel controls\r\n --itemPeek: 0px; // Carousel peek, use if carousel is enabled\r\n\r\n display: flex;\r\n flex-wrap: wrap;\r\n justify-content: var(--alignment);\r\n gap: var(--gap);\r\n flex-flow: row wrap;\r\n\r\n ${PaginationStyles.Container} {\r\n margin: calc(var(--controlsMargin) - var(--gap)) 0 0;\r\n flex: 0 0 100%;\r\n }\r\n\r\n /**\r\n * Force --grow to be 0 if there are more than the configured cards per frow, to keep next row cards equal size.\r\n */\r\n &[data-row-max='1']:has(> :nth-child(1)) {\r\n --grow: 0 !important;\r\n }\r\n\r\n &[data-row-max='2']:has(> :nth-child(2)) {\r\n --grow: 0 !important;\r\n }\r\n\r\n &[data-row-max='3']:has(> :nth-child(3)) {\r\n --grow: 0 !important;\r\n }\r\n\r\n &[data-row-max='4']:has(> :nth-child(4)) {\r\n --grow: 0 !important;\r\n }\r\n\r\n &[data-row-max='5']:has(> :nth-child(5)) {\r\n --grow: 0 !important;\r\n }\r\n\r\n &[data-row-max='6']:has(> :nth-child(6)) {\r\n --grow: 0 !important;\r\n }\r\n\r\n // Remove peek and hide carousel controls\r\n @media ${from(Device.TabletLarge)} {\r\n --itemPeek: 0px !important;\r\n\r\n ${PaginationStyles.Container} {\r\n display: none;\r\n }\r\n\r\n &:has(${Track}) {\r\n // Repeat the removal of grow for grids with a mobile carousel\r\n &[data-row-max='1'] {\r\n ${MotionTrackStyles.Track}:has(> :nth-child(1)) {\r\n --grow: 0 !important;\r\n }\r\n }\r\n\r\n &[data-row-max='2'] {\r\n ${MotionTrackStyles.Track}:has(> :nth-child(2)) {\r\n --grow: 0 !important;\r\n }\r\n }\r\n\r\n &[data-row-max='3'] {\r\n ${MotionTrackStyles.Track}:has(> :nth-child(3)) {\r\n --grow: 0 !important;\r\n }\r\n }\r\n\r\n &[data-row-max='4'] {\r\n ${MotionTrackStyles.Track}:has(> :nth-child(4)) {\r\n --grow: 0 !important;\r\n }\r\n }\r\n\r\n &[data-row-max='5'] {\r\n ${MotionTrackStyles.Track}:has(> :nth-child(5)) {\r\n --grow: 0 !important;\r\n }\r\n }\r\n\r\n &[data-row-max='6'] {\r\n ${MotionTrackStyles.Track}:has(> :nth-child(6)) {\r\n --grow: 0 !important;\r\n }\r\n }\r\n }\r\n }\r\n`;\r\nconst CardGridStyles = {\r\n Container,\r\n Track,\r\n Item,\r\n};\r\nexport default CardGridStyles;\r\n","import { withMotionMax } from '@hoc/withMotionMax';\r\nimport { MotionConfig } from 'framer-motion';\r\nimport * as React from 'react';\r\nimport CarouselProvider from '../Misc/Carousels/Carousel/CarouselProvider/CarouselProvider';\r\nimport Pagination from '../Misc/Carousels/Carousel/Pagination/Pagination';\r\nimport S from './CardGrid.styles';\r\nconst CardGrid = ({ children, mobileCarousel, rowMax, paddingOffset, translations, carouselType, ...props }) => {\r\n return (React.createElement(S.Container, { \"data-carousel\": mobileCarousel, \"data-row-max\": rowMax, ...props }, renderLayout()));\r\n function renderLayout() {\r\n if (mobileCarousel) {\r\n const count = React.Children.count(children);\r\n return (React.createElement(MotionConfig, { transition: { duration: 0.3, ease: 'easeOut' } },\r\n React.createElement(CarouselProvider, { count: count, paddingOffset: paddingOffset ?? 0 },\r\n React.createElement(S.Track, null, React.Children.map(children, (child) => (React.createElement(S.Item, null, child)))),\r\n React.createElement(Pagination, { translations: translations, variant: carouselType }))));\r\n }\r\n return children;\r\n }\r\n};\r\nexport default withMotionMax(CardGrid);\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 { Device, from, until } from '@helpers/media';\r\nimport { h4, h5, paragraphSmall } from '@helpers/typography';\r\nimport ButtonStyles from '@stories/Components/Buttons/Button/Button.styles';\r\nimport CardGrid from '@stories/Components/CardGrid/CardGrid';\r\nimport { cardWidth } from '@stories/Components/CardGrid/CardGrid.styles';\r\nimport FormStyles from '@stories/Components/Misc/Forms/Form.styles';\r\nimport { ContentType } from '@stories/Components/Misc/SectionWrapper/SectionWrapper';\r\nimport styled from 'styled-components';\r\n// Link must overlay the entire card, to ensure that the buttons for the tooltips are accessible\r\nconst Link = styled.a `\r\n grid-column: 1;\r\n grid-row: 1 / span 4;\r\n margin: calc(var(--paddingY) * -1) calc(var(--paddingX) * -1);\r\n padding: var(--paddingY) var(--paddingX);\r\n text-decoration: none;\r\n\r\n // uses subgrid to ensure the fake button aligns correctly with other elements\r\n display: grid;\r\n grid-template-rows: subgrid;\r\n\r\n // fake button must sit within the link for hover styles to work as expected\r\n ${ButtonStyles.Container} {\r\n grid-row: 4;\r\n margin: ${fluid(16, 24)} auto 0 0;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n margin-left: auto;\r\n margin-right: 0;\r\n }\r\n }\r\n`;\r\nconst Container = styled.div `\r\n --borderRadius: ${fluid(12, 20)};\r\n --paddingX: ${fluid(18, 26)};\r\n --paddingY: 26px;\r\n\r\n display: grid;\r\n grid-template-rows: repeat(4, min-content);\r\n background-color: var(--backgroundColour);\r\n color: ${brand.blue.navy};\r\n border-radius: var(--borderRadius) var(--borderRadius) var(--borderRadius) 0;\r\n padding: var(--paddingY) var(--paddingX);\r\n\r\n &[data-type=${ContentType.Default}] {\r\n --backgroundColour: ${brand.green.light};\r\n --featureColour: ${brand.green.dark};\r\n }\r\n\r\n &[data-type=${ContentType.Savings}] {\r\n --backgroundColour: ${brand.blue.light};\r\n --featureColour: ${brand.blue.dark};\r\n }\r\n\r\n /* Mobile click styles - whole card should mimic button press when link has active state */\r\n @media ${until(Device.TabletLarge)} {\r\n ${transition('transform', 0.15)};\r\n\r\n &:has(${Link}:active) {\r\n transform: translateY(2px);\r\n }\r\n }\r\n`;\r\nconst Title = styled.h2 `\r\n ${h4};\r\n\r\n grid-row: 1;\r\n grid-column: 1;\r\n margin: 0;\r\n`;\r\nconst SummaryBullets = styled.ul `\r\n ${paragraphSmall};\r\n ${fonts.proximaNova.semiBold};\r\n\r\n --gap: ${fluid(4, 8)} ${fluid(8, 18)};\r\n\r\n grid-row: 2;\r\n grid-column: 1;\r\n display: flex;\r\n align-items: center;\r\n flex-wrap: wrap;\r\n gap: var(--gap);\r\n margin: 16px 0 0;\r\n\r\n li {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: var(--gap);\r\n\r\n &:not(:last-of-type)::after {\r\n content: '\\\\2022';\r\n color: ${brand.green.dark};\r\n font-size: 115%;\r\n margin-top: -2px;\r\n }\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n margin-top: 12px;\r\n }\r\n`;\r\nconst Features = styled(CardGrid) `\r\n --maxWidth: 33%;\r\n --rowItems: 2;\r\n --alignment: flex-start;\r\n\r\n grid-row: 3;\r\n grid-column: 1;\r\n width: 100%;\r\n margin-top: ${fluid(16, 28)};\r\n\r\n @media ${from(Device.TabletSmall)} {\r\n --rowItems: 3 !important; // Important required to prevent CLS specificity issue\r\n }\r\n\r\n @media ${from(Device.Tablet)} {\r\n --rowItems: 4 !important;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n --rowItems: 5 !important;\r\n }\r\n\r\n @media ${from(Device.Desktop)} {\r\n --rowItems: 6 !important;\r\n }\r\n`;\r\nconst Info = styled(FormStyles.Info) `\r\n grid-column: 2;\r\n margin: 2px 0 0;\r\n`;\r\nconst InfoButton = styled(FormStyles.InfoButton) ``;\r\nconst Feature = styled.div `\r\n ${cardWidth};\r\n\r\n display: grid;\r\n grid-template-columns: 1fr min-content;\r\n grid-template-rows: min-content 1fr;\r\n column-gap: ${fluid(8, 16)};\r\n background-color: ${brand.global.white};\r\n padding: 4px 12px;\r\n border-radius: 10px 10px 10px 0;\r\n z-index: 1;\r\n\r\n /* Larger z-index for feature displaying a tooltip to ensure info buttons don't overlap the tooltip when features stack */\r\n &:has(${Info}:hover, ${Info}:focus-visible, ${Info}:active) {\r\n z-index: 2;\r\n }\r\n`;\r\nconst FeatureTitle = styled.h3 `\r\n ${paragraphSmall};\r\n ${fonts.proximaNova.bold};\r\n\r\n grid-column: 1;\r\n margin: 0;\r\n`;\r\nconst FeatureContent = styled.p `\r\n ${h5};\r\n\r\n grid-column: 1 / span 2;\r\n margin: 0;\r\n color: var(--featureColour);\r\n`;\r\nconst Tooltip = styled(FormStyles.Tooltip) `\r\n --width: min(50vw, calc(var(--siteWidth) * 0.5));\r\n\r\n width: calc(var(--width) - (var(--paddingX) * 2) - var(--sitePadding));\r\n z-index: 1;\r\n\r\n @media ${from(Device.TabletSmall)} {\r\n --width: min(33vw, calc(var(--siteWidth) * 0.33));\r\n }\r\n\r\n @media ${from(Device.Tablet)} {\r\n --width: min(27.5vw, calc(var(--siteWidth) * 0.275));\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n --width: min(25vw, calc(var(--siteWidth) * 0.25));\r\n }\r\n`;\r\nconst ProductCardStyles = {\r\n Container,\r\n Features,\r\n Feature,\r\n FeatureTitle,\r\n FeatureContent,\r\n Info,\r\n Tooltip,\r\n Link,\r\n Title,\r\n SummaryBullets,\r\n InfoButton,\r\n};\r\nexport default ProductCardStyles;\r\n","import brand from '@helpers/brand';\r\nimport { fluid } from '@helpers/fluid';\r\nimport { SystemIcon } from '@helpers/icons';\r\nimport ButtonStyles from '@stories/Components/Buttons/Button/Button.styles';\r\nimport FiltersFormStyles from '@stories/Components/Misc/FiltersForm/FiltersForm.styles';\r\nimport styled from 'styled-components';\r\nconst Container = styled(FiltersFormStyles.Container) ``;\r\nconst ButtonWrapper = styled.div `\r\n display: flex;\r\n gap: 24px;\r\n margin-top: ${fluid(0, 24)};\r\n\r\n ${ButtonStyles.Container}[data-icon-type=${SystemIcon.None}] {\r\n --borderColour: transparent;\r\n }\r\n\r\n ${ButtonStyles.Container}[type='submit'] {\r\n --borderColour: ${brand.blue.default};\r\n }\r\n`;\r\nconst SavingsProductFiltersStyles = {\r\n Container,\r\n ButtonWrapper,\r\n};\r\nexport default SavingsProductFiltersStyles;\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 SelectStyles from '@stories/Components/Misc/Forms/Inputs/Select/Select.styles';\r\nimport { ContentType } from '@stories/Components/Misc/SectionWrapper/SectionWrapper';\r\nimport styled from 'styled-components';\r\nimport FormStyles from '../../Misc/Forms/Form.styles';\r\nconst Container = styled(FormStyles.Field) `\r\n --textColour: ${brand.blue.navy};\r\n --borderColour: ${brand.green.default};\r\n\r\n &[data-type=${ContentType.Intermediaries}],\r\n &[data-type=${ContentType.Savings}] {\r\n --borderColour: ${brand.blue.navy};\r\n }\r\n\r\n ${SelectStyles.Select} {\r\n ${paragraphRegular};\r\n ${fonts.proximaNova.semiBold};\r\n\r\n margin: 0;\r\n }\r\n`;\r\nconst Label = styled(FormStyles.Label) `\r\n margin-bottom: ${fluid(2, 6)};\r\n`;\r\nconst SortByDropdownStyles = {\r\n Container,\r\n Label,\r\n};\r\nexport default SortByDropdownStyles;\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 { fluid } from '@helpers/fluid';\r\nimport { paragraphRegular } from '@helpers/typography';\r\nimport styled from 'styled-components';\r\nconst Loader = styled.div `\r\n position: relative;\r\n display: flex;\r\n background: var(--bgColour);\r\n color: var(--fgColour);\r\n flex-direction: column;\r\n height: 100%;\r\n place-content: center;\r\n place-items: center;\r\n text-align: center;\r\n width: 100%;\r\n z-index: 999;\r\n\r\n &[data-layout='inline'] {\r\n padding: ${fluid(48, 96)};\r\n }\r\n\r\n &[data-layout='absolute'] {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n }\r\n\r\n &[data-layout='fixed'] {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n }\r\n\r\n &[data-alignment='top'] {\r\n place-content: flex-start;\r\n padding-top: 24px;\r\n }\r\n`;\r\nconst LoaderText = styled.span `\r\n ${paragraphRegular};\r\n\r\n display: block;\r\n margin: 1rem 0 0;\r\n`;\r\nconst LoadingIndicatorStyles = {\r\n Loader,\r\n LoaderText,\r\n};\r\nexport default LoadingIndicatorStyles;\r\n","import brand from '@helpers/brand';\r\nimport { rgba } from 'polished';\r\nimport * as React from 'react';\r\nimport { PuffLoader } from 'react-spinners';\r\nimport { ContentType } from '../SectionWrapper/SectionWrapper';\r\nimport S from './LoadingIndicator.styles';\r\nconst LoadingIndicator = (props) => {\r\n const bgColour = props.type === ContentType.Savings\r\n ? rgba(brand.blue.default, 0.7)\r\n : props.type === ContentType.Intermediaries\r\n ? rgba(brand.green.light, 0.7)\r\n : rgba(brand.green.default, 0.7);\r\n const fgColour = props.type === ContentType.Intermediaries ? brand.blue.navy : brand.global.white;\r\n return (React.createElement(S.Loader, { \"data-layout\": props.layout ?? 'inline', \"data-alignment\": props.alignment ?? 'center', style: {\r\n '--bgColour': props.bgColour ?? bgColour,\r\n '--fgColour': props.fgColour ?? fgColour,\r\n } },\r\n React.createElement(PuffLoader, { color: \"currentColor\", size: props.size ?? 64 }),\r\n props.label && React.createElement(S.LoaderText, null, props.label)));\r\n};\r\nexport default LoadingIndicator;\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","import { transition } from '@helpers/animate';\r\nimport brand from '@helpers/brand';\r\nimport { fluid } from '@helpers/fluid';\r\nimport { baseGrid } 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 { h6, link, paragraphLarge } from '@helpers/typography';\r\nimport ButtonStyles from '@stories/Components/Buttons/Button/Button.styles';\r\nimport ProductCardStyles from '@stories/Components/Cards/ProductCard/ProductCard.styles';\r\nimport SavingsProductFiltersStyles from '@stories/Components/Listings/SavingsProductFilters/SavingsProductFilters.styles';\r\nimport SortByDropdownStyles from '@stories/Components/Listings/SortByDropdown/SortByDropdown.styles';\r\nimport FormStyles from '@stories/Components/Misc/Forms/Form.styles';\r\nimport CheckboxListStyles from '@stories/Components/Misc/Forms/Inputs/CheckboxList/CheckboxList.styles';\r\nimport RadioListStyles from '@stories/Components/Misc/Forms/Inputs/RadioList/RadioList.styles';\r\nimport SectionWrapper from '@stories/Components/Misc/SectionWrapper/SectionWrapper';\r\nimport SectionWrapperStyles from '@stories/Components/Misc/SectionWrapper/SectionWrapper.styles';\r\nimport { rgba } from 'polished';\r\nimport styled, { css } from 'styled-components';\r\nimport NavigationStyles from '../Global/Navigation/Navigation.styles';\r\nconst cardGridStyles = css `\r\n grid-column: 1 / -1;\r\n\r\n @media ${from(Device.DesktopSmall)} {\r\n grid-column: 4 / span 9;\r\n }\r\n`;\r\nconst Container = styled(SectionWrapper) `\r\n ${SectionWrapperStyles.Inner} {\r\n ${baseGrid};\r\n\r\n row-gap: ${fluid(24, 26)};\r\n }\r\n\r\n ${SortByDropdownStyles.Container} {\r\n grid-column: 7 / span 6;\r\n margin-bottom: ${fluid(0, 18)};\r\n\r\n @media ${from(Device.Tablet)} {\r\n grid-column: 9 / span 4;\r\n }\r\n\r\n @media ${from(Device.DesktopSmall)} {\r\n grid-column: 10 / span 3;\r\n }\r\n\r\n @media ${from(Device.Desktop)} {\r\n grid-column: 11 / span 2;\r\n }\r\n }\r\n\r\n ${ButtonStyles.Container}[data-filter-btn] {\r\n --buttonHeight: ${fluid(48, 55)};\r\n --textColour: ${brand.global.black};\r\n --borderColour: ${brand.blue.navy};\r\n --iconTextColour: currentColor;\r\n\r\n grid-column: 1 / span 6;\r\n margin-top: auto;\r\n border-radius: 10px;\r\n justify-content: space-between;\r\n\r\n @media ${from(Device.Tablet)} {\r\n grid-column: 1 / span 3;\r\n }\r\n\r\n @media ${from(Device.DesktopSmall)} {\r\n display: none;\r\n }\r\n\r\n ${ButtonStyles.Text} {\r\n font-size: 14px;\r\n font-weight: 600;\r\n }\r\n\r\n ${ButtonStyles.IconWrapper} {\r\n ${transition('transform', 0.2)};\r\n\r\n --iconHeight: 12px;\r\n --padding: 0px;\r\n\r\n transform: rotate(-90deg);\r\n background-color: var(--contrastColour);\r\n }\r\n\r\n &:hover ${ButtonStyles.IconWrapper} {\r\n background-color: var(--primaryColour);\r\n transform: translateX(4px) rotate(-90deg);\r\n }\r\n }\r\n\r\n ${ProductCardStyles.Container} {\r\n ${cardGridStyles};\r\n }\r\n`;\r\nconst FilterTray = styled.div `\r\n @media ${until(Device.DesktopSmall)} {\r\n ${transition('transform', 0.5)};\r\n\r\n --trayButtonsHeight: 64px;\r\n --maxTrayWidth: 480px;\r\n\r\n position: fixed;\r\n top: var(--headerHeight, 0px);\r\n right: 0;\r\n z-index: ${Layers.Modal};\r\n overflow: auto;\r\n height: calc(100dvh - var(--headerHeight, 0px));\r\n width: 100%;\r\n background-color: ${brand.global.white};\r\n padding: 18px var(--sitePadding) 0;\r\n max-width: var(--maxTrayWidth);\r\n display: flex;\r\n flex-direction: column;\r\n\r\n &[data-open='false'] {\r\n transform: translateX(100%);\r\n }\r\n\r\n ${SavingsProductFiltersStyles.Container} {\r\n height: 100%;\r\n }\r\n\r\n ${SavingsProductFiltersStyles.ButtonWrapper} {\r\n background-color: ${brand.global.white};\r\n align-items: center;\r\n justify-content: flex-end;\r\n border-top: 1px solid ${brand.blue.navy};\r\n padding: 12px 16px;\r\n width: calc(100% + var(--sitePadding) * 2);\r\n margin: auto calc(var(--sitePadding) * -1) 0;\r\n position: sticky;\r\n bottom: 0;\r\n }\r\n }\r\n\r\n @media ${from(Device.DesktopSmall)} {\r\n position: sticky;\r\n top: calc(var(--headerHeight, 0px) + ${fluid(16, 24)});\r\n grid-column: 1 / span 3;\r\n grid-row: 1 / span 3;\r\n }\r\n\r\n ${FormStyles.Title} {\r\n ${srOnly};\r\n }\r\n`;\r\nconst FilterTrayBackdrop = styled(NavigationStyles.Backdrop) `\r\n @media ${from(Device.DesktopSmall)} {\r\n display: none;\r\n }\r\n`;\r\nconst FiltersInner = styled.div `\r\n container-type: inline-size;\r\n\r\n @media ${until(Device.DesktopSmall)} {\r\n height: 100%;\r\n width: 100%;\r\n }\r\n\r\n @media ${from(Device.DesktopSmall)} {\r\n position: sticky;\r\n top: 0;\r\n padding: 24px 16px 18px;\r\n grid-column: 1 / span 3;\r\n grid-row: 1 / span all;\r\n box-shadow: 0px -3px 20.4px 0px ${rgba(brand.global.black, 0.1)};\r\n border-radius: 20px;\r\n\r\n ${CheckboxListStyles.Container}:not(:has(${CheckboxListStyles.Option}:nth-child(3))) ${CheckboxListStyles.Option},\r\n ${RadioListStyles.Container}:not(:has(${RadioListStyles.Option}:nth-child(3))) ${RadioListStyles.Option} {\r\n flex: 0;\r\n }\r\n }\r\n`;\r\nconst BackButton = styled.a `\r\n ${transition('text-decoration-color')};\r\n ${h6};\r\n ${link};\r\n\r\n display: flex;\r\n gap: ${fluid(18, 22)};\r\n border-radius: 20px 20px 0 0;\r\n text-decoration-color: transparent;\r\n text-decoration-thickness: 2px;\r\n background-color: ${brand.grey.light};\r\n padding: 14px 16px 12px;\r\n margin: -24px -16px 24px;\r\n\r\n &:hover,\r\n &:focus-visible {\r\n text-decoration-color: currentColor;\r\n }\r\n\r\n @media ${until(Device.DesktopSmall)} {\r\n display: none;\r\n }\r\n`;\r\nconst ButtonIcon = styled.span `\r\n ${transition('transform', 0.2)};\r\n\r\n --bgColour: ${brand.blue.default};\r\n\r\n display: grid;\r\n place-items: center;\r\n color: ${brand.global.white};\r\n background-color: var(--bgColour);\r\n height: 28px;\r\n width: 28px;\r\n border-radius: 5000px;\r\n\r\n svg {\r\n width: 16px;\r\n transform: scale(-1);\r\n }\r\n\r\n ${BackButton}:hover & {\r\n transform: translateX(-4px);\r\n }\r\n`;\r\nconst Pagination = styled.div `\r\n grid-column: 1 / -1;\r\n padding-top: ${fluid(0, 28)};\r\n display: flex;\r\n justify-content: center;\r\n`;\r\nconst NoResultsText = styled.p `\r\n ${cardGridStyles};\r\n ${paragraphLarge};\r\n\r\n text-align: center;\r\n`;\r\nconst ProductListingSavingsStyles = {\r\n BackButton,\r\n ButtonIcon,\r\n Container,\r\n FiltersInner,\r\n FilterTray,\r\n FilterTrayBackdrop,\r\n NoResultsText,\r\n Pagination,\r\n};\r\nexport default ProductListingSavingsStyles;\r\n"],"names":["API_URLS","searchSubmit","searchTypeahead","mortgagesListing","newsListing","savingsListing","searchResults","vacancyListing","affordabilityCalculator","buyToLetRentalIncomeCalculator","decisionInPrinciple","savingsInterestCalculator","withQueryParams","WrappedComponent","displayName","name","ComponentWithQueryParams","props","React","QueryParamProvider","ReactRouterRoute","Route","ComponentWithRouter","window","location","Error","StaticRouter","basename","context","BrowserRouter","withRouter","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","sleep","doAsync","_refAbortController$c","abort","clear","undefined","cardWidth","css","from","Device","TabletLarge","Track","styled","MotionTrack","withConfig","componentId","MotionTrackStyles","Item","li","until","Container","section","PaginationStyles","withMotionMax","_ref","children","mobileCarousel","rowMax","paddingOffset","translations","carouselType","S","count","MotionConfig","transition","duration","ease","CarouselProvider","map","child","Pagination","variant","renderLayout","Link","a","ButtonStyles","fluid","div","brand","blue","navy","ContentType","Default","green","light","dark","Savings","Title","h2","h4","SummaryBullets","ul","paragraphSmall","fonts","proximaNova","semiBold","Features","CardGrid","TabletSmall","Tablet","Desktop","Info","FormStyles","InfoButton","Feature","global","white","FeatureTitle","h3","bold","FeatureContent","p","h5","Tooltip","FiltersFormStyles","ButtonWrapper","SystemIcon","None","default","Field","Intermediaries","SelectStyles","Select","paragraphRegular","Label","black","Form","form","grey","validation","invalid","TextboxStyles","InputWrapper","label","srOnly","Input","Textbox","Button","m","button","ButtonReset","Suggestions","rgba","AutosuggestOption","link","Loader","LoaderText","span","_props$layout","_props$alignment","_props$bgColour","_props$fgColour","_props$size","bgColour","type","fgColour","layout","alignment","style","PuffLoader","color","size","GlobalStyles","createGlobalStyle","header","Layers","Navigation","Backdrop","Inner","siteWide","NavigationTabs","NavigationTab","medium","Main","Logo","DesktopSmall","CtaWrapper","SearchBoxContainer","SearchboxStyles","CtaLink","MenuButton","cardGridStyles","SectionWrapper","SectionWrapperStyles","baseGrid","SortByDropdownStyles","Text","IconWrapper","ProductCardStyles","FilterTray","Modal","SavingsProductFiltersStyles","FilterTrayBackdrop","NavigationStyles","FiltersInner","CheckboxListStyles","Option","RadioListStyles","BackButton","h6","ButtonIcon","NoResultsText","paragraphLarge"],"sourceRoot":""}