{"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    <div\n      role=\"status\"\n      className={classNames(sizeClasses, 'tw-relative tw-animate-spin')}\n    >\n      <div\n        aria-hidden=\"true\"\n        className={classNames(\n          borderClasses,\n          'tw-h-full tw-w-full tw-rounded-full tw-border-2 tw-border-black tw-bg-transparent'\n        )}\n      >\n        <div\n          className={classNames(\n            theme === ThemeEnum.Light ? 'tw-bg-white' : 'tw-bg-grey-10',\n            'tw-absolute tw-bottom-0 tw-left-0 tw-h-1/2 tw-w-1/2 tw-rounded-bl-full'\n          )}\n        ></div>\n        <div\n          className={classNames(\n            segmentClasses,\n            theme === ThemeEnum.Light ? 'tw-bg-white' : 'tw-bg-grey-10',\n            'tw-absolute tw-bottom-0 tw-left-0 tw-h-1/2 tw-w-1/2 tw-rounded-bl-full tw-border-grey-30'\n          )}\n        ></div>\n      </div>\n      <span className=\"tw-sr-only\">{loadingLabel}</span>\n    </div>\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<VariantTypeEnum, VariantTypeEnum.Secondary>;\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        <Button\n          site={site}\n          as=\"link\"\n          label={link?.text}\n          href={link?.url}\n          target={link?.target}\n        />\n      ) : (\n        <Cta\n          site={site}\n          linkIcon={link?.linkIcon}\n          text={link?.text}\n          url={link?.url}\n          target={link?.target}\n        />\n      );\n    }\n  };\n\n  return (\n    <section className=\"tw-grid-container tw-gap-y-md tw-text-black md:tw-gap-y-lg\">\n      {heading && (\n        <Text\n          variant=\"headline\"\n          className={classNames(\n            'tw-col-span-4',\n            subText\n              ? 'md:tw-col-span-3 lg:tw-col-span-5'\n              : 'md:tw-col-span-full lg:tw-col-span-8'\n          )}\n        >\n          {heading}\n        </Text>\n      )}\n      {subText && (\n        <div\n          className={classNames(\n            heading\n              ? 'tw-col-span-4 md:tw-col-span-3 md:tw-col-start-4 lg:tw-col-span-6 lg:tw-col-start-7'\n              : 'tw-col-span-full xl:tw-col-span-6',\n            'tw-flex tw-flex-col tw-items-start tw-gap-y-md md:tw-gap-y-lg'\n          )}\n        >\n          <div\n            className=\"tw-rich-text\"\n            dangerouslySetInnerHTML={{ __html: subText }}\n          />\n          {link && <LinkElement />}\n        </div>\n      )}\n      {link && (\n        <div className=\"tw-col-start-1\">\n          {link && !subText && <LinkElement />}\n        </div>\n      )}\n    </section>\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<typeof variants>;\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      <div\n        className={classNames(\n          'tw-flex tw-w-full tw-items-center tw-justify-center tw-gap-2.5'\n        )}\n      >\n        {label && <span>{label}</span>}\n        {iconName && (\n          <Icon name={iconName} className={iconClasses} size={iconSize} />\n        )}\n      </div>\n    );\n\n    if (as === 'link') {\n      const anchorProps =\n        props as React.AnchorHTMLAttributes<HTMLAnchorElement>;\n      const { href } = anchorProps;\n\n      return (\n        <a\n          className={classes}\n          href={href}\n          ref={ref as ForwardedRef<HTMLAnchorElement>}\n          {...anchorProps}\n          data-testid={dataTestId}\n        >\n          {Content}\n        </a>\n      );\n    } else {\n      return (\n        <button\n          className={classes}\n          data-testid={dataTestId}\n          disabled={!!disabled}\n          ref={ref as ForwardedRef<HTMLButtonElement>}\n          {...(props as React.ButtonHTMLAttributes<HTMLButtonElement>)}\n        >\n          {Content}\n        </button>\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<number | undefined>(\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<HTMLElement | null>;\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<Props>) => {\n  const devicePixelRatio = useDevicePixelRatio() ?? 1;\n  const breakpoint = useBreakpoint() ?? BreakpointEnum.XLarge;\n  const imgRef = useRef<HTMLImageElement>(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      <img\n        src={url}\n        alt={altText || 'image'}\n        className={imageClasses}\n        draggable=\"false\"\n      />\n    );\n  }\n\n  return (\n    <>\n      <picture className={classNames(classes, 'tw-block tw-overflow-hidden')}>\n        {!width && !containerWidth && !hasParams && (\n          <source type=\"image/webp\" sizes={sizes} srcSet={srcSet} />\n        )}\n        <img\n          ref={imgRef}\n          alt={altText || 'image'}\n          sizes={sizes}\n          className={imageClasses}\n          draggable=\"false\"\n          style={{\n            aspectRatio: calculatedAspectRatio,\n          }}\n          loading={lazyLoad ? 'lazy' : 'eager'}\n          fetchPriority={lazyLoad ? 'auto' : 'high'}\n          onLoad={onLoad}\n          src={\n            hasParams || source\n              ? url\n              : generateUrlWithExtensions(\n                  width ?? containerWidth ?? breakpoints[breakpoint]\n                )\n          }\n        />\n        {children}\n      </picture>\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<TElementType extends ElementType = ElementType> =\n  ExplicitProps & {\n    as?: TElementType;\n  };\n\ntype ITag<TElementType extends ElementType> = PropsWithAs<TElementType> &\n  Omit<ComponentProps<TElementType>, keyof PropsWithAs>;\n\nfunction Tag<TElementType extends ElementType = typeof defaultElement>({\n  as,\n  label,\n  isActive,\n  largeText,\n  icon = false,\n  variant = TagVariant.Grey,\n  ...otherProps\n}: ITag<TElementType>) {\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    <Wrapper\n      {...otherProps}\n      className={twMerge(\n        otherProps?.className,\n        icon ? 'tw-items-center tw-justify-between tw-gap-2' : '',\n        largeText ? 'tw-py-0.5 tw-text-sm' : 'tw-py-[3px] tw-text-xs',\n        'tw-flex tw-rounded tw-border tw-border-grey-60 tw-px-2 tw-text-grey-70',\n        isClickable\n          ? `${hoverStyles} hover:tw-text-grey-100 data-[active='true']:tw-text-grey-100`\n          : 'tw-pointer-events-none'\n      )}\n      data-active={isActive}\n    >\n      {label}\n      {icon && <Icon name=\"cross\" size=\"1rem\" />}\n    </Wrapper>\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<HTMLDivElement>(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    <section\n      {...containerProps}\n      ref={sectionRef}\n      className={classNames(\n        'tw-relative',\n        {\n          'tw-dark': theme === ThemeEnum.Dark,\n          'tw-py-[90px] md:tw-py-[126px]': hasPadding && !reducedPadding,\n          'tw-pb-1 tw-pt-[90px] md:tw-pb-0': reducedPadding && hasPadding,\n        },\n        containerProps?.className\n      )}\n      style={\n        isMainHeading || !shouldAnimate\n          ? { backgroundColor: backgroundColour }\n          : {}\n      }\n      data-background-color={shouldAnimate ? backgroundColour : undefined}\n      data-main-heading={isMainHeading}\n      data-is-page-title={true}\n    >\n      <div className=\"tw-grid-container\">\n        <motion.div\n          className={classNames(\n            'tw-grid-component-reduced-width tw-flex tw-flex-col tw-items-center tw-text-center tw-text-grey-100  dark:tw-text-white',\n            variant === PageTitleSize.Large\n              ? ' tw-gap-md md:tw-gap-lg'\n              : 'tw-gap-sm'\n          )}\n          ref={textRef}\n          initial={isMainHeading ? 'visible' : 'hidden'}\n          animate={inView || isMainHeading ? 'visible' : 'hidden'}\n          variants={isMainHeading ? undefined : containerVariants}\n        >\n          <motion.div\n            variants={isMainHeading ? undefined : fadeInUp}\n            className=\"tw-flex tw-flex-col tw-gap-sm\"\n          >\n            {trumpetText && (\n              <Text\n                variant=\"body-small\"\n                className=\"tw-uppercase tw-text-grey-80 dark:tw-text-grey-20\"\n              >\n                {trumpetText}\n              </Text>\n            )}\n            <Text\n              variant={\n                variant === PageTitleSize.Large\n                  ? 'hero-headline'\n                  : 'ds-headline-2'\n              }\n              as={isMainHeading ? 'h1' : 'h2'}\n            >\n              {title}\n            </Text>\n          </motion.div>\n          {content && (\n            <motion.div variants={isMainHeading ? undefined : fadeInUp}>\n              <Text\n                variant={largeBodyText ? 'body-18' : 'body'}\n                className=\"tw-rich-text tw-text-grey-80 dark:tw-text-grey-20\"\n                dangerouslySetInnerHTML={{ __html: content }}\n              />\n            </motion.div>\n          )}\n          {!!links?.length && (\n            <motion.div\n              variants={isMainHeading ? undefined : fadeInUp}\n              className=\"tw-flex tw-flex-col tw-gap-md md:tw-flex-row\"\n            >\n              {links.map(({ url, text, target }) =>\n                ctaStyle === VariantTypeEnum.Primary ? (\n                  <Button\n                    site={site}\n                    as=\"link\"\n                    key={text}\n                    href={url}\n                    target={target}\n                    label={text}\n                  />\n                ) : (\n                  <Cta\n                    site={site}\n                    key={text}\n                    url={url}\n                    target={target}\n                    text={text}\n                  />\n                )\n              )}\n            </motion.div>\n          )}\n        </motion.div>\n      </div>\n    </section>\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<VariantTypeEnum, VariantTypeEnum.Secondary>;\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<TElementType extends React.ElementType = React.ElementType> =\n  Partial<\n    ExplicitProps & {\n      as: TElementType;\n    }\n  >;\n\ntype TextProps<TElementType extends React.ElementType> =\n  PropsWithAs<TElementType> &\n    Omit<React.ComponentProps<TElementType>, 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<TElementType>) {\n  const combinedClassName = classNames(variantClasses[variant], className);\n  const Tag = as ?? defaultTags[variant] ?? 'span';\n\n  return (\n    <Tag className={combinedClassName} {...props}>\n      {children}\n    </Tag>\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  <article className=\"tw-flex tw-h-full tw-flex-col tw-bg-blue tw-px-6 tw-py-8 md:tw-px-8\">\n    <Text variant=\"label-12\" className=\"tw-mb-2 tw-uppercase tw-text-grey-30\">\n      {trumpetText}\n    </Text>\n    <Text variant=\"heading-32\" className=\"tw-mb-4 tw-text-white lg:tw-hidden\">\n      {title}\n    </Text>\n    <Text\n      variant=\"heading-40\"\n      className=\"tw-mb-6 tw-text-white max-lg:tw-hidden\"\n      as=\"p\"\n    >\n      {title}\n    </Text>\n    <Text variant=\"body\" className=\"tw-text-grey-30\">\n      {text}\n    </Text>\n    <div className=\"tw-mt-auto\">\n      <Button\n        buttonClasses=\"tw-mt-20\"\n        as=\"link\"\n        key={text}\n        modifier=\"fill\"\n        href={cta.url}\n        target={cta.target}\n        label={cta.text}\n      />\n    </div>\n  </article>\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  <div className=\"tw-flex  tw-flex-wrap tw-justify-center tw-gap-2\">\n    {filters.map((filter) => (\n      <Tag\n        key={filter.id}\n        onClick={() => 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  </div>\n);\n\nexport default FilterList;\n","import throttle from '@utility/helpers/throttle';\nimport { RefObject, useEffect, useState } from 'react';\n\nconst useScrolledToEnd = <T extends HTMLElement = HTMLElement>(\n  ref: RefObject<T | null>,\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<IInfiniteScroll>) => {\n  const ref = useRef<HTMLDivElement | null>(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    <div {...containerProps} ref={ref}>\n      {!(pageNum === 1 && isLoading) && children}\n      {isLoading && (\n        <div className=\"tw-col-span-full tw-flex tw-justify-center tw-py-6\">\n          <LoadingSpinner size={SizeEnum.Small} loadingLabel={loadingLabel} />\n          <Text variant=\"label-12\" className=\"tw-ml-2 tw-text-grey-70\">\n            {loadingLabel}\n          </Text>\n        </div>\n      )}\n    </div>\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    <section>\n      <div\n        className={classNames(\n          'tw-flex tw-flex-col tw-justify-center tw-gap-8 tw-pt-12 md:tw-gap-10',\n          !smallTitle && 'tw-pb-8 md:tw-pb-12'\n        )}\n      >\n        <PageTitle\n          isMainHeading={!smallTitle}\n          variant={smallTitle ? PageTitleSize.Small : PageTitleSize.Large}\n          title={title}\n          content={text}\n          site={SiteEnum.B2B}\n          hasPadding={false}\n        />\n        {filters ? (\n          <AnimateInView>\n            <motion.div\n              variants={fadeInUp}\n              className=\"tw-mx-auto tw-max-w-[343px] md:tw-max-w-[671px]\"\n            >\n              <FilterList\n                filters={filters}\n                onSelect={(id: string): void => {\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            </motion.div>\n          </AnimateInView>\n        ) : null}\n      </div>\n      {queryState?.activeFilter?.header ? (\n        <div className=\"tw-bg-grey-10 tw-py-12 md:tw-py-16\">\n          <HeadlineAndTextBlock\n            {...queryState.activeFilter?.header}\n            site={SiteEnum.B2B}\n          />\n        </div>\n      ) : null}\n      <InfiniteScroll\n        loadingLabel={loadingMessage}\n        containerProps={{\n          className:\n            'tw-grid-container tw-min-h-[500px] tw-gap-x-8 tw-gap-y-8 tw-py-8 md:tw-py-12 tw-mb-[90px] lg:tw-mb-[120px] lg:tw-gap-y-16',\n        }}\n        isLoading={state.loading}\n        isLastPage={listItems?.length >= 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        <AnimatePresence>\n          {queryState &&\n            (!state.loading || queryState.skip > 0) &&\n            listItems.length > 0 && (\n              <>\n                {listItems?.map((card: IArticleCard) => (\n                  <motion.div {...cardProps} key={card.id ?? card.title}>\n                    <ArticleCard\n                      {...card}\n                      truncateTitle={false}\n                      titleVariant=\"ds-headline-3\"\n                    />\n                  </motion.div>\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                    <motion.div\n                      {...cardProps}\n                      className={classNames(\n                        cardProps.className,\n                        listItems.length >= 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                      <ArticleListingLinkCard {...listingCard} />\n                    </motion.div>\n                  ) : null\n                }\n              </>\n            )}\n        </AnimatePresence>\n      </InfiniteScroll>\n    </section>\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<TData> {\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 = <TFormData extends Record<string, any>, TData>(\n  apiEndpoint: string,\n  initialData: TData,\n  skipEmptyString = true,\n  pushToUrl = true\n) => {\n  const [state, setState] = useState<IListingComponentState<TData>>({\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<keyof TFormData>).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    <MotionElement\n      ref={ref}\n      initial=\"hidden\"\n      animate={inView ? 'visible' : 'hidden'}\n      variants={containerVariants}\n      className={className}\n    >\n      {children}\n    </MotionElement>\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  <article className=\"tw-h-full\">\n    <a\n      className=\"tw-group tw-flex tw-h-full tw-flex-col hover:tw-cursor-pointer focus:tw-text-grey-100 focus:tw-outline-none focus:tw-ring-2 focus:tw-ring-white focus:tw-ring-offset-2 focus:tw-ring-offset-grey-100\"\n      href={url}\n      target={target}\n    >\n      <Image\n        imageClasses=\"tw-w-full\"\n        aspectRatio={1.5}\n        image={image}\n        sizes=\"500px\"\n      />\n      <div className=\"tw-flex tw-grow tw-flex-col tw-items-start tw-bg-grey-10 tw-px-xs tw-py-sm tw-transition-colors tw-@container/article-card group-hover:tw-bg-grey-20 md:tw-px-sm\">\n        {trumpetText && (\n          <Text\n            variant=\"body-small\"\n            className=\"tw-mb-xs tw-uppercase tw-text-grey-60 @md/article-card:tw-mb-6\"\n          >\n            {trumpetText}\n          </Text>\n        )}\n        <div className=\"tw-mb-xs tw-flex tw-w-full @md/article-card:tw-mb-6\">\n          <Text\n            as=\"p\"\n            variant={titleVariant}\n            className={classNames(\n              'tw-mr-1 tw-font-light tw-text-black',\n              truncateTitle &&\n                'tw-overflow-hidden  tw-text-ellipsis tw-whitespace-nowrap '\n            )}\n          >\n            {title}\n          </Text>\n          <Icon\n            name=\"arrow-right\"\n            className={classNames(\n              'tw-ml-auto tw-max-w-5 tw-shrink-0 tw-text-grey-40 tw-transition-colors group-hover:tw-text-grey-100 group-focus:tw-text-grey-100 @md/article-card:tw-max-w-6',\n              truncateTitle\n                ? 'tw-my-auto'\n                : 'tw-mb-auto tw-mt-2 @md/article-card:tw-mt-3'\n            )}\n            size={24}\n          />\n        </div>\n        <Text variant=\"body\" className=\"tw-text-grey-80\">\n          {text}\n        </Text>\n        {tags && tags.length > 0 && (\n          <ul className=\"tw-mt-auto tw-flex tw-flex-row tw-flex-wrap tw-gap-2 tw-pt-sm @md/article-card:tw-pt-6\">\n            {tags.map((tag: string) => (\n              <li\n                key={tag}\n                className=\"tw-flex tw-rounded tw-border tw-border-grey-30 tw-px-2 tw-py-[3px] tw-text-xs tw-text-grey-70\"\n              >\n                {tag}\n              </li>\n            ))}\n          </ul>\n        )}\n      </div>\n    </a>\n  </article>\n);\n\nexport default ArticleCard;\n","function throttle<T extends (...args: any[]) => any>(\n  func: T,\n  limit: number\n): (...args: Parameters<T>) => void {\n  let lastFunc: NodeJS.Timeout | undefined;\n  let lastRan: number | undefined;\n\n  return function (this: ThisParameterType<T>, ...args: Parameters<T>) {\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<Breakpoint>();\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    <a\n      href={url}\n      target={target}\n      className={twMerge(\n        'tw-group tw-inline-flex tw-items-center tw-gap-xxs tw-text-sm tw-text-black tw-outline-black hover:tw-text-grey-70 active:tw-text-grey-80 rtl:tw-flex-row-reverse',\n        enableDarkMode &&\n          'dark:active:tw-text-grey-30\" dark:tw-text-white dark:hover:tw-text-grey-20'\n      )}\n      {...props}\n    >\n      <Icon name={iconName} className={classes} size=\"1.25rem\" />\n\n      {text}\n    </a>\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":""}