{"version":3,"file":"2902-1143ad07d887b8e52ecd.js","mappings":"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","sources":["webpack://royal-college-radiologists/./src/img/branding-graphics/wave-generic2.svg","webpack://royal-college-radiologists/./src/helpers/aspectRatio.ts","webpack://royal-college-radiologists/./src/helpers/global.ts","webpack://royal-college-radiologists/./src/helpers/image.ts","webpack://royal-college-radiologists/./src/helpers/scrollbars.ts","webpack://royal-college-radiologists/./src/hoc/withMotion.tsx","webpack://royal-college-radiologists/./src/hooks/useIntersectionObserver.ts","webpack://royal-college-radiologists/./src/hooks/useInView.ts","webpack://royal-college-radiologists/./src/stories/Components/Buttons/GeneralButton/Button.styles.tsx","webpack://royal-college-radiologists/./src/stories/Components/Buttons/GeneralButton/Button.tsx","webpack://royal-college-radiologists/./src/stories/Components/General/SkipLink/SkipLink.styles.ts","webpack://royal-college-radiologists/./src/stories/Components/General/SkipLink/SkipLink.tsx","webpack://royal-college-radiologists/./src/stories/Components/General/TitleIntroBlock/TitleIntroBlock.styles.ts","webpack://royal-college-radiologists/./src/stories/Components/General/TitleIntroBlock/TitleIntroBlock.tsx","webpack://royal-college-radiologists/./src/stories/Components/Global/SectionWrapper/SectionWrapper.styles.ts","webpack://royal-college-radiologists/./src/hoc/withBaseProps.tsx","webpack://royal-college-radiologists/./src/stories/Components/Global/SectionWrapper/SectionWrapper.tsx","webpack://royal-college-radiologists/./src/stories/Components/Cards/SignpostDetailCard/SignpostDetailCard.styles.ts","webpack://royal-college-radiologists/./src/stories/Components/Cards/SignpostDetailCard/SignpostDetailCard.tsx","webpack://royal-college-radiologists/./src/stories/Widgets/SignpostDetailCards/SignpostDetailCards.styles.ts","webpack://royal-college-radiologists/./src/stories/Widgets/SignpostDetailCards/SignpostDetailCards.tsx","webpack://royal-college-radiologists/./node_modules/decode-uri-component/index.js","webpack://royal-college-radiologists/./node_modules/filter-obj/index.js","webpack://royal-college-radiologists/./node_modules/query-string/index.js","webpack://royal-college-radiologists/./node_modules/react-use/esm/misc/util.js","webpack://royal-college-radiologists/./node_modules/react-use/esm/useMedia.js","webpack://royal-college-radiologists/./node_modules/split-on-first/index.js","webpack://royal-college-radiologists/./node_modules/strict-uri-encode/index.js","webpack://royal-college-radiologists/./node_modules/framer-motion/dist/es/components/MotionConfig/index.mjs"],"sourcesContent":["var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgWaveGeneric2(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 1732.677 540.991\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1698.597 538.115l1.321-15.102a50.744 50.744 0 01-16.009.773c-18.697-1.635-27.477-14.48-34.696-42.407l-69.015-263.042c-13.574-51.912-38.57-86.466-100.654-91.897s-95.902 24.942-115.863 73.682l-91.243 222.934c-15.467 38.743-38.449 58.471-80.399 54.801s-61.853-27.395-69.597-68.649l-46.966-255.557c-7.745-41.257-32.685-65.422-73.195-68.966s-69.84 14.18-84.057 55.206l-88.801 255.756c-9.99 28.594-23.994 42.345-52.522 39.85-27.807-2.433-39.19-18.646-42.77-46.737l-34.448-271.612c-4.795-39.067-19.573-60.65-58.646-64.068s-58.462 22.18-67.204 53.058l-77.457 272.449c-4.5 15.547-13.824 28.258-31.803 26.685s-26.227-12.198-27.468-31.146l-18.94-291.511c-1.998-29.643-16.119-50.444-48.96-53.317-35.956-3.146-50.758 19.714-57.029 47.184l-62.945 280.481c-3.542 15.632-8.279 25.604-21.702 24.43-14.146-1.238-18.494-12.247-18.809-27.974l-3.16-284.09c-.318-29.498-8.706-55.11-43.224-58.13-32.121-2.81-48.236 18.485-52.918 44.404l-51.163 292.14c-1.579 9.766-3.542 15.632-10.493 15.024-5.993-.524-8.774-4.632-8.06-12.782L66.502 43.636C68.652 21.843 58.303 2.097 34.331 0L3.859 348.299c-2.034 23.252 10.35 44.624 41.27 47.33 27.807 2.432 41.113-11.62 46.862-44.21l50.296-290.521c1.58-9.766 5.534-19.082 17.52-18.033 11.266.986 13.286 11.066 13.911 23.2l3.422 289.43c.627 37.01 20.16 53.937 47.97 56.37 27.087 2.37 46.177-8.762 54.692-48.117l62.434-282.945c2.424-11.14 8.153-24.165 24.693-22.718 15.82 1.384 20.768 13.894 21.874 26.069l19.9 291.595c2.317 34.26 18.722 53.811 53.96 56.894s52.82-15.67 61.644-47.508l76.68-271.792c6.652-23.573 19.092-36.011 39.228-34.25 23.252 2.035 30.228 16.171 33.404 40.604l36.204 276.356c5.97 44.967 33.06 61.105 65.42 63.936 41.231 3.607 64.183-18.54 76.5-54.417l87.216-254.205c8.09-23.448 22.361-48.527 62.153-45.046s50.13 31.68 54.68 56.957l48.259 251.806c8.315 42.997 30.258 76.56 87.31 81.55s83.916-25.99 99.299-63.776l90.733-225.393c17.283-42.932 44.343-67.86 97.558-63.204 52.06 4.072 73.345 36.852 84.184 78.621l69.12 261.844c7.459 27.947 16.774 51.226 48.895 54.036 9.828.86 14.987-.137 17.447-.647z\",\n fill: \"currentColor\"\n })));\n}\nexport default SvgWaveGeneric2;","import { css } from 'styled-components';\r\nimport { fluidUnit } from './fluid';\r\n/**\r\n * Returns the aspect ratio of the given width and height as a percentage.\r\n */\r\nexport function aspectRatio(width, height) {\r\n return (height / width) * 100;\r\n}\r\n/**\r\n * Re-usable styles for image container where the\r\n * image needs to maintain it's aspect ratio\r\n *\r\n * @param width\r\n * @param height\r\n * @returns\r\n */\r\nexport function imageWrapperPreserveRatio(width, height, \r\n/**\r\n * Additonal values to use if the ratio increases over time\r\n */\r\nmaxWidth, maxHeight) {\r\n if (!width && !height) {\r\n return null;\r\n }\r\n let padding;\r\n if (maxWidth && maxHeight) {\r\n padding = `${fluidUnit(aspectRatio(width, height), aspectRatio(maxWidth, maxHeight), '%')}`;\r\n }\r\n else {\r\n padding = `${aspectRatio(width, height)}%`;\r\n }\r\n return css `\r\n position: relative;\r\n height: 0;\r\n width: 100%;\r\n overflow: hidden;\r\n overflow: clip;\r\n padding-bottom: ${padding};\r\n `;\r\n}\r\n/**\r\n * Re-usable styles for an image placed within\r\n * a container maintaining aspect ratio\r\n */\r\nexport const imageCoverContainer = (relative) => css `\r\n display: block;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n object-position: center;\r\n ${!relative && 'position: absolute; top: 0;left: 0;'}\r\n`;\r\n","import { css } from 'styled-components';\r\nexport default {\r\n navHeight: 107,\r\n navHeightTablet: 80,\r\n navHeightMobile: 59,\r\n};\r\nexport const ButtonReset = css `\r\n border: none;\r\n outline: none;\r\n padding: 0px;\r\n background: none;\r\n border-radius: 0px;\r\n`;\r\n","import queryString from 'query-string';\r\n/**\r\n * Create an image URL for ImageProcessor\r\n * @param image The image model\r\n * @param imageParams The image parameters\r\n * @returns The image URL\r\n */\r\nexport function imageUrl(image, imageParams) {\r\n if (!image) {\r\n return '';\r\n }\r\n const params = {\r\n center: image.focalPoint ? `${image.focalPoint.top},${image.focalPoint.left}` : undefined,\r\n ...imageParams,\r\n };\r\n const paramsString = queryString.stringify(params);\r\n return `${image.src}${paramsString ? `?${queryString.stringify(params)}` : ''}`;\r\n}\r\nexport function getSrcs(image, upper, lower, steps, ratio, params) {\r\n const sizes = getRange(upper, lower, steps);\r\n return sizes.map((size) => `${imageUrl(image, {\r\n width: size,\r\n height: ratio ? size * ratio : undefined,\r\n ...params,\r\n })} ${size}w`);\r\n}\r\nfunction getRange(upper, lower, steps) {\r\n const difference = upper - lower;\r\n const increment = difference / (steps - 1);\r\n return [\r\n lower,\r\n ...Array(steps - 2)\r\n .fill('')\r\n .map((_, index) => Math.ceil(lower + increment * (index + 1))),\r\n upper,\r\n ];\r\n}\r\nexport function getRetinaSrcs(image, width, height) {\r\n const dprs = [1, 1.5, 2, 2.5, 3];\r\n return dprs.map((dpr) => `${imageUrl(image, {\r\n width: width * dpr,\r\n height: height ? height * dpr : undefined,\r\n })} ${dpr}x`);\r\n}\r\n","import { css } from 'styled-components';\r\nimport brand from './brand';\r\nexport default css `\r\n &::-webkit-scrollbar-track {\r\n background-color: ${brand.grey.grey40};\r\n }\r\n\r\n &::-webkit-scrollbar {\r\n background-color: ${brand.grey.grey40};\r\n height: 6px;\r\n width: 6px;\r\n }\r\n\r\n &::-webkit-scrollbar-thumb {\r\n background-color: ${brand.grey.grey90};\r\n border-radius: 0;\r\n cursor: pointer;\r\n }\r\n`;\r\n","import { domAnimation, LazyMotion } from 'framer-motion';\r\nimport React from 'react';\r\nexport function withMotion(WrappedComponent) {\r\n const displayName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\r\n const ComponentWithMotion = (props) => {\r\n return (React.createElement(LazyMotion, { features: domAnimation, strict: true },\r\n React.createElement(WrappedComponent, { ...props })));\r\n };\r\n ComponentWithMotion.displayName = `withMotion(${displayName})`;\r\n return ComponentWithMotion;\r\n}\r\n","import { useEffect, useRef } from 'react';\r\n/**\r\n * Use the IntersectionObserver to track visibility of an element in the viewport.\r\n * @param {IntersectionObserverCallback} callback\r\n * @param {IntersectionObserverInit} options\r\n * @returns {UseIntersectionObserverReturn}\r\n */\r\nfunction useIntersectionObserver(callback, options = {}) {\r\n const observerRef = useRef(null);\r\n const rootRef = useRef(null);\r\n const elementRef = useRef(null);\r\n useEffect(() => {\r\n if (!elementRef.current) {\r\n return undefined;\r\n }\r\n observerRef.current = new IntersectionObserver(callback, {\r\n root: rootRef.current,\r\n ...options,\r\n });\r\n observerRef.current.observe(elementRef.current);\r\n return () => {\r\n if (observerRef.current === null) {\r\n return;\r\n }\r\n observerRef.current.disconnect();\r\n };\r\n }, [callback, options]);\r\n return { elementRef, observerRef, rootRef };\r\n}\r\nexport default useIntersectionObserver;\r\n","import { useState } from 'react';\r\nimport useIntersectionObserver from './useIntersectionObserver';\r\nexport function useInView(options, reverse = false, isEditMode = false) {\r\n const [inView, setInView] = useState(false);\r\n const { elementRef } = useIntersectionObserver((entries) => {\r\n if (entries[0].isIntersecting) {\r\n setInView(true);\r\n }\r\n else if (reverse === true) {\r\n setInView(false);\r\n }\r\n }, options);\r\n return [elementRef, isEditMode ? true : inView];\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 { Device, until } from '@helpers/media';\r\nimport styled, { css } from 'styled-components';\r\nconst Text = styled.div ``;\r\nconst PrimaryStyles = css `\r\n border: 0;\r\n background-color: ${brand.secondary.red};\r\n color: ${brand.primary.purple};\r\n border-radius: 1000000px;\r\n overflow: hidden;\r\n\r\n &:before {\r\n ${transition('transform')};\r\n\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n background-color: ${brand.primary.offWhite};\r\n border-radius: 1000000px;\r\n transform: translateX(calc(-100% - 2px));\r\n }\r\n\r\n [data-variant='light'] & {\r\n span& {\r\n button.focus-ring &,\r\n button:hover &,\r\n a.focus-ring & {\r\n background-color: ${brand.primary.purple};\r\n color: ${brand.primary.offWhite};\r\n }\r\n\r\n @media (hover: hover) {\r\n a:hover & { \r\n background-color: ${brand.primary.purple};\r\n color: ${brand.primary.offWhite};\r\n }\r\n }\r\n }\r\n\r\n &:not(span) {\r\n &.focus-ring,\r\n &:hover,\r\n &:active {\r\n background-color: ${brand.primary.purple};\r\n color: ${brand.primary.offWhite};\r\n }\r\n\r\n @media (hover: hover) {\r\n &:hover { \r\n background-color: ${brand.primary.purple};\r\n color: ${brand.primary.offWhite};\r\n }\r\n }\r\n }\r\n\r\n &.focus-ring {\r\n outline-color: ${brand.primary.purple};\r\n }\r\n\r\n &:before {\r\n background-color: ${brand.primary.purple};\r\n }\r\n }\r\n\r\n [data-variant='dark'] & {\r\n span& {\r\n button.focus-ring &,\r\n button:hover &,\r\n a.focus-ring & {\r\n background-color: ${brand.primary.offWhite};\r\n }\r\n\r\n @media (hover: hover) {\r\n a:hover & { \r\n background-color: ${brand.primary.offWhite};\r\n }\r\n }\r\n }\r\n\r\n &:not(span) {\r\n &.focus-ring,\r\n &:active {\r\n background-color: ${brand.primary.offWhite};\r\n }\r\n\r\n @media (hover: hover) {\r\n &:hover { \r\n background-color: ${brand.primary.offWhite};\r\n }\r\n }\r\n }\r\n\r\n &.focus-ring {\r\n outline-color: ${brand.primary.offWhite};\r\n }\r\n\r\n &:before {\r\n background-color: ${brand.primary.offWhite};\r\n }\r\n }\r\n\r\n @media (hover: hover) {\r\n &:hover { \r\n background-color: ${brand.primary.offWhite};\r\n\r\n &:before {\r\n transform: translateX(0);\r\n }\r\n }\r\n }\r\n\r\n &.focus-ring,\r\n &:active,\r\n &[data-toggle-on='true'] {\r\n background-color: ${brand.primary.offWhite};\r\n\r\n &:before {\r\n transform: translateX(0);\r\n }\r\n }\r\n`;\r\nconst OutlineStyles = css `\r\n background-color: transparent;\r\n border-radius: 1000000px;\r\n overflow: hidden;\r\n\r\n &:before {\r\n ${transition('transform')};\r\n\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n background-color: ${brand.primary.offWhite};\r\n border-radius: 1000000px;\r\n transform: translateX(calc(-100% - 2px));\r\n }\r\n\r\n [data-variant='light'] & {\r\n color: ${brand.primary.purple};\r\n border: 1px solid ${brand.primary.purple};\r\n\r\n span& {\r\n button.focus-ring &,\r\n button:hover &,\r\n a.focus-ring &,\r\n a[data-toggle-on='true'] & {\r\n border-color: ${brand.primary.purple};\r\n background-color: ${brand.primary.purple};\r\n color: ${brand.primary.offWhite};\r\n }\r\n\r\n @media (hover: hover) {\r\n a:hover & { \r\n border-color: ${brand.primary.purple};\r\n background-color: ${brand.primary.purple};\r\n color: ${brand.primary.offWhite};\r\n }\r\n }\r\n }\r\n\r\n &:not(span) {\r\n &.focus-ring,\r\n &:active,\r\n &[data-toggle-on='true'] {\r\n border-color: ${brand.primary.purple};\r\n background-color: ${brand.primary.purple};\r\n color: ${brand.primary.offWhite};\r\n }\r\n\r\n @media (hover: hover) {\r\n &:hover { \r\n border-color: ${brand.primary.purple};\r\n background-color: ${brand.primary.purple};\r\n color: ${brand.primary.offWhite};\r\n }\r\n }\r\n }\r\n\r\n &.focus-ring {\r\n outline-color: ${brand.primary.purple};\r\n }\r\n\r\n &:before {\r\n background-color: ${brand.primary.purple};\r\n }\r\n }\r\n\r\n [data-variant='dark'] & {\r\n color: ${brand.primary.offWhite};\r\n border: 1px solid ${brand.primary.offWhite};\r\n\r\n span& {\r\n button.focus-ring &,\r\n \r\n a.focus-ring &,\r\n a[data-toggle-on='true'] & {\r\n background-color: ${brand.primary.offWhite};\r\n color: ${brand.primary.purple};\r\n }\r\n\r\n @media (hover: hover) {\r\n button:hover &,\r\n a:hover & { \r\n background-color: ${brand.primary.offWhite};\r\n color: ${brand.primary.purple};\r\n }\r\n }\r\n }\r\n\r\n &:not(span) {\r\n &.focus-ring,\r\n &:hover,\r\n &:active,\r\n &[data-toggle-on='true'] {\r\n background-color: ${brand.primary.offWhite};\r\n color: ${brand.primary.purple};\r\n }\r\n\r\n @media (hover: hover) {\r\n &:hover { \r\n background-color: ${brand.primary.offWhite};\r\n color: ${brand.primary.purple};\r\n }\r\n }\r\n }\r\n\r\n &.focus-ring {\r\n outline-color: ${brand.primary.offWhite};\r\n }\r\n\r\n &:before {\r\n background-color: ${brand.primary.offWhite};\r\n }\r\n }\r\n\r\n &.focus-ring {\r\n outline: auto;\r\n outline-offset: 3px;\r\n outline-style: solid;\r\n outline-width: 2px;\r\n }\r\n\r\n span& {\r\n button.focus-ring &, \r\n a.focus-ring &,\r\n a[data-toggle-on='true'] & {\r\n &::before {\r\n transform: translateX(0);\r\n }\r\n }\r\n\r\n @media (hover: hover) {\r\n button:hover &,\r\n a:hover & { \r\n &::before {\r\n transform: translateX(0);\r\n }\r\n }\r\n }\r\n }\r\n\r\n &:not(span) {\r\n &.focus-ring,\r\n &:active,\r\n &[data-toggle-on='true'] {\r\n &::before {\r\n transform: translateX(0);\r\n }\r\n }\r\n\r\n @media (hover: hover) {\r\n &:hover { \r\n &::before {\r\n transform: translateX(0);\r\n }\r\n }\r\n }\r\n }\r\n`;\r\nconst OutlineAltStyles = css `\r\n background-color: transparent;\r\n border-radius: 1000000px;\r\n overflow: hidden;\r\n\r\n &:before {\r\n ${transition('transform')};\r\n\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n background-color: ${brand.secondary.red};\r\n border-radius: 1000000px;\r\n transform: translateX(calc(-100% - 2px));\r\n }\r\n\r\n [data-variant='light'] & {\r\n color: ${brand.primary.purple};\r\n border: 1px solid ${brand.primary.purple};\r\n\r\n &.focus-ring {\r\n outline-color: ${brand.primary.purple};\r\n }\r\n }\r\n\r\n [data-variant='dark'] & {\r\n color: ${brand.primary.offWhite};\r\n border: 1px solid ${brand.primary.offWhite};\r\n\r\n span& {\r\n button.focus-ring &, \r\n a.focus-ring &,\r\n a[data-toggle-on='true'] & {\r\n color: ${brand.primary.purple};\r\n }\r\n\r\n @media (hover: hover) {\r\n button:hover &,\r\n a:hover & { \r\n color: ${brand.primary.purple};\r\n }\r\n }\r\n }\r\n\r\n &:not(span) {\r\n &.focus-ring,\r\n &:active,\r\n &[data-toggle-on='true'] {\r\n color: ${brand.primary.purple};\r\n }\r\n\r\n @media (hover: hover) {\r\n &:hover { \r\n color: ${brand.primary.purple};\r\n }\r\n }\r\n }\r\n\r\n &.focus-ring {\r\n outline-color: ${brand.primary.offWhite};\r\n }\r\n\r\n &:before {\r\n background-color: ${brand.secondary.red};\r\n }\r\n }\r\n\r\n &.focus-ring {\r\n outline: auto;\r\n outline-offset: 3px;\r\n outline-style: solid;\r\n outline-width: 2px;\r\n }\r\n\r\n span& {\r\n button.focus-ring &, \r\n a.focus-ring &,\r\n a[data-toggle-on='true'] & {\r\n background-color: ${brand.secondary.red};\r\n border-color: ${brand.secondary.red};\r\n\r\n &::before {\r\n transform: translateX(0);\r\n }\r\n }\r\n\r\n @media (hover: hover) {\r\n button:hover &,\r\n a:hover & { \r\n background-color: ${brand.secondary.red};\r\n border-color: ${brand.secondary.red};\r\n\r\n &::before {\r\n transform: translateX(0);\r\n }\r\n }\r\n }\r\n }\r\n\r\n &:not(span) {\r\n &.focus-ring,\r\n &:active,\r\n &[data-toggle-on='true'] {\r\n background-color: ${brand.secondary.red};\r\n border-color: ${brand.secondary.red};\r\n\r\n &::before {\r\n transform: translateX(0);\r\n }\r\n }\r\n\r\n @media (hover: hover) {\r\n &:hover { \r\n background-color: ${brand.secondary.red};\r\n border-color: ${brand.secondary.red};\r\n\r\n &::before {\r\n transform: translateX(0);\r\n }\r\n }\r\n }\r\n }\r\n`;\r\nconst Wave = styled.div `\r\n ${transition('max-width')};\r\n\r\n overflow: hidden;\r\n max-width: 0;\r\n color: ${brand.secondary.red};\r\n\r\n svg {\r\n display: block;\r\n margin-right: 5px;\r\n height: 30px;\r\n }\r\n`;\r\nconst Arrow = styled.div `\r\n ${transition('transform')};\r\n\r\n margin: 0 0 0 5px;\r\n\r\n svg {\r\n display: block;\r\n height: 12px;\r\n }\r\n`;\r\nconst TextOnlyStyles = css `\r\n display: inline-flex;\r\n align-items: center;\r\n border: 1px solid transparent;\r\n background: none;\r\n color: ${brand.primary.purple};\r\n padding: 0;\r\n\r\n [data-variant='dark'] & {\r\n color: ${brand.primary.offWhite};\r\n }\r\n\r\n ${Text} {\r\n margin-bottom: 2px;\r\n }\r\n\r\n &.focus-ring {\r\n outline: auto;\r\n outline-offset: 3px;\r\n outline-style: solid;\r\n outline-width: 2px;\r\n }\r\n\r\n span& {\r\n button.focus-ring &,\r\n a.focus-ring & {\r\n ${Wave} {\r\n max-width: 50px;\r\n }\r\n\r\n ${Arrow} {\r\n transform: translateX(15%);\r\n }\r\n }\r\n\r\n @media (hover: hover) {\r\n button:hover &,\r\n a:hover & { \r\n ${Wave} {\r\n max-width: 50px;\r\n }\r\n\r\n ${Arrow} {\r\n transform: translateX(15%);\r\n }\r\n }\r\n }\r\n }\r\n\r\n &:not(span) {\r\n &:hover,\r\n &:active,\r\n &.focus-ring {\r\n ${Wave} {\r\n max-width: 50px;\r\n }\r\n\r\n ${Arrow} {\r\n transform: translateX(15%);\r\n }\r\n }\r\n\r\n @media (hover: hover) {\r\n &:hover { \r\n ${Wave} {\r\n max-width: 50px;\r\n }\r\n\r\n ${Arrow} {\r\n transform: translateX(15%);\r\n }\r\n }\r\n }\r\n }\r\n`;\r\nconst Icon = styled.div `\r\n display: inline-flex;\r\n align-items: center;\r\n margin: 0 0 0 8px;\r\n\r\n svg {\r\n max-height: 24px;\r\n width: 20px;\r\n }\r\n\r\n &[data-position='left'] {\r\n order: -1;\r\n margin: 0 8px 0 0;\r\n }\r\n`;\r\nconst Button = styled.button `\r\n ${transition('color, background-color, border-color')};\r\n\r\n display: inline-flex;\r\n padding: 10px ${fluid(20, 25)} 12px;\r\n height: ${fluid(46, 48)};\r\n user-select: none;\r\n text-decoration: none;\r\n position: relative;\r\n align-items: center;\r\n\r\n ${Text} {\r\n ${fonts.graphikCompact.medium};\r\n\r\n font-size: ${fluid(18, 20)};\r\n line-height: ${fluid(24, 26)};\r\n display: inline-block;\r\n vertical-align: middle;\r\n position: relative;\r\n z-index: 2;\r\n }\r\n\r\n &:disabled {\r\n opacity: 0.66;\r\n pointer-events: none;\r\n\r\n &:hover {\r\n opacity: 0.66;\r\n }\r\n }\r\n\r\n /* Mobile click styles - button should mimic press */\r\n @media ${until(Device.TabletLarge)} {\r\n ${transition('color, background-color, border-color, transform')};\r\n\r\n span& {\r\n button:active &,\r\n a:active & {\r\n transform: translateY(1.5px);\r\n }\r\n }\r\n\r\n &:not(span) {\r\n &:active {\r\n transform: translateY(1.5px);\r\n }\r\n }\r\n }\r\n\r\n ${({ branding }) => {\r\n switch (branding) {\r\n case 'textOnly':\r\n return TextOnlyStyles;\r\n case 'solid':\r\n return PrimaryStyles;\r\n case 'outline':\r\n return OutlineStyles;\r\n case 'outline-alt':\r\n return OutlineAltStyles;\r\n default:\r\n break;\r\n }\r\n}}\r\n`;\r\nconst ArrowButton = styled.button `\r\n display: flex;\r\n align-items: center;\r\n justify-content: flex-start;\r\n background: transparent;\r\n border: none;\r\n width: ${fluid(58, 60)};\r\n height: ${fluid(48, 50)};\r\n padding: 0;\r\n color: var(--fgColour, ${brand.primary.purple});\r\n\r\n &:first-child {\r\n justify-content: flex-end;\r\n\r\n svg {\r\n transform: scaleX(-1);\r\n }\r\n }\r\n\r\n &:disabled {\r\n opacity: 0.66;\r\n pointer-events: none;\r\n\r\n &:hover {\r\n opacity: 0.66;\r\n }\r\n }\r\n\r\n svg {\r\n display: block;\r\n height: ${fluid(12, 15)};\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 ButtonInner = styled.div `\r\n ${transition('max-width')};\r\n\r\n border: 2px solid var(--fgColour, ${brand.primary.purple});\r\n border-radius: 5000000px;\r\n max-width: ${fluid(46, 48)};\r\n width: ${fluid(56, 58)};\r\n height: ${fluid(46, 48)};\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n\r\n ${ArrowButton}.focus-ring & {\r\n outline: auto;\r\n outline-offset: 3px;\r\n outline-style: solid;\r\n outline-width: 2px;\r\n }\r\n\r\n ${ArrowButton}.focus-ring & {\r\n max-width: ${fluid(56, 58)};\r\n }\r\n\r\n @media (hover: hover) {\r\n ${ArrowButton}:hover & {\r\n max-width: ${fluid(56, 58)};\r\n }\r\n }\r\n\r\n @media ${until(Device.TabletLarge)} {\r\n max-width: ${fluid(56, 58)};\r\n }\r\n`;\r\nconst ButtonIcon = styled.div `\r\n ${transition('transform')};\r\n position: relative;\r\n line-height: 0;\r\n transform: translateX(0);\r\n\r\n ${ArrowButton}:last-child.focus-ring &{\r\n transform: translateX(7px);\r\n }\r\n\r\n @media (hover: hover) {\r\n ${ArrowButton}:last-child:hover & {\r\n transform: translateX(7px);\r\n }\r\n }\r\n\r\n ${ArrowButton}.focus-ring & {\r\n transform: translateX(-7px);\r\n }\r\n\r\n @media (hover: hover) {\r\n ${ArrowButton}:hover & {\r\n transform: translateX(-7px);\r\n }\r\n }\r\n\r\n @media ${until(Device.TabletLarge)} {\r\n transform: translateX(-7px);\r\n\r\n ${ArrowButton}:last-child & {\r\n transform: translateX(7px);\r\n }\r\n }\r\n`;\r\nconst HoverLine = styled.div `\r\n ${transition('transform')};\r\n\r\n position: absolute;\r\n left: 0;\r\n top: 50%;\r\n width: 22px;\r\n height: 3px;\r\n transform-origin: 0;\r\n transform: translate(2px, -50%) scaleX(0);\r\n background-color: var(--fgColour, ${brand.primary.purple});\r\n\r\n ${ArrowButton}:last-child & {\r\n transform-origin: 100%;\r\n left: auto;\r\n right: 0;\r\n transform: translate(-2px, -50%) scaleX(0);\r\n }\r\n\r\n ${ArrowButton}.focus-ring & {\r\n transform: translate(2px, -50%) scaleX(1);\r\n }\r\n\r\n @media (hover: hover) {\r\n ${ArrowButton}:hover & {\r\n transform: translate(2px, -50%) scaleX(1);\r\n }\r\n }\r\n\r\n ${ArrowButton}:last-child.focus-ring & {\r\n transform: translate(-2px, -50%) scaleX(1);\r\n }\r\n\r\n @media (hover: hover) {\r\n ${ArrowButton}:last-child:hover & {\r\n transform: translate(-2px, -50%) scaleX(1);\r\n }\r\n }\r\n\r\n @media ${until(Device.TabletLarge)} {\r\n transform: translate(2px, -50%) scaleX(1);\r\n\r\n ${ArrowButton}:last-child & {\r\n transform: translate(-2px, -50%) scaleX(1);\r\n }\r\n }\r\n`;\r\nexport const ButtonStyles = {\r\n Arrow,\r\n ArrowButton,\r\n Button,\r\n ButtonIcon,\r\n ButtonInner,\r\n HoverLine,\r\n Icon,\r\n Text,\r\n Wave,\r\n};\r\n","import { getSvgFromSystem, SystemIcon } from '@helpers/systemIcons';\r\nimport React from 'react';\r\nimport { FocusRing } from 'react-aria';\r\nimport { ButtonStyles } from './Button.styles';\r\nconst Button = ({ branding, className, disabled, title, toggleOn = false, type = 'button', onClick, icon, iconPosition = 'right', ...otherProps }) => {\r\n return (React.createElement(FocusRing, { focusRingClass: \"focus-ring\" },\r\n React.createElement(ButtonStyles.Button, { className: className, branding: branding, disabled: disabled, type: type, onClick: onClick, \"data-toggle-on\": toggleOn, \"data-branding\": branding, ...otherProps },\r\n branding === 'textOnly' && (React.createElement(ButtonStyles.Wave, null, getSvgFromSystem(SystemIcon.Wave1))),\r\n React.createElement(ButtonStyles.Text, null, title),\r\n icon ? (React.createElement(ButtonStyles.Icon, { \"data-position\": iconPosition }, icon)) : branding === 'textOnly' ? (React.createElement(ButtonStyles.Arrow, null, getSvgFromSystem(SystemIcon.ArrowRight))) : null)));\r\n};\r\nconst FakeButton = ({ branding, className, title, icon, iconPosition = 'right', ...otherProps }) => {\r\n return (React.createElement(ButtonStyles.Button, { className: className, branding: branding, as: \"span\", ...otherProps },\r\n branding === 'textOnly' && (React.createElement(ButtonStyles.Wave, null, getSvgFromSystem(SystemIcon.Wave1))),\r\n React.createElement(ButtonStyles.Text, null, title),\r\n icon ? (React.createElement(ButtonStyles.Icon, { \"data-position\": iconPosition }, icon)) : branding === 'textOnly' ? (React.createElement(ButtonStyles.Arrow, null, getSvgFromSystem(SystemIcon.ArrowRight))) : null));\r\n};\r\nconst LinkButton = ({ branding, className, href, target = '_self', title, icon, iconPosition = 'right', ...otherProps }) => {\r\n return (React.createElement(FocusRing, { focusRingClass: \"focus-ring\" },\r\n React.createElement(ButtonStyles.Button, { className: className, as: \"a\", branding: branding, href: href, target: target, ...otherProps },\r\n branding === 'textOnly' && (React.createElement(ButtonStyles.Wave, null, getSvgFromSystem(SystemIcon.Wave1))),\r\n React.createElement(ButtonStyles.Text, null, title),\r\n icon ? (React.createElement(ButtonStyles.Icon, { \"data-position\": iconPosition }, icon)) : branding === 'textOnly' ? (React.createElement(ButtonStyles.Arrow, null, getSvgFromSystem(SystemIcon.ArrowRight))) : null)));\r\n};\r\nconst ArrowButton = ({ labelText, disabled, onClick, ...otherProps }) => {\r\n return (React.createElement(FocusRing, { focusRingClass: \"focus-ring\" },\r\n React.createElement(ButtonStyles.ArrowButton, { \"aria-label\": labelText, disabled: disabled, onClick: onClick, ...otherProps },\r\n React.createElement(ButtonStyles.ButtonInner, null,\r\n React.createElement(ButtonStyles.ButtonIcon, null,\r\n getSvgFromSystem(SystemIcon.Chevron),\r\n React.createElement(ButtonStyles.HoverLine, null))))));\r\n};\r\nexport { Button as default, LinkButton, ArrowButton, FakeButton };\r\n","import { transition } from '@helpers/animate';\r\nimport brand from '@helpers/brand';\r\nimport { ButtonReset } from '@helpers/global';\r\nimport { siteWide } from '@helpers/grid';\r\nimport { Layers } from '@helpers/layers';\r\nimport { paragraphRegular } from '@helpers/typography';\r\nimport styled from 'styled-components';\r\nconst Container = styled.div `\r\n ${siteWide};\r\n\r\n position: relative;\r\n z-index: ${Layers.NavigationTray + 1};\r\n height: 0;\r\n`;\r\nconst Button = styled.button `\r\n ${ButtonReset};\r\n ${transition('opacity, transform')};\r\n ${paragraphRegular};\r\n\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n margin: 0;\r\n opacity: 0;\r\n transform: translate(3px, -100%);\r\n background-color: var(--fgColour, ${brand.primary.offWhite});\r\n color: var(--bgColour, ${brand.primary.purple});\r\n padding: 8px 12px;\r\n\r\n &.focus-ring {\r\n outline: auto;\r\n outline-offset: 3px;\r\n outline-style: solid;\r\n outline-width: 2px;\r\n outline-color: var(--fgColour, ${brand.primary.offWhite});\r\n opacity: 1;\r\n transform: translate(3px, 3px);\r\n }\r\n`;\r\nconst SkipLinkStyles = {\r\n Container,\r\n Button,\r\n};\r\nexport default SkipLinkStyles;\r\n","import { scrollIntoView } from '@helpers/animate';\r\nimport * as React from 'react';\r\nimport { FocusRing } from 'react-aria';\r\nimport S from './SkipLink.styles';\r\nconst SkipLink = ({ type = 'inline' }) => {\r\n const ref = React.useRef(null);\r\n return (React.createElement(S.Container, null,\r\n React.createElement(FocusRing, { focusRingClass: \"focus-ring\" },\r\n React.createElement(S.Button, { ref: ref, onClick: () => {\r\n if (type === 'header') {\r\n skipToMain();\r\n }\r\n else {\r\n skipSection();\r\n }\r\n } }, type === 'header' ? React.createElement(React.Fragment, null, \"Skip to Main Content\") : React.createElement(React.Fragment, null, \"Skip to Next Section\")))));\r\n function skipToMain() {\r\n const targetEl = document.getElementById('main');\r\n if (!targetEl) {\r\n return;\r\n }\r\n scrollIntoView(targetEl);\r\n focusNext(targetEl);\r\n }\r\n function skipSection() {\r\n let wrapperEl = ref.current?.closest('div[class^=react_Components_]');\r\n // Should only ever occur in storybook\r\n if (!wrapperEl) {\r\n wrapperEl = ref.current?.closest('section');\r\n }\r\n let targetEl = wrapperEl?.nextElementSibling;\r\n // Last element in main wrapper, next element is footer\r\n if (!targetEl) {\r\n targetEl = wrapperEl?.parentElement?.nextElementSibling;\r\n }\r\n if (!targetEl) {\r\n return;\r\n }\r\n scrollIntoView(targetEl);\r\n focusNext(targetEl);\r\n }\r\n function focusNext(el) {\r\n const focusable = el.querySelectorAll('button');\r\n focusable[0]?.focus();\r\n }\r\n};\r\nexport default SkipLink;\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 { Device, from } from '@helpers/media';\r\nimport { contentStyles, h2 } from '@helpers/typography';\r\nimport { ButtonStyles } from '@stories/Components/Buttons/GeneralButton/Button.styles';\r\nimport styled, { css } from 'styled-components';\r\nconst Container = styled.div `\r\n ${baseGrid};\r\n\r\n row-gap: ${fluid(14, 20)};\r\n grid-template-rows: auto 1fr;\r\n margin: 0 0 ${fluid(32, 48)};\r\n overflow: hidden;\r\n`;\r\nconst Title = styled.h2 `\r\n ${h2};\r\n\r\n grid-column: 1 / span 12;\r\n line-height: 1;\r\n letter-spacing: 0.025em;\r\n margin: 0;\r\n\r\n [data-title-colour='true'] & {\r\n color: ${brand.secondary.red};\r\n }\r\n\r\n span[data-type='word'] {\r\n overflow: hidden;\r\n height: ${fluid(40, 70)};\r\n }\r\n\r\n span[data-type='highlight'] {\r\n color: ${brand.secondary.red};\r\n }\r\n\r\n span[data-type='letter'] {\r\n ${transition('transform, opacity', 0.5, 'cubic-bezier(.02,.11,.3,1.22)')}\r\n\r\n opacity: 0;\r\n transform: translateY(100%);\r\n transition-delay: calc(var(--index, 1) * 45ms);\r\n\r\n ${Container}[data-animate='true'] & {\r\n opacity: 1;\r\n transform: none;\r\n }\r\n }\r\n\r\n @media ${from(Device.Tablet)} {\r\n grid-column: 1 / span 6;\r\n\r\n ${Container}[data-has-content='false'][data-has-cta='false'] & {\r\n grid-column: 1 / span 12;\r\n }\r\n\r\n ${Container}[data-has-content='true'][data-has-cta='true'] & {\r\n grid-row: 1 / span 2;\r\n }\r\n }\r\n\r\n @media ${from(Device.DesktopSmall)} {\r\n grid-column: 2 / span 5;\r\n\r\n ${Container}[data-has-content='false'][data-has-cta='false'] & {\r\n grid-column: 2 / span 10;\r\n }\r\n }\r\n\r\n @media ${from(Device.Desktop)} {\r\n grid-column: 3 / span 4;\r\n\r\n ${Container}[data-has-content='false'][data-has-cta='false'] & {\r\n grid-column: 3 / span 8;\r\n }\r\n }\r\n`;\r\nconst rightSpans = css `\r\n grid-column: 1 / span 12;\r\n\r\n @media ${from(Device.Tablet)} {\r\n grid-column: 7 / span 6;\r\n }\r\n\r\n @media ${from(Device.DesktopSmall)} {\r\n grid-column: 7 / span 5;\r\n }\r\n\r\n @media ${from(Device.Desktop)} {\r\n grid-column: 7 / span 4;\r\n }\r\n`;\r\nconst Content = styled.div `\r\n ${transition('transform, opacity', 1)};\r\n\r\n ${contentStyles};\r\n ${rightSpans};\r\n\r\n opacity: 0;\r\n transform: translateX(66%);\r\n\r\n ${Container}[data-animate='true'] & {\r\n opacity: 1;\r\n transform: none;\r\n }\r\n`;\r\nconst ButtonWrapper = styled.div `\r\n ${transition('transform, opacity', 0.8)};\r\n ${rightSpans};\r\n\r\n margin: -6px 0 0;\r\n opacity: 0;\r\n transform: translatey(100%);\r\n\r\n ${Container}[data-animate='true'] & {\r\n opacity: 1;\r\n transform: none;\r\n }\r\n\r\n ${ButtonStyles.Text} {\r\n font-size: ${fluid(18, 24)};\r\n line-height: ${fluid(24, 32)};\r\n }\r\n\r\n @media ${from(Device.Tablet)} {\r\n display: flex;\r\n\r\n ${Container}[data-has-content='false'] & {\r\n margin: 0;\r\n\r\n ${ButtonStyles.Button} {\r\n ${transition('transform', 0.3)};\r\n\r\n margin-left: auto;\r\n\r\n /* Compensate for wave appearing */\r\n &.focus-ring,\r\n &:hover {\r\n transform: translateX(44px);\r\n }\r\n }\r\n }\r\n }\r\n`;\r\nconst TitleIntroBlockStyles = {\r\n Container,\r\n Title,\r\n Content,\r\n ButtonWrapper,\r\n};\r\nexport default TitleIntroBlockStyles;\r\n","import { rootMargin } from '@helpers/animate';\r\nimport { useInView } from '@hooks/useInView';\r\nimport { LinkButton } from '@stories/Components/Buttons/GeneralButton/Button';\r\nimport * as React from 'react';\r\nimport S from './TitleIntroBlock.styles';\r\nconst TitleIntroBlock = (props) => {\r\n const [elementRef, inView] = useInView({ rootMargin }, false);\r\n let index = 0;\r\n return (React.createElement(S.Container, { ref: elementRef, \"data-animate\": inView, \"data-has-title\": !!props.title, \"data-has-content\": !!props.intro, \"data-has-cta\": !!props.introCta, \"data-title-colour\": props.altTitleColour },\r\n splitTitleIntoWords(props.title),\r\n props.intro && React.createElement(S.Content, { dangerouslySetInnerHTML: { __html: props.intro } }),\r\n props.introCta && (React.createElement(S.ButtonWrapper, null,\r\n React.createElement(LinkButton, { branding: 'textOnly', href: props.introCta.url, target: props.introCta.target, title: props.introCta.text ?? `View ${props.title}` })))));\r\n /**\r\n * Wraps word groups based on position of asterisks for highlighting\r\n */\r\n function splitTitleIntoWords(title) {\r\n if (!title) {\r\n return null;\r\n }\r\n const sections = title.split('*');\r\n return (React.createElement(S.Title, null, sections.map((section, i) => {\r\n if (i % 2 !== 0) {\r\n return (React.createElement(\"span\", { key: `title-word-section-${section}-${i}`, \"data-type\": \"highlight\" }, wrapTitleWords(section)));\r\n }\r\n else {\r\n return wrapTitleWords(section);\r\n }\r\n })));\r\n }\r\n /**\r\n * Wraps each letter in a span, with a span around each word\r\n */\r\n function wrapTitleWords(title) {\r\n if (!title || title === '') {\r\n return null;\r\n }\r\n const words = title.split(' ');\r\n return (React.createElement(React.Fragment, null, words.map((word, i) => {\r\n const letters = word.split('');\r\n return (React.createElement(React.Fragment, { key: `title-word-${word}-${i}` },\r\n React.createElement(\"span\", { \"data-type\": \"word\" }, letters.map((letter) => {\r\n index = index + 1;\r\n return (React.createElement(\"span\", { key: `title-word-${word}-${i}-${index}`, \"data-type\": \"letter\", style: { '--index': index } }, letter));\r\n })),\r\n i === words.length - 1 ? '' : ' '));\r\n })));\r\n }\r\n};\r\nexport default TitleIntroBlock;\r\n","import brand from '@helpers/brand';\r\nimport { fluid } from '@helpers/fluid';\r\nimport { ButtonReset } from '@helpers/global';\r\nimport { siteWide } from '@helpers/grid';\r\nimport { Device, from } from '@helpers/media';\r\nimport styled from 'styled-components';\r\nconst Container = styled.section `\r\n --sectionSpacingTop: ${fluid(32, 80)};\r\n --sectionSpacingBottom: ${fluid(32, 80)};\r\n --bgColour: transparent;\r\n --bgColourTint: ${brand.tint.offWhite};\r\n --fgColour: ${brand.primary.purple};\r\n --fgColourTint: ${brand.tint.purple};\r\n\r\n position: relative;\r\n scroll-margin: var(--stickyHeaderHeight) 0 0;\r\n background-color: var(--bgColour);\r\n color: var(--fgColour);\r\n\r\n &[data-variant='light'] {\r\n --bgColour: ${brand.primary.offWhite};\r\n --bgColourTint: ${brand.tint.offWhite};\r\n --fgColour: ${brand.primary.purple};\r\n --fgColourTint: ${brand.tint.purple};\r\n }\r\n\r\n &[data-variant='dark'] {\r\n --bgColour: ${brand.primary.purple};\r\n --bgColourTint: ${brand.tint.purple};\r\n --fgColour: ${brand.primary.offWhite};\r\n --fgColourTint: ${brand.tint.offWhite};\r\n }\r\n\r\n &[data-allow-scroll-margin='true'],\r\n &[data-has-skip='true'] {\r\n overflow: clip;\r\n overflow: hidden;\r\n }\r\n\r\n &[data-flush='top'] {\r\n --sectionSpacingTop: 0;\r\n\r\n @media ${from(Device.Tablet)} {\r\n --sectionSpacingTop: 0;\r\n }\r\n }\r\n\r\n &[data-flush='bottom'] {\r\n --sectionSpacingBottom: 0;\r\n\r\n @media ${from(Device.Tablet)} {\r\n --sectionSpacingBottom: 0;\r\n }\r\n }\r\n\r\n &[data-flush='both'] {\r\n --sectionSpacingTop: 0;\r\n --sectionSpacingBottom: 0;\r\n\r\n @media ${from(Device.Tablet)} {\r\n --sectionSpacingTop: 0;\r\n --sectionSpacingBottom: 0;\r\n }\r\n }\r\n\r\n /* Negative margin bottom to force overlap */\r\n &[data-overlap-bottom='true'] {\r\n margin-bottom: calc(var(--sectionSpacingBottom) * -1);\r\n }\r\n\r\n .equally-ai___high-saturation & {\r\n filter: saturate(200%);\r\n }\r\n\r\n .equally-ai___reverse-contrast & {\r\n filter: invert(100%);\r\n }\r\n\r\n .equally-ai___monochrome-contrast & {\r\n filter: grayscale(100%);\r\n }\r\n\r\n .equally-ai___reverse-contrast.equally-ai___monochrome-contrast & {\r\n filter: grayscale(100%) invert(100%);\r\n }\r\n`;\r\nconst Inner = styled.div `\r\n color: var(--fgColor);\r\n padding-top: var(--sectionSpacingTop);\r\n padding-bottom: var(--sectionSpacingBottom);\r\n\r\n /* Don't apply background color for white backgrounds */\r\n ${Container} & {\r\n background: var(--bgColor);\r\n }\r\n`;\r\nconst SiteWide = styled.div `\r\n ${siteWide}\r\n`;\r\nconst FocusAnchor = styled.button `\r\n ${ButtonReset};\r\n\r\n height: 0;\r\n width: 0;\r\n`;\r\nconst SectionWrapperStyles = {\r\n Container,\r\n Inner,\r\n SiteWide,\r\n FocusAnchor,\r\n};\r\nexport default SectionWrapperStyles;\r\n","import * as React from 'react';\r\nconst BasePropsContext = React.createContext({});\r\nexport function withBaseProps(WrappedComponent) {\r\n const displayName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\r\n const ComponentWithBaseProps = (props) => {\r\n return (React.createElement(BasePropsContext.Provider, { value: props },\r\n React.createElement(WrappedComponent, { ...props })));\r\n };\r\n ComponentWithBaseProps.displayName = `withBaseProps(${displayName})`;\r\n return ComponentWithBaseProps;\r\n}\r\nexport const useBaseProps = () => React.useContext(BasePropsContext);\r\n","import { useBaseProps } from '@hoc/withBaseProps';\r\nimport SkipLink from '@stories/Components/General/SkipLink/SkipLink';\r\nimport * as React from 'react';\r\nimport S from './SectionWrapper.styles';\r\nconst SectionWrapper = React.forwardRef((props, ref) => {\r\n const { children, layout = 'default', flush = 'none', variant = 'none', removeSkipLink, ...otherProps } = props;\r\n const baseProps = useBaseProps();\r\n return (React.createElement(S.Container, { ref: ref, id: baseProps.id, \"data-allow-scroll-margin\": !!baseProps.id, \"data-flush\": flush, \"data-variant\": variant, \"data-has-skip\": !removeSkipLink, ...otherProps },\r\n React.createElement(S.Inner, null,\r\n !removeSkipLink ? React.createElement(SkipLink, null) : React.createElement(S.FocusAnchor, { \"aria-label\": \"Skip to content anchor\" }),\r\n renderLayout())));\r\n function renderLayout() {\r\n if (layout === 'fullWidth') {\r\n return children;\r\n }\r\n return React.createElement(S.SiteWide, null, children);\r\n }\r\n});\r\nSectionWrapper.displayName = 'SectionWrapper';\r\nexport default SectionWrapper;\r\n","import { disableAnimationClass, transition } from '@helpers/animate';\r\nimport { imageCoverContainer, imageWrapperPreserveRatio } from '@helpers/aspectRatio';\r\nimport brand from '@helpers/brand';\r\nimport { fluid } from '@helpers/fluid';\r\nimport { ButtonReset } from '@helpers/global';\r\nimport { Device, from, until } from '@helpers/media';\r\nimport scrollbars from '@helpers/scrollbars';\r\nimport { contentStyles, h3, label, paragraphLarge } from '@helpers/typography';\r\nimport { ButtonStyles } from '@stories/Components/Buttons/GeneralButton/Button.styles';\r\nimport { m } from 'framer-motion';\r\nimport styled from 'styled-components';\r\nconst Container = styled(m.div) `\r\n [data-variant='light'] & {\r\n --titleColour: ${brand.tertiary.lightBlue};\r\n }\r\n\r\n [data-variant='dark'] & {\r\n --titleColour: ${brand.secondary.red};\r\n }\r\n\r\n @media ${from(Device.TabletSmall)} {\r\n display: grid;\r\n grid-template-rows: auto 1fr;\r\n }\r\n`;\r\nconst ImageWrapper = styled.div `\r\n ${imageWrapperPreserveRatio(339, 200)}\r\n\r\n @media ${from(Device.TabletSmall)} {\r\n ${imageWrapperPreserveRatio(469, 498)};\r\n\r\n grid-area: 1 / 1;\r\n }\r\n`;\r\nconst Image = styled.img `\r\n ${imageCoverContainer()};\r\n`;\r\nconst Icon = styled.span `\r\n ${transition('transform')};\r\n\r\n display: block;\r\n flex: 0 0 auto;\r\n margin-left: auto;\r\n width: 22px;\r\n color: currentColor;\r\n\r\n svg {\r\n display: block;\r\n height: 100%;\r\n width: 100%;\r\n }\r\n\r\n ${Container}[data-is-opening='false'] & {\r\n transform: rotate(90deg);\r\n }\r\n\r\n ${Container}[data-is-opening='true'] & {\r\n transform: rotate(270deg);\r\n }\r\n\r\n @media ${from(Device.TabletSmall)} {\r\n ${Container}[data-is-opening='false'] & {\r\n transform: rotate(-90deg);\r\n }\r\n\r\n ${Container}[data-is-opening='true'] & {\r\n transform: rotate(90deg);\r\n }\r\n }\r\n`;\r\nconst ClickPrompt = styled.button `\r\n ${ButtonReset};\r\n ${paragraphLarge};\r\n ${transition('text-decoration-color')};\r\n\r\n display: inline-flex;\r\n align-items: center;\r\n background-color: var(--fgColour);\r\n color: var(--bgColour);\r\n width: 100%;\r\n margin: 0;\r\n padding: ${fluid(12, 14)} ${fluid(18, 30)};\r\n text-decoration: underline;\r\n text-decoration-color: transparent;\r\n text-underline-offset: 3px;\r\n text-align: left;\r\n gap: ${fluid(8, 12)};\r\n\r\n &.focus-ring {\r\n outline: auto;\r\n outline-offset: 3px;\r\n outline-style: solid;\r\n outline-width: 2px;\r\n }\r\n\r\n &.focus-ring,\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')};\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 &.focus-ring,\r\n &:hover {\r\n ${Container}[data-is-opening='false'] & {\r\n ${Icon} {\r\n transform: rotate(-90deg) translateX(2px);\r\n }\r\n }\r\n\r\n ${Container}[data-is-opening='true'] & {\r\n ${Icon} {\r\n transform: rotate(90deg) translateX(2px);\r\n }\r\n }\r\n }\r\n }\r\n`;\r\nconst OverlayWrapper = styled.div `\r\n @media ${from(Device.TabletSmall)} {\r\n grid-area: 1 / 1;\r\n display: flex;\r\n }\r\n`;\r\nconst Overlay = styled(m.div) `\r\n overflow: hidden;\r\n background-color: var(--fgColour);\r\n width: 100%;\r\n\r\n @media ${from(Device.TabletSmall)} {\r\n margin-top: auto;\r\n z-index: 1;\r\n position: relative;\r\n }\r\n\r\n ${disableAnimationClass} & {\r\n height: 0 !important;\r\n }\r\n\r\n [data-is-open='true'] & {\r\n ${disableAnimationClass} & {\r\n height: auto !important;\r\n\r\n @media ${from(Device.TabletSmall)} {\r\n height: 100% !important;\r\n }\r\n }\r\n }\r\n`;\r\nconst OverlayInner = styled.div `\r\n color: var(--bgColour);\r\n padding: 0 ${fluid(18, 30)} ${fluid(18, 26)};\r\n height: 100%;\r\n\r\n ${ButtonStyles.Button} {\r\n margin: ${fluid(18, 32)} 0 0;\r\n color: var(--bgColour);\r\n border-color: var(--bgColour);\r\n\r\n &::before {\r\n background-color: var(--bgColour);\r\n }\r\n }\r\n\r\n ${ButtonStyles.Button}:not(span) {\r\n &.focus-ring,\r\n &:hover,\r\n &:active {\r\n color: var(--fgColour);\r\n border-color: var(--bgColour);\r\n background-color: var(--bgColour);\r\n }\r\n }\r\n\r\n @media ${from(Device.TabletSmall)} {\r\n ${scrollbars};\r\n\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n padding-top: ${fluid(18, 26)};\r\n\r\n ${Container}[data-is-open='true'] & {\r\n overflow: auto;\r\n }\r\n }\r\n`;\r\nconst Label = styled.p `\r\n ${label};\r\n\r\n margin: 0 0 ${fluid(16, 20)};\r\n\r\n @media ${until(Device.TabletSmall)} {\r\n display: none;\r\n }\r\n`;\r\nconst Title = styled.h3 `\r\n ${h3};\r\n\r\n color: var(--titleColour);\r\n margin: 0 0 ${fluid(12, 20)};\r\n`;\r\nconst Content = styled.div `\r\n ${contentStyles};\r\n`;\r\nconst SignpostDetailCardStyles = {\r\n ClickPrompt,\r\n Container,\r\n Content,\r\n Icon,\r\n Image,\r\n ImageWrapper,\r\n Label,\r\n Overlay,\r\n OverlayInner,\r\n OverlayWrapper,\r\n Title,\r\n};\r\nexport default SignpostDetailCardStyles;\r\n","import { getSrcs } from '@helpers/image';\r\nimport { Device, from, until } from '@helpers/media';\r\nimport { getSvgFromSystem, SystemIcon } from '@helpers/systemIcons';\r\nimport { withMotion } from '@hoc/withMotion';\r\nimport { LinkButton } from '@stories/Components/Buttons/GeneralButton/Button';\r\nimport { MotionConfig } from 'framer-motion';\r\nimport * as React from 'react';\r\nimport { FocusRing } from 'react-aria';\r\nimport { useMedia } from 'react-use';\r\nimport S from './SignpostDetailCard.styles';\r\nconst SignpostDetailCard = (props) => {\r\n const isMobile = useMedia(until(Device.TabletSmall), false);\r\n const isDesktop = useMedia(from(Device.TabletSmall), false);\r\n const [open, setOpen] = React.useState(false);\r\n const [opening, setOpening] = React.useState(false);\r\n const srcs = props.image ? getSrcs(props.image, 455, 339, 3, isMobile ? 260 / 441 : 120 / 113) : [];\r\n const sizes = `${until(Device.MobileLarge)} 100vw, ${until(Device.TabletLarge)} 50vw, ${until(Device.Desktop)} 33vw, ${until(Device.DesktopLarge)} 25vw, 405px`;\r\n return (React.createElement(MotionConfig, { transition: { duration: 0.5, ease: 'easeOut' } },\r\n React.createElement(S.Container, { initial: opening ? 'opened' : 'closed', animate: opening ? 'opened' : 'closed', \"data-is-open\": open, \"data-is-opening\": opening },\r\n React.createElement(S.ImageWrapper, null,\r\n React.createElement(S.Image, { src: srcs[0].split(' ')[0], srcSet: srcs.join(','), sizes: sizes, alt: props.image.altText ?? props.title, loading: 'lazy' })),\r\n React.createElement(FocusRing, { focusRingClass: \"focus-ring\" },\r\n React.createElement(S.ClickPrompt, { onClick: () => {\r\n if (opening) {\r\n setOpen(false);\r\n }\r\n else {\r\n setTimeout(() => setOpen(true), 600);\r\n }\r\n setOpening(!opening);\r\n } },\r\n props.prompt,\r\n React.createElement(S.Icon, { \"aria-hidden\": \"true\" }, getSvgFromSystem(SystemIcon.ArrowRight)))),\r\n React.createElement(S.OverlayWrapper, null,\r\n React.createElement(S.Overlay, { variants: {\r\n closed: {\r\n height: 0,\r\n transitionEnd: {\r\n visibility: 'hidden',\r\n },\r\n },\r\n opened: {\r\n visibility: 'visible',\r\n height: isDesktop ? '100%' : 'auto',\r\n },\r\n } },\r\n React.createElement(S.OverlayInner, null,\r\n React.createElement(S.Title, null, props.title),\r\n React.createElement(S.Content, { dangerouslySetInnerHTML: { __html: props.content } }),\r\n props.cta && props.cta.text && (React.createElement(LinkButton, { branding: 'outline', href: props.cta.url, target: props.cta.target, title: props.cta.text }))))))));\r\n};\r\nexport default withMotion(SignpostDetailCard);\r\n","import { transition } from '@helpers/animate';\r\nimport brand from '@helpers/brand';\r\nimport { baseGrid } from '@helpers/grid';\r\nimport { between, Device, from } from '@helpers/media';\r\nimport SignpostDetailCardStyles from '@stories/Components/Cards/SignpostDetailCard/SignpostDetailCard.styles';\r\nimport TitleIntroBlockStyles from '@stories/Components/General/TitleIntroBlock/TitleIntroBlock.styles';\r\nimport SectionWrapper from '@stories/Components/Global/SectionWrapper/SectionWrapper';\r\nimport SectionWrapperStyles from '@stories/Components/Global/SectionWrapper/SectionWrapper.styles';\r\nimport styled from 'styled-components';\r\nconst Container = styled(SectionWrapper) `\r\n position: relative;\r\n overflow: hidden;\r\n\r\n ${SectionWrapperStyles.SiteWide} {\r\n ${baseGrid};\r\n }\r\n\r\n ${TitleIntroBlockStyles.Container} {\r\n grid-column: 1 / span 12;\r\n }\r\n\r\n &[data-bg-graphic='true'] {\r\n ${SectionWrapperStyles.Inner} {\r\n padding-bottom: calc(var(--sectionSpacingBottom) * 2);\r\n }\r\n\r\n ${SectionWrapperStyles.SiteWide} > svg {\r\n ${transition('transform', 0.6)};\r\n\r\n position: absolute;\r\n bottom: 0;\r\n left: 0;\r\n width: 90%;\r\n color: ${brand.tertiary.darkBlue};\r\n transform: translate(-15%, 20%);\r\n }\r\n\r\n &[data-animate='true'] {\r\n ${SectionWrapperStyles.SiteWide} > svg {\r\n transform: translate(-10%, 20%);\r\n }\r\n }\r\n }\r\n`;\r\nconst CardsWrapper = styled.div `\r\n position: relative;\r\n grid-column: 1 / span 12;\r\n display: grid;\r\n gap: var(--gutterWidth);\r\n\r\n @media ${from(Device.TabletSmall)} {\r\n &[data-card-amount='4'] {\r\n grid-template-columns: repeat(4, 1fr);\r\n }\r\n }\r\n\r\n @media ${between(Device.TabletSmall, Device.DesktopSmall)} {\r\n grid-template-columns: repeat(3, 1fr);\r\n ${SignpostDetailCardStyles.Container} {\r\n grid-column: span 1;\r\n\r\n &:last-of-type {\r\n grid-column: 3 / span 1;\r\n }\r\n }\r\n }\r\n\r\n @media ${from(Device.DesktopSmall)} {\r\n grid-template-columns: repeat(3, 1fr);\r\n }\r\n\r\n @media ${from(Device.DesktopLarge)} {\r\n grid-column: 2 / span 10;\r\n }\r\n`;\r\nconst SignpostDetailCardsStyles = {\r\n Container,\r\n CardsWrapper,\r\n};\r\nexport default SignpostDetailCardsStyles;\r\n","import { rootMargin } from '@helpers/animate';\r\nimport { useInView } from '@hooks/useInView';\r\nimport SvgWave from '@img/branding-graphics/wave-generic2.svg';\r\nimport SignpostDetailCard from '@stories/Components/Cards/SignpostDetailCard/SignpostDetailCard';\r\nimport TitleIntroBlock from '@stories/Components/General/TitleIntroBlock/TitleIntroBlock';\r\nimport * as React from 'react';\r\nimport S from './SignpostDetailCards.styles';\r\nconst SignpostDetailCards = ({ title, intro, introCta, ...props }) => {\r\n const [ref, inView] = useInView({ rootMargin }, false, props.pageContext?.isEditMode);\r\n if (props.items.length === 0) {\r\n return null;\r\n }\r\n return (React.createElement(S.Container, { ref: ref, \"data-animate\": inView, variant: props.variant, \"data-bg-graphic\": !!props.containerGraphic },\r\n props.containerGraphic && React.createElement(SvgWave, null),\r\n React.createElement(TitleIntroBlock, { title: title, intro: intro, introCta: introCta }),\r\n React.createElement(S.CardsWrapper, null, props.items.map((item) => (React.createElement(SignpostDetailCard, { key: item.id, ...item }))))));\r\n};\r\nexport default SignpostDetailCards;\r\n","'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher) || [];\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n","'use strict';\nmodule.exports = function (obj, predicate) {\n\tvar ret = {};\n\tvar keys = Object.keys(obj);\n\tvar isArr = Array.isArray(predicate);\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tvar key = keys[i];\n\t\tvar val = obj[key];\n\n\t\tif (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n\t\t\tret[key] = val;\n\t\t}\n\t}\n\n\treturn ret;\n};\n","'use strict';\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\nconst filterObject = require('filter-obj');\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), ':list='].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), ':list=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSep = options.arrayFormat === 'bracket-separator' ?\n\t\t\t\t'[]=' :\n\t\t\t\t'=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSep, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tcase 'bracket-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[\\])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null ?\n\t\t\t\t\t[] :\n\t\t\t\t\tvalue.split(options.arrayFormatSeparator).map(item => decode(item, options));\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], arrayValue);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(query, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn ret;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of query.split('&')) {\n\t\tif (param === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (url, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url_, hash] = splitOnFirst(url, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url_.split('?')[0] || '',\n\t\t\tquery: parse(extract(url), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (object, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true\n\t}, options);\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(object.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, object.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\thash = `#${options[encodeFragmentIdentifier] ? encode(object.fragmentIdentifier, options) : object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n\nexports.pick = (input, filter, options) => {\n\toptions = Object.assign({\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false\n\t}, options);\n\n\tconst {url, query, fragmentIdentifier} = exports.parseUrl(input, options);\n\treturn exports.stringifyUrl({\n\t\turl,\n\t\tquery: filterObject(query, filter),\n\t\tfragmentIdentifier\n\t}, options);\n};\n\nexports.exclude = (input, filter, options) => {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn exports.pick(input, exclusionFilter, options);\n};\n","export var noop = function () { };\nexport function on(obj) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (obj && obj.addEventListener) {\n obj.addEventListener.apply(obj, args);\n }\n}\nexport function off(obj) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (obj && obj.removeEventListener) {\n obj.removeEventListener.apply(obj, args);\n }\n}\nexport var isBrowser = typeof window !== 'undefined';\nexport var isNavigator = typeof navigator !== 'undefined';\n","import { useEffect, useState } from 'react';\nimport { isBrowser } from './misc/util';\nvar getInitialState = function (query, defaultState) {\n // Prevent a React hydration mismatch when a default value is provided by not defaulting to window.matchMedia(query).matches.\n if (defaultState !== undefined) {\n return defaultState;\n }\n if (isBrowser) {\n return window.matchMedia(query).matches;\n }\n // A default value has not been provided, and you are rendering on the server, warn of a possible hydration mismatch when defaulting to false.\n if (process.env.NODE_ENV !== 'production') {\n console.warn('`useMedia` When server side rendering, defaultState should be defined to prevent a hydration mismatches.');\n }\n return false;\n};\nvar useMedia = function (query, defaultState) {\n var _a = useState(getInitialState(query, defaultState)), state = _a[0], setState = _a[1];\n useEffect(function () {\n var mounted = true;\n var mql = window.matchMedia(query);\n var onChange = function () {\n if (!mounted) {\n return;\n }\n setState(!!mql.matches);\n };\n mql.addListener(onChange);\n setState(mql.matches);\n return function () {\n mounted = false;\n mql.removeListener(onChange);\n };\n }, [query]);\n return state;\n};\nexport default useMedia;\n","'use strict';\n\nmodule.exports = (string, separator) => {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n","'use strict';\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n","import { __rest, __assign } from 'tslib';\nimport * as React from 'react';\nimport { useContext, useMemo } from 'react';\nimport { MotionConfigContext } from '../../context/MotionConfigContext.mjs';\nimport { loadExternalIsValidProp } from '../../render/dom/utils/filter-props.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\n\n/**\n * `MotionConfig` is used to set configuration options for all children `motion` components.\n *\n * ```jsx\n * import { motion, MotionConfig } from \"framer-motion\"\n *\n * export function App() {\n * return (\n * <MotionConfig transition={{ type: \"spring\" }}>\n * <motion.div animate={{ x: 100 }} />\n * </MotionConfig>\n * )\n * }\n * ```\n *\n * @public\n */\nfunction MotionConfig(_a) {\n var children = _a.children, isValidProp = _a.isValidProp, config = __rest(_a, [\"children\", \"isValidProp\"]);\n isValidProp && loadExternalIsValidProp(isValidProp);\n /**\n * Inherit props from any parent MotionConfig components\n */\n config = __assign(__assign({}, useContext(MotionConfigContext)), config);\n /**\n * Don't allow isStatic to change between renders as it affects how many hooks\n * motion components fire.\n */\n config.isStatic = useConstant(function () { return config.isStatic; });\n /**\n * Creating a new config context object will re-render every `motion` component\n * every time it renders. So we only want to create a new one sparingly.\n */\n var context = useMemo(function () { return config; }, [JSON.stringify(config.transition), config.transformPagePoint, config.reducedMotion]);\n return (React.createElement(MotionConfigContext.Provider, { value: context }, children));\n}\n\nexport { MotionConfig };\n"],"names":["_path","_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","props","viewBox","d","fill","aspectRatio","width","height","imageWrapperPreserveRatio","maxWidth","maxHeight","padding","fluidUnit","css","imageCoverContainer","relative","ButtonReset","imageUrl","image","imageParams","params","center","focalPoint","top","left","undefined","paramsString","queryString","src","getSrcs","upper","lower","steps","ratio","sizes","increment","Array","map","_","index","Math","ceil","getRange","size","getRetinaSrcs","dpr","brand","grey","grey40","grey90","withMotion","WrappedComponent","displayName","name","ComponentWithMotion","React","LazyMotion","features","domAnimation","strict","callback","options","observerRef","useRef","rootRef","elementRef","useEffect","current","IntersectionObserver","root","observe","disconnect","useInView","reverse","isEditMode","inView","setInView","useState","useIntersectionObserver","entries","isIntersecting","Text","styled","div","withConfig","componentId","PrimaryStyles","secondary","red","primary","purple","transition","offWhite","OutlineStyles","OutlineAltStyles","Wave","Arrow","TextOnlyStyles","Icon","Button","button","fluid","fonts","graphikCompact","medium","until","Device","TabletLarge","_ref","branding","ArrowButton","ButtonInner","ButtonStyles","ButtonIcon","HoverLine","className","disabled","title","toggleOn","type","onClick","icon","iconPosition","otherProps","FocusRing","focusRingClass","getSvgFromSystem","SystemIcon","Wave1","ArrowRight","FakeButton","_ref2","as","LinkButton","_ref3","href","_ref4","labelText","Chevron","Container","siteWide","Layers","NavigationTray","paragraphRegular","ref","S","targetEl","document","getElementById","scrollIntoView","focusNext","skipToMain","_ref$current","_wrapperEl","wrapperEl","closest","_ref$current2","nextElementSibling","_wrapperEl2","_wrapperEl2$parentEle","parentElement","skipSection","el","_focusable$","querySelectorAll","focus","baseGrid","Title","h2","from","Tablet","DesktopSmall","Desktop","rightSpans","Content","contentStyles","ButtonWrapper","_props$introCta$text","rootMargin","intro","introCta","altTitleColour","sections","split","section","wrapTitleWords","splitTitleIntoWords","dangerouslySetInnerHTML","__html","url","text","words","word","letters","letter","style","tint","Inner","SiteWide","FocusAnchor","BasePropsContext","SectionWrapper","children","layout","flush","variant","removeSkipLink","baseProps","id","SkipLink","m","tertiary","lightBlue","TabletSmall","ImageWrapper","Image","img","span","ClickPrompt","paragraphLarge","OverlayWrapper","Overlay","disableAnimationClass","OverlayInner","scrollbars","Label","p","label","h3","_props$image$altText","isMobile","useMedia","isDesktop","open","setOpen","opening","setOpening","srcs","MobileLarge","DesktopLarge","MotionConfig","duration","ease","initial","animate","srcSet","join","alt","altText","loading","setTimeout","prompt","variants","closed","transitionEnd","visibility","opened","content","cta","SectionWrapperStyles","TitleIntroBlockStyles","darkBlue","CardsWrapper","between","SignpostDetailCardStyles","_props$pageContext","pageContext","items","containerGraphic","SvgWave","TitleIntroBlock","item","SignpostDetailCard","token","singleMatcher","RegExp","multiMatcher","decodeComponents","components","decodeURIComponent","err","slice","right","concat","decode","input","tokens","match","module","exports","encodedURI","TypeError","replace","replaceMap","exec","result","keys","customDecodeURIComponent","obj","predicate","ret","isArr","isArray","val","indexOf","strictUriEncode","decodeComponent","splitOnFirst","filterObject","encodeFragmentIdentifier","Symbol","validateArrayFormatSeparator","value","encode","encodeURIComponent","keysSorter","sort","a","b","Number","removeHash","hashStart","extract","queryStart","parseValue","parseNumbers","isNaN","trim","parseBooleans","toLowerCase","parse","query","arrayFormat","arrayFormatSeparator","formatter","accumulator","includes","isEncodedArray","newValue","test","arrayValue","parserForArrayFormat","create","param","k","reduce","Boolean","stringify","object","shouldFilter","skipNull","skipEmptyString","keyValueSep","encoderForArrayFormat","objectCopy","filter","x","parseUrl","url_","hash","parseFragmentIdentifier","fragmentIdentifier","stringifyUrl","queryFromUrl","parsedQueryFromUrl","getHash","pick","exclude","exclusionFilter","isBrowser","window","defaultState","_a","matchMedia","matches","getInitialState","state","setState","mounted","mql","onChange","addListener","removeListener","string","separator","separatorIndex","str","charCodeAt","toString","toUpperCase","isValidProp","config","useContext","isStatic","context","useMemo","JSON","transformPagePoint","reducedMotion","Provider"],"sourceRoot":""}