{"version":3,"file":"static/chunks/4124-5908d14012952dc0.js","mappings":"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","sources":["webpack://_N_E/../../libs/osc/animate-reveal-item/src/lib/animate-reveal-item.tsx","webpack://_N_E/../../libs/osc/animate-reveal-item/src/lib/index.ts","webpack://_N_E/../../libs/osc/animate-reveal-item/src/index.ts","webpack://_N_E/../../libs/osc/dynamic-grids/src/lib/dynamic-grid-image.tsx","webpack://_N_E/../../libs/osc/dynamic-grids/src/lib/utils/dynamic-grid-analytics.ts","webpack://_N_E/../../libs/osc/dynamic-grids/src/lib/dynamic-grid-item.tsx","webpack://_N_E/../../libs/osc/dynamic-grids/src/lib/utils/dynamic-grid-column-count.ts","webpack://_N_E/../../libs/osc/dynamic-grids/src/lib/dynamic-grid.tsx","webpack://_N_E/../../libs/osc/dynamic-grids/src/lib/dynamic-grid-item-wom.tsx","webpack://_N_E/../../libs/utilities/use-has-overflow/src/lib/use-has-overflow.ts","webpack://_N_E/../../libs/utilities/use-has-overflow/src/lib/index.ts","webpack://_N_E/../../libs/utilities/use-has-overflow/src/index.ts","webpack://_N_E/../../libs/osc/dynamic-grids/src/lib/dynamic-grid-wom.tsx","webpack://_N_E/../../libs/osc/dynamic-grids/src/lib/index.ts","webpack://_N_E/../../libs/osc/dynamic-grids/src/index.ts","webpack://_N_E/../../libs/osc/textual-block/src/lib/textual-block.tsx","webpack://_N_E/../../libs/osc/textual-block/src/lib/index.ts","webpack://_N_E/../../libs/osc/textual-block/src/index.ts"],"sourcesContent":["import type * as React from 'react';\nimport { useIntersectionObserver } from 'usehooks-ts';\nimport cx from 'classnames';\nimport { getIsReducedMotion } from '@dx-ui/utilities-accessibility';\n\nexport type AnimateRevealItemType = {\n delay: number;\n isAnimated?: boolean;\n animationType?: 'fade-in-up' | 'wipe' | 'fade-in';\n className?: string;\n};\n\nexport const AnimateRevealItem: React.FC<React.PropsWithChildren<AnimateRevealItemType>> = ({\n children,\n delay,\n animationType = 'fade-in',\n isAnimated: isAnimatedProp = false,\n className,\n}) => {\n const isReducedMotion = getIsReducedMotion();\n const { ref: intersectionRef, isIntersecting: inView } = useIntersectionObserver({\n threshold: [0.3],\n freezeOnceVisible: true,\n });\n const isAnimated = isReducedMotion ? false : isAnimatedProp;\n const ref = !isReducedMotion && isAnimated ? intersectionRef : null;\n\n if (animationType === 'wipe') {\n const clipPathValue = inView ? 'inset(0% 0% 0%)' : 'inset(0% 0% 100%)';\n\n return (\n <div className={className} ref={ref}>\n <div\n className={cx({\n 'opacity-100': inView && isAnimated,\n 'duration-1000 ease-in-out opacity-0 motion-reduce:opacity-100 motion-reduce:transition-none':\n isAnimated,\n })}\n data-testid=\"wipe-item-wrapper\"\n style={\n isAnimated\n ? {\n transitionDelay: `${delay}ms`,\n clipPath: isReducedMotion ? 'inset(0% 0% 0%)' : clipPathValue,\n }\n : {}\n }\n >\n {children}\n </div>\n </div>\n );\n }\n\n const isFadeInUp = animationType === 'fade-in-up';\n\n return (\n <div\n ref={ref}\n data-testid=\"fade-item-wrapper\"\n style={\n isAnimated\n ? {\n transitionDelay: `${delay}ms`,\n transitionTimingFunction: 'cubic-bezier(.25, .46, .45, .99);',\n }\n : {}\n }\n className={cx(\n {\n 'opacity-100': inView && isAnimated,\n 'opacity-100 translate-y-0': inView && isAnimated && isFadeInUp,\n 'translate-y-6': !inView && isAnimated && isFadeInUp,\n 'duration-1000 opacity-0 motion-reduce:transition-none motion-reduce:opacity-100 transition-all':\n isAnimated,\n },\n className\n )}\n >\n {children}\n </div>\n );\n};\n\nexport default AnimateRevealItem;\n","export * from './animate-reveal-item';\n","export * from './lib';\n","import { ResponsiveImage, ResponsivePicture } from '@dx-ui/osc-responsive-image';\nimport type { TResponsiveImage, TResponsivePicture } from '@dx-ui/osc-responsive-image';\n\nexport type DynamicImageProps = Pick<\n TResponsiveImage,\n 'id' | 'imageUrl' | 'altText' | 'aspectRatio' | 'width' | 'captionData' | 'className'\n> &\n Pick<\n TResponsivePicture,\n 'tabletAspectRatio' | 'mobileAspectRatio' | 'tabletImageUrl' | 'mobileImageUrl'\n >;\n\nexport const DynamicImage: React.FC<DynamicImageProps> = ({\n id,\n imageUrl,\n altText,\n aspectRatio,\n tabletAspectRatio,\n mobileAspectRatio,\n tabletImageUrl,\n mobileImageUrl,\n width,\n captionData,\n className,\n}) => {\n const sharedProps = {\n id: `dynamic-grid-wom-item-img-${id}`,\n aspectRatio,\n imageUrl,\n altText,\n width,\n captionData,\n className,\n };\n\n return tabletImageUrl || mobileImageUrl ? (\n <ResponsivePicture\n {...sharedProps}\n tabletAspectRatio={tabletAspectRatio}\n mobileAspectRatio={mobileAspectRatio}\n tabletImageUrl={tabletImageUrl}\n mobileImageUrl={mobileImageUrl}\n />\n ) : (\n <ResponsiveImage {...sharedProps} />\n );\n};\n","import {\n type ImageFunctionType,\n ANALYTICS_NO_VALUE,\n type BaseImageMetrics,\n ImageClickID,\n ImageFunction,\n ImageType,\n} from '@dx-ui/config-metrics';\nimport type { DynamicGridMetrics } from '../types/dynamic-grid-analytics';\n\ntype GenerateDynamicGridMetricsParams = {\n metrics?: Partial<BaseImageMetrics>;\n position: number;\n count?: number;\n itemTitle?: string;\n headline?: string;\n imageType?: (typeof ImageType)['Dynamic'];\n imageFunction?: ImageFunctionType;\n};\n\n/**\n * Utility function to generate dynamic Grid metrics\n */\nexport function generateDynamicGridMetrics({\n metrics,\n position,\n count = 0,\n itemTitle = ANALYTICS_NO_VALUE,\n headline = ANALYTICS_NO_VALUE,\n imageFunction = ImageFunction.Modal, // 'Modal' for Dynamic Grid, 'Link' for Dynamic Grid WOM\n}: GenerateDynamicGridMetricsParams): DynamicGridMetrics {\n const DynamicGridMetrics = {\n click: {\n clickID: ImageClickID.Img,\n },\n osc: {\n ...metrics?.osc,\n image: {\n ...metrics?.osc?.image,\n count,\n itemTitle,\n type: ImageType.Dynamic,\n headline: metrics?.osc?.image?.headline || headline,\n position,\n function: imageFunction,\n },\n },\n };\n\n return DynamicGridMetrics;\n}\n\n/**\n * Utility function to generate Dynamic Grid metrics\n * The returned object will serve as a partial image metric object to be extended within the Dynamic Grid component\n */\nexport function generatePartialDynamicGridMetrics(\n headline: string | null | undefined\n): Partial<BaseImageMetrics> {\n return {\n click: {\n clickID: ImageClickID.Img,\n },\n osc: {\n image: {\n // All the other DynamicGridMetrics attributes will be set in DynamicGridItem\n headline: headline || ANALYTICS_NO_VALUE,\n type: ImageType.Dynamic,\n },\n },\n };\n}\n","import { useRef } from 'react';\nimport cx from 'classnames';\nimport { useTranslation } from 'next-i18next';\nimport { useRect } from '@dx-ui/utilities-use-rect';\nimport { DynamicImage } from './dynamic-grid-image';\nimport type { AspectRatio } from '@dx-ui/osc-responsive-image';\nimport type { CaptionProps } from '@dx-ui/osc-caption';\nimport type { Link } from '@dx-ui/osc-link';\nimport type { VariantTypes } from './dynamic-grid';\nimport {\n trackEvent,\n ANALYTICS_GLOBAL_CLICK_EVENT,\n type BaseImageMetrics,\n} from '@dx-ui/config-metrics';\nimport { generateDynamicGridMetrics } from './utils/dynamic-grid-analytics';\n\nexport type TDynamicGridItem = {\n /** Dynamic Grid item id */\n id: string;\n /** Image for Dynamic Grid Item */\n imageUrl: string;\n tabletImageUrl?: string;\n mobileImageUrl?: string;\n /** Alt Text for Dynamic Grid Item Image */\n imageAltTxt: string;\n /** Image for Displaying in Modal */\n modalImageUrl?: string;\n /** Alt text for Modal Image */\n modalImageAltText?: string;\n /** Text overlaid on Dynamic Grid Item */\n itemTitle?: string;\n /** Headline for Dynamic Grid Item Modal/dialog */\n headline?: string;\n /** Content such as Markdown, or text in Modal/dialog */\n shortDescription?: JSX.Element | string;\n /** Link following the item headline & content in Modal/dialog */\n link?: React.ComponentProps<typeof Link> & {\n experimentationConfiguration?: CmsExperimentationConfiguration;\n };\n /** Callback handler for grid item click event */\n onItemClick?: (id: string, el: HTMLButtonElement | null) => void;\n /** Callback handler for link click event */\n onClickLink?: (id?: string) => void;\n /** Add Tailwind classes to root element */\n className?: string;\n /** Caption link and text */\n captionData?: CaptionProps;\n /** List of Audience Ids */\n segmentIds: string[];\n /** CMS document editor button **/\n cmsDocumentControl?: React.ReactNode;\n /* Translation CSS classes to add to each item */\n cmsTranslationClasses?: string;\n /* CPM controlled brand color themes */\n brandComponentTheme?: CmsBrandComponentTheme;\n /** New card variant added for Enterprise refresh */\n variant?: VariantTypes;\n /** Headline for Dynamic Grid */\n listHeadline?: string;\n /** Position of the Dynamic Grid Item */\n position?: number;\n /** Number of Dynamic Grid Items */\n count?: number;\n /** Metrics object for analytics */\n metrics?: Partial<BaseImageMetrics>;\n};\n\nexport type TDynamicGridItemAndAspectRatios = TDynamicGridItem & {\n /** The aspect ratio for the grid item images */\n imageAspectRatio: AspectRatio;\n tabletImageAspectRatio?: AspectRatio;\n mobileImageAspectRatio?: AspectRatio;\n};\n\nexport const DocsTDynamicGridItem: React.FC<\n React.PropsWithChildren<TDynamicGridItemAndAspectRatios>\n> = () => null;\n\nconst DynamicGridItem: React.FC<TDynamicGridItemAndAspectRatios> = (item) => {\n const ref = useRef<React.ElementRef<'div'>>(null);\n const buttonRef = useRef<HTMLButtonElement>(null);\n const rect = useRect({ ref });\n const [t] = useTranslation('osc-dynamic-grids');\n\n const {\n id,\n captionData,\n itemTitle,\n imageUrl,\n tabletImageUrl,\n mobileImageUrl,\n onItemClick,\n className,\n variant,\n brandComponentTheme,\n position,\n count,\n listHeadline,\n headline,\n metrics,\n } = item;\n const aspectRatio = item?.imageAspectRatio;\n const tabletAspectRatio = item?.tabletImageAspectRatio;\n const mobileAspectRatio = item?.mobileImageAspectRatio;\n const isDark = brandComponentTheme === 'dark';\n const isLight = brandComponentTheme === 'light';\n\n const isCardLayout = variant === 'card';\n\n const onClickGridItem = () => {\n trackEvent(\n ANALYTICS_GLOBAL_CLICK_EVENT,\n generateDynamicGridMetrics({\n metrics,\n position: position || 0,\n count,\n itemTitle,\n headline: listHeadline || headline,\n })\n );\n onItemClick?.(id, buttonRef.current);\n };\n // TODO: NHCBP-3494 - Tailwind utitilies for grid-* classes (see grid.css)\n // TODO: NHCBP-3494 - Tailwind focus:ring utility not working - classNames on \"button\":\n // focus:ring-2 focus:ring-primary focus:ring-opacity-50\n\n const handleOnFocus = () => {\n // Scroll to the element when focused\n // The setTimeout is needed for this to work in Safari browser\n setTimeout(() => {\n buttonRef.current?.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' });\n }, 10);\n };\n\n if (item) {\n return (\n <button\n ref={buttonRef}\n type=\"button\"\n data-testid={`dynamicgrid-item-${id}`}\n id={id}\n onClick={onClickGridItem}\n className={cx(\n 'group overflow-y-hidden sm:w-auto',\n 'focus:ring-primary/50 focus:ring-2',\n 'snap snap-start',\n 'relative',\n item.cmsTranslationClasses,\n className\n )}\n onFocus={handleOnFocus}\n >\n <div\n className=\"bg-bg-alt brand-hi-refresh:rounded-lg relative overflow-hidden\"\n data-testid={`layout-${isCardLayout ? 'card' : 'default'}`}\n >\n {isCardLayout ? (\n <div className=\"bg-bg-inverse absolute inset-0 z-10 opacity-0 transition-opacity duration-300 group-hover:opacity-15 group-focus:opacity-15\" />\n ) : null}\n <div className={cx('absolute z-10 flex size-full items-end')}>\n <div\n className={cx('from-bg-inverse size-full to-transparent', {\n 'bg-gradient-to-t': !isCardLayout,\n })}\n >\n <div\n className={cx('flex size-full items-end duration-200 ease-in-out', {\n 'group-hover:-translate-y-1/3': !isCardLayout,\n })}\n >\n {!isCardLayout && (\n <div\n className={cx(\n 'dynamic-grid-item-header mx-auto w-full px-3 leading-tight sm:py-4 lg:py-6 xl:text-3xl'\n )}\n data-testid=\"dynamicgrid-item-btnText\"\n >\n {itemTitle}\n </div>\n )}\n <span className=\"sr-only\">{t('openModal')}</span>\n </div>\n </div>\n </div>\n <div ref={ref} className=\"relative\">\n <DynamicImage\n id={id}\n imageUrl={imageUrl}\n altText=\"\"\n aspectRatio={aspectRatio}\n tabletAspectRatio={tabletAspectRatio}\n mobileAspectRatio={mobileAspectRatio}\n tabletImageUrl={tabletImageUrl}\n mobileImageUrl={mobileImageUrl}\n width={rect?.width ?? 0}\n captionData={captionData}\n className=\"brand-gu:group-hover:scale-110 brand-gu:group-hover:opacity-80 duration-300 ease-in-out\"\n />\n {isCardLayout && aspectRatio === '3:4' ? (\n <DynamicGridCardHeader\n ar={aspectRatio}\n isDark={isDark}\n isLight={isLight}\n itemTitle={itemTitle}\n />\n ) : null}\n </div>\n {isCardLayout && aspectRatio !== '3:4' ? (\n <DynamicGridCardHeader\n ar={aspectRatio}\n isDark={isDark}\n isLight={isLight}\n itemTitle={itemTitle}\n />\n ) : null}\n </div>\n {item.cmsDocumentControl}\n </button>\n );\n }\n\n return null;\n};\n\ntype DynamicGridCardHeaderProps = {\n ar: AspectRatio;\n isDark: boolean;\n isLight: boolean;\n itemTitle: string | undefined;\n};\n\nconst DynamicGridCardHeader = ({ ar, isDark, isLight, itemTitle }: DynamicGridCardHeaderProps) => {\n const baseClasses =\n 'mx-auto w-full px-3 py-0 min-h-20 flex items-center justify-center xl:text-xl leading-tight dynamic-grid-item-header';\n const positionClasses = ar === '3:4' ? 'absolute inset-x-0 bottom-0' : '';\n\n return (\n <div\n className={cx(baseClasses, positionClasses, {\n 'dynamic-grid-item-header-light': isLight,\n 'dynamic-grid-item-header-dark': isDark,\n 'bg-primary': !isDark && !isLight,\n })}\n data-testid=\"dynamicgrid-item-btnText\"\n >\n <span className=\"relative z-10\">{itemTitle}</span>\n </div>\n );\n};\n\nexport { DynamicGridItem };\nexport default DynamicGridItem;\n","export const getDynamicGridColumnCount = (columnCount: string | number, count: number) => {\n let is369 = false,\n is4x = false,\n is2x = false,\n isOther = false;\n\n if (columnCount === 'auto') {\n is369 = count % 3 === 0 || count === 5;\n is4x = !is369 && count > 2 && (count % 2 === 0 || count === 7);\n is2x = !is369 && (is4x || count % 2 === 0);\n isOther = !is369 && !is4x && !is2x;\n } else {\n is369 = columnCount === '3';\n is4x = columnCount === '4';\n is2x = columnCount === '2';\n }\n\n return { is369, is4x, is2x, isOther };\n};\n","import { useEffect, useState } from 'react';\nimport cx from 'classnames';\nimport { DialogWithContent } from '@dx-ui/osc-marketing';\nimport { BrandTextBody } from '@dx-ui/osc-brand-text-body';\nimport { BrandTextHeader } from '@dx-ui/osc-brand-text-header';\nimport { AnimateRevealItem } from '@dx-ui/osc-animate-reveal-item';\nimport DynamicGridItem, { type TDynamicGridItem } from './dynamic-grid-item';\nimport type { AspectRatio } from '@dx-ui/osc-responsive-image';\nimport { mapTextAlignToClassname } from '@dx-ui/osc-textual-block';\nimport { type BaseImageMetrics } from '@dx-ui/config-metrics';\nimport { getDynamicGridColumnCount } from './utils/dynamic-grid-column-count';\n\ntype ListItemButtonElement = HTMLButtonElement | null;\nexport type VariantTypes = 'card';\n\nexport type TDynamicGrid = {\n id: string;\n /** An array of TDynamicGridItem objects */\n items: TDynamicGridItem[];\n /** The aspect ratio for the grid item images */\n imageAspectRatio: AspectRatio;\n tabletImageAspectRatio?: AspectRatio;\n mobileImageAspectRatio?: AspectRatio;\n /** The aspect ratio for the modal item image */\n modalImageAspectRatio?: AspectRatio;\n /** If true then vertically stack items for mobile, instead of horitzontally scrolling */\n isMobileVerticalStack?: boolean;\n /** Headline for Dynamic Grid */\n listHeadline?: string;\n /** Content as a component, such as Markdown, or text */\n listDescription?: JSX.Element | string;\n /** Text alignment for CMS controls */\n textAlign?: 'left' | 'right' | 'center';\n /** Add Tailwind classes to root element */\n className?: string;\n /** Dialog component requires ariaLabel */\n ariaLabel?: string;\n /** Callback handler for Read Message event */\n onViewItem?: (id: string) => void;\n /** Callback for modal state opening or closing */\n onToggleModal?: (isOpen: boolean) => void;\n /** Theme variable for dark/light theming */\n brandComponentTheme?: CmsBrandComponentTheme;\n /** Enables reveal animations */\n isAnimated?: boolean;\n /** New card variant added for Enterprise refresh */\n variant?: VariantTypes;\n metrics?: Partial<BaseImageMetrics>;\n /** Choose the number of grid columns */\n columnCount?: 'auto' | '2' | '3' | '4';\n};\n\n/**\n * DynamicGrid creates a grid of items with an image and title that opens a modal when clicked. Grids with either be a 3x grid (item counts of 3, 5, 6, or 9) or a 4x grid (item counts of 4, 7, or 8).\n * Recommended grid item counts of 3 to 9.\n */\nexport const DynamicGrid: React.FC<TDynamicGrid> = ({\n imageAspectRatio,\n tabletImageAspectRatio,\n mobileImageAspectRatio,\n modalImageAspectRatio = '16:9',\n items: baseItems = [],\n isMobileVerticalStack = false,\n className = '',\n listHeadline,\n listDescription,\n textAlign = 'left',\n onViewItem,\n onToggleModal,\n isAnimated = false,\n id: dynamicGridId,\n brandComponentTheme,\n variant,\n metrics,\n columnCount = 'auto',\n ...props\n}) => {\n const [activeId, updateActiveId] = useState('');\n const [isModalOpen, updateModalOpen] = useState(false);\n const [snapClasses, setSnapClasses] = useState('');\n const [activeListItem, setActiveListItem] = useState<ListItemButtonElement>();\n const items = baseItems?.filter((item) => Boolean(item));\n const count = items.length;\n\n useEffect(() => {\n // delay appying the snap classes, otherwise snapping can occur before the user scrolls\n const timer = setTimeout(() => setSnapClasses('snap snap-x snap-px-4 snap-mandatory'), 500);\n return () => clearTimeout(timer);\n }, []);\n\n if (!count) {\n return null;\n }\n\n const openModal = (id: string, el: ListItemButtonElement) => {\n updateActiveId(id);\n el && setActiveListItem(el);\n onToggleModal && onToggleModal(true);\n onViewItem && onViewItem(id);\n updateModalOpen(true);\n };\n const closeModal = () => {\n onToggleModal && onToggleModal(false);\n updateModalOpen(false);\n activeListItem && setTimeout(() => activeListItem.focus());\n };\n const activeItem: TDynamicGridItem | undefined =\n items?.find((i) => i.id === activeId) || items?.[0];\n\n const { is369, is4x, is2x, isOther } = getDynamicGridColumnCount(columnCount, count);\n const isDark = brandComponentTheme === 'dark';\n const isLight = brandComponentTheme === 'light';\n\n return (\n <section>\n <div\n className={cx('container overflow-hidden sm:pe-2 md:py-8 lg:py-10', {\n [className]: !!className,\n })}\n data-testid=\"dynamicGridWrap\"\n id={dynamicGridId}\n >\n {listHeadline && (\n <BrandTextHeader\n className={cx('dynamic-grid-header', mapTextAlignToClassname(textAlign), {\n '!text-text-inverse': isDark,\n '!dynamic-grid-header-light': isLight,\n })}\n >\n {listHeadline}\n </BrandTextHeader>\n )}\n {listDescription && (\n <BrandTextBody\n className={cx(\n 'dynamic-grid-description pe-8 sm:pe-6',\n mapTextAlignToClassname(textAlign),\n {\n 'text-text-inverse': isDark,\n '!dynamic-grid-descrption-light': isLight,\n }\n )}\n brandComponentTheme={brandComponentTheme}\n {...props}\n >\n {listDescription}\n </BrandTextBody>\n )}\n\n <div className=\"size-full\">\n <div\n data-testid=\"dynamicGridItemsWrap\"\n className={cx(\n snapClasses,\n 'grid-wrapper -mx-4 grid gap-4 overflow-hidden overflow-x-visible px-4 py-2 md:-mx-8 md:pe-1 md:ps-8',\n `auto-cols-[85%] sm:me-0 sm:w-full sm:grid-flow-row sm:overflow-x-hidden sm:pe-0`,\n 'scroll-smooth',\n isMobileVerticalStack ? 'grid-flow-row grid-cols-1' : 'grid-flow-col',\n is369 ? 'sm:grid-cols-3' : null,\n is2x ? 'sm:grid-cols-2' : null,\n is4x ? 'sm:grid-cols-2 lg:grid-cols-4' : null,\n isOther ? 'sm:grid-cols-2 lg:grid-cols-4' : null\n )}\n tabIndex={-1}\n >\n {items.map((item: TDynamicGridItem, index) => (\n <AnimateRevealItem\n key={`dynamic-grid-item${item.id}`}\n delay={is369 ? 100 + (index % 3) * 100 : 100 + (index % 4) * 100}\n isAnimated={isAnimated}\n className={cx({\n 'max-sm:translate-y-0 max-sm:opacity-100': !isMobileVerticalStack,\n })}\n >\n <DynamicGridItem\n imageAspectRatio={imageAspectRatio}\n tabletImageAspectRatio={tabletImageAspectRatio}\n mobileImageAspectRatio={mobileImageAspectRatio}\n className=\"w-full sm:w-full\"\n onItemClick={openModal}\n variant={variant}\n brandComponentTheme={brandComponentTheme}\n listHeadline={listHeadline}\n position={index + 1}\n count={count}\n metrics={metrics}\n {...item}\n />\n </AnimateRevealItem>\n ))}\n <div className=\"w-4 sm:hidden md:ms-6\" />\n </div>\n </div>\n\n <DialogWithContent\n id=\"dynamicGridModalOverlay\"\n ariaLabel={activeItem?.itemTitle ?? ''}\n containerAspectRatio={modalImageAspectRatio}\n imageAspectRatio={modalImageAspectRatio}\n imageUrl={activeItem?.modalImageUrl}\n imageAltText={activeItem?.imageAltTxt}\n title={activeItem?.itemTitle}\n headline={activeItem?.headline}\n content={activeItem?.shortDescription}\n link={activeItem?.link}\n isOpen={isModalOpen}\n onClose={closeModal}\n cmsTranslationClasses={activeItem?.cmsTranslationClasses}\n {...props}\n />\n </div>\n </section>\n );\n};\n\nexport default DynamicGrid;\n","/* eslint-disable react/jsx-no-useless-fragment */\nimport { useRef } from 'react';\nimport cx from 'classnames';\nimport { getIsReducedMotion } from '@dx-ui/utilities-accessibility';\nimport { BrandTextBody } from '@dx-ui/osc-brand-text-body';\nimport { useIntersectionObserver } from 'usehooks-ts';\nimport { DynamicImage } from './dynamic-grid-image';\nimport { Link } from '@dx-ui/osc-link';\nimport type { AspectRatio } from '@dx-ui/osc-responsive-image';\nimport type { TDynamicGridItem } from './dynamic-grid-item';\nimport { useRect } from '@dx-ui/utilities-use-rect';\nimport { HeadingLevel } from '@dx-ui/osc-heading-level';\nimport {\n type BaseImageMetrics,\n ANALYTICS_GLOBAL_CLICK_EVENT,\n ImageFunction,\n trackEvent,\n} from '@dx-ui/config-metrics';\nimport { generateDynamicGridMetrics } from './utils/dynamic-grid-analytics';\n\ntype TDynamicGridItemWithoutListeners = Omit<TDynamicGridItem, 'onItemClick' | 'onClickLink'>;\n\nexport type TDynamicGridItemWOM = TDynamicGridItemWithoutListeners & {\n /** fade-in text animations */\n isAnimated?: boolean;\n /** theme for the component `dark` or `light` */\n brandComponentTheme?: CmsBrandComponentTheme;\n metrics?: Partial<BaseImageMetrics>;\n};\n\nexport type TDynamicGridItemAndAspectRatiosWOM = TDynamicGridItemWOM & {\n /** The aspect ratio for the grid item images */\n imageAspectRatio: AspectRatio;\n tabletImageAspectRatio?: AspectRatio;\n mobileImageAspectRatio?: AspectRatio;\n};\n\nexport const DocsTDynamicGridItemWOM: React.FC<\n React.PropsWithChildren<TDynamicGridItemAndAspectRatiosWOM>\n> = () => null;\n\nconst DynamicGridItemWOM: React.FC<TDynamicGridItemAndAspectRatiosWOM> = (item) => {\n const ref = useRef<React.ElementRef<'div'>>(null);\n const rect = useRect({ ref });\n const gridItemRef = useRef<React.ElementRef<'div'>>(null);\n\n const {\n id,\n imageUrl,\n tabletImageUrl,\n mobileImageUrl,\n imageAltTxt,\n headline,\n link,\n captionData,\n brandComponentTheme,\n shortDescription,\n isAnimated,\n count,\n listHeadline,\n position,\n metrics,\n } = item;\n\n const aspectRatio = item?.imageAspectRatio;\n const tabletAspectRatio = item?.tabletImageAspectRatio;\n const mobileAspectRatio = item?.mobileImageAspectRatio;\n const { ref: intersectionRef } = useIntersectionObserver({\n threshold: [1],\n freezeOnceVisible: true,\n });\n const observedWrapper = !getIsReducedMotion() && isAnimated ? intersectionRef : null;\n const headlineId = `headline${id}`;\n const isDark = brandComponentTheme === 'dark';\n const isLight = brandComponentTheme === 'light';\n\n const onClick = () => {\n trackEvent(\n ANALYTICS_GLOBAL_CLICK_EVENT,\n generateDynamicGridMetrics({\n position: position || 0,\n count,\n itemTitle: headline,\n headline: listHeadline,\n imageFunction: ImageFunction.Link,\n metrics,\n })\n );\n };\n\n const handleLinkFocus = () => {\n // Scroll to the element when focused\n // The setTimeout is needed for this to work in Safari browser\n setTimeout(() => {\n gridItemRef.current?.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'center',\n });\n }, 10);\n };\n\n return (\n <>\n {item ? (\n <div\n className={cx(\n 'group relative flex h-full flex-col justify-between pb-5',\n item.cmsTranslationClasses\n )}\n data-testid={`dynamicgrid-wom-item-${id}`}\n key={id}\n ref={gridItemRef}\n >\n <div className=\"flex flex-col\">\n {headline && (\n <HeadingLevel\n headingLevelFallback={3}\n id={headlineId}\n data-testid={`dynamicgrid-wom-item-head-${id}`}\n data-osc-product=\"dynamic-grid-wom-item-headline\"\n className={cx('dynamic-grid-item-wom-header my-2', {\n '!text-text-inverse': isDark,\n 'dynamic-grid-item-wom-header-light': isLight,\n 'dynamic-grid-item-wom-header-no-desc': !shortDescription,\n })}\n >\n {headline}\n </HeadingLevel>\n )}\n\n <div ref={ref} className=\"order-first\">\n {imageUrl && (\n <DynamicImage\n id={id}\n imageUrl={imageUrl}\n altText={imageAltTxt}\n aspectRatio={aspectRatio}\n tabletAspectRatio={tabletAspectRatio}\n mobileAspectRatio={mobileAspectRatio}\n tabletImageUrl={tabletImageUrl}\n mobileImageUrl={mobileImageUrl}\n width={rect?.width ?? 0}\n captionData={captionData}\n className=\"brand-gu:group-hover:scale-110 brand-gu:group-hover:opacity-80 image-corner-radius duration-300 ease-in-out\"\n />\n )}\n </div>\n <div className=\"mb-2\" ref={observedWrapper}>\n <div className=\"relative z-10 pb-4\">\n <BrandTextBody\n brandComponentTheme={brandComponentTheme}\n className=\"!py-0 sm:!text-base lg:!text-lg\"\n >\n {shortDescription || ''}\n </BrandTextBody>\n </div>\n </div>\n </div>\n\n {link?.label && link?.url ? (\n <Link\n className=\"dynamic-grid-item-wom-link-text\"\n anchorClassName={cx(\n \"inline-block decoration-2 after:absolute after:inset-0 after:z-0 after:content-[''] hover:decoration-4 focus:decoration-4\",\n 'dynamic-grid-item-wom-link-anchor',\n link.anchorClassName,\n {\n '!text-text-inverse hover:!text-text-inverse': isDark,\n 'dynamic-grid-item-wom-link-anchor-light': isLight,\n 'dynamic-grid-item-wom-link-anchor-default': !isLight && !isDark,\n }\n )}\n isNewWindow={link?.isNewWindow || false}\n url={link?.url}\n showNewWindowIcon={link?.isNewWindow || false}\n underline={false}\n data-testid={`dynamicgrid-wom-item-link-${id}`}\n cidParams={link?.cidParams}\n data-conductrics-goal={link.experimentationConfiguration?.goal}\n data-conductrics-value={link.experimentationConfiguration?.value}\n onFocus={handleLinkFocus}\n onClick={(e) => {\n if (link?.onClick) {\n link.onClick?.(e);\n }\n onClick();\n }}\n >\n <div className=\"relative inline\">\n {link.label}\n <div\n className={cx(\n 'absolute h-px w-full origin-bottom-left scale-x-100 duration-[250ms] ease-out group-hover:scale-x-0 group-hover:ease-out',\n 'dynamic-grid-item-wom-link-label',\n {\n 'dynamic-grid-item-wom-link-label-dark': isDark,\n }\n )}\n />\n </div>\n </Link>\n ) : null}\n {item.cmsDocumentControl}\n </div>\n ) : null}\n </>\n );\n};\n\nexport { DynamicGridItemWOM };\nexport default DynamicGridItemWOM;\n","/**\n * Shamelessly copied from https://www.robinwieruch.de/react-custom-hook-check-if-overflow/\n * with slight modifications.\n */\n\nimport { useLayoutEffect, useState } from 'react';\n\nexport const useHasOverflow = <T extends HTMLElement>(\n ref: React.RefObject<T>,\n onlyHorizontal = false,\n onlyVertical = false\n) => {\n const [isOverflow, setIsOverflow] = useState<boolean | undefined>(undefined);\n\n useLayoutEffect(() => {\n const { current } = ref;\n\n if (!current) return;\n\n const trigger = () => {\n const hasOverflowHorizontal =\n current?.scrollWidth && current?.clientWidth\n ? current.scrollWidth > current.clientWidth\n : false;\n\n const hasOverflowVertical =\n current?.scrollHeight && current?.clientHeight\n ? current.scrollHeight > current.clientHeight\n : false;\n\n if (onlyHorizontal) {\n setIsOverflow(hasOverflowHorizontal);\n return;\n }\n\n if (onlyVertical) {\n setIsOverflow(hasOverflowVertical);\n return;\n }\n\n setIsOverflow(hasOverflowHorizontal || hasOverflowVertical);\n };\n\n if ('ResizeObserver' in window) {\n new ResizeObserver(trigger).observe(current);\n }\n\n trigger();\n }, [onlyHorizontal, onlyVertical, ref]);\n\n return isOverflow;\n};\n","export * from './use-has-overflow';\n","export * from './lib';\n","import { useId, useRef } from 'react';\nimport type * as React from 'react';\nimport cx from 'classnames';\nimport { useIntersectionObserver } from 'usehooks-ts';\nimport { getIsReducedMotion } from '@dx-ui/utilities-accessibility';\nimport { BrandTextBody } from '@dx-ui/osc-brand-text-body';\nimport { BrandTextHeader } from '@dx-ui/osc-brand-text-header';\nimport { BrandLink } from '@dx-ui/osc-brand-buttons';\nimport type { TDynamicGrid } from './dynamic-grid';\nimport type { Link } from '@dx-ui/osc-link';\nimport DynamicGridItemWOM, { type TDynamicGridItemWOM } from './dynamic-grid-item-wom';\nimport { mapTextAlignToClassname } from '@dx-ui/osc-textual-block';\nimport { HeadingLevelProvider } from '@dx-ui/osc-heading-level';\nimport { useHasOverflow } from '@dx-ui/utilities-use-has-overflow';\nimport type { BaseImageMetrics } from '@dx-ui/config-metrics';\nimport { getDynamicGridColumnCount } from './utils/dynamic-grid-column-count';\n\ntype TDynamicGridWithoutListeners = Omit<TDynamicGrid, 'onViewItem' | 'onToggleModal'>;\n\nexport type TDynamicGridWOM = TDynamicGridWithoutListeners & {\n /** An array of TDynamicGridItem objects */\n items: TDynamicGridItemWOM[];\n /** */\n listSubheading?: string;\n /** Link CTA appears below component */\n link?: Link & { experimentationConfiguration?: CmsExperimentationConfiguration };\n /** */\n wrapperClassName?: string;\n /** When passed, appends metrics object to generateDynamicGrids in dynamic-grids-item-wom */\n metrics?: Partial<BaseImageMetrics>;\n /** Choose the number of grid columns */\n columnCount?: 'auto' | '2' | '3' | '4';\n};\n\nexport const DocsTDynamicGridWOM: React.FC<React.PropsWithChildren<TDynamicGridWOM>> = () => null;\n\n/**\n * Dynamic Grid With-Out-Modal (WOM) creates a grid of images with content underneath in either a 3x grid (item counts of 3, 5, 6, or 9) or a 4x grid (item counts of 4, 7, or 8).\n * Recommended grid item counts of 3 to 9.\n */\nexport const DynamicGridWOM: React.FC<TDynamicGridWOM & { brandCode?: string }> = ({\n imageAspectRatio,\n tabletImageAspectRatio,\n mobileImageAspectRatio,\n items: baseItems = [],\n isMobileVerticalStack = false,\n className = '',\n listHeadline,\n listSubheading,\n listDescription,\n textAlign = 'left',\n link,\n id,\n isAnimated = false,\n wrapperClassName,\n brandComponentTheme,\n metrics,\n columnCount = 'auto',\n ...props\n}) => {\n const { ref, isIntersecting: inView } = useIntersectionObserver({\n threshold: [0.15],\n freezeOnceVisible: true,\n });\n const observedWrapper = !getIsReducedMotion() && isAnimated ? ref : null;\n const items = baseItems?.filter((item) => Boolean(item));\n const hasLinks = items.some((item) => item.link);\n const count = items.length;\n const headerId = useId();\n\n const scrollRef = useRef<HTMLDivElement>(null);\n const hasOverflow = useHasOverflow(scrollRef);\n const scrollSectionIsFocusable = hasOverflow && !hasLinks;\n\n if (!count) {\n return null;\n }\n\n const { is369, is4x, is2x, isOther } = getDynamicGridColumnCount(columnCount, count);\n const isDark = brandComponentTheme === 'dark';\n const isLight = brandComponentTheme === 'light';\n\n return (\n <section ref={observedWrapper}>\n <div\n className={\n wrapperClassName ||\n cx('brand-wa:py-16 brand-wa:xl:py-20 container overflow-hidden py-8 sm:pe-2 xl:py-12', {\n [className]: !!className,\n })\n }\n data-testid=\"dynamicGridWOM\"\n id={id}\n >\n <div className=\"dynamic-grid-wom-headline-wrapper\">\n <div className=\"dynamic-grid-wom-headline\">\n {listHeadline ? (\n <BrandTextHeader\n className={cx(mapTextAlignToClassname(textAlign), 'dynamic-grid-wom-header', {\n 'duration-1000 ease-in-out opacity-0 motion-reduce:transition-none motion-reduce:opacity-100':\n isAnimated,\n 'translate-y-4': !inView && isAnimated,\n 'opacity-100 translate-y-0': inView && isAnimated,\n '!text-text-inverse': isDark,\n '!dynamic-grid-wom-header-light': isLight,\n })}\n id={`dynamic-grid-heading-${headerId}`}\n >\n {listHeadline}\n </BrandTextHeader>\n ) : null}\n\n {listSubheading ? (\n <span\n className={cx(mapTextAlignToClassname(textAlign), 'dynamic-grid-wom-subheader', {\n 'duration-1000 ease-in-out opacity-0 motion-reduce:transition-none motion-reduce:opacity-100':\n isAnimated,\n 'translate-y-4': !inView && isAnimated,\n 'delay-150 opacity-100 translate-y-0': inView && isAnimated,\n 'text-text-inverse': isDark,\n 'dynamic-grid-wom-header-light': isLight,\n })}\n >\n {listSubheading}\n </span>\n ) : null}\n </div>\n\n {listDescription ? (\n <BrandTextBody\n className={cx(\n `dynamic-grid-wom-description pe-8 sm:pe-6`,\n mapTextAlignToClassname(textAlign),\n {\n 'duration-1000 ease-in-out opacity-0 motion-reduce:transition-none motion-reduce:opacity-100':\n isAnimated,\n 'translate-y-4': !inView && isAnimated,\n 'delay-300 opacity-100 translate-y-0': inView && isAnimated,\n 'text-text-inverse': isDark,\n }\n )}\n {...props}\n brandComponentTheme={brandComponentTheme}\n >\n {listDescription}\n </BrandTextBody>\n ) : null}\n </div>\n\n <div className=\"dynamic-grid-wom-grid-wrapper\">\n <div\n data-testid=\"dynamicGridItemsWrap\"\n className={cx(\n 'grid-wrapper -mx-4 grid gap-4 overflow-x-auto overflow-y-hidden px-4 py-2 md:-mx-8 md:ps-8',\n 'auto-cols-[85%] sm:me-0 sm:w-full sm:grid-flow-row sm:overflow-x-hidden sm:pe-0',\n {\n 'grid-flow-row grid-cols-1': isMobileVerticalStack,\n 'grid-flow-col': !isMobileVerticalStack,\n 'sm:grid-cols-3': is369,\n 'sm:grid-cols-2': is2x,\n 'sm:grid-cols-2 lg:grid-cols-4': is4x || isOther,\n 'text-text-inverse': isDark,\n 'dynamic-grid-wom-grid-wrap-light': isLight,\n }\n )}\n tabIndex={scrollSectionIsFocusable ? 0 : -1}\n aria-labelledby={`dynamic-grid-heading-${headerId}`}\n ref={scrollRef}\n >\n <HeadingLevelProvider shouldIncreaseLevel={!!listHeadline}>\n {items.map((item, itemIndex) => (\n <DynamicGridItemWOM\n key={`dynamic-grid-item-wom${item.id}`}\n isAnimated={isAnimated}\n brandComponentTheme={brandComponentTheme}\n imageAspectRatio={imageAspectRatio}\n tabletImageAspectRatio={tabletImageAspectRatio}\n mobileImageAspectRatio={mobileImageAspectRatio}\n position={itemIndex + 1}\n listHeadline={listHeadline}\n count={count}\n metrics={metrics}\n {...item}\n />\n ))}\n </HeadingLevelProvider>\n </div>\n </div>\n {link?.adaDescription && link?.url && link?.label ? (\n <div className=\"relative flex w-full justify-center\">\n <BrandLink\n label={link.label}\n isNewWindow={link.isNewWindow}\n showNewWindowIcon={link.isNewWindow}\n url={link.url}\n brandComponentTheme={brandComponentTheme}\n data-conductrics-goal={link.experimentationConfiguration?.goal}\n data-conductrics-value={link.experimentationConfiguration?.value}\n />\n </div>\n ) : null}\n </div>\n </section>\n );\n};\n\nexport default DynamicGridWOM;\n","export * from './dynamic-grid';\nexport * from './dynamic-grid-wom';\nexport * from './dynamic-grid-item';\nexport * from './dynamic-grid-image';\nexport * from './dynamic-grid-item-wom';\nexport * from './utils/dynamic-grid-analytics';\nexport * from './utils/dynamic-grid-column-count';\nexport * from './types/dynamic-grid-analytics';\n","export * from './lib';\n","import * as React from 'react';\n\nimport cx from 'classnames';\n\nexport function mapTextAlignToClassname(textAlign: CmsAlignContent) {\n return {\n 'text-right': textAlign === 'right',\n 'text-left': textAlign === 'left',\n 'text-center': textAlign === 'center',\n };\n}\n\nexport function mapTextAlignToFlexClassname(textAlign: CmsAlignContent) {\n return {\n 'justify-start': textAlign === 'left',\n 'justify-end': textAlign === 'right',\n 'justify-center': textAlign === 'center',\n };\n}\n\nexport type TextualBlockProps = {\n children: React.ReactNode;\n brandComponentTheme?: CmsBrandComponentTheme;\n textAlign: 'left' | 'right' | 'center';\n hasBorderTrim: boolean;\n};\n\nexport const TextualBlock = React.forwardRef<HTMLDivElement, TextualBlockProps>(\n function TextualBlock(\n { children, brandComponentTheme, textAlign, hasBorderTrim }: TextualBlockProps,\n ref\n ) {\n const isDark = brandComponentTheme === 'dark';\n const isLight = brandComponentTheme === 'light';\n\n return (\n <div\n className={cx(\n `brand-qq:bg-[url('/modules/assets/images/curio-bg1.png')] relative bg-cover bg-no-repeat`,\n {\n 'bg-bg-dark': isDark,\n 'bg-bg-light': isLight,\n }\n )}\n data-testid=\"textBlockBackgroundClassTest\"\n >\n <div\n className={cx(\n `brand-wa:py-16 brand-wa:xl:py-20 container py-8 xl:py-12`,\n mapTextAlignToClassname(textAlign)\n )}\n data-testid=\"textBlockContainer\"\n ref={ref}\n >\n <div\n className={cx('brand-qq:py-24', {\n 'outline outline-primary outline-1 px-10 py-6': hasBorderTrim,\n '!outline-bg brand-ou:!outline-secondary': isDark,\n 'brand-qq:outline-bg brand-ht:outline-bg': isLight, //remove brand-qq:outline-bg once background image work is complete\n })}\n >\n {children}\n </div>\n </div>\n </div>\n );\n }\n);\n\nexport function makeHeadingOverrides({\n brandComponentTheme,\n isAnimated,\n isInView,\n textAlign,\n}: {\n brandComponentTheme?: CmsBrandComponentTheme;\n textAlign: 'left' | 'right' | 'center';\n isAnimated: boolean;\n isInView: boolean;\n}): Record<'h1' | 'h2' | 'h3' | 'span', { props: { className: string } }> {\n const isDark = brandComponentTheme === 'dark';\n const isLight = brandComponentTheme === 'light';\n\n const headingStyles = cx(\n 'brand-qq:text-4xl brand-qq:tracking-wide brand-qq:px-12 brand-qq:pb-4 brand-qq:md:text-6xl brand-qq:md:px-0 brand-wa:uppercase brand-wa:font-sans brand-wa:font-light brand-wa:text-text',\n mapTextAlignToClassname(textAlign),\n {\n 'duration-1000 ease-in-out opacity-0 motion-reduce:transition-none motion-reduce:opacity-100':\n isAnimated,\n 'translate-y-4': !isInView && isAnimated,\n 'opacity-100 translate-y-0': isInView && isAnimated,\n '!text-text-inverse brand-wa:!text-text-inverse': isDark,\n 'brand-ht:!text-text-inverse': isLight,\n },\n 'font-headline text-primary lg:mb-2'\n );\n\n return {\n h1: {\n props: {\n className: cx(headingStyles, 'heading-2xl lg:heading-5xl lg:mb-2'),\n },\n },\n h2: {\n props: {\n className: cx(headingStyles, 'heading-xl lg:heading-2xl lg:mb-2'),\n },\n },\n h3: {\n props: {\n className: cx(headingStyles, 'heading-lg lg:heading-xl lg:mb-2'),\n },\n },\n span: {\n props: {\n className: 'text-text py-2 sm:heading-lg lg:heading-xl block',\n },\n },\n };\n}\n\nexport type TextualDescriptionBlockProps = {\n children: React.ReactNode;\n brandComponentTheme?: CmsBrandComponentTheme;\n textAlign: 'left' | 'right' | 'center';\n isInView: boolean;\n isAnimated: boolean;\n};\n\nexport function makeDescriptionClassName({\n brandComponentTheme,\n textAlign,\n isInView,\n isAnimated,\n}: Omit<TextualDescriptionBlockProps, 'children'>) {\n const isDark = brandComponentTheme === 'dark';\n const isLight = brandComponentTheme === 'light';\n\n return cx(\n 'brand-qq:text-xl brand-qq:text-primary brand-qq:tracking-wider brand-qq:pb-6 brand-qq:px-20 brand-qq:font-serif brand-qq:font-medium brand-qq:md:px-0',\n mapTextAlignToClassname(textAlign),\n {\n 'duration-1000 ease-in-out opacity-0 motion-reduce:transition-none motion-reduce:opacity-100':\n isAnimated,\n 'translate-y-4': !isInView && isAnimated,\n 'opacity-100 translate-y-0': isInView && isAnimated,\n 'text-text-inverse brand-qq:text-text-inverse': isDark,\n 'brand-ht:text-text-inverse': isLight,\n 'brand-hp:text-brand': brandComponentTheme !== 'dark',\n },\n 'brand-wa:font-serif brand-gi:font-serif brand-gi:font-semibold py-2 sm:text-lg lg:text-xl'\n );\n}\n\nexport function TextualDescriptionBlock({\n children,\n brandComponentTheme,\n textAlign,\n isInView,\n isAnimated,\n}: TextualDescriptionBlockProps) {\n const className = makeDescriptionClassName({\n brandComponentTheme,\n textAlign,\n isInView,\n isAnimated,\n });\n\n return (\n <div data-testid=\"textBlockBody\" className={className}>\n {children}\n </div>\n );\n}\n\nexport type TextualOrderedListBlockProps = {\n children: React.ReactNode;\n brandComponentTheme?: CmsBrandComponentTheme;\n textAlign: 'left' | 'right' | 'center';\n isInView: boolean;\n isAnimated: boolean;\n};\n\nexport function makeOrderedListClassName({\n isAnimated,\n isInView,\n brandComponentTheme,\n}: Omit<TextualOrderedListBlockProps, 'children' | 'textAlign'>) {\n const isDark = brandComponentTheme === 'dark';\n const isLight = brandComponentTheme === 'light';\n\n return cx('list-outside list-decimal py-2 ps-4 text-left', {\n 'duration-1000 ease-in-out opacity-0 motion-reduce:transition-none motion-reduce:opacity-100':\n isAnimated,\n 'translate-y-4': !isInView && isAnimated,\n 'opacity-100 translate-y-0': isInView && isAnimated,\n 'text-text-inverse': isDark,\n 'brand-ht:text-text-inverse': isLight,\n });\n}\n\nexport function TextualOrderedListBlock({\n children,\n textAlign,\n isAnimated,\n isInView,\n brandComponentTheme,\n}: TextualOrderedListBlockProps) {\n const className = makeOrderedListClassName({\n isAnimated,\n isInView,\n brandComponentTheme,\n });\n\n return (\n <div className={cx('flex items-center', mapTextAlignToFlexClassname(textAlign))}>\n <ul className={className}>{children}</ul>\n </div>\n );\n}\n\nexport type TextualOrderedListItemBlockProps = {\n children: React.ReactNode;\n brandComponentTheme?: CmsBrandComponentTheme;\n};\n\nexport function makeOrderedListItemClassName({\n brandComponentTheme,\n}: Omit<TextualOrderedListItemBlockProps, 'children'>) {\n const isDark = brandComponentTheme === 'dark';\n const isLight = brandComponentTheme === 'light';\n\n return cx(\n {\n 'text-text-inverse': isDark,\n 'brand-ht:text-text-inverse': isLight,\n },\n 'brand-wa:font-serif sm:text-lg lg:text-xl',\n {\n 'brand-hp:text-brand': brandComponentTheme !== 'dark',\n }\n );\n}\n\nexport function TextualOrderedListItemBlock({\n children,\n brandComponentTheme,\n}: TextualOrderedListItemBlockProps) {\n const className = makeOrderedListItemClassName({ brandComponentTheme });\n\n return (\n <li>\n <div data-testid=\"textBlockBody\" className={className}>\n {children}\n </div>\n </li>\n );\n}\n\nexport type TextualUnorderedListBlockProps = {\n children: React.ReactNode;\n brandComponentTheme?: CmsBrandComponentTheme;\n textAlign: 'left' | 'right' | 'center';\n isInView: boolean;\n isAnimated: boolean;\n};\n\nexport function makeUnorderedListClassName({\n isAnimated,\n isInView,\n brandComponentTheme,\n}: Omit<TextualUnorderedListBlockProps, 'children' | 'textAlign'>) {\n const isDark = brandComponentTheme === 'dark';\n const isLight = brandComponentTheme === 'light';\n\n return cx('list-outside list-disc py-2 ps-5 text-left', {\n 'duration-1000 ease-in-out opacity-0 motion-reduce:transition-none motion-reduce:opacity-100':\n isAnimated,\n 'translate-y-4': !isInView && isAnimated,\n 'opacity-100 translate-y-0': isInView && isAnimated,\n 'text-text-inverse': isDark,\n 'brand-ht:text-text-inverse': isLight,\n });\n}\n\nexport function TextualUnorderedListBlock({\n children,\n textAlign,\n isAnimated,\n isInView,\n brandComponentTheme,\n}: TextualUnorderedListBlockProps) {\n const className = makeUnorderedListClassName({\n isAnimated,\n isInView,\n brandComponentTheme,\n });\n\n return (\n <div className={cx('flex items-center', mapTextAlignToFlexClassname(textAlign))}>\n <ul className={className}>{children}</ul>\n </div>\n );\n}\n\nexport type TextualUnorderedListItemBlockProps = {\n children: React.ReactNode;\n brandComponentTheme?: CmsBrandComponentTheme;\n};\nexport function TextualUnorderedListItemBlock({\n children,\n brandComponentTheme,\n}: TextualUnorderedListItemBlockProps) {\n const isDark = brandComponentTheme === 'dark';\n const isLight = brandComponentTheme === 'light';\n\n return (\n <li>\n <div\n data-testid=\"textBlockBody\"\n className={cx(\n {\n 'text-text-inverse': isDark,\n 'brand-ht:text-text-inverse': isLight,\n },\n 'brand-wa:font-serif brand-gi:font-serif sm:text-lg lg:text-xl',\n {\n 'brand-hp:text-brand': brandComponentTheme !== 'dark',\n }\n )}\n >\n {children}\n </div>\n </li>\n );\n}\n\nexport type TextualBlockLinkProps = React.HTMLAttributes<HTMLAnchorElement> & {\n brandComponentTheme?: CmsBrandComponentTheme;\n};\n\nexport function makeLinkClassName({ brandComponentTheme }: TextualBlockLinkProps) {\n return cx('underline', {\n 'text-text-inverse': brandComponentTheme === 'dark',\n 'text-primary hover:text-primary-alt brand-ht:text-text-inverse brand-ht:hover:text-text-inverse':\n brandComponentTheme === 'light',\n 'text-primary hover:text-primary-alt ':\n brandComponentTheme !== 'light' && brandComponentTheme !== 'dark',\n });\n}\n\nexport function TextualBlockLink({ brandComponentTheme, ...props }: TextualBlockLinkProps) {\n const className = makeLinkClassName({ brandComponentTheme });\n return <a {...props} target=\"_blank\" rel=\"noopener noreferrer\" className={className} />;\n}\n","export * from './textual-block';\n","export * from './lib';\n"],"names":["AnimateRevealItem","children","delay","animationType","isAnimatedProp","isAnimated","className","isReducedMotion","getIsReducedMotion","useIntersectionObserver","threshold","freezeOnceVisible","ref","isIntersecting","intersectionRef","clipPathValue","inView","div","cx","data-testid","style","transitionDelay","clipPath","isFadeInUp","transitionTimingFunction","DynamicImage","id","imageUrl","altText","aspectRatio","tabletAspectRatio","mobileAspectRatio","tabletImageUrl","mobileImageUrl","width","captionData","sharedProps","ResponsivePicture","ResponsiveImage","generateDynamicGridMetrics","metrics","position","count","itemTitle","ANALYTICS_NO_VALUE","headline","imageFunction","ImageFunction","Modal","click","clickID","ImageClickID","Img","osc","image","type","ImageType","Dynamic","function","DynamicGridCardHeader","ar","isDark","isLight","baseClasses","positionClasses","span","item","rect","DynamicGridItem","useRef","buttonRef","useRect","t","useTranslation","onItemClick","variant","brandComponentTheme","listHeadline","imageAspectRatio","tabletImageAspectRatio","mobileImageAspectRatio","isCardLayout","button","onClick","onClickGridItem","trackEvent","ANALYTICS_GLOBAL_CLICK_EVENT","current","cmsTranslationClasses","onFocus","handleOnFocus","setTimeout","scrollIntoView","behavior","block","inline","cmsDocumentControl","getDynamicGridColumnCount","columnCount","is369","is4x","is2x","isOther","activeItem","modalImageAspectRatio","baseItems","items","isMobileVerticalStack","listDescription","textAlign","onViewItem","onToggleModal","props","useState","activeId","updateActiveId","isModalOpen","updateModalOpen","snapClasses","setSnapClasses","activeListItem","setActiveListItem","filter","Boolean","length","useEffect","timer","clearTimeout","openModal","el","find","i","section","dynamicGridId","BrandTextHeader","mapTextAlignToClassname","BrandTextBody","tabIndex","map","index","DialogWithContent","ariaLabel","containerAspectRatio","modalImageUrl","imageAltText","imageAltTxt","title","content","shortDescription","link","isOpen","onClose","closeModal","focus","DynamicGridItemWOM","gridItemRef","observedWrapper","headlineId","Link","HeadingLevel","headingLevelFallback","data-osc-product","label","url","anchorClassName","isNewWindow","showNewWindowIcon","underline","cidParams","data-conductrics-goal","experimentationConfiguration","goal","data-conductrics-value","value","handleLinkFocus","e","useHasOverflow","onlyHorizontal","onlyVertical","undefined","isOverflow","setIsOverflow","useLayoutEffect","trigger","hasOverflowHorizontal","scrollWidth","clientWidth","hasOverflowVertical","scrollHeight","clientHeight","window","ResizeObserver","observe","listSubheading","wrapperClassName","hasLinks","some","headerId","useId","scrollRef","hasOverflow","scrollSectionIsFocusable","aria-labelledby","HeadingLevelProvider","shouldIncreaseLevel","itemIndex","adaDescription","BrandLink","mapTextAlignToFlexClassname","TextualBlock","React","hasBorderTrim","makeHeadingOverrides","isInView","headingStyles","h1","h2","h3","makeDescriptionClassName","TextualDescriptionBlock","makeOrderedListClassName","TextualOrderedListBlock","ul","makeOrderedListItemClassName","TextualOrderedListItemBlock","li","makeUnorderedListClassName","TextualUnorderedListBlock","TextualUnorderedListItemBlock","makeLinkClassName"],"sourceRoot":"","ignoreList":[]}