{"version":3,"file":"4357-2b458634c8ad6fc2f6ce.js","mappings":"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","sources":["webpack://react-app/./components/Shared/src/components/atoms/LoadingSpinner/LoadingSpinner.tsx","webpack://react-app/./components/Shared/src/components/organisms/HeadlineAndTextBlock/HeadlineAndTextBlock.tsx","webpack://react-app/./components/Shared/src/components/atoms/Button/Button.tsx","webpack://react-app/./components/Shared/src/utility/hooks/useDevicePixelRatio.ts","webpack://react-app/./components/Shared/src/components/atoms/Image/Image.tsx","webpack://react-app/./components/Shared/src/components/atoms/Tag/Tag.tsx","webpack://react-app/./components/Shared/src/utility/config/animations.ts","webpack://react-app/./components/Shared/src/components/molecules/PageTitle/PageTitle.tsx","webpack://react-app/./components/Shared/src/models/IPageTitle.ts","webpack://react-app/./components/Shared/src/components/atoms/Text/Text.tsx","webpack://react-app/./components/Shared/src/components/molecules/ArticleListingLinkCard/ArticleListingLinkCard.tsx","webpack://react-app/./components/Shared/src/components/molecules/FilterList/FilterList.tsx","webpack://react-app/./components/Shared/src/utility/hooks/useScrolledToEnd.ts","webpack://react-app/./components/Shared/src/components/molecules/InfiniteScroll/InfiniteScroll.tsx","webpack://react-app/./components/Shared/src/components/molecules/ArticleListing/ArticleListing.tsx","webpack://react-app/./components/Shared/src/models/enums/SiteEnum.ts","webpack://react-app/./components/Shared/src/utility/hooks/useListingComponentData.ts","webpack://react-app/./components/Shared/src/components/atoms/AnimateInView/AnimateInView.tsx","webpack://react-app/./components/Shared/src/components/molecules/ArticleCard/ArticleCard.tsx","webpack://react-app/./components/Shared/src/utility/helpers/throttle.ts","webpack://react-app/./components/Shared/src/models/enums/VariantTypeEnum.ts","webpack://react-app/./components/Shared/tailwind.config.js","webpack://react-app/./components/Shared/src/models/enums/ThemeEnum.ts","webpack://react-app/./components/Shared/src/models/enums/SizeEnum.ts","webpack://react-app/./components/Shared/src/utility/hooks/useMediaQuery.ts","webpack://react-app/./components/Shared/src/utility/hooks/useBreakpoint.ts","webpack://react-app/./components/Shared/src/components/atoms/Cta/Cta.tsx","webpack://react-app/./components/Shared/src/utility/format/parseNumberInString.ts","webpack://react-app/./components/Shared/src/utility/config/breakpoints.ts","webpack://react-app/./components/Shared/src/models/enums/BreakpointEnum.ts"],"sourcesContent":["import SizeEnum from '@models/enums/SizeEnum';\nimport ThemeEnum from '@models/enums/ThemeEnum';\nimport { ILoadingSpinner } from '@models/ILoadingSpinner';\nimport classNames from 'classnames';\n\nconst LoadingSpinner = ({\n size = SizeEnum.Small,\n loadingLabel = '...loading',\n theme = ThemeEnum.Light,\n}: ILoadingSpinner) => {\n const sizeClasses = classNames({\n 'tw-w-xs tw-h-xs': size === SizeEnum.Small,\n 'tw-w-sm tw-h-sm': size === SizeEnum.Medium,\n 'tw-h-16 tw-w-16': size === SizeEnum.Large,\n });\n\n const borderClasses = classNames({\n 'tw-border-2': size === SizeEnum.Small,\n 'tw-border-[3px]': size === SizeEnum.Medium,\n 'tw-border-4': size === SizeEnum.Large,\n });\n\n const segmentClasses = classNames({\n 'tw-border-b-2 tw-border-l-2': size === SizeEnum.Small,\n 'tw-border-b-[3px] tw-border-l-[3px]': size === SizeEnum.Medium,\n 'tw-border-b-4 tw-border-l-4': size === SizeEnum.Large,\n });\n\n return (\n \n \n \n \n \n {loadingLabel}\n \n );\n};\n\nexport default LoadingSpinner;\n","import Button from '@atoms/Button/Button';\nimport Cta from '@atoms/Cta/Cta';\nimport Text from '@atoms/Text/Text';\nimport { ILink } from '@models/ILink';\nimport SiteEnum from '@models/enums/SiteEnum';\nimport VariantTypeEnum from '@models/enums/VariantTypeEnum';\nimport classNames from 'classnames';\n\nexport interface IHeadlineAndTextBlock {\n readonly heading?: string;\n readonly subText?: string;\n readonly ctaStyle?: Exclude;\n readonly link?: ILink;\n readonly site: SiteEnum;\n}\n\nconst HeadlineAndTextBlock = ({\n heading,\n subText = '',\n ctaStyle = VariantTypeEnum.Primary,\n link,\n site,\n}: IHeadlineAndTextBlock) => {\n const LinkElement = () => {\n if (link) {\n return ctaStyle === VariantTypeEnum.Primary ? (\n \n ) : (\n \n );\n }\n };\n\n return (\n
\n {heading && (\n \n {heading}\n \n )}\n {subText && (\n \n \n {link && }\n \n )}\n {link && (\n
\n {link && !subText && }\n
\n )}\n
\n );\n};\n\nexport default HeadlineAndTextBlock;\n","import Icon from '@atoms/Icon/Icon';\nimport { ButtonOrLinkProps } from '@models/IButton';\nimport SiteEnum from '@models/enums/SiteEnum';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport classNames from 'classnames';\nimport { forwardRef, type ForwardedRef } from 'react';\nimport { twMerge } from 'tailwind-merge';\n\nconst baseClasses = `tw-text-sm tw-flex tw-items-center tw-rounded tw-relative after:tw-content-[''] after:tw-box-content focus-visible:after:tw-rounded focus-visible:tw-outline-none tw-transition-colors focus-visible:after:tw-absolute focus-visible:after:tw-inset-[2px] focus-visible:after:tw-border-2 focus-visible:after:tw-block tw-px-4`;\n\nexport type ButtonVariant = VariantProps;\n\nexport const variants = cva(baseClasses, {\n variants: {\n variant: {\n yellow:\n 'tw-text-black hover:tw-bg-yellow-hover focus-visible:tw-bg-yellow focus-visible:tw-ring-yellow focus-visible:tw-ring-offset-grey-100 active:tw-bg-yellow-active disabled:tw-pointer-events-none disabled:tw-border-yellow-disabled disabled:tw-text-grey-60 disabled:tw-bg-yellow-disabled focus-visible:after:tw-border-black',\n grey30:\n 'focus-visible:tw-bg-grey-30 focus-visible:tw-ring-grey-30 focus-visible:tw-ring-offset-grey-100 disabled:tw-pointer-events-none disabled:tw-border-grey-30 disabled:tw-text-grey-30 focus-visible:after:tw-border-black',\n grey80:\n 'focus-visible:tw-bg-grey-80 focus-visible:tw-text-white focus-visible:tw-ring-grey-80 focus-visible:tw-ring-offset-white disabled:tw-pointer-events-none disabled:tw-border-grey-30 disabled:tw-text-grey-30 disabled:tw-text-grey-60 disabled:tw-bg-grey-30 dark:focus-visible:tw-bg-white dark:focus-visible:tw-text-grey-100 dark:focus-visible:tw-ring-white dark:focus-visible:tw-ring-offset-grey-100 dark:disabled:tw-border-grey-80 dark:disabled:tw-bg-grey-80 dark:disabled:tw-text-white focus-visible:after:tw-border-white dark:focus-visible:after:tw-border-black',\n white:\n 'focus-visible:tw-bg-white focus-visible:tw-text-grey-100 focus-visible:tw-ring-white focus-visible:tw-ring-offset-grey-100 disabled:tw-pointer-events-none disabled:tw-border-grey-80 disabled:tw-bg-grey-80 disabled:tw-text-white focus-visible:after:tw-border-black dark:tw-border dark:tw-border-grey-30',\n destructive:\n 'tw-bg-red tw-text-white hover:tw-bg-red-hover focus-visible:tw-ring-red focus-visible:tw-ring-offset-white active:tw-bg-red-active disabled:tw-pointer-events-none disabled:tw-bg-red-disabled disabled:tw-text-grey-60 focus-visible:after:tw-border-white',\n link: 'tw-text-black hover:tw-text-grey-70 tw-underline hover:tw-no-underline tw-underline-offset-2 active:tw-text-grey-80 dark:tw-text-white',\n },\n modifier: {\n fill: '',\n outline: 'tw-bg-transparent tw-border tw-border-current',\n },\n icon: {\n true: 'tw-rounded-full focus-visible:after:tw-rounded-full tw-py-4',\n false: 'tw-py-3.5',\n },\n },\n compoundVariants: [\n // Yellow Variants\n {\n variant: 'yellow',\n modifier: 'fill',\n className: 'tw-bg-yellow',\n },\n {\n variant: 'yellow',\n modifier: 'outline',\n className: 'tw-border-yellow',\n },\n // Grey30 Variants\n {\n variant: 'grey30',\n modifier: 'fill',\n className:\n 'tw-border-grey-30 tw-bg-grey-30 tw-text-black hover:tw-bg-grey-40 active:tw-bg-grey-50',\n },\n {\n variant: 'grey30',\n modifier: 'outline',\n className:\n 'tw-text-black tw-border-grey-30 hover:tw-bg-grey-40 active:tw-bg-grey-50',\n },\n // Grey80 Variants - becomes white variant by wrapping in an element with class 'dark'\n {\n variant: 'grey80',\n modifier: 'fill',\n className:\n 'tw-bg-grey-80 tw-text-white hover:tw-bg-grey-90 active:tw-bg-grey-100 dark:tw-bg-white dark:tw-text-grey-100 dark:hover:tw-bg-grey-10 dark:active:tw-bg-grey-20',\n },\n {\n variant: 'grey80',\n modifier: 'outline',\n className:\n 'tw-border-grey-80 tw-text-black hover:tw-bg-grey-90 hover:tw-text-white active:tw-bg-grey-100 dark:tw-text-white dark:hover:tw-bg-grey-10 dark:hover:tw-text-grey-100 dark:active:tw-bg-grey-20',\n },\n // White Variants\n {\n variant: 'white',\n modifier: 'fill',\n className:\n 'tw-bg-white tw-text-grey-100 hover:tw-bg-grey-10 active:tw-bg-grey-20',\n },\n {\n variant: 'white',\n modifier: 'outline',\n className:\n 'tw-bg-transparent tw-text-white hover:tw-bg-grey-10 hover:tw-text-grey-100 active:tw-bg-grey-20 hover:tw-border-grey-10 active:tw-border-grey-20',\n },\n ],\n defaultVariants: {\n variant: 'yellow',\n icon: false,\n },\n});\n\nconst Button = forwardRef<\n HTMLAnchorElement | HTMLButtonElement,\n ButtonOrLinkProps\n>(\n (\n {\n as = 'button',\n buttonClasses,\n dataTestId,\n disabled,\n iconClasses,\n iconName,\n iconSize,\n label,\n modifier = 'fill',\n site,\n variant,\n ...props\n },\n ref\n ) => {\n const siteStyles = {\n [SiteEnum.B2B]: 'yellow',\n [SiteEnum.Deco]: 'grey80',\n };\n\n const style =\n variant ??\n (site && (siteStyles[site] as keyof ButtonVariant['variant'])) ??\n undefined;\n\n const iconOnly = !!iconName && !label;\n\n const classes = twMerge(\n variants({ variant: style, modifier, icon: iconOnly }),\n buttonClasses\n );\n\n const Content = (\n \n {label && {label}}\n {iconName && (\n \n )}\n \n );\n\n if (as === 'link') {\n const anchorProps =\n props as React.AnchorHTMLAttributes;\n const { href } = anchorProps;\n\n return (\n }\n {...anchorProps}\n data-testid={dataTestId}\n >\n {Content}\n \n );\n } else {\n return (\n }\n {...(props as React.ButtonHTMLAttributes)}\n >\n {Content}\n \n );\n }\n }\n);\n\nButton.displayName = 'Button';\nexport default Button;\n","import { useEffect, useState } from 'react';\n\nconst useDevicePixelRatio = (): number | undefined => {\n const [devicePixelRatio, setDevicePixelRatio] = useState(\n undefined\n );\n\n useEffect(() => {\n const updateDevicePixelRatio = () => {\n setDevicePixelRatio(Math.ceil(window.devicePixelRatio));\n };\n\n const mediaQuery = window.matchMedia(\n `(resolution: ${window.devicePixelRatio}dppx)`\n );\n mediaQuery.addEventListener('change', updateDevicePixelRatio);\n\n return () => {\n mediaQuery.removeEventListener('change', updateDevicePixelRatio);\n };\n }, []);\n\n return devicePixelRatio;\n};\n\nexport default useDevicePixelRatio;\n","import { IImage } from '@models/IImage';\nimport BreakpointEnum from '@models/enums/BreakpointEnum';\nimport breakpoints from '@utility/config/breakpoints';\nimport useBreakpoint from '@utility/hooks/useBreakpoint';\nimport useDevicePixelRatio from '@utility/hooks/useDevicePixelRatio';\nimport classNames from 'classnames';\nimport {\n PropsWithChildren,\n RefObject,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n} from 'react';\n\ninterface Props {\n readonly aspectRatio?: number;\n readonly classes?: string;\n readonly containerRef?: RefObject;\n readonly image: IImage;\n readonly imageClasses?: string;\n readonly lazyLoad?: boolean;\n readonly quality?: number;\n readonly sizes?: string;\n readonly height?: number;\n readonly width?: number;\n readonly onLoad?: () => void;\n}\n\nconst Image = ({\n aspectRatio, // width / height e.g. 0.5, 2 etc.\n children,\n classes,\n containerRef,\n image,\n imageClasses,\n lazyLoad = true,\n quality = 70,\n sizes = '',\n height,\n width,\n onLoad,\n}: PropsWithChildren) => {\n const devicePixelRatio = useDevicePixelRatio() ?? 1;\n const breakpoint = useBreakpoint() ?? BreakpointEnum.XLarge;\n const imgRef = useRef(null);\n\n const {\n url,\n altText,\n originalHeight,\n originalWidth,\n imageFocalPoint,\n srcSet: source,\n } = image ?? {};\n const fileExtension = url?.substring(url?.lastIndexOf('.') + 1);\n const hasParams = url?.includes('&'); // For images not coming from Opti\n const containerWidth = containerRef?.current?.clientWidth;\n\n const breakpointWidths = [\n 375 * devicePixelRatio,\n 752 * devicePixelRatio,\n 1024 * devicePixelRatio,\n 1408 * devicePixelRatio,\n 1600 * devicePixelRatio,\n ];\n\n const calculatedAspectRatio = useMemo(() => {\n if (aspectRatio) return aspectRatio;\n\n if (originalWidth && originalHeight) return originalWidth / originalHeight;\n }, [aspectRatio, originalWidth, originalHeight]);\n\n const generateUrlWithExtensions = useCallback(\n (width?: number) => {\n const qParam = quality ? `&quality=${quality}` : '';\n const fpParam = imageFocalPoint\n ? `&rxy=${imageFocalPoint.replace('|', ',')}`\n : '';\n\n if (!width) {\n return `${url}?format=webp$${fpParam}${qParam}`;\n }\n\n const wParam = `&width=${width}`;\n const h = aspectRatio ? width / aspectRatio : height;\n const hParam = h ? `&height=${h}` : '';\n\n return `${url}?format=webp${wParam}${hParam}${fpParam}${qParam}`;\n },\n [url, quality, calculatedAspectRatio, imageFocalPoint]\n );\n\n const srcSet = useMemo(() => {\n return source\n ? `${url} ${breakpointWidths[1]}w, ${source} ${breakpointWidths[2]}w`\n : breakpointWidths\n .map(\n (bpWidth, i) =>\n `${generateUrlWithExtensions(\n i < breakpointWidths.length - 1 ? bpWidth : 1920\n )} ${bpWidth}w`\n )\n .join(', ');\n }, [source, breakpointWidths, generateUrlWithExtensions]);\n\n useEffect(() => {\n // Fallback - sometimes onLoad does not trigger if the image is cached\n if (imgRef?.current?.complete && onLoad) onLoad();\n }, [imgRef]);\n\n if (!url || devicePixelRatio == null) return null;\n\n if (fileExtension === 'svg' || isValidBase64ImageSource(url)) {\n return (\n \n );\n }\n\n return (\n <>\n \n {!width && !containerWidth && !hasParams && (\n \n )}\n \n {children}\n \n \n );\n};\n\nconst isValidBase64ImageSource = (imageSrc: string) => {\n const regex = /^data:image\\/(png|jpg|jpeg|gif);base64,[A-Za-z0-9+/]+={0,2}$/;\n return regex.test(imageSrc);\n};\n\nexport default Image;\n","import Icon from '@atoms/Icon/Icon';\nimport { ComponentProps, ElementType } from 'react';\nimport { twMerge } from 'tailwind-merge';\n\nconst defaultElement = 'button';\n\nexport const enum TagVariant {\n Grey = 'grey',\n Yellow = 'yellow',\n}\n\ntype ExplicitProps = {\n label: string;\n isActive?: boolean;\n largeText?: boolean;\n icon?: boolean;\n variant?: TagVariant;\n};\n\ntype PropsWithAs =\n ExplicitProps & {\n as?: TElementType;\n };\n\ntype ITag = PropsWithAs &\n Omit, keyof PropsWithAs>;\n\nfunction Tag({\n as,\n label,\n isActive,\n largeText,\n icon = false,\n variant = TagVariant.Grey,\n ...otherProps\n}: ITag) {\n const Wrapper = as ?? 'button';\n const isClickable = Wrapper === 'button' || Wrapper === 'a';\n const hoverStyles =\n variant === TagVariant.Yellow\n ? \"hover:tw-bg-yellow-hover data-[active='true']:tw-border-yellow data-[active='true']:tw-bg-yellow hover:tw-border-yellow-hover\"\n : \"hover:tw-bg-grey-30 data-[active='true']:tw-border-grey-40 data-[active='true']:tw-bg-grey-40\";\n\n return (\n \n {label}\n {icon && }\n \n );\n}\n\nexport default Tag;\n","export const slideTransition = {\n duration: 0.8,\n ease: [0.74, 0, 0.19, 1.02],\n};\n\nexport const fadeTransition = {\n delay: 0.15,\n duration: 0.3,\n ease: 'easeIn',\n};\n\nexport const fadeInUp = {\n hidden: {\n opacity: 0,\n y: 50,\n transition: {\n duration: 1,\n ease: [0.22, 1, 0.36, 1],\n },\n },\n visible: {\n opacity: 1,\n y: 0,\n transition: {\n duration: 1,\n ease: [0.22, 1, 0.36, 1],\n type: 'spring',\n stiffness: 50,\n damping: 14,\n },\n },\n};\n\nexport const fadeInUpSlow = {\n hidden: {\n opacity: 0,\n y: 50,\n transition: {\n duration: 1,\n ease: [0.4, 0, 0.2, 1],\n },\n },\n visible: {\n opacity: 1,\n y: 0,\n transition: {\n duration: 1,\n ease: [0.4, 0, 0.2, 1],\n type: 'spring',\n stiffness: 50,\n damping: 14,\n },\n },\n};\n\nexport const fadeIn = {\n hidden: {\n opacity: 0,\n transition: {\n duration: 0.5,\n ease: 'easeInOut',\n },\n },\n visible: {\n opacity: 1,\n transition: {\n duration: 0.5,\n ease: 'easeInOut',\n },\n },\n};\n","import Button from '@atoms/Button/Button';\nimport Cta from '@atoms/Cta/Cta';\nimport Text from '@atoms/Text/Text';\nimport { IPageTitle, PageTitleSize } from '@models/IPageTitle';\nimport ThemeEnum from '@models/enums/ThemeEnum';\nimport VariantTypeEnum from '@models/enums/VariantTypeEnum';\nimport { fadeInUp } from '@utility/config/animations';\nimport classNames from 'classnames';\nimport { motion, useInView } from 'motion/react';\nimport { useRef } from 'react';\n\nconst PageTitle = ({\n site,\n backgroundColour,\n content,\n ctaStyle = VariantTypeEnum.Primary,\n isMainHeading = true,\n largeBodyText = false,\n links,\n theme,\n title,\n trumpetText,\n containerProps,\n hasPadding = true,\n shouldAnimate,\n reducedPadding = false,\n variant = PageTitleSize.Large,\n}: IPageTitle) => {\n const sectionRef = useRef(null);\n const textRef = useRef(null);\n const inView = useInView(textRef, { amount: 0.5, once: true });\n\n const containerVariants = {\n hidden: { opacity: 0 },\n visible: {\n opacity: 1,\n transition: {\n staggerChildren: 0.05,\n duration: 0.5,\n ease: 'easeInOut',\n },\n },\n };\n\n return (\n \n
\n \n \n {trumpetText && (\n \n {trumpetText}\n \n )}\n \n {title}\n \n \n {content && (\n \n \n \n )}\n {!!links?.length && (\n \n {links.map(({ url, text, target }) =>\n ctaStyle === VariantTypeEnum.Primary ? (\n \n ) : (\n \n )\n )}\n \n )}\n \n
\n \n );\n};\n\nexport default PageTitle;\n","import { ComponentProps } from 'react';\nimport { ILink } from './ILink';\nimport SiteEnum from './enums/SiteEnum';\nimport ThemeEnum from './enums/ThemeEnum';\nimport VariantTypeEnum from './enums/VariantTypeEnum';\n\nexport interface IPageTitle {\n readonly site: SiteEnum;\n readonly backgroundColour?: string;\n readonly content?: string;\n readonly ctaStyle?: Omit;\n readonly isMainHeading: boolean;\n readonly largeBodyText?: boolean;\n readonly links?: ILink[];\n readonly theme?: ThemeEnum;\n readonly title: string;\n readonly trumpetText?: string;\n readonly containerProps?: ComponentProps<'section'>;\n readonly hasPadding?: boolean;\n readonly shouldAnimate?: boolean;\n readonly reducedPadding?: boolean;\n readonly variant?: PageTitleSize;\n}\n\nexport const enum PageTitleSize {\n Small = 'small',\n Large = 'large',\n}\n","import classNames from 'classnames';\n\nexport type TextVariant = keyof typeof variantClasses;\n\ninterface ExplicitProps {\n variant: TextVariant;\n className?: string;\n children?: string | string[] | TrustedHTML;\n}\n\n// This allows Text Component props to match the props of the element defined by 'as'\ntype PropsWithAs =\n Partial<\n ExplicitProps & {\n as: TElementType;\n }\n >;\n\ntype TextProps =\n PropsWithAs &\n Omit, keyof PropsWithAs>;\n\nconst __DEFAULT_ELEMENT__ = 'p';\n\nconst variantClasses = {\n 'hero-headline-large':\n 'tw-font-serif tw-text-4xl md:tw-text-7xl xl:tw-text-9xl',\n 'hero-headline': 'tw-font-serif tw-text-4xl md:tw-text-7xl xl:tw-text-8xl',\n headline: 'tw-font-serif tw-text-3xl xl:tw-text-5xl',\n 'sub-headline': 'tw-font-sans tw-text-2xl', // alt name - heading-24\n // New Design System Variants\n 'ds-sub-headline': 'tw-font-serif tw-text-4xl md:tw-text-5xl xl:tw-text-7xl',\n 'ds-headline-2': 'tw-text-3xl md:tw-text-4xl xl:tw-text-5xl tw-font-serif',\n 'ds-headline-3': 'tw-text-xl lg:tw-text-2xl tw-font-sans tw-font-light',\n 'ds-headline-4': 'tw-font-sans tw-text-lg lg:tw-text-xl',\n 'ds-quote': 'tw-font-serif tw-text-2xl lg:tw-text-3xl',\n 'ds-paragraph': 'tw-font-sans tw-text-sm lg:tw-text-base',\n body: 'tw-font-sans tw-text-base', // alt name - body-16\n 'body-small': 'tw-font-sans tw-text-sm', // alt name - body-14\n // secondary / non-responsive variants\n 'heading-56': 'tw-font-serif tw-text-8xl',\n 'heading-48': 'tw-font-serif tw-text-7xl',\n 'heading-40': 'tw-font-serif tw-text-6xl',\n 'heading-36': 'tw-font-serif tw-text-5xl',\n 'heading-32': 'tw-font-serif tw-text-4xl',\n 'heading-28': 'tw-font-serif tw-text-3xl',\n 'heading-24-light': 'tw-font-sans tw-text-2xl tw-font-light',\n 'heading-21': 'tw-font-sans tw-text-xl',\n 'heading-21-light': 'tw-font-sans tw-text-xl tw-font-light',\n 'body-18': 'tw-font-sans tw-text-lg',\n 'body-18-semibold': 'tw-font-sans tw-text-lg tw-font-semibold',\n 'body-16-semibold': 'tw-font-sans tw-font-semibold',\n 'body-14-semibold': 'tw-font-sans tw-text-sm tw-font-semibold',\n 'mono-14': 'tw-font-mono tw-text-sm',\n 'mono-12': 'tw-font-mono tw-text-xs',\n 'mono-14-semibold': 'tw-font-mono tw-text-sm tw-font-semibold',\n 'mono-12-semibold': 'tw-font-mono tw-text-xs tw-font-semibold',\n 'label-12': 'tw-font-sans tw-text-xs',\n 'label-12-semibold': 'tw-font-sans tw-text-xs tw-font-semibold',\n};\n\nconst defaultTags: Record<\n string,\n 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'code' | 'label'\n> = {\n 'hero-headline-large': 'h1',\n 'hero-headline': 'h1',\n headline: 'h2',\n 'sub-headline': 'h3',\n body: 'p',\n 'heading-56': 'h1',\n 'heading-48': 'h2',\n 'heading-40': 'h3',\n 'heading-36': 'h4',\n 'heading-32': 'h5',\n 'heading-28': 'h6',\n 'heading-24-light': 'h6',\n 'heading-21': 'h4',\n 'body-small': 'p',\n 'body-18': 'p',\n 'body-18-semibold': 'p',\n 'body-16-semibold': 'p',\n 'body-14-semibold': 'p',\n 'mono-14': 'code',\n 'mono-12': 'code',\n 'mono-14-semibold': 'code',\n 'mono-12-semibold': 'code',\n 'label-12': 'label',\n 'label-12-semibold': 'label',\n};\n\nfunction Text<\n TElementType extends React.ElementType = typeof __DEFAULT_ELEMENT__\n>({\n as,\n className,\n variant = 'body',\n children,\n ...props\n}: TextProps) {\n const combinedClassName = classNames(variantClasses[variant], className);\n const Tag = as ?? defaultTags[variant] ?? 'span';\n\n return (\n \n {children}\n \n );\n}\n\nexport default Text;\n","import Button from '@atoms/Button/Button';\nimport Text from '@atoms/Text/Text';\nimport { IArticleListingLinkCard } from '@models/IArticleListingLinkCard';\n\nconst ArticleListingLinkCard = ({\n text,\n title,\n trumpetText,\n cta,\n}: IArticleListingLinkCard) => (\n
\n \n {trumpetText}\n \n \n {title}\n \n \n {title}\n \n \n {text}\n \n
\n \n
\n
\n);\n\nexport default ArticleListingLinkCard;\n","import Tag, { TagVariant } from '@atoms/Tag/Tag';\nimport { IFilterList } from '@models/IFilterList';\nimport SiteEnum from '@models/enums/SiteEnum';\n\nconst FilterList = ({\n filters,\n onSelect,\n selectedItemID,\n site,\n}: IFilterList) => (\n
\n {filters.map((filter) => (\n onSelect(filter.id)}\n label={filter.label}\n isActive={selectedItemID === filter.id}\n largeText\n variant={site === SiteEnum.B2B ? TagVariant.Yellow : TagVariant.Grey}\n />\n ))}\n
\n);\n\nexport default FilterList;\n","import throttle from '@utility/helpers/throttle';\nimport { RefObject, useEffect, useState } from 'react';\n\nconst useScrolledToEnd = (\n ref: RefObject,\n paused?: boolean\n) => {\n const [scrolledToEnd, setScrolledToEnd] = useState(false);\n\n const checkHasScrolledToEnd = (paused?: boolean) => {\n const element = ref?.current;\n if (!element || paused) {\n setScrolledToEnd(false);\n return;\n }\n\n const elementRect = element.getBoundingClientRect();\n\n setScrolledToEnd(Math.floor(elementRect.bottom) <= window.innerHeight);\n };\n\n const throttledCheckHasScrolledToEnd = throttle(() => {\n checkHasScrolledToEnd(paused);\n }, 300);\n\n useEffect(() => {\n window.addEventListener('scroll', throttledCheckHasScrolledToEnd);\n\n return () =>\n window.removeEventListener('scroll', throttledCheckHasScrolledToEnd);\n }, [checkHasScrolledToEnd]);\n\n return scrolledToEnd;\n};\n\nexport default useScrolledToEnd;\n","import LoadingSpinner from '@atoms/LoadingSpinner/LoadingSpinner';\nimport Text from '@atoms/Text/Text';\nimport SizeEnum from '@models/enums/SizeEnum';\nimport { IInfiniteScroll } from '@models/IInfiniteScroll';\nimport useScrolledToEnd from '@utility/hooks/useScrolledToEnd';\nimport { useEffect, useRef, useState } from 'react';\n\nconst InfiniteScroll = ({\n loadingLabel,\n containerProps,\n children,\n onLoadMore,\n isLoading,\n isLastPage,\n}: React.PropsWithChildren) => {\n const ref = useRef(null);\n const hasScrolledToEnd = useScrolledToEnd(ref, isLoading);\n const [pageNum, setPageNum] = useState(1);\n\n useEffect(() => {\n if (!hasScrolledToEnd || isLoading || isLastPage) return;\n\n setPageNum(pageNum + 1);\n }, [hasScrolledToEnd, isLastPage]);\n\n useEffect(() => {\n onLoadMore(pageNum);\n }, [pageNum]);\n\n return (\n
\n {!(pageNum === 1 && isLoading) && children}\n {isLoading && (\n
\n \n \n {loadingLabel}\n \n
\n )}\n
\n );\n};\nexport default InfiniteScroll;\n","import AnimateInView from '@atoms/AnimateInView/AnimateInView';\nimport SiteEnum from '@models/enums/SiteEnum';\nimport { IArticleCard } from '@models/IArticleCard';\nimport { IArticleFilterItem, IArticleListing } from '@models/IArticleListing';\nimport { PageTitleSize } from '@models/IPageTitle';\nimport ArticleCard from '@molecules/ArticleCard/ArticleCard';\nimport ArticleListingLinkCard from '@molecules/ArticleListingLinkCard/ArticleListingLinkCard';\nimport FilterList from '@molecules/FilterList/FilterList';\nimport InfiniteScroll from '@molecules/InfiniteScroll/InfiniteScroll';\nimport PageTitle from '@molecules/PageTitle/PageTitle';\nimport HeadlineAndTextBlock from '@organisms/HeadlineAndTextBlock/HeadlineAndTextBlock';\nimport { fadeInUp, fadeTransition } from '@utility/config/animations';\nimport useListingComponentData from '@utility/hooks/useListingComponentData';\nimport useMediaQuery from '@utility/hooks/useMediaQuery';\nimport classNames from 'classnames';\nimport { AnimatePresence, motion } from 'motion/react';\nimport queryString from 'query-string';\nimport { useEffect, useState } from 'react';\n\ntype FetchPayload = {\n filterIds: string;\n epslanguage?: string;\n take: number;\n skip: number;\n pageLinkId?: string;\n};\n\ntype QueryParams = {\n filterIds?: string;\n};\n\nconst cardProps = {\n initial: { opacity: 0 },\n animate: { opacity: 1 },\n transition: fadeTransition,\n className: 'tw-col-span-4 md:tw-col-span-3 lg:tw-col-span-6 xl:tw-col-span-4',\n};\n\nconst ArticleListing = ({\n filters,\n infiniteLoadLabel,\n initialItems,\n language,\n listingCard,\n loadingLabel,\n pageLinkId,\n pageSize,\n searchEndpoint,\n showListingCardWhenFiltered,\n site,\n smallTitle = false,\n text,\n title,\n totalResults,\n}: IArticleListing) => {\n const [listItems, setListItems] = useState(initialItems ?? []);\n const [loadingMessage, setLoadingMessage] = useState(loadingLabel);\n const isMobile = useMediaQuery(767);\n const listingCardPosition = isMobile ? 4 : 6;\n\n //'Take' value varies depending on the presence of the Listing Card and page number\n const getTakeValue = (noActiveFilter: boolean, skip: number) => {\n const hasListingCard =\n (noActiveFilter || showListingCardWhenFiltered) && listingCard;\n const isPageOne = skip === 0;\n\n return hasListingCard && isPageOne ? pageSize - 1 : pageSize;\n };\n\n const [queryState, setQueryState] = useState<\n | {\n activeFilter: IArticleFilterItem | null;\n skip: number;\n take: number;\n isDefaultData: boolean;\n pageLinkId: string;\n }\n | undefined\n >();\n\n // Populate queryState using url query params on client side\n useEffect(() => {\n const params: QueryParams =\n typeof window !== 'undefined'\n ? queryString.parse(\n queryString.pick(window?.location.search, ['filterIds'])\n )\n : { filterIds: undefined };\n\n const activeFilter = params.filterIds\n ? getFilterByID(params.filterIds, filters)\n : null;\n\n setQueryState({\n skip: 0,\n take: getTakeValue(!activeFilter, 0),\n activeFilter,\n isDefaultData: !activeFilter && !!initialItems,\n pageLinkId: pageLinkId,\n });\n }, [queryString]);\n\n const { fetchData, state } = useListingComponentData<\n FetchPayload,\n { items: IArticleCard[]; totalResults: number }\n >(\n searchEndpoint,\n { items: initialItems ?? [], totalResults: totalResults ?? 0 },\n false\n );\n\n useEffect(() => {\n // Flag to ensure fetch doesn't run on page load\n // default data is provided by items prop\n if (!queryState || queryState.isDefaultData) return;\n\n let payload: FetchPayload = {\n filterIds: queryState.activeFilter?.id ?? '',\n take: queryState.take,\n skip: queryState.skip,\n pageLinkId: queryState.pageLinkId,\n };\n\n if (language && pageLinkId) {\n payload = {\n ...payload,\n epslanguage: language,\n pageLinkId,\n };\n }\n\n if (queryState.skip === 0) setListItems([]);\n fetchData(payload);\n }, [queryState]);\n\n useEffect(() => {\n // If skip is greater than 0 then the next page of data should be appended\n if (queryState && queryState.skip > 0) {\n setListItems([...listItems, ...state.data.items]);\n return;\n }\n\n setListItems(state.data.items);\n }, [state.data]);\n\n return (\n
\n \n \n {filters ? (\n \n \n {\n setLoadingMessage(loadingLabel);\n const activeFilter =\n id === queryState?.activeFilter?.id\n ? null\n : getFilterByID(id, filters);\n\n setQueryState({\n skip: 0,\n take: getTakeValue(!activeFilter, 0),\n isDefaultData: false,\n activeFilter,\n pageLinkId,\n });\n }}\n selectedItemID={queryState?.activeFilter?.id ?? null}\n site={site}\n />\n \n \n ) : null}\n \n {queryState?.activeFilter?.header ? (\n
\n \n
\n ) : null}\n = state.data.totalResults}\n onLoadMore={() => {\n setLoadingMessage(infiniteLoadLabel);\n\n const skip = listItems.length;\n if (skip < state.data.totalResults && queryState) {\n const take = getTakeValue(!queryState.activeFilter, skip);\n setQueryState({ ...queryState, skip, take, isDefaultData: false });\n }\n }}\n >\n \n {queryState &&\n (!state.loading || queryState.skip > 0) &&\n listItems.length > 0 && (\n <>\n {listItems?.map((card: IArticleCard) => (\n \n \n \n ))}\n {\n // Show listing card only when no filters are active unless the showListingCardWhenFiltered prop is active\n (!queryState.activeFilter || showListingCardWhenFiltered) &&\n listingCard ? (\n = listingCardPosition &&\n 'tw-row-start-4 md:tw-col-start-4 md:tw-row-start-3 lg:tw-col-start-7 xl:tw-col-start-9 xl:tw-row-start-2'\n )}\n key={listingCard.title}\n >\n \n \n ) : null\n }\n \n )}\n \n \n
\n );\n};\n\nconst getFilterByID = (\n id: string,\n filters: IArticleFilterItem[]\n): IArticleFilterItem | null => {\n return filters.find((filter) => filter.id === id) ?? null;\n};\n\nexport default ArticleListing;\n","const enum SiteEnum {\n B2B = 'b2b',\n Deco = 'deco',\n}\n\nexport default SiteEnum;\n","import queryString from 'query-string';\nimport { useState } from 'react';\n\ninterface IListingComponentState {\n readonly data: TData;\n readonly loading: boolean;\n readonly error: string;\n readonly isInitialData: boolean;\n readonly pushToUrl?: boolean;\n}\n\n// Extend the hook definition with TData for the data structure\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst useListingComponentData = , TData>(\n apiEndpoint: string,\n initialData: TData,\n skipEmptyString = true,\n pushToUrl = true\n) => {\n const [state, setState] = useState>({\n data: initialData,\n loading: false,\n error: '',\n isInitialData: true,\n });\n\n const fetchData = async (formData: TFormData) => {\n try {\n setState({ ...state, loading: true, error: '' });\n const requestQueryString = `?${queryString.stringify(formData, {\n skipEmptyString: skipEmptyString,\n arrayFormat: 'comma',\n })}`;\n\n const response = await fetch(`${apiEndpoint}${requestQueryString}`);\n\n if (!response.ok) {\n throw new Error(`Request failed with status ${response.status}`);\n }\n\n const data = await response.json();\n\n if (pushToUrl) {\n const currentUrl = new URL(window.location.href);\n const searchParams = currentUrl.searchParams;\n\n (Object.keys(formData) as Array).forEach((key) => {\n const value = formData[key];\n searchParams.set(key?.toString(), value?.toString());\n });\n\n window.history.pushState({}, '', currentUrl.href);\n }\n\n setState({ ...state, data, loading: false, isInitialData: false });\n } catch (error) {\n setState({ ...state, loading: false, error: 'Error fetching data' });\n }\n };\n\n return { fetchData, state };\n};\n\nexport default useListingComponentData;\n","import useMediaQuery from '@utility/hooks/useMediaQuery';\nimport { motion, useInView } from 'motion/react';\nimport { PropsWithChildren, useRef } from 'react';\n\ninterface Props extends PropsWithChildren {\n readonly className?: string;\n readonly mobileOffset?: number;\n readonly desktopOffset?: number;\n readonly element?: 'section' | 'div';\n}\n\nconst AnimateInView = ({\n children,\n className,\n element = 'section',\n mobileOffset = 0.2,\n desktopOffset = 0.5,\n}: Props) => {\n const ref = useRef(null);\n const isMobile = useMediaQuery(752);\n const inView = useInView(ref, {\n amount: isMobile ? mobileOffset : desktopOffset,\n once: true,\n });\n\n const containerVariants = {\n hidden: { opacity: 0 },\n visible: {\n opacity: 1,\n transition: {\n staggerChildren: 0.1,\n duration: isMobile ? 0.3 : 0.5,\n type: 'spring',\n stiffness: 50,\n damping: 14,\n },\n },\n };\n\n const MotionElement = motion[element];\n\n return (\n \n {children}\n \n );\n};\n\nexport default AnimateInView;\n","import Icon from '@atoms/Icon/Icon';\nimport Image from '@atoms/Image/Image';\nimport Text from '@atoms/Text/Text';\nimport { IArticleCard } from '@models/IArticleCard';\nimport classNames from 'classnames';\n\nconst ArticleCard = ({\n image,\n tags,\n target,\n text,\n title,\n titleVariant = 'heading-24-light',\n url,\n trumpetText,\n truncateTitle = true,\n}: IArticleCard) => (\n
\n \n \n
\n {trumpetText && (\n \n {trumpetText}\n \n )}\n
\n \n {title}\n \n \n
\n \n {text}\n \n {tags && tags.length > 0 && (\n
    \n {tags.map((tag: string) => (\n \n {tag}\n \n ))}\n
\n )}\n
\n \n
\n);\n\nexport default ArticleCard;\n","function throttle any>(\n func: T,\n limit: number\n): (...args: Parameters) => void {\n let lastFunc: NodeJS.Timeout | undefined;\n let lastRan: number | undefined;\n\n return function (this: ThisParameterType, ...args: Parameters) {\n const context = this;\n\n if (!lastRan) {\n func.apply(context, args);\n lastRan = Date.now();\n } else {\n if (lastFunc) clearTimeout(lastFunc);\n\n lastFunc = setTimeout(function () {\n if (Date.now() - (lastRan ?? 0) >= limit) {\n func.apply(context, args);\n lastRan = Date.now();\n }\n }, limit - (Date.now() - (lastRan ?? 0)));\n }\n };\n}\n\nexport default throttle;\n","const enum VariantTypeEnum {\n Primary = 'primary',\n Secondary = 'secondary',\n Cta = 'cta',\n Deco = 'deco',\n}\n\nexport default VariantTypeEnum;\n","/* eslint-env node */\n/* eslint-disable @typescript-eslint/no-var-requires */\n\n/** @type {import('tailwindcss').Config} */\n\nconst screens = {\n sm: '375px',\n md: '752px',\n lg: '1024px',\n xl: '1408px',\n xxl: '1600px',\n};\n\nmodule.exports = {\n darkMode: 'selector',\n prefix: 'tw-',\n content: [\n './.storybook/**/*.{js,jsx,mdx,ts,tsx}',\n './src/components/**/*.{js,jsx,mdx,ts,tsx}',\n ],\n theme: {\n screens,\n listStyleType: {\n none: 'none',\n disc: 'disc',\n decimal: 'decimal',\n square: 'square',\n },\n container: {\n screens,\n center: true,\n padding: {\n DEFAULT: '16px',\n sm: '16px',\n md: '32px',\n lg: '48px',\n xl: '48px',\n '2xl': '48px',\n },\n },\n fontFamily: {\n sans: '\"Noto Sans\", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"',\n serif:\n '\"Playfair Display\",ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif',\n mono: '\"Noto Sans Mono\", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace',\n icon: 'icomoon',\n },\n fontSize: {\n xs: ['0.75rem', '1rem'],\n sm: ['0.875rem', '1.25rem'],\n base: ['1rem', '1.5rem'],\n lg: ['1.125rem', '1.625rem'],\n xl: ['1.3125rem', '1.75rem'],\n '2xl': ['1.5rem', '2rem'],\n '3xl': ['1.75rem', '2.25rem'],\n '4xl': ['2rem', '2.5rem'],\n '5xl': ['2.25rem', '2.75rem'],\n '6xl': ['2.5rem', '3rem'],\n '7xl': ['3rem', '3.5rem'],\n '8xl': ['3.5rem', '4rem'],\n },\n lineHeight: {\n xs: '1rem',\n sm: '1.25rem',\n base: '1.5rem',\n lg: '1.625rem',\n xl: '1.75rem',\n '2xl': '2rem',\n '3xl': '2.25rem',\n '4xl': '2.5rem',\n '5xl': '2.75rem',\n '6xl': '3rem',\n '7xl': '3.5rem',\n '8xl': '4rem',\n },\n fontWeight: {\n light: '300',\n normal: '400',\n semibold: '600',\n },\n colors: {\n blue: {\n DEFAULT: '#031E45',\n },\n yellow: {\n DEFAULT: '#F0AB00',\n hover: '#F1B32D',\n active: '#EDBE46',\n disabled: '#FBE6B3',\n },\n red: {\n DEFAULT: '#D52B1E',\n hover: '#E11E0F',\n active: '#EC0E00',\n disabled: '#F2BFBC',\n },\n green: {\n DEFAULT: '#329E36',\n },\n grey: {\n 100: '#202020',\n 90: '#333333',\n 80: '#4D4D4D',\n 70: '#666666',\n 60: '#808080',\n 50: '#999999',\n 40: '#B3B3B3',\n 30: '#CCCCCC',\n 20: '#E6E6E6',\n 10: '#F7F7F7',\n },\n white: {\n DEFAULT: '#FFFFFF',\n },\n black: {\n DEFAULT: '#202020',\n },\n transparent: 'transparent',\n background: {\n amber: '#AF8A76', // light\n amberDark: '#806A62', // dark\n beige: '#E9D8B8', // light\n beigeDark: '#A98259', // light\n brownGray: '#79736D', // dark\n brownGrey: '#79736D', // dark\n coral: '#DBC4B7', // light\n coralDark: '#985F56', // dark\n darkGrey: '#E6E6E6', // light\n gBSGreen: '#276D00', // dark\n gBSHarpGreen: '#E5EFEA', // light\n gBSLightGreen: '#478326', // dark\n gBSPalmGreen: '#012317', // dark\n gBSSummerGreen: '#C4D0B0', // light\n graphite: '#70666C', //dark\n jotunBlue: '#031E45', // dark\n jotunYellow: '#F0AB00', // light\n lightBlue: '#E6E9F0', // light\n lightGreen: '#E6F0EB', // light\n lightgrey: '#F7F7F7', // light\n lightGrey: '#F7F7F7', // light\n oceanDark: '#19262C', // dark\n olive: '#C9D0C5', // light\n oliveDark: '#646556', // dark\n pearl: '#F3F4ED', // light\n sand: '#E7DFCD', // light\n sandDark: '#CEC1B1', // light\n slate: '#A5BCC3', // light\n slateDark: '#4E616C', // dark\n white: '#FFFFFF', // light\n },\n },\n extend: {\n fill: {\n current: 'currentColor',\n },\n stroke: {\n current: 'currentColor',\n },\n transitionTimingFunction: {\n 'in-out-quart': 'cubic-bezier(0.76, 0, 0.24, 1)',\n },\n borderRadius: {\n DEFAULT: '4px',\n md: '10px',\n },\n borderWidth: {\n 1: '1px',\n },\n spacing: {\n '4xs': '0.125rem', // 2px\n '3xs': '0.25rem', // 4px\n xxs: '0.5rem', // 8px\n xs: '1rem', // 16px\n sm: '1.5rem', // 24px\n md: '2rem', // 32px\n lg: '2.5rem', // 40px\n xl: '3rem', // 48px\n '2xl': '4rem', // 64px\n '3xl': '5rem', // 80px\n '4xl': '6rem', // 96px\n '5xl': '7.5rem', // 120px\n buttonY: '0.875rem', // 14px\n },\n zIndex: {\n max: '999',\n 100: '100',\n 90: '90',\n 80: '80',\n 70: '70',\n 60: '60',\n },\n },\n },\n future: { hoverOnlyWhenSupported: true },\n plugins: [require('@tailwindcss/container-queries')],\n};\n","const enum ThemeEnum {\n Light = 'light',\n Dark = 'dark',\n}\n\nexport default ThemeEnum;\n","const enum SizeEnum {\n Small = 'small',\n Medium = 'medium',\n Large = 'large',\n XLarge = 'x-large',\n}\n\nexport default SizeEnum;\n","import { useCallback, useEffect, useState } from 'react';\n\nconst useMediaQuery = (minWidth: number) => {\n // Setting a default state, leaving it undefined is essentially falsey anyway\n const [isSmallerThan, setIsSmallerThan] = useState(false);\n\n const handler = useCallback(() => {\n const isDesiredWidth = window.innerWidth < minWidth;\n setIsSmallerThan(isDesiredWidth);\n }, [minWidth]);\n\n useEffect(() => {\n window.addEventListener('resize', handler);\n handler();\n\n return () => {\n window.removeEventListener('resize', handler);\n };\n }, [handler]);\n\n return isSmallerThan;\n};\n\nexport default useMediaQuery;\n","import BreakpointEnum from '@models/enums/BreakpointEnum';\nimport Breakpoint from '@models/helpers/Breakpoint';\nimport breakpoints from '@utility/config/breakpoints';\nimport { useCallback, useEffect, useState } from 'react';\n\nconst getCurrentBreakpoint = (): Breakpoint => {\n const width = window.innerWidth;\n let device;\n\n if (width < breakpoints.md) {\n device = BreakpointEnum.Small;\n } else if (width < breakpoints.lg) {\n device = BreakpointEnum.Medium;\n } else if (width < breakpoints.xl) {\n device = BreakpointEnum.Large;\n } else if (width < breakpoints.xxl) {\n device = BreakpointEnum.XLarge;\n } else device = BreakpointEnum.Max;\n\n return device;\n};\n\nconst useBreakpoint = (): Breakpoint | undefined => {\n const [screen, setScreen] = useState();\n\n const resizeHandler = useCallback(() => {\n setScreen(getCurrentBreakpoint());\n }, []);\n\n useEffect(() => {\n window.addEventListener('resize', resizeHandler);\n setScreen(getCurrentBreakpoint());\n\n return () => {\n window.removeEventListener('resize', resizeHandler);\n };\n }, [resizeHandler]);\n\n return screen;\n};\n\nexport default useBreakpoint;\n","import Icon from '@atoms/Icon/Icon';\nimport { ILink } from '@models/ILink';\nimport SiteEnum from '@models/enums/SiteEnum';\nimport { cva } from 'class-variance-authority';\nimport { ComponentPropsWithoutRef } from 'react';\nimport { twMerge } from 'tailwind-merge';\n\ntype styles = 'yellow' | 'grey';\n\ntype Props = ComponentPropsWithoutRef<'a'> &\n ILink & {\n readonly variant?: styles;\n readonly site?: SiteEnum;\n readonly enableDarkMode?: boolean;\n };\n\nconst baseClasses =\n 'tw-inline-block tw-rounded tw-px-3xs tw-py-3xs tw-text-center tw-text-xs rtl:tw-rotate-180';\n\nexport const variants = cva(baseClasses, {\n variants: {\n style: {\n yellow:\n 'tw-bg-yellow group-hover:tw-bg-yellow-hover group-active:tw-bg-yellow-active tw-text-black',\n grey: 'tw-bg-grey-80 dark:tw-bg-white dark:group-hover:tw-bg-grey-10 group-hover:tw-bg-grey-90 group-active:tw-bg-grey-100 dark:group-active:tw-bg-grey-20 tw-fill-white dark:tw-fill-black',\n },\n },\n defaultVariants: {\n style: 'yellow',\n },\n});\n\nconst Cta = ({\n site,\n className,\n linkIcon,\n target,\n text,\n url,\n variant, // variant prop can be passed in to override the site specific styles\n enableDarkMode = true,\n ...props\n}: Props) => {\n const siteStyles = {\n [SiteEnum.B2B]: 'yellow',\n [SiteEnum.Deco]: 'grey',\n };\n\n // style is overriden if a variant is passed in, but otherwise takes on the site style\n const style = variant ?? (site && (siteStyles[site] as styles)) ?? undefined;\n\n const classes = twMerge(variants({ style: style }), className);\n\n if (!text || !url) return;\n\n const iconName =\n linkIcon ?? (target === '_blank' ? 'external-link' : 'arrow-right');\n return (\n \n \n\n {text}\n \n );\n};\n\nexport default Cta;\n","// Will parse a pixel string to a number e.g. '762px' => 762\n\nconst parseNumberInString = (pixelValue: string) => {\n const match = pixelValue.match(/\\d+/);\n\n if (match) {\n return parseInt(match[0], 10);\n }\n\n return 0;\n};\n\nexport default parseNumberInString;\n","import BreakpointEnum from '@models/enums/BreakpointEnum';\nimport Breakpoint from '@models/helpers/Breakpoint';\nimport parseNumberInString from '@utility/format/parseNumberInString';\nimport resolveConfig from 'tailwindcss/resolveConfig';\nimport tailwindConfig from '../../../tailwind.config';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst fullConfig = resolveConfig(tailwindConfig as any);\n\nconst { sm, md, lg, xl, xxl } = fullConfig.theme.screens;\n\nconst breakpoints = {\n sm: parseNumberInString(sm),\n md: parseNumberInString(md),\n lg: parseNumberInString(lg),\n xl: parseNumberInString(xl),\n xxl: parseNumberInString(xxl),\n};\n\nexport default breakpoints;\n\nconst breakpointArray: Breakpoint[] = Object.values(BreakpointEnum);\n\nexport const breakpointsBelow = (breakpoint: Breakpoint) => {\n const upperIndex = breakpointArray.indexOf(breakpoint);\n return breakpointArray.slice(0, upperIndex);\n};\n\nexport const breakpointsAbove = (breakpoint: Breakpoint) => {\n const lowerIndex = breakpointArray.indexOf(breakpoint) + 1;\n return breakpointArray.slice(lowerIndex);\n};\n","enum BreakpointEnum {\n Small = 'sm',\n Medium = 'md',\n Large = 'lg',\n XLarge = 'xl',\n Max = 'xxl',\n}\n\nexport default BreakpointEnum;\n"],"names":["_ref","size","SizeEnum","Small","loadingLabel","theme","ThemeEnum","Light","sizeClasses","classNames","Medium","Large","borderClasses","segmentClasses","React","createElement","role","className","heading","subText","ctaStyle","VariantTypeEnum","Primary","link","site","LinkElement","Button","as","label","text","href","url","target","Cta","linkIcon","Text","variant","dangerouslySetInnerHTML","__html","variants","cva","yellow","grey30","grey80","white","destructive","modifier","fill","outline","icon","true","false","compoundVariants","defaultVariants","forwardRef","ref","buttonClasses","dataTestId","disabled","iconClasses","iconName","iconSize","props","siteStyles","SiteEnum","B2B","Deco","style","undefined","iconOnly","classes","twMerge","Content","Icon","name","anchorProps","_extends","displayName","useDevicePixelRatio","devicePixelRatio","setDevicePixelRatio","useState","useEffect","updateDevicePixelRatio","Math","ceil","window","mediaQuery","matchMedia","addEventListener","removeEventListener","isValidBase64ImageSource","imageSrc","test","aspectRatio","children","containerRef","image","imageClasses","lazyLoad","quality","sizes","height","width","onLoad","breakpoint","useBreakpoint","BreakpointEnum","XLarge","imgRef","useRef","altText","originalHeight","originalWidth","imageFocalPoint","srcSet","source","fileExtension","substring","lastIndexOf","hasParams","includes","containerWidth","current","clientWidth","breakpointWidths","calculatedAspectRatio","useMemo","generateUrlWithExtensions","useCallback","qParam","fpParam","replace","h","map","bpWidth","i","length","join","complete","src","alt","draggable","Fragment","type","loading","fetchPriority","breakpoints","TagVariant","isActive","largeText","Grey","otherProps","Wrapper","isClickable","hoverStyles","Yellow","slideTransition","duration","ease","fadeTransition","delay","fadeInUp","hidden","opacity","y","transition","visible","stiffness","damping","fadeInUpSlow","fadeIn","backgroundColour","content","isMainHeading","largeBodyText","links","title","trumpetText","containerProps","hasPadding","shouldAnimate","reducedPadding","PageTitleSize","sectionRef","textRef","inView","useInView","amount","once","Dark","backgroundColor","motion","div","initial","animate","staggerChildren","_ref2","key","variantClasses","headline","body","defaultTags","combinedClassName","Tag","cta","filters","onSelect","selectedItemID","filter","id","onClick","useScrolledToEnd","paused","scrolledToEnd","setScrolledToEnd","checkHasScrolledToEnd","element","elementRect","getBoundingClientRect","floor","bottom","innerHeight","throttledCheckHasScrolledToEnd","throttle","onLoadMore","isLoading","isLastPage","hasScrolledToEnd","pageNum","setPageNum","LoadingSpinner","cardProps","getFilterByID","find","infiniteLoadLabel","initialItems","language","listingCard","pageLinkId","pageSize","searchEndpoint","showListingCardWhenFiltered","smallTitle","totalResults","listItems","setListItems","loadingMessage","setLoadingMessage","listingCardPosition","useMediaQuery","getTakeValue","noActiveFilter","skip","queryState","setQueryState","params","queryString","parse","pick","location","search","filterIds","activeFilter","take","isDefaultData","fetchData","state","useListingComponentData","items","payload","epslanguage","data","PageTitle","AnimateInView","FilterList","header","HeadlineAndTextBlock","InfiniteScroll","AnimatePresence","card","ArticleCard","truncateTitle","titleVariant","ArticleListingLinkCard","apiEndpoint","initialData","skipEmptyString","arguments","pushToUrl","setState","error","isInitialData","async","requestQueryString","stringify","formData","arrayFormat","response","fetch","ok","Error","status","json","currentUrl","URL","searchParams","Object","keys","forEach","value","set","toString","history","pushState","mobileOffset","desktopOffset","isMobile","containerVariants","MotionElement","tags","Image","tag","func","limit","lastFunc","lastRan","_len","args","Array","_key","context","this","clearTimeout","setTimeout","Date","now","apply","screens","sm","md","lg","xl","xxl","module","exports","darkMode","prefix","listStyleType","none","disc","decimal","square","container","center","padding","DEFAULT","fontFamily","sans","serif","mono","fontSize","xs","base","lineHeight","fontWeight","light","normal","semibold","colors","blue","hover","active","red","green","grey","black","transparent","background","amber","amberDark","beige","beigeDark","brownGray","brownGrey","coral","coralDark","darkGrey","gBSGreen","gBSHarpGreen","gBSLightGreen","gBSPalmGreen","gBSSummerGreen","graphite","jotunBlue","jotunYellow","lightBlue","lightGreen","lightgrey","lightGrey","oceanDark","olive","oliveDark","pearl","sand","sandDark","slate","slateDark","extend","stroke","transitionTimingFunction","borderRadius","borderWidth","spacing","xxs","buttonY","zIndex","max","future","hoverOnlyWhenSupported","plugins","minWidth","isSmallerThan","setIsSmallerThan","handler","isDesiredWidth","innerWidth","getCurrentBreakpoint","device","Max","screen","setScreen","resizeHandler","enableDarkMode","pixelValue","match","parseInt","fullConfig","resolveConfig","tailwindConfig","parseNumberInString","breakpointArray","values","breakpointsBelow","upperIndex","indexOf","slice","breakpointsAbove","lowerIndex"],"sourceRoot":""}