{"version":3,"sources":["webpack:///./src/stories/Components/SectionWrapper/SectionWrapper.tsx","webpack:///./src/helpers/aspectRatio.ts","webpack:///./src/stories/Components/Button/Button.styles.ts","webpack:///./src/img/icons/nav-arrow-left.svg","webpack:///./src/stories/Components/CtaLink/CtaLink.tsx","webpack:///./src/helpers/global.ts","webpack:///./src/img/icons/carousel-arrow-down.svg","webpack:///./src/stories/Components/SectionWrapper/SectionWrapper.styles.ts","webpack:///./src/stories/Widgets/ContentCarousel/Testimonial/Testimonial.styles.ts","webpack:///./src/stories/Widgets/ContentCarousel/Testimonial/Testimonial.tsx","webpack:///./src/helpers/srOnly.ts","webpack:///./src/helpers/combineRefs.ts","webpack:///./src/stories/Components/Misc/Carousel/SimpleTrack/SimpleTrack.tsx","webpack:///./src/img/icons/carousel-arrow-up.svg","webpack:///./src/stories/Components/Misc/DotPagination/DotPagination.tsx","webpack:///./src/stories/Components/Misc/Carousel/Controls/Controls.tsx","webpack:///./src/stories/Components/LinkButton/LinkButton.tsx","webpack:///./src/helpers/cloudinary.ts","webpack:///./src/stories/Components/Misc/Carousel/SimpleTrack/SimpleTrack.styles.ts","webpack:///./src/stories/Components/Breadcrumb/Breadcrumb.styles.ts","webpack:///./src/stories/Components/Breadcrumb/Breadcrumb.tsx","webpack:///./src/stories/Widgets/ContentCarousel/ContentCarousel.styles.ts","webpack:///./src/stories/Widgets/ContentCarousel/KeyValuesList/KeyValuesList.styles.ts","webpack:///./src/stories/Widgets/ContentCarousel/KeyValuesList/KeyValuesList.tsx","webpack:///./src/stories/Widgets/ContentCarousel/ContentCarousel.tsx","webpack:///./src/stories/Components/CtaLink/CtaLink.styles.ts","webpack:///./src/stories/Components/SectionHeader/SectionHeader.tsx","webpack:///./src/stories/Components/Misc/Carousel/Controls/Controls.styles.ts","webpack:///./src/helpers/scrollbars.ts","webpack:///./src/stories/Components/Misc/DotPagination/DotPagination.styles.ts","webpack:///./src/img/icons/nav-arrow-right.svg","webpack:///./src/helpers/image.ts","webpack:///./src/stories/Components/SectionHeader/SectionHeader.styles.ts"],"names":["SectionWrapper","React","ref","children","layout","hideOverflow","otherProps","S","Container","Inner","displayName","aspectRatio","width","height","imageWrapperPreserveRatio","css","imageCoverContainer","relative","styled","button","transition","brand","green","white","black","until","Device","TabletLarge","Text","span","paragraphSmall","fonts","brandonGrotesque","bold","srOnly","ButtonStyles","IconWrapper","div","_path","_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","SvgNavArrowLeft","props","xmlns","viewBox","fill","d","CtaLink","size","variant","ButtonReset","SvgCarouselArrowDown","SectionWrapperStyles","section","fluid","siteWide","CtaLinkStyles","TestimonialWrapper","beige","TestimonialTitle","h3","Subtitle","p","tag","contentStyles","AccreditationWrapper","Title","regular","TestimonialStyles","Name","zahrah","medium","Testimonial","background","BackgroundValues","Beige","values","context","useCarouselContext","map","item","name","activeIndex","testimonialTitle","subtitle","hideQuoteMarks","SvgQuoteIcon","dangerouslySetInnerHTML","__html","text","title","cta","url","href","combineRefs","refsToSet","instance","forEach","refToSet","current","SimpleTrack","initCarousel","mobileOnly","carousel","swipeHandlers","useSwipeable","onSwipedLeft","goToNext","onSwipedRight","goToPrev","refContainer","alignment","offsets","direction","CarouselDirection","Vertical","Track","refTrack","style","transform","Horizontal","offset","undefined","SvgCarouselArrowUp","DotPagination","ariaLabel","count","value","onChange","excludeFill","dotWidth","Fill","Array","from","_","index","Item","onClick","event","preventDefault","Controls","className","maxIndex","paginationTitle","goToIndex","ButtonWrapper","FocusRing","focusRingClass","Button","disabled","wrap","type","onPrevClick","ArrowLeft","ArrowUp","onNextClick","ArrowRight","ArrowDown","LinkButton","buttonType","fillDirection","icon","iconOnly","iconPosition","as","DEFAULT_OPTIONS","audio","format","videoUrl","id","options","combined","transformations","SimpleTrackStyles","ul","DesktopSmall","BreadcrumbStyles","List","scrollbars","li","ItemLink","a","Breadcrumb","items","spacingBelow","White","SectionHeaderStyles","Content","Tablet","CarouselContainer","ControlsStyles","DotPaginationStyles","CarouselWrapper","ImageWrapper","ContentCarouselStyles","Image","img","Video","video","KeyValuesListStyles","dl","Key","dt","Value","dd","ValuesList","isKeyValueItems","ContentCarousel","anchorId","carouselPosition","rest","SectionHeader","isTestimonials","CarouselProvider","image","srcs","getSrcs","noCrop","rmode","sizes","DesktopLarge","src","split","srcSet","join","role","altText","loading","alt","renderImage","controls","playsInline","poster","previewImage","imageUrl","videoId","preload","LinkStyles","content","sectionCta","scrollBarStyles","scrollBarsAll","nav","SvgNavArrowRight","imageParams","imageSource","params","rxy","focalPoint","left","top","quality","includes","rsampler","queryString","stringify","upper","lower","steps","ratio","increment","Math","ceil","getRange","round","h2","h1"],"mappings":"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","file":"47-8d9a0a19e15e944bb90c.js","sourcesContent":["import * as React from 'react';\r\nimport S from './SectionWrapper.styles';\r\nconst SectionWrapper = React.forwardRef(({ children, layout = 'default', hideOverflow, ...otherProps }, ref) => {\r\n switch (layout) {\r\n case 'fullWidth':\r\n return (React.createElement(S.Container, { ref: ref, \"data-hide-overflow\": hideOverflow, ...otherProps }, children));\r\n case 'default':\r\n default:\r\n return (React.createElement(S.Container, { ref: ref, \"data-hide-overflow\": hideOverflow, ...otherProps },\r\n React.createElement(S.Inner, null, children)));\r\n }\r\n});\r\nSectionWrapper.displayName = 'SectionWrapper';\r\nexport default SectionWrapper;\r\n","import { css } from 'styled-components';\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 if (!width && !height) {\r\n return null;\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: ${aspectRatio(width, height)}%;\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 { transition } from '@helpers/animate';\r\nimport brand from '@helpers/brand';\r\nimport fonts from '@helpers/fonts';\r\nimport { Device, until } from '@helpers/media';\r\nimport srOnly from '@helpers/srOnly';\r\nimport { paragraphSmall } from '@helpers/typography';\r\nimport styled from 'styled-components';\r\nconst Container = styled.button `\r\n display: inline-flex;\r\n align-items: center;\r\n border: var(--borderWidth, 0) solid var(--colorBorder, var(--colorBg));\r\n background: var(--colorBg);\r\n background-image: linear-gradient(to right, var(--colorBgActive), var(--colorBgActive));\r\n background-repeat: no-repeat;\r\n background-size: 0% 100%;\r\n color: var(--colorFg);\r\n min-height: 52px;\r\n padding: 12px 26px;\r\n text-decoration: none;\r\n ${transition('background-size, border-color, opacity')};\r\n user-select: none;\r\n width: auto;\r\n\r\n &[data-fill='right'] {\r\n background-position: left center;\r\n }\r\n\r\n &[data-fill='left'] {\r\n background-position: right center;\r\n }\r\n\r\n span& {\r\n button.focus-ring &,\r\n a.focus-ring & {\r\n outline: auto;\r\n outline-offset: -5px;\r\n outline-width: 2px;\r\n outline-style: solid;\r\n }\r\n\r\n button.focus-ring,\r\n a.focus-ring,\r\n button:hover &,\r\n a:hover & {\r\n border-color: var(--colorBorderActive, var(--colorBgActive));\r\n color: var(--colorFgActive);\r\n background-size: 100% 100%;\r\n }\r\n }\r\n\r\n &:not(span) {\r\n cursor: pointer;\r\n\r\n &:focus {\r\n outline: none;\r\n }\r\n\r\n &.focus-ring {\r\n outline: auto;\r\n outline-offset: -5px;\r\n outline-width: 2px;\r\n outline-style: solid;\r\n }\r\n\r\n &.focus-ring,\r\n &:hover {\r\n border-color: var(--colorBorderActive, var(--colorBgActive));\r\n color: var(--colorFgActive);\r\n background-size: 100% 100%;\r\n }\r\n }\r\n\r\n &[data-type='default'] {\r\n --colorBg: ${brand.green};\r\n --colorFg: ${brand.white};\r\n --colorBgActive: ${brand.black};\r\n --colorFgActive: ${brand.white};\r\n }\r\n\r\n &[data-type='inverted'] {\r\n --colorBg: ${brand.white};\r\n --colorFg: ${brand.black};\r\n --colorBgActive: ${brand.black};\r\n --colorFgActive: ${brand.white};\r\n }\r\n\r\n &[data-type='outline'] {\r\n --borderWidth: 2px;\r\n --colorBg: ${brand.white};\r\n --colorFg: ${brand.green};\r\n --colorBorder: ${brand.green};\r\n --colorBgActive: ${brand.green};\r\n --colorFgActive: ${brand.white};\r\n --colorBorderActive: ${brand.green};\r\n }\r\n\r\n &[data-icon-only='true'] {\r\n height: 52px;\r\n justify-content: center;\r\n padding: 0;\r\n width: 52px;\r\n }\r\n\r\n /* Increase specificity to override :not(span) style */\r\n &:disabled:disabled:disabled {\r\n background-size: 0% 100%;\r\n opacity: 0.5;\r\n pointer-events: none;\r\n }\r\n\r\n @media ${until(Device.TabletLarge)} {\r\n min-height: 45px;\r\n padding: 6px 12px;\r\n\r\n &[data-icon-only='true'] {\r\n height: 45px;\r\n width: 45px;\r\n }\r\n }\r\n\r\n @media print {\r\n display: none !important;\r\n }\r\n`;\r\nconst Text = styled.span `\r\n ${transition('color')};\r\n ${paragraphSmall};\r\n ${fonts.brandonGrotesque.bold};\r\n\r\n color: currentColor;\r\n line-height: 1.25;\r\n margin: 0;\r\n text-decoration: none;\r\n text-transform: uppercase;\r\n\r\n [data-icon-only='true'] & {\r\n ${srOnly};\r\n }\r\n`;\r\nconst IconWrapper = styled.div `\r\n display: block;\r\n color: currentColor;\r\n height: 17px;\r\n margin: 0;\r\n padding: 0;\r\n ${transition('color')};\r\n width: 37px;\r\n\r\n [data-icon-position='left'] & {\r\n margin-right: auto;\r\n order: -1;\r\n padding-right: 20px;\r\n }\r\n\r\n [data-icon-position='right'] & {\r\n margin-left: auto;\r\n order: 1;\r\n padding-left: 20px;\r\n }\r\n\r\n [data-icon-only='true'] & {\r\n color: currentColor;\r\n height: 17px;\r\n margin: 0;\r\n padding: 0;\r\n width: 17px;\r\n }\r\n`;\r\nconst ButtonStyles = {\r\n Container,\r\n IconWrapper,\r\n Text,\r\n};\r\nexport default ButtonStyles;\r\n","var _path;\n\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); }\n\nimport * as React from \"react\";\n\nfunction SvgNavArrowLeft(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 15.6 30\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M0 15l.846.944L13.5 30l2.1-1.889L3.79 15 15.6 1.889 13.5 0 .846 14.056z\"\n })));\n}\n\nexport default __webpack_public_path__ + \"f6ba04f14c86d25ce95aced4ad90b419.svg\";\nexport { SvgNavArrowLeft as ReactComponent };","import * as React from 'react';\r\nimport S from './CtaLink.styles';\r\nconst CtaLink = ({ children, size = 'default', variant = 'default', ...otherProps }) => {\r\n return (React.createElement(S.Container, { ...otherProps, \"data-size\": size, \"data-variant\": variant }, children));\r\n};\r\nexport default CtaLink;\r\n","import { css } from 'styled-components';\r\nexport default {\r\n navHeight: 107,\r\n navHeightTablet: 80,\r\n navHeightMobile: 59,\r\n gridGap: 24,\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","var _path;\n\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); }\n\nimport * as React from \"react\";\n\nfunction SvgCarouselArrowDown(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24.25 14.141\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 172\",\n d: \"M11.567 13.901L.244 2.576A.77.77 0 010 2.017a.768.768 0 01.244-.559L1.459.243a.766.766 0 01.559-.242.763.763 0 01.557.242l9.551 9.55 9.55-9.55a.763.763 0 01.558-.242.763.763 0 01.559.242l1.215 1.215a.766.766 0 01.242.559.768.768 0 01-.242.559L12.685 13.901a.766.766 0 01-1.118 0\",\n fill: \"currentColor\"\n })));\n}\n\nexport default __webpack_public_path__ + \"7de2d376feeda9b17a4a90a0b5d20733.svg\";\nexport { SvgCarouselArrowDown as ReactComponent };","import { fluid } from '@helpers/fluid';\r\nimport { siteWide } from '@helpers/grid';\r\nimport styled from 'styled-components';\r\nconst Container = styled.section `\r\n --sectionSpacing: ${fluid(48, 96)};\r\n scroll-margin: var(--headerScrollHeight) 0 0;\r\n\r\n &[data-hide-overflow='true'] {\r\n overflow: hidden;\r\n }\r\n`;\r\nconst Inner = styled.div `\r\n ${siteWide}\r\n`;\r\nconst SectionWrapperStyles = {\r\n Container,\r\n Inner,\r\n};\r\nexport default SectionWrapperStyles;\r\n","import brand from '@helpers/brand';\r\nimport { fluid } from '@helpers/fluid';\r\nimport fonts from '@helpers/fonts';\r\nimport { contentStyles, h3, tag } from '@helpers/typography';\r\nimport CtaLinkStyles from '@stories/Components/CtaLink/CtaLink.styles';\r\nimport styled from 'styled-components';\r\nconst Container = styled.div `\r\n position: relative;\r\n flex: 1 2;\r\n\r\n [data-background='green'] & {\r\n color: ${brand.white};\r\n }\r\n\r\n ${CtaLinkStyles.Container} {\r\n margin-top: ${fluid(24, 36)};\r\n }\r\n`;\r\nconst TestimonialWrapper = styled.div `\r\n will-change: opacity;\r\n transition: opacity 0.3s ease;\r\n opacity: 1;\r\n height: 100%;\r\n display: grid;\r\n place-content: center;\r\n\r\n &[data-is-showing='false'] {\r\n opacity: 0;\r\n pointer-events: none;\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n }\r\n\r\n > svg {\r\n color: ${brand.green};\r\n width: 46px;\r\n margin-bottom: ${fluid(8, 20)};\r\n\r\n [data-background='green'] & {\r\n color: ${brand.beige};\r\n }\r\n }\r\n`;\r\nconst TestimonialTitle = styled.h3 `\r\n ${h3};\r\n\r\n margin: 0 0 ${fluid(18, 32)};\r\n`;\r\nconst Subtitle = styled.p `\r\n ${tag};\r\n\r\n margin: 0;\r\n`;\r\nconst Text = styled.div `\r\n ${contentStyles};\r\n\r\n p:last-child {\r\n margin-bottom: 0;\r\n }\r\n`;\r\nconst AccreditationWrapper = styled.div `\r\n margin: ${fluid(14, 28)} 0 0;\r\n`;\r\nconst Title = styled.div `\r\n ${fonts.brandonGrotesque.regular};\r\n\r\n font-size: ${fluid(16, 20)};\r\n line-height: ${fluid(20, 24)};\r\n text-transform: uppercase;\r\n border-left: ${fluid(2, 4)} solid ${brand.green};\r\n padding-left: ${fluid(16, 24)};\r\n\r\n [data-background='green'] & {\r\n border-color: ${brand.beige};\r\n }\r\n`;\r\nconst Name = styled.div `\r\n ${fonts.zahrah.medium};\r\n font-size: ${fluid(24, 28)};\r\n line-height: ${fluid(28, 32)};\r\n border-left: ${fluid(2, 4)} solid ${brand.green};\r\n padding-left: ${fluid(16, 24)};\r\n\r\n [data-background='green'] & {\r\n border-color: ${brand.beige};\r\n }\r\n`;\r\nconst TestimonialStyles = {\r\n AccreditationWrapper,\r\n Container,\r\n Name,\r\n TestimonialTitle,\r\n TestimonialWrapper,\r\n Text,\r\n Title,\r\n Subtitle,\r\n};\r\nexport default TestimonialStyles;\r\n","import { ReactComponent as SvgQuoteIcon } from '@img/icons/blockquote-icon.svg';\r\nimport { BackgroundValues } from '@stories/Components/Breadcrumb/Breadcrumb';\r\nimport CtaLink from '@stories/Components/CtaLink/CtaLink';\r\nimport { useCarouselContext } from '@stories/Components/Misc/Carousel/CarouselProvider/CarouselProvider';\r\nimport * as React from 'react';\r\nimport S from './Testimonial.styles';\r\nconst Testimonial = ({ background = BackgroundValues.Beige, values, }) => {\r\n const context = useCarouselContext();\r\n return (React.createElement(S.Container, null, values.map((item, i) => (React.createElement(S.TestimonialWrapper, { key: `testimonial-content-key-${item.name}`, \"data-is-showing\": i === context.activeIndex },\r\n item.testimonialTitle && (React.createElement(S.TestimonialTitle, null, item.testimonialTitle)),\r\n item.subtitle && React.createElement(S.Subtitle, null, item.subtitle),\r\n !item.hideQuoteMarks && React.createElement(SvgQuoteIcon, null),\r\n React.createElement(S.Text, { dangerouslySetInnerHTML: { __html: item.text } }),\r\n item.title || item.name ? (React.createElement(S.AccreditationWrapper, null,\r\n item.title && React.createElement(S.Title, null, item.title),\r\n item.name && React.createElement(S.Name, null, item.name))) : null,\r\n item.cta && item.cta.url ? (React.createElement(CtaLink, { href: item.cta.url, target: item.cta.target, variant: background === 'green' ? 'white' : 'default' }, item.cta.text)) : null)))));\r\n};\r\nexport default Testimonial;\r\n","import { css } from 'styled-components';\r\n/**\r\n * Show only for screen readers.\r\n * @description Sourced from https://gist.github.com/ffoodd/000b59f431e3e64e4ce1a24d5bb36034\r\n */\r\nconst srOnly = css `\r\n border: 0 !important;\r\n clip: rect(1px, 1px, 1px, 1px) !important;\r\n -webkit-clip-path: inset(50%) !important;\r\n clip-path: inset(50%) !important;\r\n height: 1px !important;\r\n margin: -1px !important;\r\n overflow: hidden !important;\r\n padding: 0 !important;\r\n position: absolute !important;\r\n width: 1px !important;\r\n white-space: nowrap !important;\r\n`;\r\nexport default srOnly;\r\n","/**\r\n * Create function to set all refs to new value.\r\n * @param refsToSet\r\n * @returns\r\n */\r\nexport function combineRefs(...refsToSet) {\r\n return (instance) => {\r\n if (!refsToSet?.length) {\r\n return;\r\n }\r\n refsToSet.forEach((refToSet) => {\r\n if (!refToSet) {\r\n return;\r\n }\r\n if (typeof refToSet === 'function') {\r\n return refToSet(instance);\r\n }\r\n if (instance) {\r\n // Required to allow \".current\" to be assigned.\r\n refToSet.current = instance;\r\n }\r\n });\r\n };\r\n}\r\n","import { combineRefs } from '@helpers/combineRefs';\r\nimport { CarouselDirection } from '@hooks/useCarousel';\r\nimport * as React from 'react';\r\nimport { useSwipeable } from 'react-swipeable';\r\nimport { useCarouselContext } from '../CarouselProvider/CarouselProvider';\r\nimport S from './SimpleTrack.styles';\r\nconst SimpleTrack = ({ children, initCarousel = true, mobileOnly = false, ...otherProps }) => {\r\n const carousel = useCarouselContext();\r\n const swipeHandlers = useSwipeable({\r\n onSwipedLeft: () => {\r\n carousel.goToNext(false);\r\n },\r\n onSwipedRight: () => {\r\n carousel.goToPrev(false);\r\n },\r\n });\r\n return (React.createElement(S.Container, { ...otherProps, ...swipeHandlers, ref: combineRefs(carousel.refContainer, swipeHandlers.ref), \"data-alignment\": carousel.alignment, \"data-init\": carousel.offsets.length !== 0, \"data-mobile-only\": mobileOnly, \"data-vertical\": carousel.direction === CarouselDirection.Vertical },\r\n React.createElement(S.Track, { ref: carousel.refTrack, style: {\r\n transform: initCarousel\r\n ? carousel.direction === CarouselDirection.Horizontal\r\n ? `translateX(${carousel.offset * -1}px)`\r\n : `translateY(${carousel.offset * -1}px)`\r\n : undefined,\r\n } }, children)));\r\n};\r\nexport default SimpleTrack;\r\n","var _path;\n\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); }\n\nimport * as React from \"react\";\n\nfunction SvgCarouselArrowUp(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24.25 14.141\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 171\",\n d: \"M11.567.242L.244 11.565a.77.77 0 00-.244.559.768.768 0 00.244.559l1.215 1.215a.766.766 0 00.559.242.763.763 0 00.557-.242l9.55-9.55 9.55 9.55a.764.764 0 001.116 0l1.215-1.215a.766.766 0 000-1.118L12.685.242a.766.766 0 00-1.118 0\",\n fill: \"currentColor\"\n })));\n}\n\nexport default __webpack_public_path__ + \"34ecb029b525d6faf023870071882e69.svg\";\nexport { SvgCarouselArrowUp as ReactComponent };","import * as React from 'react';\r\nimport S from './DotPagination.styles';\r\nconst DotPagination = ({ ariaLabel, count, value, onChange, excludeFill = false, }) => {\r\n const dotWidth = `${100 / count}%`;\r\n return (React.createElement(S.Container, { \"aria-label\": ariaLabel, \"data-exclude-fill\": excludeFill, style: { '--width': dotWidth, '--fill': `${(value + 1) / count}` } },\r\n React.createElement(S.Fill, null),\r\n Array.from(Array(count)).map((_, index) => (React.createElement(S.Item, { key: `DotPaginationItem_${index}`, \"aria-current\": index === value, \"aria-label\": `Go to ${index + 1}`, onClick: (event) => {\r\n event.preventDefault();\r\n onChange(index);\r\n }, \"data-passed\": index <= value })))));\r\n};\r\nexport default DotPagination;\r\n","import { CarouselDirection } from '@hooks/useCarousel';\r\nimport { ReactComponent as ArrowDown } from '@img/icons/carousel-arrow-down.svg';\r\nimport { ReactComponent as ArrowUp } from '@img/icons/carousel-arrow-up.svg';\r\nimport { ReactComponent as ArrowLeft } from '@img/icons/nav-arrow-left.svg';\r\nimport { ReactComponent as ArrowRight } from '@img/icons/nav-arrow-right.svg';\r\nimport DotPagination from '@stories/Components/Misc/DotPagination/DotPagination';\r\nimport * as React from 'react';\r\nimport { FocusRing } from 'react-aria';\r\nimport { useCarouselContext } from '../CarouselProvider/CarouselProvider';\r\nimport S from './Controls.styles';\r\nconst Controls = React.forwardRef((props, ref) => {\r\n const carousel = useCarouselContext();\r\n return (React.createElement(S.Container, { ref: ref, className: props.className, \"data-hide-pagination-mobile\": carousel.maxIndex > 24, \"data-vertical\": carousel.direction === CarouselDirection.Vertical },\r\n React.createElement(DotPagination, { ariaLabel: props.paginationTitle, count: carousel.maxIndex + 1, onChange: (index) => carousel.goToIndex(index), value: carousel.activeIndex }),\r\n React.createElement(S.ButtonWrapper, null,\r\n React.createElement(FocusRing, { focusRingClass: \"focus-ring\" },\r\n React.createElement(S.Button, { \"aria-label\": \"Previous\", disabled: !props.wrap && carousel.activeIndex === 0, type: \"button\", onClick: (event) => {\r\n event.preventDefault();\r\n if (props.onPrevClick) {\r\n props.onPrevClick();\r\n }\r\n else {\r\n carousel.goToPrev(props.wrap);\r\n }\r\n } }, carousel.direction === CarouselDirection.Horizontal ? React.createElement(ArrowLeft, null) : React.createElement(ArrowUp, null))),\r\n React.createElement(FocusRing, { focusRingClass: \"focus-ring\" },\r\n React.createElement(S.Button, { \"aria-label\": \"Next\", disabled: !props.wrap && carousel.activeIndex === carousel.maxIndex, type: \"button\", onClick: (event) => {\r\n event.preventDefault();\r\n if (props.onNextClick) {\r\n props.onNextClick();\r\n }\r\n else {\r\n carousel.goToNext(props.wrap);\r\n }\r\n } }, carousel.direction === CarouselDirection.Horizontal ? React.createElement(ArrowRight, null) : React.createElement(ArrowDown, null))))));\r\n});\r\nControls.displayName = 'Controls';\r\nexport default Controls;\r\n","import * as React from 'react';\r\nimport { FocusRing } from 'react-aria';\r\nimport S from '../Button/Button.styles';\r\nconst LinkButton = ({ buttonType, children, fillDirection = 'right', icon, iconOnly, iconPosition = 'right', ...otherProps }) => {\r\n return (React.createElement(FocusRing, { focusRingClass: \"focus-ring\" },\r\n React.createElement(S.Container, { as: \"a\", \"data-fill\": fillDirection, \"data-icon-only\": iconOnly, \"data-icon-position\": iconPosition, \"data-type\": buttonType, ...otherProps },\r\n React.createElement(S.Text, null, children),\r\n icon && React.createElement(S.IconWrapper, null, icon))));\r\n};\r\nexport default LinkButton;\r\n","const CLOUD_NAME = 'hammonds-furniture';\r\nconst DEFAULT_OPTIONS = {\r\n audio: null,\r\n format: 'mp4',\r\n width: null,\r\n};\r\nexport function videoUrl(id, options = {}) {\r\n const combined = { ...DEFAULT_OPTIONS, ...options };\r\n let transformations = '';\r\n if (options.audio) {\r\n transformations += '/ac_none';\r\n }\r\n if (options.width) {\r\n transformations += `/w_${options.width}`;\r\n }\r\n return `https://res.cloudinary.com/${CLOUD_NAME}/video/upload${transformations}/${id}.${combined.format}`;\r\n}\r\n","import { transition } from '@helpers/animate';\r\nimport { Device, from } from '@helpers/media';\r\nimport styled from 'styled-components';\r\nconst Container = styled.div `\r\n @media ${from(Device.TabletLarge)} {\r\n &[data-mobile-only='true'] {\r\n display: contents;\r\n }\r\n }\r\n`;\r\nconst Track = styled.ul `\r\n ${transition('transform')};\r\n\r\n display: flex;\r\n\r\n @media ${from(Device.DesktopSmall)} {\r\n [data-mobile-only='true'] & {\r\n display: contents;\r\n }\r\n }\r\n\r\n [data-vertical='true'] & {\r\n flex-direction: column;\r\n }\r\n`;\r\nconst SimpleTrackStyles = {\r\n Container,\r\n Track,\r\n};\r\nexport default SimpleTrackStyles;\r\n","import brand from '@helpers/brand';\r\nimport { fluid } from '@helpers/fluid';\r\nimport scrollbars from '@helpers/scrollbars';\r\nimport { paragraphSmall } from '@helpers/typography';\r\nimport SectionWrapper from '@stories/Components/SectionWrapper/SectionWrapper';\r\nimport styled from 'styled-components';\r\nconst Container = styled(SectionWrapper) `\r\n &[data-background='beige'] {\r\n background-color: ${brand.beige};\r\n\r\n &[data-spacing-below='true'] {\r\n padding-bottom: var(--sectionSpacing);\r\n }\r\n }\r\n\r\n &[data-background='white'] {\r\n background-color: ${brand.white};\r\n\r\n &[data-spacing-below='true'] {\r\n margin-bottom: var(--sectionSpacing);\r\n }\r\n }\r\n\r\n @media print {\r\n display: none;\r\n }\r\n`;\r\nconst List = styled.ul `\r\n overflow: auto;\r\n white-space: nowrap;\r\n\r\n ${scrollbars};\r\n`;\r\nconst Item = styled.li `\r\n ${paragraphSmall};\r\n\r\n line-height: ${fluid(52, 52)};\r\n display: inline-block;\r\n margin: 0 8px 0 0;\r\n\r\n &::after {\r\n content: '\\\\003E';\r\n margin-left: 8px;\r\n }\r\n\r\n &:last-child {\r\n &::after {\r\n display: none;\r\n }\r\n }\r\n`;\r\nconst ItemLink = styled.a `\r\n color: ${brand.black};\r\n text-decoration: none;\r\n text-underline-position: under;\r\n\r\n &[aria-current='location'],\r\n &:hover {\r\n text-decoration: underline;\r\n }\r\n`;\r\nconst BreadcrumbStyles = {\r\n Container,\r\n List,\r\n Item,\r\n ItemLink,\r\n};\r\nexport default BreadcrumbStyles;\r\n","import * as React from 'react';\r\nimport S from './Breadcrumb.styles';\r\nexport var BackgroundValues;\r\n(function (BackgroundValues) {\r\n BackgroundValues[\"Beige\"] = \"beige\";\r\n BackgroundValues[\"White\"] = \"white\";\r\n})(BackgroundValues || (BackgroundValues = {}));\r\nconst Breadcrumb = ({ background, items, spacingBelow = true }) => {\r\n return (React.createElement(S.Container, { \"data-background\": background && background !== '' ? background : BackgroundValues.White, \"data-spacing-below\": spacingBelow },\r\n React.createElement(S.List, { \"aria-label\": \"breadcrumb\" }, items.map((item, i) => (React.createElement(S.Item, { key: `breadcrumb-${i}` },\r\n React.createElement(S.ItemLink, { href: item.url, title: item.text, \"aria-current\": i === items.length - 1 ? 'location' : undefined }, item.text)))))));\r\n};\r\nexport default Breadcrumb;\r\n","import { imageCoverContainer, imageWrapperPreserveRatio } from '@helpers/aspectRatio';\r\nimport brand from '@helpers/brand';\r\nimport { fluid } from '@helpers/fluid';\r\nimport { Device, from } from '@helpers/media';\r\nimport ControlsStyles from '@stories/Components/Misc/Carousel/Controls/Controls.styles';\r\nimport DotPaginationStyles from '@stories/Components/Misc/DotPagination/DotPagination.styles';\r\nimport SectionHeaderStyles from '@stories/Components/SectionHeader/SectionHeader.styles';\r\nimport SectionWrapper from '@stories/Components/SectionWrapper/SectionWrapper';\r\nimport styled from 'styled-components';\r\nconst Container = styled(SectionWrapper) `\r\n margin: var(--sectionSpacing) 0;\r\n\r\n &[data-background='beige'] {\r\n background-color: ${brand.beige};\r\n }\r\n\r\n &[data-background='green'] {\r\n background-color: ${brand.green};\r\n\r\n ${SectionHeaderStyles.Title},\r\n ${SectionHeaderStyles.Content},\r\n ${SectionHeaderStyles.Subtitle} {\r\n color: ${brand.white};\r\n }\r\n }\r\n\r\n &[data-background='beige'],\r\n &[data-background='green'] {\r\n padding: ${fluid(24, 48)} 0;\r\n }\r\n\r\n &[data-background='white'] {\r\n background-color: ${brand.white};\r\n }\r\n`;\r\nconst Inner = styled.div `\r\n display: flex;\r\n flex-direction: column;\r\n gap: 44px;\r\n\r\n @media ${from(Device.Tablet)} {\r\n flex-direction: row;\r\n justify-content: space-between;\r\n\r\n &[data-carousel-position='left'] {\r\n flex-direction: row-reverse;\r\n }\r\n }\r\n`;\r\nconst CarouselContainer = styled.div `\r\n overflow: hidden;\r\n max-width: 980px;\r\n flex: 2 1;\r\n\r\n [data-background='green'] & {\r\n ${ControlsStyles.Container} {\r\n --controlsColour: ${brand.white};\r\n\r\n margin-top: 32px;\r\n }\r\n\r\n ${DotPaginationStyles.Container} {\r\n --colorInactive: rgba(255, 255, 255, 0.33);\r\n --colorActive: ${brand.white};\r\n }\r\n }\r\n`;\r\nconst CarouselWrapper = styled.div `\r\n overflow: hidden;\r\n\r\n /* Adjust the left/right margin of the carousel wrapper by the amount of padding \r\n added to cards and track wrapper to ensure that the width is correct */\r\n margin-left: -12px;\r\n margin-right: -12px;\r\n`;\r\nconst Item = styled.li `\r\n flex: 0 0 100%;\r\n\r\n /* Ensure spacing between cards, even when full-width, or animation looks bizarre */\r\n padding-left: 12px;\r\n padding-right: 12px;\r\n`;\r\nconst ImageWrapper = styled.div `\r\n ${imageWrapperPreserveRatio(16, 9)};\r\n`;\r\nconst Image = styled.img `\r\n ${imageCoverContainer()}\r\n`;\r\nconst Video = styled.video `\r\n ${imageCoverContainer()}\r\n`;\r\nconst ContentCarouselStyles = {\r\n CarouselContainer,\r\n CarouselWrapper,\r\n Container,\r\n Image,\r\n ImageWrapper,\r\n Inner,\r\n Item,\r\n Video,\r\n};\r\nexport default ContentCarouselStyles;\r\n","import brand from '@helpers/brand';\r\nimport { fluid } from '@helpers/fluid';\r\nimport fonts from '@helpers/fonts';\r\nimport styled from 'styled-components';\r\nconst Container = styled.div `\r\n position: relative;\r\n flex: 1 2;\r\n`;\r\nconst List = styled.dl `\r\n will-change: opacity;\r\n transition: opacity 0.3s ease;\r\n opacity: 1;\r\n\r\n &[data-is-showing='false'] {\r\n opacity: 0;\r\n pointer-events: none;\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n }\r\n`;\r\nconst Key = styled.dt `\r\n ${fonts.brandonGrotesque.regular};\r\n\r\n font-size: ${fluid(16, 20)};\r\n line-height: ${fluid(20, 24)};\r\n text-transform: uppercase;\r\n border-left: ${fluid(2, 4)} solid ${brand.green};\r\n padding-left: ${fluid(16, 24)};\r\n\r\n [data-background='green'] & {\r\n border-color: ${brand.beige};\r\n color: ${brand.white};\r\n }\r\n`;\r\nconst Value = styled.dd `\r\n ${fonts.zahrah.medium};\r\n font-size: ${fluid(24, 28)};\r\n line-height: ${fluid(28, 32)};\r\n margin-bottom: ${fluid(20, 40)};\r\n border-left: ${fluid(2, 4)} solid ${brand.green};\r\n padding-left: ${fluid(16, 24)};\r\n\r\n [data-background='green'] & {\r\n border-color: ${brand.beige};\r\n color: ${brand.white};\r\n }\r\n`;\r\nconst KeyValuesListStyles = {\r\n Container,\r\n List,\r\n Key,\r\n Value,\r\n};\r\nexport default KeyValuesListStyles;\r\n","import * as React from 'react';\r\nimport S from './KeyValuesList.styles';\r\nconst ValuesList = ({ values }) => {\r\n return (React.createElement(S.Container, null,\r\n React.createElement(S.List, null, values.map((values) => (React.createElement(React.Fragment, null,\r\n React.createElement(S.Key, null, values.key),\r\n React.createElement(S.Value, null, values.value)))))));\r\n};\r\nexport default ValuesList;\r\n","import { videoUrl } from '@helpers/cloudinary';\r\nimport { getSrcs, imageUrl } from '@helpers/image';\r\nimport { Device, until } from '@helpers/media';\r\nimport { BackgroundValues } from '@stories/Components/Breadcrumb/Breadcrumb';\r\nimport CarouselProvider from '@stories/Components/Misc/Carousel/CarouselProvider/CarouselProvider';\r\nimport Controls from '@stories/Components/Misc/Carousel/Controls/Controls';\r\nimport SimpleTrack from '@stories/Components/Misc/Carousel/SimpleTrack/SimpleTrack';\r\nimport SectionHeader from '@stories/Components/SectionHeader/SectionHeader';\r\nimport * as React from 'react';\r\nimport S from './ContentCarousel.styles';\r\nimport ValuesList from './KeyValuesList/KeyValuesList';\r\nimport Testimonial from './Testimonial/Testimonial';\r\nfunction isKeyValueItems(values) {\r\n return values[0].key !== undefined;\r\n}\r\nfunction isTestimonials(values) {\r\n return values[0].text !== undefined;\r\n}\r\nconst ContentCarousel = ({ anchorId, background, items, values, carouselPosition, ...rest }) => {\r\n return (React.createElement(S.Container, { id: anchorId, \"data-background\": background && background !== '' ? background : BackgroundValues.Beige },\r\n React.createElement(SectionHeader, { ...rest }),\r\n React.createElement(S.Inner, { \"data-carousel-position\": carouselPosition ?? 'right' },\r\n isKeyValueItems(values) && React.createElement(ValuesList, { values: values }),\r\n isTestimonials(values) && (React.createElement(Testimonial, { values: values, background: background && background !== '' ? background : BackgroundValues.Beige })),\r\n React.createElement(CarouselProvider, { count: items.length },\r\n React.createElement(S.CarouselContainer, null,\r\n React.createElement(S.CarouselWrapper, null,\r\n React.createElement(SimpleTrack, null, items.map((item) => (React.createElement(S.Item, { key: `key-value-image-${item.id}` }, item.image ? (renderImage(item.image)) : item.video ? (React.createElement(S.ImageWrapper, null,\r\n React.createElement(S.Video, { controls: true, playsInline: true, poster: item.video?.previewImage\r\n ? imageUrl(item.video?.previewImage, {\r\n width: 797,\r\n height: 448,\r\n })\r\n : videoUrl(item.video?.videoId ?? '', {\r\n format: 'jpg',\r\n }), preload: \"metadata\" },\r\n React.createElement(\"source\", { type: \"video/webm\", src: videoUrl(item.video?.videoId ?? '', {\r\n format: 'webm',\r\n }) }),\r\n React.createElement(\"source\", { type: \"video/mp4\", src: videoUrl(item.video?.videoId ?? '', {\r\n format: 'mp4',\r\n }) })))) : null))))),\r\n items.length > 1 && (React.createElement(Controls, { paginationTitle: `${isKeyValueItems(values) ? 'Key Value Pair' : 'Testimonial'} carousel controls`, wrap: false })))))));\r\n function renderImage(image) {\r\n const srcs = getSrcs(image, 798, 375, 6, 9 / 16, image.noCrop ? { rmode: 'pad' } : {});\r\n return (React.createElement(S.ImageWrapper, null,\r\n React.createElement(S.Image, { sizes: `${until(Device.Tablet)} 100vw, ${until(Device.Tablet)} 66vw, ${until(Device.DesktopLarge)} 52.5vw, 798px`, src: srcs[0].split(' ')[0], srcSet: srcs.join(','), role: !image.altText ? 'presentation' : undefined, loading: \"lazy\", alt: image.altText })));\r\n }\r\n};\r\nexport default ContentCarousel;\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 styled, { css } from 'styled-components';\r\nexport const LinkStyles = css `\r\n ${transition('color, text-decoration-color')};\r\n ${fonts.brandonGrotesque.bold};\r\n\r\n display: inline-block;\r\n color: ${brand.black};\r\n font-size: ${fluid(16, 20)};\r\n line-height: 1.5;\r\n text-decoration: underline;\r\n text-decoration-color: ${brand.green};\r\n text-transform: uppercase;\r\n text-underline-position: under;\r\n\r\n &[data-size='small'] {\r\n font-size: ${fluid(14, 18)};\r\n }\r\n\r\n &[data-variant='white'] {\r\n color: ${brand.white};\r\n text-decoration-color: ${brand.white};\r\n }\r\n\r\n &:focus,\r\n &:hover {\r\n text-decoration-color: ${brand.black};\r\n }\r\n`;\r\nconst Container = styled.a `\r\n ${LinkStyles};\r\n`;\r\nconst CtaLinkStyles = {\r\n Container,\r\n};\r\nexport default CtaLinkStyles;\r\n","import * as React from 'react';\r\nimport CtaLink from '../CtaLink/CtaLink';\r\nimport LinkButton from '../LinkButton/LinkButton';\r\nimport S from './SectionHeader.styles';\r\nconst SectionHeader = ({ title, subtitle, content, sectionCta }) => {\r\n if (!title && !subtitle && !content) {\r\n return null;\r\n }\r\n return (React.createElement(S.Container, null,\r\n title && React.createElement(S.Title, null, title),\r\n subtitle && React.createElement(S.Subtitle, null, subtitle),\r\n content && React.createElement(S.Content, { dangerouslySetInnerHTML: { __html: content } }),\r\n sectionCta && (React.createElement(React.Fragment, null, sectionCta.style && sectionCta.style === 'link' ? (React.createElement(CtaLink, { href: sectionCta.url, target: sectionCta.target }, sectionCta.text)) : (React.createElement(LinkButton, { buttonType: \"default\", href: sectionCta.url, target: sectionCta.target }, sectionCta.text))))));\r\n};\r\nexport default SectionHeader;\r\n","import { transition } from '@helpers/animate';\r\nimport brand from '@helpers/brand';\r\nimport { ButtonReset } from '@helpers/global';\r\nimport { Device, until } from '@helpers/media';\r\nimport DotPaginationStyles from '@stories/Components/Misc/DotPagination/DotPagination.styles';\r\nimport styled from 'styled-components';\r\nconst Container = styled.div `\r\n --controlsColour: ${brand.green};\r\n\r\n display: flex;\r\n gap: 24px;\r\n padding: 4px 0;\r\n place-content: center;\r\n place-items: center;\r\n\r\n ${DotPaginationStyles.Container} {\r\n flex: 1;\r\n }\r\n\r\n @media ${until(Device.Tablet)} {\r\n &[data-hide-pagination-mobile='true'] {\r\n ${DotPaginationStyles.Container} {\r\n display: none;\r\n }\r\n }\r\n }\r\n\r\n &[data-vertical='true'] {\r\n ${DotPaginationStyles.Container} {\r\n display: none;\r\n }\r\n }\r\n`;\r\nconst ButtonWrapper = styled.div `\r\n display: flex;\r\n\r\n [data-vertical='true'] & {\r\n display: flex;\r\n height: 100%;\r\n flex-direction: column;\r\n justify-content: space-between;\r\n align-items: center;\r\n }\r\n`;\r\nconst Button = styled.button `\r\n ${ButtonReset}\r\n display: flex;\r\n border-radius: 50%;\r\n height: 48px;\r\n place-content: center;\r\n place-items: center;\r\n width: 48px;\r\n color: var(--controlsColour);\r\n ${transition('transform')};\r\n\r\n svg {\r\n display: block;\r\n height: 28px;\r\n width: 28px;\r\n }\r\n\r\n &.focus-ring {\r\n outline: auto;\r\n outline-offset: -3px;\r\n outline-width: 3px;\r\n }\r\n\r\n &.focus-ring,\r\n &:hover {\r\n transform: scale(1.2);\r\n }\r\n\r\n &:disabled {\r\n opacity: 0.5;\r\n transform: none;\r\n }\r\n`;\r\nconst ControlsStyles = {\r\n ButtonWrapper,\r\n Button,\r\n Container,\r\n};\r\nexport default ControlsStyles;\r\n","import { css } from 'styled-components';\r\nimport brand from './brand';\r\nconst scrollBarStyles = css `\r\n &::-webkit-scrollbar-track {\r\n background-color: ${brand.beige};\r\n }\r\n\r\n &::-webkit-scrollbar {\r\n background-color: ${brand.beige};\r\n height: 6px;\r\n width: 6px;\r\n }\r\n\r\n &::-webkit-scrollbar-thumb {\r\n background-color: ${brand.green};\r\n border-radius: 0;\r\n cursor: pointer;\r\n }\r\n`;\r\n/* For areas where scrollbar styles should always be used (eg. Moments Magazine issues list) */\r\nexport const scrollBarsAll = scrollBarStyles;\r\nexport default css `\r\n /* @note: This is an attempt to use default scrollbars on touch devices */\r\n @media (hover: hover) or (pointer: fine) {\r\n ${scrollBarStyles};\r\n }\r\n`;\r\n","import { transition } from '@helpers/animate';\r\nimport brand from '@helpers/brand';\r\nimport { Device, from } from '@helpers/media';\r\nimport styled from 'styled-components';\r\nconst Container = styled.nav `\r\n /** value of rgba(brand.green, 0.4), hex needed for hover state */\r\n --colorInactive: #ced6cb;\r\n --colorActive: ${brand.green};\r\n --clickPadding: 24px;\r\n --height: 2px;\r\n --width: 20px;\r\n --fill: 0;\r\n\r\n display: flex;\r\n flex-direction: row;\r\n place-content: center;\r\n place-items: center;\r\n user-select: none;\r\n position: relative;\r\n overflow: hidden;\r\n\r\n &::before {\r\n content: '';\r\n position: absolute;\r\n top: 24px;\r\n left: 0;\r\n height: var(--height);\r\n width: 100%;\r\n background-color: var(--colorInactive);\r\n }\r\n\r\n @media ${from(Device.Tablet)} {\r\n --width: 100px;\r\n --height: 4px;\r\n }\r\n\r\n &[data-exclude-fill='true'] {\r\n --colorInactive: none;\r\n }\r\n`;\r\nconst Fill = styled.div `\r\n position: absolute;\r\n z-index: 1;\r\n top: 24px;\r\n left: 0;\r\n height: var(--height);\r\n width: 100%;\r\n background-color: var(--colorActive);\r\n transform: scaleX(var(--fill));\r\n transform-origin: left;\r\n ${transition('transform')};\r\n\r\n [data-exclude-fill='true'] & {\r\n display: none;\r\n }\r\n`;\r\nconst Item = styled.button `\r\n flex: 1;\r\n position: relative;\r\n z-index: 2;\r\n display: flex;\r\n background: none;\r\n border: 0;\r\n color: transparent;\r\n margin: 0;\r\n padding: var(--clickPadding) 0;\r\n place-content: center;\r\n place-items: center;\r\n ${transition('color')};\r\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\r\n -webkit-tap-highlight-color: transparent;\r\n\r\n &::before {\r\n content: '';\r\n display: block;\r\n background-color: var(--colorInactive);\r\n border: 0;\r\n height: 0;\r\n width: 100%;\r\n ${transition('transform')};\r\n position: absolute;\r\n top: 50%;\r\n }\r\n\r\n &[data-passed='true']::before {\r\n background-color: var(--colorActive);\r\n }\r\n\r\n &:hover::before {\r\n height: var(--height);\r\n transform: scaleY(3);\r\n }\r\n`;\r\nconst DotPaginationStyles = {\r\n Container,\r\n Fill,\r\n Item,\r\n};\r\nexport default DotPaginationStyles;\r\n","var _path;\n\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); }\n\nimport * as React from \"react\";\n\nfunction SvgNavArrowRight(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 5 9.286\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M5 4.643l-.271-.292L.673 0 0 .585l3.785 4.058L0 8.7l.673.585 4.056-4.35z\"\n })));\n}\n\nexport default __webpack_public_path__ + \"56e05cca84d2cb4def6c69e7fc0f12ac.svg\";\nexport { SvgNavArrowRight as ReactComponent };","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 || !image.src) {\r\n return '';\r\n }\r\n /**\r\n * Remove any query param string to ensure paramsString is applied correctly and\r\n * there are no double definitions (setting a param twice prevents any tranformations)\r\n */\r\n const imageSource = image.src.split('?')[0];\r\n const params = {\r\n rxy: image.focalPoint ? `${image.focalPoint.left},${image.focalPoint.top}` : undefined,\r\n // Define default quality as 90 to ensure some reduction in size for all but the smallest images\r\n quality: imageParams.width && imageParams.width > 400 ? 90 : 100,\r\n // Default the format to jpg, except in cases where the original image is an SVG or PNG\r\n format: imageSource.includes('.svg') || imageSource.includes('.png')\r\n ? undefined\r\n : imageParams.format ?? 'jpg',\r\n // Default the rsampler to lanczos8\r\n rsampler: imageParams.rsampler ?? 'lanczos8',\r\n ...imageParams,\r\n };\r\n const paramsString = queryString.stringify(params);\r\n return `${imageSource}${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 ? Math.round(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\n","import { fluid } from '@helpers/fluid';\r\nimport { contentStyles, h1, tag } from '@helpers/typography';\r\nimport styled from 'styled-components';\r\nimport ButtonStyles from '../Button/Button.styles';\r\nimport CtaLinkStyles from '../CtaLink/CtaLink.styles';\r\nconst Container = styled.div `\r\n margin: 0 auto ${fluid(30, 48)};\r\n max-width: 1366px;\r\n text-align: center;\r\n\r\n ${ButtonStyles.Container},\r\n ${CtaLinkStyles.Container} {\r\n margin-top: ${fluid(18, 24)};\r\n }\r\n`;\r\nconst Title = styled.h2 `\r\n ${h1};\r\n`;\r\nconst Subtitle = styled.span `\r\n ${tag};\r\n\r\n margin: 0 0 ${fluid(6, 8)};\r\n`;\r\nconst Content = styled.div `\r\n ${contentStyles};\r\n\r\n p:last-child {\r\n margin-bottom: 0;\r\n }\r\n\r\n max-width: 738px;\r\n margin: 0 auto;\r\n`;\r\nconst SectionHeaderStyles = {\r\n Container,\r\n Title,\r\n Subtitle,\r\n Content,\r\n};\r\nexport default SectionHeaderStyles;\r\n"],"sourceRoot":""}