{"version":3,"file":"5310-9cb9870c15ef7609e344.js","mappings":"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","sources":["webpack://brc/./src/hoc/withMotion.tsx","webpack://brc/./src/hooks/useMedia.ts","webpack://brc/./src/stories/Components/Misc/Carousels/Carousel/Dots/Dots.tsx","webpack://brc/./src/stories/Components/Misc/Carousels/Carousel/Controls/Controls.tsx","webpack://brc/./src/stories/Components/Misc/Carousels/Carousel/Pagination/Pagination.tsx","webpack://brc/./src/stories/Components/Cards/TestimonialCard/TestimonialCard.styles.ts","webpack://brc/./src/stories/Components/Cards/TestimonialCard/TestimonialCard.tsx","webpack://brc/./src/stories/Widgets/TestimonialCarousel/TestimonialCarousel.styles.ts","webpack://brc/./src/stories/Widgets/TestimonialCarousel/TestimonialCarousel.tsx","webpack://brc/./node_modules/framer-motion/dist/es/components/MotionConfig/index.mjs"],"sourcesContent":["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, useState } from 'react';\r\n/**\r\n * Store a value in state based on the specified media queries.\r\n * @param {Array} queries\r\n * @param {Array} values\r\n * @param {T} defaultValue\r\n */\r\nfunction useMedia(queries, values, defaultValue) {\r\n // Function that gets value based on matching media query\r\n const getValue = () => {\r\n // Get index of first media query that matches\r\n const index = mediaQueryLists.findIndex((mql) => mql.matches);\r\n // Return related value or defaultValue if none\r\n return typeof values[index] !== 'undefined' ? values[index] : defaultValue;\r\n };\r\n // State and setter for matched value\r\n const [value, setValue] = useState(defaultValue);\r\n const [mediaQueryLists, setMediaQueryLists] = useState([]);\r\n useEffect(() => {\r\n // Array containing a media query list for each query\r\n setMediaQueryLists(queries.map((query) => window.matchMedia(query)));\r\n }, []);\r\n useEffect(() => {\r\n setValue(getValue);\r\n // Event listener callback\r\n // Note: By defining getValue outside of useEffect we ensure that it has ...\r\n // ... current values of hook args (as this hook callback is created once on mount).\r\n const handler = () => setValue(getValue);\r\n // Set a listener for each media query with above handler as callback.\r\n mediaQueryLists.forEach((mql) => mql.addListener(handler));\r\n // Remove listeners on cleanup\r\n return () => mediaQueryLists.forEach((mql) => mql.removeListener(handler));\r\n }, [mediaQueryLists]); // Empty array ensures effect is only run on mount and unmount\r\n return value;\r\n}\r\nexport default useMedia;\r\n","import React from 'react';\r\nimport { DotsStyles as S } from './Dots.styles';\r\nconst Dots = ({ activeIndex, itemCount }) => {\r\n return (React.createElement(S.Dots, null,\r\n React.createElement(S.Dot, { style: { '--progress': `${((activeIndex + 1) / itemCount) * 100}%` } })));\r\n};\r\nexport default Dots;\r\n","import { InterfaceIcon, getSvgIcon } from '@helpers/icons';\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, \"aria-label\": props.translations?.['global.carousel.controls'] ?? '' },\r\n React.createElement(FocusRing, { focusRingClass: \"focus-ring\" },\r\n React.createElement(S.Button, { \"aria-label\": props.translations?.['global.carousel.previous'] ?? '', disabled: !props.wrap && carousel.activeIndex === 0, onClick: (event) => {\r\n event.preventDefault();\r\n carousel.goToPrev(props.wrap);\r\n }, \"data-prev\": true },\r\n React.createElement(S.Icon, null,\r\n getSvgIcon(InterfaceIcon.ArrowRight),\r\n getSvgIcon(InterfaceIcon.ArrowRight)))),\r\n React.createElement(FocusRing, { focusRingClass: \"focus-ring\" },\r\n React.createElement(S.Button, { \"aria-label\": props.translations?.['global.carousel.next'] ?? '', disabled: !props.wrap && carousel.activeIndex === carousel.maxIndex, onClick: (event) => {\r\n event.preventDefault();\r\n carousel.goToNext(props.wrap);\r\n }, \"data-next\": true },\r\n React.createElement(S.Icon, null,\r\n getSvgIcon(InterfaceIcon.ArrowRight),\r\n getSvgIcon(InterfaceIcon.ArrowRight))))));\r\n});\r\nControls.displayName = 'Controls';\r\nexport default Controls;\r\n","import Controls from '@stories/Components/Misc/Carousels/Carousel/Controls/Controls';\r\nimport Dots from '@stories/Components/Misc/Carousels/Carousel/Dots/Dots';\r\nimport * as React from 'react';\r\nimport { useCarouselContext } from '../CarouselProvider/CarouselProvider';\r\nimport S from './Pagination.styles';\r\nconst Pagination = React.forwardRef((props, ref) => {\r\n const carousel = useCarouselContext();\r\n if (carousel.maxIndex === 0) {\r\n return null;\r\n }\r\n return (React.createElement(S.Container, { ref: ref },\r\n React.createElement(Dots, { itemCount: carousel.maxIndex + 1, activeIndex: carousel.activeIndex }),\r\n React.createElement(Controls, { ...props })));\r\n});\r\nPagination.displayName = 'CarouselPagination';\r\nexport default Pagination;\r\n","import { imageCoverContainer, imageWrapperPreserveRatio } from '@helpers/aspectRatio';\r\nimport brand from '@helpers/brand';\r\nimport { fluid } from '@helpers/fluid';\r\nimport fonts from '@helpers/fonts';\r\nimport { Device, from, until } from '@helpers/media';\r\nimport { BackgroundVariant } from '@stories/Components/Misc/SectionWrapper/SectionWrapper';\r\nimport styled from 'styled-components';\r\nconst Image = styled.img `\r\n ${imageCoverContainer()};\r\n`;\r\nconst ImageWrapper = styled.div `\r\n ${imageWrapperPreserveRatio(64, 64)};\r\n\r\n overflow: visible;\r\n\r\n ${Image} {\r\n border-radius: 5000px;\r\n width: calc(100% - 12px);\r\n height: auto;\r\n aspect-ratio: 1;\r\n left: auto;\r\n right: 0;\r\n\r\n @media ${until(Device.TabletLarge)} {\r\n display: none;\r\n }\r\n }\r\n`;\r\nconst Container = styled.blockquote `\r\n display: grid;\r\n grid-template-columns: ${fluid(40, 64)} 1fr;\r\n gap: ${fluid(16, 24)};\r\n padding: ${fluid(24, 40)} ${fluid(16, 28)};\r\n border: 1px solid ${brand.global.white};\r\n border-radius: ${fluid(16, 24)};\r\n background-color: var(--bgColour);\r\n color: var(--fgColour);\r\n height: 100%;\r\n\r\n &[data-variant=${BackgroundVariant.Blue}] {\r\n --bgColour: ${brand.primary.blue.dark};\r\n --fgColour: ${brand.global.white};\r\n }\r\n\r\n &[data-variant=${BackgroundVariant.White}] {\r\n --bgColour: ${brand.global.white};\r\n --fgColour: ${brand.global.black};\r\n }\r\n\r\n &:has(${ImageWrapper} > ${Image}) {\r\n grid-template-columns: ${fluid(40, 128)} 1fr;\r\n }\r\n`;\r\nconst Icon = styled.div `\r\n display: grid;\r\n place-content: center;\r\n background-color: ${brand.primary.blue.light};\r\n color: ${brand.global.white};\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n aspect-ratio: 1;\r\n border-radius: 5000px;\r\n\r\n svg {\r\n width: ${fluid(20, 36)};\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n ${ImageWrapper}:has(${Image}) & {\r\n width: ${fluid(58, 64)};\r\n top: auto;\r\n bottom: calc(${fluid(16, 24)} * -1);\r\n\r\n svg {\r\n width: ${fluid(36, 40)};\r\n }\r\n }\r\n }\r\n`;\r\nconst ContentWrapper = styled.div `\r\n display: flex;\r\n flex-direction: column;\r\n`;\r\nconst CompanyLogo = styled.div `\r\n position: relative;\r\n height: ${fluid(26, 32)};\r\n margin-bottom: 16px;\r\n\r\n ${Image} {\r\n object-position: left;\r\n object-fit: contain;\r\n }\r\n\r\n &[data-portrait='true'] {\r\n height: ${fluid(52, 64)};\r\n }\r\n`;\r\nconst Quote = styled.p `\r\n ${fonts.lato.regular};\r\n\r\n font-size: ${fluid(14, 16)};\r\n line-height: ${fluid(22, 30)};\r\n\r\n ${ContentWrapper}:has(footer) & {\r\n margin-bottom: 30px;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n margin-bottom: ${fluid(20, 24)};\r\n }\r\n }\r\n`;\r\nconst Quotee = styled.footer `\r\n ${fonts.intro};\r\n\r\n margin-top: auto;\r\n font-size: ${fluid(14, 16)};\r\n line-height: ${fluid(20, 24)};\r\n`;\r\nconst JobTitle = styled.cite `\r\n display: block;\r\n font-weight: 400;\r\n font-style: normal;\r\n`;\r\nconst TestimonialCardStyles = {\r\n Container,\r\n ImageWrapper,\r\n Image,\r\n Quote,\r\n Icon,\r\n CompanyLogo,\r\n Quotee,\r\n ContentWrapper,\r\n JobTitle,\r\n};\r\nexport default TestimonialCardStyles;\r\n","import { InterfaceIcon, getSvgIcon } from '@helpers/icons';\r\nimport { getSrcs, imageUrl } from '@helpers/image';\r\nimport { Device, until } from '@helpers/media';\r\nimport * as React from 'react';\r\nimport S from './TestimonialCard.styles';\r\nconst TestimonialCard = (props) => {\r\n const imageSrc = props.quoteeImage ? getSrcs(props.quoteeImage, 232, 116, 2, 1 / 1) : null;\r\n const isPortrait = (props.companyLogo?.height ?? 0) > (props.companyLogo?.width ?? 0);\r\n return (React.createElement(S.Container, { \"data-variant\": props.variant },\r\n React.createElement(S.ImageWrapper, null,\r\n imageSrc && (React.createElement(S.Image, { src: imageSrc.src, srcSet: imageSrc.srcSet, loading: \"lazy\", alt: props.quoteeName, sizes: `${until(Device.TabletLarge)} 116px, 232px` })),\r\n React.createElement(S.Icon, null, getSvgIcon(InterfaceIcon.Quote))),\r\n React.createElement(S.ContentWrapper, null,\r\n props.companyLogo && (React.createElement(S.CompanyLogo, { \"data-portrait\": isPortrait },\r\n React.createElement(S.Image, { src: imageUrl(props.companyLogo, { height: isPortrait ? 128 : 64 }), loading: \"lazy\", alt: props.companyLogo.altText }))),\r\n React.createElement(S.Quote, null, props.quote),\r\n props.quoteeName && (React.createElement(S.Quotee, null,\r\n props.quoteeName,\r\n props.quoteeTitle && React.createElement(S.JobTitle, null, props.quoteeTitle))))));\r\n};\r\nexport default TestimonialCard;\r\n","import { transition } from '@helpers/animate';\r\nimport brand from '@helpers/brand';\r\nimport { Device, from, until } from '@helpers/media';\r\nimport ControlsStyles from '@stories/Components/Misc/Carousels/Carousel/Controls/Controls.styles';\r\nimport { DotsStyles } from '@stories/Components/Misc/Carousels/Carousel/Dots/Dots.styles';\r\nimport MotionTrack from '@stories/Components/Misc/Carousels/Carousel/MotionTrack/MotionTrack';\r\nimport PaginationStyles from '@stories/Components/Misc/Carousels/Carousel/Pagination/Pagination.styles';\r\nimport HeadingSummaryBlockStyles from '@stories/Components/Misc/HeadingSummaryBlock/HeadingSummaryBlock.styles';\r\nimport SectionWrapper, { BackgroundVariant, } from '@stories/Components/Misc/SectionWrapper/SectionWrapper';\r\nimport SectionWrapperStyles from '@stories/Components/Misc/SectionWrapper/SectionWrapper.styles';\r\nimport styled from 'styled-components';\r\nconst Container = styled(SectionWrapper) `\r\n --highlightColour: ${brand.primary.blue.light};\r\n\r\n position: relative;\r\n overflow: hidden;\r\n\r\n &[data-variant=${BackgroundVariant.Blue}],\r\n &[data-variant=${BackgroundVariant.PurpleDark}] {\r\n --boxColour: ${brand.primary.purple.light};\r\n }\r\n\r\n &[data-variant=${BackgroundVariant.Purple}] {\r\n --boxColour: ${brand.primary.purple.dark};\r\n }\r\n\r\n &[data-variant=${BackgroundVariant.Blue}][data-background-box='false'] {\r\n ${ControlsStyles.Container} {\r\n --buttonShadowColour: ${brand.global.black};\r\n }\r\n }\r\n\r\n ${HeadingSummaryBlockStyles.Container} {\r\n margin-top: auto;\r\n position: relative;\r\n z-index: 2;\r\n }\r\n\r\n ${HeadingSummaryBlockStyles.Heading},\r\n ${HeadingSummaryBlockStyles.Subheading},\r\n ${HeadingSummaryBlockStyles.Content}, \r\n ${HeadingSummaryBlockStyles.ButtonWrapper},\r\n ${PaginationStyles.Container} {\r\n ${transition('opacity, transform')};\r\n }\r\n\r\n ${HeadingSummaryBlockStyles.Subheading} {\r\n transition-delay: 300ms;\r\n }\r\n\r\n ${HeadingSummaryBlockStyles.Heading} {\r\n transition-delay: 450ms;\r\n\r\n > span {\r\n transition-delay: 850ms;\r\n }\r\n }\r\n\r\n ${HeadingSummaryBlockStyles.Content} {\r\n transition-delay: 600ms;\r\n }\r\n\r\n ${HeadingSummaryBlockStyles.ButtonWrapper} {\r\n transition-delay: 750ms;\r\n }\r\n\r\n ${PaginationStyles.Container} {\r\n transition-delay: 1000ms;\r\n }\r\n\r\n ${SectionWrapperStyles.Inner} {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 32px;\r\n }\r\n\r\n ${ControlsStyles.Container} {\r\n --buttonShadowColour: ${brand.primary.purple.dark};\r\n }\r\n\r\n &[data-animate='false'] {\r\n ${HeadingSummaryBlockStyles.Heading},\r\n ${HeadingSummaryBlockStyles.Subheading},\r\n ${HeadingSummaryBlockStyles.Content}, \r\n ${HeadingSummaryBlockStyles.ButtonWrapper} {\r\n opacity: 0;\r\n transform: translateY(20px);\r\n }\r\n\r\n ${PaginationStyles.Container} {\r\n opacity: 0;\r\n transform: translateY(-20px);\r\n }\r\n }\r\n\r\n @media ${until(Device.TabletLarge)} {\r\n &[data-variant=${BackgroundVariant.Blue}] ${ControlsStyles.Container} {\r\n --buttonShadowColour: ${brand.global.black};\r\n }\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n &[data-background-box='false']::before,\r\n &[data-background-box='false'] ${SectionWrapperStyles.Inner}::before {\r\n display: none;\r\n }\r\n\r\n &::before,\r\n ${SectionWrapperStyles.Inner}::before, &::after {\r\n content: '';\r\n position: absolute;\r\n left: 0;\r\n }\r\n\r\n &::before {\r\n top: 0;\r\n height: 100%;\r\n width: calc((100vw - var(--siteWidth)) * 0.5);\r\n background-color: var(--boxColour);\r\n z-index: 2;\r\n }\r\n\r\n &::after {\r\n --additional: 6px;\r\n\r\n top: 0;\r\n z-index: 1;\r\n height: 100%;\r\n background-color: var(--sectionBackground);\r\n width: calc(\r\n ((100vw - var(--siteWidth)) * 0.5) +\r\n ((var(--siteWidth) + var(--sitePadding) + var(--sitePadding)) * 0.25 + var(--additional))\r\n );\r\n\r\n @media ${from(Device.DesktopLarge)} {\r\n --additional: -16px;\r\n }\r\n }\r\n\r\n ${SectionWrapperStyles.Inner} {\r\n display: grid;\r\n position: relative;\r\n grid-template-columns: repeat(4, 1fr);\r\n\r\n &::before {\r\n ${transition('transform')};\r\n\r\n top: 50%;\r\n width: 600px;\r\n aspect-ratio: 1;\r\n border-bottom-right-radius: 90px;\r\n background-color: var(--boxColour);\r\n transform: translate(-50%, -40%) rotate(-25deg);\r\n z-index: 2;\r\n }\r\n }\r\n\r\n &[data-animate='false'] ${SectionWrapperStyles.Inner}::before {\r\n transform: translate(-50%, -45%);\r\n }\r\n\r\n ${HeadingSummaryBlockStyles.Container} {\r\n grid-row: 1 / span 1;\r\n grid-column: 1 / span 1;\r\n }\r\n\r\n ${PaginationStyles.Container} {\r\n z-index: 2;\r\n grid-row: 2 / span 1;\r\n grid-column: 1 / span 1;\r\n flex-direction: row-reverse;\r\n justify-content: flex-end;\r\n margin-bottom: auto;\r\n }\r\n\r\n ${DotsStyles.Dots} {\r\n max-width: 64px;\r\n }\r\n }\r\n`;\r\nconst CarouselWrapper = styled.div `\r\n ${transition('opacity, transform', 0.5)};\r\n\r\n --itemPeek: 16px;\r\n --itemGutter: var(--gutterWidth);\r\n --visibleItems: 1;\r\n\r\n z-index: 1;\r\n margin: 0 calc(var(--itemGutter) * -0.5);\r\n transition-delay: 650ms;\r\n\r\n @media ${from(Device.TabletSmall)} {\r\n --visibleItems: 2;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n grid-row: 1 / span 2;\r\n grid-column: 2 / span 3;\r\n }\r\n\r\n @media ${from(Device.Desktop)} {\r\n --itemPeek: 135px;\r\n }\r\n\r\n ${Container}[data-animate='false'] & {\r\n opacity: 0;\r\n transform: translateX(25%);\r\n }\r\n`;\r\nconst Track = styled(MotionTrack) ``;\r\nconst Item = styled.li `\r\n display: block;\r\n flex: 0 0 calc(100% / var(--visibleItems) - (var(--itemPeek, 0px) / var(--visibleItems)));\r\n padding: 0 calc(var(--itemGutter) / 2);\r\n\r\n &[data-is-featured='true'] {\r\n @media ${from(Device.TabletLarge)} {\r\n flex: 0 0 calc(200% / var(--visibleItems) - (var(--itemPeek, 0px) / var(--visibleItems)));\r\n }\r\n }\r\n`;\r\nconst TestimonialCarouselStyles = {\r\n Container,\r\n CarouselWrapper,\r\n Track,\r\n Item,\r\n};\r\nexport default TestimonialCarouselStyles;\r\n","import { rootMargin } from '@helpers/animate';\r\nimport { Device, until } from '@helpers/media';\r\nimport { withMotion } from '@hoc/withMotion';\r\nimport { useInView } from '@hooks/useInView';\r\nimport useMedia from '@hooks/useMedia';\r\nimport TestimonialCard from '@stories/Components/Cards/TestimonialCard/TestimonialCard';\r\nimport CarouselProvider from '@stories/Components/Misc/Carousels/Carousel/CarouselProvider/CarouselProvider';\r\nimport Pagination from '@stories/Components/Misc/Carousels/Carousel/Pagination/Pagination';\r\nimport HeadingSummaryBlock from '@stories/Components/Misc/HeadingSummaryBlock/HeadingSummaryBlock';\r\nimport { BackgroundVariant } from '@stories/Components/Misc/SectionWrapper/SectionWrapper';\r\nimport { MotionConfig } from 'framer-motion';\r\nimport * as React from 'react';\r\nimport S from './TestimonialCarousel.styles';\r\nconst TestimonialCarousel = (props) => {\r\n const [containerRef, inView] = useInView({ rootMargin }, false, props.pageContext?.isEditMode);\r\n const paddingOffset = useMedia([until(Device.Desktop)], [16], 135);\r\n if (!props.items || props.items.length === 0) {\r\n return null;\r\n }\r\n return (React.createElement(MotionConfig, { transition: { duration: 0.3, ease: 'easeOut' } },\r\n React.createElement(S.Container, { id: props.anchorId, ref: containerRef, translations: props.translations, variant: props.backgroundVariant\r\n ? props.backgroundVariant\r\n : BackgroundVariant.Blue, \"data-animate\": inView, \"data-background-box\": props.showBackgroundBox },\r\n React.createElement(HeadingSummaryBlock, { ...props }),\r\n React.createElement(CarouselProvider, { count: props.items.length, paddingOffset: paddingOffset },\r\n React.createElement(S.CarouselWrapper, null,\r\n React.createElement(S.Track, { trackMutations: true }, props.items.map((item) => (React.createElement(S.Item, { key: item.id },\r\n React.createElement(TestimonialCard, { ...item, variant: props.cardVariant ?? BackgroundVariant.Blue })))))),\r\n React.createElement(Pagination, { translations: props.translations })))));\r\n};\r\nexport default withMotion(TestimonialCarousel);\r\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 * \n * \n * \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":["withMotion","WrappedComponent","displayName","name","ComponentWithMotion","props","React","LazyMotion","features","domAnimation","strict","queries","values","defaultValue","getValue","index","mediaQueryLists","findIndex","mql","matches","value","setValue","useState","setMediaQueryLists","useEffect","map","query","window","matchMedia","handler","forEach","addListener","removeListener","_ref","activeIndex","itemCount","S","Dots","Dot","style","Controls","ref","_props$translations$g","_props$translations","_props$translations$g2","_props$translations2","_props$translations$g3","_props$translations3","carousel","useCarouselContext","Container","className","translations","FocusRing","focusRingClass","Button","disabled","wrap","onClick","event","preventDefault","goToPrev","Icon","getSvgIcon","InterfaceIcon","ArrowRight","maxIndex","goToNext","Pagination","Image","styled","img","withConfig","componentId","imageCoverContainer","ImageWrapper","div","imageWrapperPreserveRatio","until","Device","TabletLarge","blockquote","fluid","brand","global","white","BackgroundVariant","Blue","primary","blue","dark","White","black","light","from","ContentWrapper","CompanyLogo","Quote","p","fonts","lato","regular","Quotee","footer","intro","JobTitle","cite","_props$companyLogo$he","_props$companyLogo","_props$companyLogo$wi","_props$companyLogo2","imageSrc","quoteeImage","getSrcs","isPortrait","companyLogo","height","width","variant","src","srcSet","loading","alt","quoteeName","sizes","imageUrl","altText","quote","quoteeTitle","SectionWrapper","PurpleDark","purple","Purple","ControlsStyles","HeadingSummaryBlockStyles","Heading","Subheading","Content","ButtonWrapper","PaginationStyles","transition","SectionWrapperStyles","Inner","DesktopLarge","DotsStyles","CarouselWrapper","TabletSmall","Desktop","Track","MotionTrack","Item","li","_props$pageContext","containerRef","inView","useInView","rootMargin","pageContext","isEditMode","paddingOffset","useMedia","items","length","MotionConfig","duration","ease","id","anchorId","backgroundVariant","showBackgroundBox","HeadingSummaryBlock","CarouselProvider","count","trackMutations","item","_props$cardVariant","key","TestimonialCard","cardVariant","_a","children","isValidProp","config","useContext","isStatic","context","useMemo","JSON","stringify","transformPagePoint","reducedMotion","Provider"],"sourceRoot":""}