{"version":3,"file":"1950-1b69b192dcd04a60a96b.js","mappings":"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","sources":["webpack://nikon-client/./components/atoms/Bullets/Bullets.tsx","webpack://nikon-client/./components/atoms/LoadMoreButton/LoadMoreButton.tsx","webpack://nikon-client/./components/atoms/LoadingSpinner/LoadingSpinner.tsx","webpack://nikon-client/./components/atoms/Tag/Tag.tsx","webpack://nikon-client/./components/molecules/ArticleCard/ArticleCard.tsx","webpack://nikon-client/./components/molecules/KitCard/KitCard.tsx","webpack://nikon-client/./components/molecules/KitDropdown/KitDropdown.tsx","webpack://nikon-client/./components/molecules/SearchBar/SearchBar.tsx","webpack://nikon-client/./components/molecules/SearchSummaryResults/SearchSummaryProductsRow.tsx","webpack://nikon-client/./components/molecules/SearchSummaryResults/SearchSummaryRow.tsx","webpack://nikon-client/./components/molecules/SearchSummaryResults/SearchSummaryResults.tsx","webpack://nikon-client/./models/enums/ArticleLayoutsEnum.ts","webpack://nikon-client/./models/enums/IconSizeEnum.ts","webpack://nikon-client/./models/enums/TagTypesEnum.ts","webpack://nikon-client/./state-management/AriaLabelsStore.ts","webpack://nikon-client/./utility/helpers/chunkArray.ts","webpack://nikon-client/./utility/hooks/useAriaLabels.ts","webpack://nikon-client/./utility/hooks/useResizeObserver.ts","webpack://nikon-client/./utility/hooks/useSearchSummaryResults.ts"],"sourcesContent":["import classNames from 'classnames';\n\ninterface Props {\n  readonly bullets: (string | undefined)[];\n  readonly textSize?: string;\n  readonly textColour?: string;\n  readonly className?: string;\n  readonly bulletClasses?: string;\n  readonly noWrap?: boolean;\n  readonly dataTestId?: string;\n}\n\nconst Bullets = ({\n  bullets,\n  textSize = 'body-three',\n  textColour = 'text-black-100 dark:text-white',\n  className,\n  bulletClasses,\n  noWrap = true,\n  dataTestId,\n}: Props) => {\n  const filteredBullets = bullets.filter(Boolean);\n  if (!filteredBullets.length) return null;\n\n  return (\n    <div\n      className={classNames('flex flex-wrap items-center', className)}\n      data-testid={dataTestId}\n    >\n      {filteredBullets.map((bullet, index) => (\n        <span\n          key={bullet}\n          className={classNames(\n            { 'whitespace-nowrap': noWrap },\n            'pr-2',\n            textColour,\n            textSize,\n            bulletClasses\n          )}\n        >\n          {index !== 0 && (\n            <span className=\"mr-2 text-black-100 dark:text-yellow\">•</span>\n          )}\n          {bullet}\n        </span>\n      ))}\n    </div>\n  );\n};\n\nexport default Bullets;\n","import Icon from '@atoms/Icon/Icon';\nimport classNames from 'classnames';\nimport { motion } from 'framer-motion';\nimport { ButtonHTMLAttributes, DetailedHTMLProps } from 'react';\n\ninterface Props\n  extends DetailedHTMLProps<\n    ButtonHTMLAttributes<HTMLButtonElement>,\n    HTMLButtonElement\n  > {\n  readonly open?: boolean;\n  readonly loadMoreLabel: string;\n  readonly loadLessLabel?: string;\n  readonly _type?: 'BASIC' | 'YELLOW-HIGHLIGHT';\n  readonly isLightMode?: boolean;\n  readonly dataTestId?: string;\n}\n\nconst LoadMoreButton = ({\n  open = false,\n  loadMoreLabel,\n  loadLessLabel,\n  _type = 'BASIC',\n  isLightMode,\n  dataTestId,\n  ...props\n}: Props) => (\n  <button\n    className={classNames(\n      'z-10 flex cursor-pointer flex-row items-center justify-center gap-4',\n      _type === 'YELLOW-HIGHLIGHT' && open\n        ? 'text-yellow underline decoration-1 underline-offset-4'\n        : `text-black-100 ${isLightMode ? '' : 'dark:text-white'}`\n    )}\n    data-testid={dataTestId}\n    {...props}\n  >\n    {(!open || loadLessLabel) && (\n      <p className=\"h6\">{open ? loadLessLabel : loadMoreLabel}</p>\n    )}\n\n    <motion.span\n      animate={{\n        rotate: open ? -180 : 0,\n      }}\n    >\n      <Icon name=\"downArrow\" size=\"1.25rem\" colorClassName=\"text-yellow\" />\n    </motion.span>\n  </button>\n);\n\nexport default LoadMoreButton;\n","import classNames from 'classnames';\n\ninterface Props {\n  readonly extraClasses?: string;\n  readonly svgClasses?: string;\n  readonly trackColor?: string;\n  readonly animationStyle?: 'pulse' | 'spin';\n  readonly pulseContainerClasses?: string;\n  readonly pulseItemClasses?: string;\n}\n\nconst LoadingSpinner = ({\n  extraClasses,\n  svgClasses = 'text-yellow h-9 w-9',\n  pulseContainerClasses,\n  pulseItemClasses = 'bg-yellow h-7.5 w-7.5',\n  trackColor = '#E5E7EB',\n  animationStyle = 'pulse',\n}: Props) => (\n  <div className={classNames('flex items-center justify-center', extraClasses)}>\n    {animationStyle === 'pulse' && (\n      <div className={classNames('flex gap-[15px]', pulseContainerClasses)}>\n        <div\n          className={classNames(\n            'animate-[pulse_2s_ease-in-out_infinite]',\n            pulseItemClasses\n          )}\n        />\n        <div\n          className={classNames(\n            `animate-[pulse_2s_0.25s_ease-in-out_infinite] delay-75 `,\n            pulseItemClasses\n          )}\n        />\n        <div\n          className={classNames(\n            'delay-250 animate-[pulse_2s_0.5s_ease-in-out_infinite]',\n            pulseItemClasses\n          )}\n        />\n      </div>\n    )}\n    {animationStyle === 'spin' && (\n      <svg\n        role=\"status\"\n        className={classNames('inline animate-spin', svgClasses)}\n        viewBox=\"0 0 100 101\"\n        fill=\"none\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          d=\"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z\"\n          fill={trackColor}\n        />\n        <path\n          d=\"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z\"\n          fill=\"currentColor\"\n        />\n      </svg>\n    )}\n  </div>\n);\n\nexport default LoadingSpinner;\n","import SizeEnum from '@models/enums/SizeEnum';\nimport TagTypesEnum from '@models/enums/TagTypesEnum';\nimport { ILink } from '@models/ILink';\nimport classNames from 'classnames';\nimport {\n  ButtonHTMLAttributes,\n  DetailedHTMLProps,\n  PropsWithChildren,\n} from 'react';\n\ninterface Props {\n  readonly className?: string;\n  readonly disabled?: boolean;\n  readonly editHint?: string;\n  readonly link?: ILink;\n  readonly linkCallback?: () => void;\n  readonly pointerStates?: boolean;\n  readonly size?: Exclude<SizeEnum, SizeEnum.XLarge | SizeEnum.Medium>;\n  readonly tagType?: TagTypesEnum;\n  readonly text?: string;\n  readonly span?: boolean;\n  readonly isLightMode?: boolean;\n  readonly dataTestId?: string;\n}\n\ntype TagProps = Props &\n  DetailedHTMLProps<ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>;\n\nconst Tag = ({\n  children,\n  className,\n  disabled = false,\n  editHint,\n  link,\n  linkCallback,\n  pointerStates = true,\n  size = SizeEnum.Small,\n  span = false,\n  tagType,\n  text,\n  isLightMode,\n  dataTestId,\n  ...buttonProps\n}: PropsWithChildren<TagProps>) => {\n  const tagClasses = classNames(\n    {\n      [`text-black-100 bg-grey-200 ${\n        isLightMode ? '' : 'dark:bg-grey-600 dark:text-white'\n      }`]: tagType === TagTypesEnum.Primary,\n      //\n      [`hover:bg-grey active:text-white active:bg-black-100 ${\n        isLightMode\n          ? ''\n          : 'dark:hover:text-white dark:hover:bg-grey-500 dark:active:text-black-100 dark:active:bg-white'\n      }`]: tagType === TagTypesEnum.Primary && pointerStates,\n      //\n      [`text-white bg-black-100 ${\n        isLightMode ? '' : 'dark:bg-white dark:text-black-100'\n      }`]:\n        tagType === TagTypesEnum.Secondary || tagType === TagTypesEnum.Square,\n      //\n      [`hover:bg-grey hover:text-black-100 active:text-black-100 active:bg-grey-200 ${\n        isLightMode\n          ? ''\n          : 'dark:hover:text-white dark:hover:bg-grey-500 dark:active:text-white dark:active:bg-grey-600'\n      }`]: tagType === TagTypesEnum.Secondary && pointerStates,\n      //\n      [`text-black-100 bg-white ${\n        isLightMode ? '' : 'dark:bg-black-100 dark:text-white'\n      }`]: tagType === TagTypesEnum.Three,\n      //\n      [`hover:bg-grey active:bg-grey-400 ${\n        isLightMode\n          ? ''\n          : 'dark:hover:text-white dark:hover:bg-grey-500 dark:active:text-black-100 dark:active:bg-white'\n      }`]: tagType === TagTypesEnum.Three && pointerStates,\n      //\n      'text-yellow bg-black-100': tagType === TagTypesEnum.Four,\n      //\n      'hover:bg-grey hover:text-black-100 active:text-black-100 active:bg-grey-100':\n        tagType === TagTypesEnum.Four && pointerStates,\n      //\n      'py-2.5 px-5': size === SizeEnum.Large && tagType !== TagTypesEnum.Square,\n      //\n      'px-4 py-1': size === SizeEnum.Small && tagType !== TagTypesEnum.Square,\n      //\n      'pointer-events-none': !pointerStates,\n    },\n    tagType === TagTypesEnum.Square ? 'rounded-[3px]' : 'rounded-full body-two',\n    'select-none',\n    className\n  );\n\n  if (span) {\n    return (\n      <span className={tagClasses} data-testid={dataTestId}>\n        {text}\n      </span>\n    );\n  }\n\n  return link?.url && (link?.name || children) && !disabled ? (\n    <a\n      className={classNames('appearance-none', tagClasses)}\n      href={link.url}\n      target={link.target}\n      data-epi-property-name={editHint}\n      onClick={linkCallback}\n      data-testid={dataTestId}\n    >\n      {children || link.name}\n    </a>\n  ) : (\n    <button\n      {...buttonProps}\n      className={tagClasses}\n      disabled={disabled}\n      data-epi-property-name={editHint}\n      data-testid={dataTestId}\n    >\n      {children || text}\n    </button>\n  );\n};\n\nexport default Tag;\n","import Bullets from '@atoms/Bullets/Bullets';\nimport Icon from '@atoms/Icon/Icon';\nimport Image from '@atoms/Image/Image';\nimport ArticleLayoutsEnum from '@models/enums/ArticleLayoutsEnum';\nimport { IArticle } from '@models/IArticle';\nimport updateDataLayer from '@utils/helpers/gtm';\nimport useMediaQuery from '@utils/hooks/useMediaQuery';\nimport classNames from 'classnames';\nimport { useState } from 'react';\n\ninterface Props extends IArticle {\n  readonly layoutType?: ArticleLayoutsEnum;\n  readonly isLightMode?: boolean;\n  readonly dataTestId?: string;\n}\n\nconst ArticleCard = ({\n  articleInfo,\n  image,\n  layoutType,\n  readTime,\n  title,\n  url,\n  isLightMode,\n  dataTestId = 'Article-Card',\n}: Props) => {\n  const [isHovered, setIsHovered] = useState(false);\n  const { author, publishedDate, genre } = articleInfo ?? {};\n  const [firstGenre] = genre ?? [];\n  const bulletsArray = [firstGenre, publishedDate, author];\n\n  const isBelowXXLScreen = useMediaQuery(1920);\n  const isBelowXLScreen = useMediaQuery(1440);\n  const isMobile = useMediaQuery(768);\n\n  const titleSize =\n    (isBelowXXLScreen && !isBelowXLScreen) || isMobile ? 'h6' : 'h5';\n\n  const imageSize = () => {\n    if (layoutType === ArticleLayoutsEnum.THREE) {\n      return '(max-width: 768px) 376px, 500px';\n    }\n\n    if (\n      layoutType === ArticleLayoutsEnum.THREE_TWO_THREE ||\n      layoutType === ArticleLayoutsEnum.THREE_TWO_TWO ||\n      layoutType === ArticleLayoutsEnum.TWO ||\n      layoutType === ArticleLayoutsEnum.TWO_TWO\n    ) {\n      return '50vw';\n    }\n\n    return undefined;\n  };\n\n  return (\n    <div data-testid={dataTestId}>\n      <div\n        onMouseEnter={() => setIsHovered(true)}\n        onMouseLeave={() => setIsHovered(false)}\n      >\n        <div className=\"relative h-full w-full\">\n          {readTime && (\n            <div\n              className=\"cta absolute bottom-2 right-2 z-10 flex items-center gap-2 rounded-full bg-black-100 bg-opacity-50 py-2 pl-3 pr-5 text-lg text-white lg:bottom-5 lg:right-5\"\n              data-testid=\"Article-Card-Read-Time\"\n            >\n              <Icon name=\"clock\" colorClassName=\"text-white\" />\n              {readTime}\n            </div>\n          )}\n          {url && (\n            <a\n              href={url}\n              rel=\"noreferrer\"\n              onClick={() =>\n                updateDataLayer({\n                  event: 'selectContent',\n                  content_type: 'articles_find_out_more',\n                  link_text: title,\n                })\n              }\n              data-testid=\"Article-Card-Link\"\n            >\n              {image && (\n                <Image\n                  image={image}\n                  imageClasses=\"w-full h-full object-cover left-0 -z-1 aspect-video\"\n                  sizes={imageSize()}\n                  dataTestId=\"Article-Card-Image\"\n                />\n              )}\n            </a>\n          )}\n        </div>\n      </div>\n      <div className=\"flex flex-col gap-2 px-0 pt-2.5 lg:pt-7\">\n        {bulletsArray.length > 0 && (\n          <Bullets\n            bullets={bulletsArray}\n            textSize=\"body-four\"\n            {...(isLightMode ? { textColour: 'text-black-100 ' } : {})}\n            dataTestId=\"Article-Card-Info-Bullets\"\n          />\n        )}\n\n        {title && (\n          <p\n            className={classNames(\n              titleSize,\n              url && isHovered\n                ? `text-grey-500 ${isLightMode ? '' : 'dark:text-yellow'}`\n                : `text-black-100 ${isLightMode ? '' : 'dark:text-white'}`\n            )}\n            data-testid=\"Article-Card-Title\"\n          >\n            {title}\n          </p>\n        )}\n      </div>\n    </div>\n  );\n};\n\nexport default ArticleCard;\n","import Button from '@atoms/Button/Button';\nimport Image from '@atoms/Image/Image';\nimport PriceDisplayText from '@atoms/PriceDisplayText/PriceDisplayText';\nimport { easeInOut } from '@config/animations.config';\nimport { IProductListingStatusLabels } from '@models/IProductListingStatusLabels';\nimport { IProductVariant } from '@models/IProductVariant';\nimport Tags from '@molecules/Tags/Tags';\nimport updateDataLayer from '@utils/helpers/gtm';\nimport mapToNewTrackingData from '@utils/helpers/mapToNewTrackingData';\nimport useMediaQuery from '@utils/hooks/useMediaQuery';\nimport classNames from 'classnames';\nimport { motion } from 'framer-motion';\nimport { useEffect, useRef, useState } from 'react';\n\ninterface Props extends IProductVariant {\n  readonly productListingName?: string;\n  readonly statusLabels: IProductListingStatusLabels;\n  readonly isLightMode?: boolean;\n}\n\nconst KitCard = ({\n  buyNowLink,\n  fromPriceLabel,\n  kitNewLabel,\n  kitOnlyPriceLabel,\n  newProductLabel,\n  productListingName,\n  pricingData,\n  savePriceLabel,\n  shippingLabel,\n  statusLabels,\n  thumbnail,\n  title,\n  trackingData,\n  vatLabel,\n  isLightMode,\n}: Props) => {\n  const [isHovered, setHover] = useState(false);\n  const isXLarge = useMediaQuery(1440);\n  const [ctaBoxHeight, setCtaBoxHeight] = useState(0);\n  const ctaBox = useRef<HTMLDivElement>(null);\n  const trackingDataJson = JSON.stringify(trackingData ?? '');\n\n  useEffect(() => {\n    setCtaBoxHeight(ctaBox.current?.clientHeight || 0);\n  }, []);\n\n  const contVariants = {\n    hover: { y: -ctaBoxHeight },\n    initial: { y: 0 },\n  };\n\n  const titleVariants = {\n    hover: { y: -49 },\n    initial: { y: 0 },\n  };\n\n  const ctaVariants = {\n    hover: { opacity: 1 },\n    initial: { opacity: isXLarge ? 1 : 0 },\n  };\n\n  const imgVariants = {\n    hover: { y: -15, scale: 0.9 },\n    inActive: { y: 0, scale: 1 },\n  };\n\n  const handleSelectItemEvent = () => {\n    if (!trackingData) return;\n\n    updateDataLayer({\n      event: 'selectItem',\n      ecommerce: {\n        currency: trackingData.currency,\n        items: [mapToNewTrackingData(trackingData, productListingName)],\n      },\n    });\n  };\n\n  return (\n    <div\n      // eslint-disable-next-line react/no-unknown-property\n      track-product-impression=\"true\"\n      data-product={trackingDataJson}\n      onFocus={() => setHover(true)}\n      onBlur={() => setHover(false)}\n      onMouseEnter={() => setHover(true)}\n      onMouseLeave={() => setHover(false)}\n      className={classNames(\n        'pointer-events-auto z-0 h-full w-full gap-5 overflow-hidden rounded-[10px] p-5',\n        isLightMode ? 'bg-white text-black-100' : 'bg-black-100 text-white'\n      )}\n    >\n      <div className=\"relative flex h-full w-full flex-col items-center justify-center\">\n        <div className=\"absolute left-0 top-0 z-20 flex w-full flex-row flex-wrap gap-4\">\n          <Tags\n            newProductLabel={kitNewLabel || newProductLabel}\n            pricingData={pricingData}\n            savePriceLabel={savePriceLabel}\n            statusLabels={statusLabels}\n          />\n        </div>\n\n        <motion.div\n          initial=\"initial\"\n          className=\"relative flex h-[240px] w-full shrink-0 items-center justify-center pt-10 xl:h-[280px]\"\n          animate={isHovered && !isXLarge ? 'hover' : 'initial'}\n          variants={imgVariants}\n          transition={easeInOut}\n        >\n          {thumbnail && (\n            <a\n              href={buyNowLink?.url || '/'}\n              onClick={() => {\n                if (buyNowLink?.url) handleSelectItemEvent();\n              }}\n              aria-label={title}\n              className=\"flex h-full w-full\"\n            >\n              <Image\n                image={thumbnail}\n                classes=\"z-10 w-full h-full xl:px-5\"\n                imageClasses=\"object-contain w-full h-full\"\n                sizes=\"(max-width: 768px) 376px, 500px\"\n              />\n            </a>\n          )}\n        </motion.div>\n\n        <motion.div\n          initial=\"initial\"\n          animate={isHovered && !isXLarge ? 'hover' : 'initial'}\n          variants={titleVariants}\n          transition={easeInOut}\n          className=\"relative mb-[100px] mt-16 flex w-full flex-col items-center justify-center px-10\"\n        >\n          {title && <p className=\"h5 text-center\">{title}</p>}\n        </motion.div>\n\n        <div className=\"mt-auto flex w-full flex-row items-end\">\n          <motion.div\n            initial=\"initial\"\n            animate={isHovered && !isXLarge ? 'hover' : 'initial'}\n            variants={contVariants}\n            transition={easeInOut}\n            className=\"relative flex grow flex-col items-start justify-center gap-3\"\n          >\n            {pricingData?.formattedCalculatedPrice && (\n              <PriceDisplayText\n                pricingData={pricingData}\n                fromPriceLabel={kitOnlyPriceLabel || fromPriceLabel}\n                vatLabel={vatLabel}\n                shippingLabel={shippingLabel}\n                isLightMode={isLightMode}\n              />\n            )}\n\n            <motion.div\n              initial=\"initial\"\n              animate={isHovered && !isXLarge ? 'hover' : 'initial'}\n              variants={ctaVariants}\n              transition={{\n                duration: 0.3,\n              }}\n              ref={ctaBox}\n              className=\"flex w-full flex-row flex-wrap items-start justify-start gap-5 pt-5 xl:absolute xl:top-full xl:gap-[10px]\"\n            >\n              {buyNowLink?.url && buyNowLink.name && (\n                <Button\n                  track-product-click=\"true\"\n                  data-product={trackingDataJson}\n                  link={buyNowLink}\n                  linkCallback={handleSelectItemEvent}\n                />\n              )}\n            </motion.div>\n          </motion.div>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default KitCard;\n","import { IKitDropdownRef } from '@models/IKitDropdownRef';\nimport { IProductListingStatusLabels } from '@models/IProductListingStatusLabels';\nimport { IProductVariant } from '@models/IProductVariant';\nimport KitCard from '@molecules/KitCard/KitCard';\nimport classNames from 'classnames';\nimport { forwardRef, useImperativeHandle, useRef } from 'react';\n\ninterface Props {\n  readonly kitTitleLabel: string;\n  readonly kitsTitleLabel: string;\n  readonly productListingName?: string;\n  readonly statusLabels: IProductListingStatusLabels;\n  readonly variations: IProductVariant[];\n  readonly isLightMode?: boolean;\n}\n\nconst KitDropdown = forwardRef<IKitDropdownRef, Props>(\n  (\n    {\n      kitTitleLabel,\n      kitsTitleLabel,\n      productListingName,\n      statusLabels,\n      variations = [],\n      isLightMode,\n    }: Props,\n    ref\n  ) => {\n    const sectionRef = useRef<HTMLDivElement | null>(null);\n    const kits =\n      variations?.filter((variation) => variation.type === 'kit') ?? [];\n\n    useImperativeHandle(ref, () => ({\n      scrollIntoView: () => {\n        sectionRef.current?.scrollIntoView({ behavior: 'smooth' });\n      },\n    }));\n\n    return (\n      <section\n        ref={sectionRef}\n        className={classNames(\n          'mt-4 py-15 md:pb-36 md:pt-24',\n          isLightMode ? 'bg-grey-100 text-black-100' : 'bg-grey-600 text-white'\n        )}\n      >\n        <div>\n          {kitsTitleLabel && kitTitleLabel && (\n            <h4 className=\"container mb-5 md:mb-6\">\n              {`${kits.length} ${\n                kits.length > 1 ? kitsTitleLabel : kitTitleLabel\n              }`}\n            </h4>\n          )}\n          <div className=\"flex w-full snap-x flex-row gap-x-4 overflow-x-auto px-5 scrollbar-hide md:container md:grid md:grid-cols-2 md:gap-y-22 xl:grid-cols-3\">\n            {!!kits.length &&\n              kits.map((kit) => (\n                <div\n                  key={`${kit.skuCode}-${kit.title}-kit-card`}\n                  className={classNames(\n                    'shrink-0 snap-center md:w-full',\n                    kits.length === 1 ? 'w-full' : 'w-[80vw]'\n                  )}\n                >\n                  <KitCard\n                    productListingName={productListingName}\n                    statusLabels={statusLabels}\n                    {...kit}\n                    isLightMode={isLightMode}\n                  />\n                </div>\n              ))}\n          </div>\n        </div>\n      </section>\n    );\n  }\n);\n\nexport default KitDropdown;\n","import Icon from '@atoms/Icon/Icon';\nimport IconSizeEnum from '@models/enums/IconSizeEnum';\nimport updateDataLayer from '@utils/helpers/gtm';\nimport useAriaLabels from '@utils/hooks/useAriaLabels';\nimport useResizeObserver from '@utils/hooks/useResizeObserver';\nimport {\n  ChangeEvent,\n  Dispatch,\n  FormEvent,\n  SetStateAction,\n  useCallback,\n} from 'react';\n\ninterface Props {\n  readonly listingPage: string;\n  readonly overlaySearchIcon: string;\n  readonly searchPlaceholder: string;\n  readonly searchSubTitle: string;\n  readonly setValue: Dispatch<SetStateAction<string>>;\n  readonly value: string;\n  readonly onTypingDone?: () => void;\n}\n\nconst SearchBar = ({\n  listingPage,\n  overlaySearchIcon,\n  searchPlaceholder,\n  searchSubTitle,\n  setValue,\n  value,\n  onTypingDone,\n}: Props) => {\n  const [defaultUnderlineRef, { width: maxUnderlineWidth }] =\n    useResizeObserver();\n  const [hiddenSearchRef, { width: currentTextUnderlineWidth }] =\n    useResizeObserver();\n  const { searchAriaLabel } = useAriaLabels();\n  let typingTimer: NodeJS.Timeout;\n\n  const searchFieldRef = useCallback((node: HTMLElement | null) => {\n    node?.focus();\n  }, []);\n\n  const onSubmit = async (e: FormEvent) => {\n    e.preventDefault();\n\n    updateDataLayer({\n      event: 'searchBar',\n      search_term: value,\n    });\n\n    const convertedValue = value.replace(/\\+/g, '%2B'); // allows + symbol to be used in search input\n    window.location.href = value\n      ? `${listingPage}?query=${convertedValue}`\n      : `${listingPage}`;\n  };\n\n  const onChange = (event: ChangeEvent<HTMLInputElement>) =>\n    setValue(event.target.value);\n\n  const onKeyDown = () => clearTimeout(typingTimer);\n\n  const onKeyUp = () => {\n    const doneTypingInterval = 500;\n    clearTimeout(typingTimer);\n    typingTimer = setTimeout(() => {\n      onTypingDone?.();\n    }, doneTypingInterval);\n  };\n\n  return (\n    <div className=\"grid grid-cols-12\">\n      <div className=\"col-span-full md:col-span-10 lg:col-span-8\">\n        <p\n          className=\"body-one bold mb-0.5 md:mb-7.5\"\n          data-testid=\"CT-48-SearchBar-Subtitle\"\n        >\n          {searchSubTitle}\n        </p>\n\n        <form onSubmit={onSubmit} className=\"relative\">\n          <div\n            className=\"flex items-center gap-x-4\"\n            data-testid=\"CT-48-SearchBar-Input-Container\"\n          >\n            <input\n              ref={searchFieldRef}\n              type=\"text\"\n              className=\"h2 flex h-full w-full appearance-none overflow-auto bg-transparent placeholder-grey-500 outline-none outline-0\"\n              placeholder={searchPlaceholder}\n              value={value}\n              onChange={onChange}\n              {...(onTypingDone\n                ? {\n                    onKeyUp,\n                    onKeyDown,\n                    onFocus: onKeyUp,\n                  }\n                : {})}\n              data-testid=\"CT-48-SearchBar-Input\"\n            />\n\n            <button\n              type=\"submit\"\n              className=\"z-80 h-11 w-11 shrink-0 rounded-full bg-yellow md:h-13 md:w-13\"\n              aria-label={searchAriaLabel}\n              data-testid=\"CT-48-SearchBar-Submit-Button\"\n            >\n              <Icon name={overlaySearchIcon} size={IconSizeEnum.xl} />\n            </button>\n          </div>\n\n          <div\n            ref={defaultUnderlineRef}\n            className=\"absolute left-0 z-80 mt-2.5 h-0.5 w-full bg-grey-400 md:mt-7.5\"\n          />\n          <div\n            style={{\n              width: Math.min(maxUnderlineWidth, currentTextUnderlineWidth),\n            }}\n            className=\"absolute left-0 z-80 mt-2.5 h-0.5 bg-black-100 md:mt-7.5\"\n          />\n          <span\n            ref={hiddenSearchRef}\n            aria-hidden=\"true\"\n            className=\"h2 invisible absolute inline-block overflow-hidden whitespace-pre text-transparent\"\n            style={{ maxWidth: maxUnderlineWidth }}\n            data-testid=\"CT-48-SearchBar-Search-Value\"\n          >\n            {value}\n          </span>\n        </form>\n      </div>\n    </div>\n  );\n};\n\nexport default SearchBar;\n","import { IProduct } from '@models/IProduct';\nimport { IProductListingStatusLabels } from '@models/IProductListingStatusLabels';\nimport KitDropdown from '@molecules/KitDropdown/KitDropdown';\nimport ProductListingCard from '@molecules/ProductListingCard/ProductListingCard';\nimport chunkArray from '@utils/helpers/chunkArray';\nimport useMediaQuery from '@utils/hooks/useMediaQuery';\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { useEffect, useState } from 'react';\n\ninterface Props {\n  readonly products: IProduct[];\n  readonly productsStatusLabels: IProductListingStatusLabels;\n}\n\nconst SearchSummaryProductsRow = ({\n  products,\n  productsStatusLabels,\n}: Props) => {\n  const isMobile = useMediaQuery(1024);\n  const [activeProduct, setActiveProduct] = useState<IProduct | null>(null);\n  const [activeProductRowIndex, setActiveProductRowIndex] = useState<\n    number | null\n  >(null);\n  const [activeProductColIndex, setActiveProductColIndex] = useState<\n    number | null\n  >(null);\n  const displayedProducts = chunkArray(products, isMobile ? 1 : 3);\n\n  useEffect(() => {\n    setActiveProduct(null);\n    setActiveProductRowIndex(null);\n    setActiveProductColIndex(null);\n  }, [isMobile]);\n\n  return (\n    <div\n      className=\"flex flex-col gap-7.5 lg:gap-4\"\n      data-testid=\"CT-48-Search-Summary-Results-Row-Products\"\n    >\n      {displayedProducts.map((productsRow, rowIndex) => (\n        <div key={productsRow.map((product) => product.title).join('-')}>\n          <div className=\"container lg:grid lg:grid-cols-3 lg:gap-4\">\n            {productsRow.map((product, colIndex) => {\n              const isActiveProduct =\n                activeProductRowIndex === rowIndex &&\n                activeProductColIndex === colIndex;\n\n              return (\n                <ProductListingCard\n                  key={`product-${product.title}`}\n                  statusLabels={productsStatusLabels!}\n                  active={isActiveProduct}\n                  isLightMode\n                  onKitDropdownButtonClick={() => {\n                    setActiveProduct(isActiveProduct ? null : product);\n                    setActiveProductRowIndex(isActiveProduct ? null : rowIndex);\n                    setActiveProductColIndex(isActiveProduct ? null : colIndex);\n                  }}\n                  dataTestId=\"CT-48-Search-Summary-Results-Row-Products\"\n                  {...product}\n                />\n              );\n            })}\n          </div>\n\n          <AnimatePresence mode=\"wait\">\n            {activeProduct && rowIndex === activeProductRowIndex && (\n              <motion.div\n                initial={{ height: 0, opacity: 0 }}\n                animate={{ height: 'auto', opacity: 1 }}\n                exit={{ height: 0, opacity: 0 }}\n              >\n                {activeProduct.variations && (\n                  <KitDropdown\n                    statusLabels={productsStatusLabels}\n                    kitsTitleLabel={activeProduct.kitsTitleLabel}\n                    kitTitleLabel={activeProduct.kitTitleLabel}\n                    variations={activeProduct.variations}\n                    isLightMode\n                  />\n                )}\n              </motion.div>\n            )}\n          </AnimatePresence>\n        </div>\n      ))}\n    </div>\n  );\n};\n\nexport default SearchSummaryProductsRow;\n","import Button from '@atoms/Button/Button';\nimport { IArticle } from '@models/IArticle';\nimport { IProduct } from '@models/IProduct';\nimport { IProductListingStatusLabels } from '@models/IProductListingStatusLabels';\nimport { ISearchResult } from '@models/ISearchResult';\nimport { ISearchSummaryRowResult } from '@models/ISearchSummaryRowResult';\nimport ArticleCard from '@molecules/ArticleCard/ArticleCard';\nimport { Fragment } from 'react';\nimport SearchSummaryProductsRow from './SearchSummaryProductsRow';\n\ninterface Props extends ISearchSummaryRowResult {\n  readonly value: string;\n  readonly productsStatusLabels: IProductListingStatusLabels;\n}\n\nconst SearchSummaryRow = ({\n  title,\n  viewAllLink,\n  pageType,\n  results,\n  totalCount,\n  productsStatusLabels,\n  value,\n}: Props) => {\n  if (results.length === 0) return null;\n\n  const displayedPages =\n    pageType === 'page'\n      ? (results as ISearchResult[])?.filter(\n          (result) => result.title && result.url\n        ) ?? []\n      : [];\n\n  return (\n    <div>\n      <div className=\"container mb-7.5 flex flex-col justify-between gap-5 lg:flex-row lg:items-end\">\n        <p\n          className=\"h4\"\n          data-testid=\"CT-48-Search-Summary-Results-Row-Title\"\n        >{`${title} (${totalCount})`}</p>\n\n        {viewAllLink?.url && viewAllLink?.name && (\n          <div>\n            <Button\n              link={{\n                ...viewAllLink,\n                url: `${viewAllLink.url}?PageType=${pageType}&query=${value}`,\n              }}\n              dataTestId=\"CT-48-Search-Summary-Results-Row-View-All-Link\"\n            />\n          </div>\n        )}\n      </div>\n\n      {pageType === 'product' && (\n        <SearchSummaryProductsRow\n          products={results as IProduct[]}\n          productsStatusLabels={productsStatusLabels}\n        />\n      )}\n\n      {pageType === 'article' && (\n        <div\n          className=\"container flex w-full flex-col gap-7.5 lg:grid lg:grid-cols-3 lg:gap-4\"\n          data-testid=\"CT-48-Search-Summary-Results-Row-Articles\"\n        >\n          {(results as IArticle[]).map((result, index) => (\n            <ArticleCard\n              key={`article-${result.title}`}\n              {...result}\n              isLightMode\n              dataTestId={`CT-48-Search-Summary-Results-Row-Article-Card-${index}`}\n            />\n          ))}\n        </div>\n      )}\n\n      {pageType === 'page' && (\n        <div\n          className=\"container grid grid-cols-[auto_1fr] items-center gap-x-[34px] pt-2 lg:gap-x-13 lg:pt-10\"\n          data-testid=\"CT-48-Search-Summary-Results-Row-Pages\"\n        >\n          {displayedPages.map(\n            ({ pageTypeLabel, title: resultTitle, url }, index) => (\n              <Fragment key={`search-result-${resultTitle}`}>\n                <div\n                  className=\"flex items-center py-2 lg:py-6\"\n                  data-testid={`CT-48-Search-Summary-Results-Row-Page-Result-${index}`}\n                >\n                  <a\n                    href={url}\n                    target=\"_self\"\n                    className=\"flex\"\n                    data-testid={`CT-48-Search-Summary-Results-Row-Page-Result-PageType-Link-${index}`}\n                  >\n                    <span className=\"body-two md:max-w-auto inline-block max-w-full truncate whitespace-nowrap rounded-[100px] bg-black-100 pb-2 pl-4 pr-4 pt-2 text-white decoration-1 hover:underline md:w-auto\">\n                      {pageTypeLabel}\n                    </span>\n                  </a>\n                </div>\n\n                <div className=\"flex items-center py-2 lg:py-6\">\n                  <a\n                    href={url}\n                    target=\"_self\"\n                    className=\"h6 w-auto text-black-100 decoration-1 hover:underline\"\n                    data-testid={`CT-48-Search-Summary-Results-Row-Page-Result-Title-${index}`}\n                  >\n                    {resultTitle}\n                  </a>\n                </div>\n\n                {index < displayedPages.length - 1 && (\n                  <div className=\"col-span-full h-[1px] bg-grey-line\" />\n                )}\n              </Fragment>\n            )\n          )}\n        </div>\n      )}\n    </div>\n  );\n};\n\nexport default SearchSummaryRow;\n","import { IProductListingStatusLabels } from '@models/IProductListingStatusLabels';\nimport { ISearchSummaryRowResult } from '@models/ISearchSummaryRowResult';\nimport SearchSummaryRow from './SearchSummaryRow';\n\ninterface Props {\n  readonly searchSummaryResults: ISearchSummaryRowResult[];\n  readonly searchValue: string;\n  readonly productsStatusLabels: IProductListingStatusLabels;\n  readonly resultsFoundLabel?: string;\n}\n\nconst SearchSummaryResults = ({\n  searchSummaryResults,\n  searchValue,\n  productsStatusLabels,\n  resultsFoundLabel,\n}: Props) => {\n  const totalResultsFound = searchSummaryResults\n    .map((summaryResult) => summaryResult.totalCount)\n    .reduce((partialSum, totalCount) => partialSum + totalCount, 0);\n\n  return (\n    <div data-testid=\"CT-48-Search-Summary-Results-Container\">\n      {resultsFoundLabel && (\n        <p\n          className=\"body-three container pt-5 text-grey-600 lg:pt-[70px]\"\n          data-testid=\"CT-48-Search-Summary-Results-Found-Label\"\n        >\n          {resultsFoundLabel.replace('{0}', `${totalResultsFound}`)}\n        </p>\n      )}\n\n      <div\n        className={`component-padding pt-15 ${\n          resultsFoundLabel ? 'lg:pt-[104px]' : 'lg:pt-[150px]'\n        }`}\n      >\n        <div\n          className=\"flex flex-col gap-20 lg:gap-[150px]\"\n          data-testid=\"CT-48-Search-Summary-Results-Row-Container\"\n        >\n          {searchSummaryResults.map((summary) => (\n            <SearchSummaryRow\n              key={summary.title}\n              {...summary}\n              productsStatusLabels={productsStatusLabels}\n              value={searchValue}\n            />\n          ))}\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default SearchSummaryResults;\n","const enum ArticleLayoutsEnum {\n  ONE = 'One',\n  ONE_TWO = 'OneTwo',\n  TWO = 'Two',\n  TWO_TWO = 'TwoTwo',\n  THREE = 'Three',\n  THREE_TWO_THREE = 'ThreeTwoThree',\n  THREE_TWO_TWO = 'ThreeTwoTwo',\n}\n\nexport default ArticleLayoutsEnum;\n","const enum IconSizeEnum {\n  xs = '.5rem',\n  sm = '.75rem',\n  md = '1rem',\n  lg = '1.5rem',\n  xl = '1.75rem',\n}\n\nexport default IconSizeEnum;\n","enum TagTypesEnum {\n  Primary = 'PRIMARY',\n  Secondary = 'SECONDARY',\n  Three = 'THREE',\n  Four = 'FOUR',\n  Square = 'SQUARE',\n}\n\nexport default TagTypesEnum;\n","import { IAriaLabels } from '@models/IAriaLabels';\nimport create from 'zustand';\n\ninterface IAriaLabelsState {\n  ariaLabels: IAriaLabels;\n  setAriaLabels: (ariaLabels: IAriaLabels) => void;\n}\n\nexport const initialAriaLabels: IAriaLabels = {\n  backToFirstLevelNavigationAriaLabel: 'Back to first level of navigation',\n  breadcrumbAriaLabel: 'Breadcrumb navigation',\n  breadcrumbFooterAriaLabel: 'Breadcrumb footer navigation',\n  clearFiltersAriaLabel: 'Clear filters',\n  closeMenuAriaLabel: 'Close menu',\n  closeAddressListAriaLabel: 'Close address list',\n  closeMobileNavigationAriaLabel: 'Close navigation',\n  closeModalAriaLabel: 'Close Modal',\n  closeSignUpFormAriaLabel: 'Close signup form',\n  closeSiteNotificationAriaLabel: 'Close site notification',\n  copyToClipboardAriaLabel: 'Copy to clipboard',\n  editOrDeleteAriaLabel: 'Edit or delete',\n  mainNavigationAriaLabel: 'Main navigation',\n  moreInformationAriaLabel: 'More information',\n  nextAriaLabel: 'Go to next slide',\n  openAddressListAriaLabel: 'Open address list',\n  openImageInFullScreenAriaLabel: 'Open image in full screen',\n  openMenuAriaLabel: 'Open menu',\n  overlayToCloseDesktopNavigationAriaLabel: 'Close overlay',\n  pauseVideoAriaLabel: 'Pause video',\n  playVideoAriaLabel: 'Play video',\n  previousAriaLabel: 'Go to previous slide',\n  searchAriaLabel: 'Search',\n  shareToFacebookAriaLabel: 'Share to Facebook',\n  shareToWhatsappAriaLabel: 'Share to Whatsapp',\n  shareToXAriaLabel: 'Share to X',\n  siteNotificationsAriaLabel: 'Site notifications banner',\n  uspStripAriaLabel: 'Unique Selling Point Strip',\n  zoomInAriaLabel: 'Zoom in',\n  zoomOutAriaLabel: 'Zoom out',\n};\n\nconst useAriaLabelsStore = create<IAriaLabelsState>((set) => ({\n  ariaLabels: initialAriaLabels,\n  setAriaLabels: (ariaLabels: IAriaLabels) => set({ ariaLabels }),\n}));\n\nexport default useAriaLabelsStore;\n","const chunkArray = <T>(array: T[], chunkSize: number) =>\n  array.reduce<T[][]>((acc, item, index) => {\n    const chunk = Math.floor(index / chunkSize);\n    acc[chunk] = [...(acc[chunk] || []), item];\n\n    return acc;\n  }, []);\n\nexport default chunkArray;\n","import { IAriaLabels } from '@models/IAriaLabels';\nimport useAriaLabelsStore, { initialAriaLabels } from '@state/AriaLabelsStore';\nimport { useEffect, useState } from 'react';\n\nconst useAriaLabels = () => {\n  const [ariaLabels, setAriaLabels] = useState<IAriaLabels>(initialAriaLabels);\n  const ariaLabelsFromStore = useAriaLabelsStore((state) => state.ariaLabels);\n\n  useEffect(() => {\n    setAriaLabels(ariaLabelsFromStore);\n  }, [ariaLabelsFromStore]);\n\n  return ariaLabels;\n};\n\nexport default useAriaLabels;\n","import { useCallback, useRef, useState } from 'react';\n\nconst useResizeObserver = () => {\n  const observerRef = useRef<ResizeObserver>();\n  const [resizeParameters, setResizeParameters] = useState({\n    width: 0,\n    height: 0,\n    clientWidth: 0,\n    clientHeight: 0,\n    scrollWidth: 0,\n    scrollHeight: 0,\n  });\n\n  const handleResize = useCallback((entries: ResizeObserverEntry[]) => {\n    if (!Array.isArray(entries)) return;\n\n    const entry = entries[0];\n\n    setResizeParameters({\n      width: entry?.contentRect.width ?? 0,\n      height: entry?.contentRect.height ?? 0,\n      clientWidth: entry?.target.clientWidth ?? 0,\n      clientHeight: entry?.target.clientHeight ?? 0,\n      scrollWidth: entry?.target.scrollWidth ?? 0,\n      scrollHeight: entry?.target.scrollHeight ?? 0,\n    });\n  }, []);\n\n  const ref = useCallback(\n    (node: HTMLElement | null) => {\n      if (observerRef.current && !node) {\n        observerRef.current.disconnect();\n        observerRef.current = undefined;\n      }\n\n      if (!observerRef.current && node) {\n        observerRef.current = new ResizeObserver(handleResize);\n        observerRef.current.observe(node);\n      }\n    },\n    [handleResize]\n  );\n\n  return [ref, resizeParameters] as const;\n};\n\nexport default useResizeObserver;\n","import { IListingResponse } from '@models/IListingResponse';\nimport { ISearchSummaryRow } from '@models/ISearchBlock';\nimport {\n  ISearchSummaryResultType,\n  ISearchSummaryRowResult,\n} from '@models/ISearchSummaryRowResult';\nimport axios from 'axios';\nimport { useCallback, useState } from 'react';\n\nconst useSearchSummaryResults = (\n  searchSummary: ISearchSummaryRow[],\n  track?: boolean\n) => {\n  const [searchSummaryResults, setSearchSummaryResults] = useState<\n    ISearchSummaryRowResult[]\n  >([]);\n  const [isLoading, setIsLoading] = useState<boolean>(true);\n\n  const fetchSearchSummaryResults = useCallback(\n    async (queryValue: string) => {\n      const itemsRequests = searchSummary.map(({ endpoint, parameters }) =>\n        axios.get<IListingResponse>(endpoint + parameters, {\n          params: {\n            query: queryValue,\n            track,\n          },\n        })\n      );\n\n      const itemsResponses = await Promise.all(itemsRequests);\n      const summaryResults = itemsResponses.map((itemsResponse, index) => ({\n        title: searchSummary[index]!.title,\n        viewAllLink: searchSummary[index]!.viewAllLink,\n        pageType: searchSummary[index]!.pageType,\n        results: itemsResponse.data.items as ISearchSummaryResultType[],\n        totalCount: itemsResponse.data.total,\n      }));\n\n      setSearchSummaryResults(summaryResults);\n      setIsLoading(false);\n    },\n    [searchSummary, track]\n  );\n\n  return {\n    isLoading,\n    searchSummaryResults,\n    fetchSearchSummaryResults,\n  };\n};\n\nexport default useSearchSummaryResults;\n"],"names":["_ref","bullets","textSize","textColour","className","bulletClasses","noWrap","dataTestId","filteredBullets","filter","Boolean","length","React","createElement","classNames","map","bullet","index","key","open","loadMoreLabel","loadLessLabel","_type","isLightMode","props","_extends","motion","span","animate","rotate","Icon","name","size","colorClassName","extraClasses","svgClasses","pulseContainerClasses","pulseItemClasses","trackColor","animationStyle","role","viewBox","fill","xmlns","d","children","disabled","editHint","link","linkCallback","pointerStates","SizeEnum","Small","tagType","text","buttonProps","tagClasses","TagTypesEnum","Primary","Secondary","Square","Three","Four","Large","url","href","target","onClick","articleInfo","image","layoutType","readTime","title","isHovered","setIsHovered","useState","author","publishedDate","genre","firstGenre","bulletsArray","isBelowXXLScreen","useMediaQuery","isBelowXLScreen","isMobile","titleSize","onMouseEnter","onMouseLeave","rel","updateDataLayer","event","content_type","link_text","Image","imageClasses","sizes","ArticleLayoutsEnum","THREE","THREE_TWO_THREE","THREE_TWO_TWO","TWO","TWO_TWO","Bullets","buyNowLink","fromPriceLabel","kitNewLabel","kitOnlyPriceLabel","newProductLabel","productListingName","pricingData","savePriceLabel","shippingLabel","statusLabels","thumbnail","trackingData","vatLabel","setHover","isXLarge","ctaBoxHeight","setCtaBoxHeight","ctaBox","useRef","trackingDataJson","JSON","stringify","useEffect","current","clientHeight","contVariants","hover","y","initial","ctaVariants","opacity","handleSelectItemEvent","ecommerce","currency","items","mapToNewTrackingData","onFocus","onBlur","Tags","div","variants","scale","inActive","transition","easeInOut","classes","formattedCalculatedPrice","PriceDisplayText","duration","ref","Button","forwardRef","kitTitleLabel","kitsTitleLabel","variations","sectionRef","kits","variation","type","useImperativeHandle","scrollIntoView","behavior","kit","skuCode","KitCard","listingPage","overlaySearchIcon","searchPlaceholder","searchSubTitle","setValue","value","onTypingDone","defaultUnderlineRef","width","maxUnderlineWidth","useResizeObserver","hiddenSearchRef","currentTextUnderlineWidth","searchAriaLabel","useAriaLabels","typingTimer","searchFieldRef","useCallback","node","focus","onKeyUp","clearTimeout","setTimeout","onSubmit","async","e","preventDefault","search_term","convertedValue","replace","window","location","placeholder","onChange","onKeyDown","IconSizeEnum","xl","style","Math","min","maxWidth","products","productsStatusLabels","activeProduct","setActiveProduct","activeProductRowIndex","setActiveProductRowIndex","activeProductColIndex","setActiveProductColIndex","displayedProducts","chunkArray","productsRow","rowIndex","product","join","colIndex","isActiveProduct","ProductListingCard","active","onKitDropdownButtonClick","AnimatePresence","mode","height","exit","KitDropdown","viewAllLink","pageType","results","totalCount","displayedPages","result","SearchSummaryProductsRow","ArticleCard","_ref2","pageTypeLabel","resultTitle","Fragment","searchSummaryResults","searchValue","resultsFoundLabel","totalResultsFound","summaryResult","reduce","partialSum","summary","SearchSummaryRow","initialAriaLabels","backToFirstLevelNavigationAriaLabel","breadcrumbAriaLabel","breadcrumbFooterAriaLabel","clearFiltersAriaLabel","closeMenuAriaLabel","closeAddressListAriaLabel","closeMobileNavigationAriaLabel","closeModalAriaLabel","closeSignUpFormAriaLabel","closeSiteNotificationAriaLabel","copyToClipboardAriaLabel","editOrDeleteAriaLabel","mainNavigationAriaLabel","moreInformationAriaLabel","nextAriaLabel","openAddressListAriaLabel","openImageInFullScreenAriaLabel","openMenuAriaLabel","overlayToCloseDesktopNavigationAriaLabel","pauseVideoAriaLabel","playVideoAriaLabel","previousAriaLabel","shareToFacebookAriaLabel","shareToWhatsappAriaLabel","shareToXAriaLabel","siteNotificationsAriaLabel","uspStripAriaLabel","zoomInAriaLabel","zoomOutAriaLabel","create","set","ariaLabels","setAriaLabels","array","chunkSize","acc","item","chunk","floor","ariaLabelsFromStore","useAriaLabelsStore","state","observerRef","resizeParameters","setResizeParameters","clientWidth","scrollWidth","scrollHeight","handleResize","entries","Array","isArray","entry","contentRect","disconnect","undefined","ResizeObserver","observe","useSearchSummaryResults","searchSummary","track","setSearchSummaryResults","isLoading","setIsLoading","fetchSearchSummaryResults","itemsRequests","endpoint","parameters","axios","params","query","queryValue","summaryResults","Promise","all","itemsResponse","data","total"],"sourceRoot":""}