@dnanpm/ui-components 0.6.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/AccordionItem/AccordionItem.css +16 -16
- package/dist/components/AccordionItem/AccordionItem.module.css.cjs +11 -11
- package/dist/components/AccordionItem/AccordionItem.module.css.js +11 -11
- package/dist/components/Breadcrumb/Breadcrumb.css +9 -9
- package/dist/components/Breadcrumb/Breadcrumb.module.css.cjs +6 -6
- package/dist/components/Breadcrumb/Breadcrumb.module.css.js +6 -6
- package/dist/components/Button/Button.css +32 -30
- package/dist/components/Button/Button.module.css.cjs +11 -11
- package/dist/components/Button/Button.module.css.js +11 -11
- package/dist/components/ButtonCard/ButtonCard.cjs +105 -0
- package/dist/components/ButtonCard/ButtonCard.cjs.map +1 -0
- package/dist/components/ButtonCard/ButtonCard.css +167 -0
- package/dist/components/ButtonCard/ButtonCard.d.ts +3 -0
- package/dist/components/ButtonCard/ButtonCard.d.ts.map +1 -0
- package/dist/components/ButtonCard/ButtonCard.js +105 -0
- package/dist/components/ButtonCard/ButtonCard.js.map +1 -0
- package/dist/components/ButtonCard/ButtonCard.module.css.cjs +18 -0
- package/dist/components/ButtonCard/ButtonCard.module.css.cjs.map +1 -0
- package/dist/components/ButtonCard/ButtonCard.module.css.js +19 -0
- package/dist/components/ButtonCard/ButtonCard.module.css.js.map +1 -0
- package/dist/components/ButtonCard/ButtonCard.types.d.ts +103 -0
- package/dist/components/ButtonCard/ButtonCard.types.d.ts.map +1 -0
- package/dist/components/ButtonCard/index.d.ts +3 -0
- package/dist/components/ButtonCard/index.d.ts.map +1 -0
- package/dist/components/Drawer/Drawer.cjs +101 -0
- package/dist/components/Drawer/Drawer.cjs.map +1 -0
- package/dist/components/Drawer/Drawer.css +219 -0
- package/dist/components/Drawer/Drawer.d.ts +3 -0
- package/dist/components/Drawer/Drawer.d.ts.map +1 -0
- package/dist/components/Drawer/Drawer.js +101 -0
- package/dist/components/Drawer/Drawer.js.map +1 -0
- package/dist/components/Drawer/Drawer.module.css.cjs +37 -0
- package/dist/components/Drawer/Drawer.module.css.cjs.map +1 -0
- package/dist/components/Drawer/Drawer.module.css.js +37 -0
- package/dist/components/Drawer/Drawer.module.css.js.map +1 -0
- package/dist/components/Drawer/Drawer.types.d.ts +63 -0
- package/dist/components/Drawer/Drawer.types.d.ts.map +1 -0
- package/dist/components/Drawer/index.d.ts +3 -0
- package/dist/components/Drawer/index.d.ts.map +1 -0
- package/dist/components/Footer/Footer.cjs +272 -0
- package/dist/components/Footer/Footer.cjs.map +1 -0
- package/dist/components/Footer/Footer.css +473 -0
- package/dist/components/Footer/Footer.d.ts +3 -0
- package/dist/components/Footer/Footer.d.ts.map +1 -0
- package/dist/components/Footer/Footer.js +272 -0
- package/dist/components/Footer/Footer.js.map +1 -0
- package/dist/components/Footer/Footer.module.css.cjs +80 -0
- package/dist/components/Footer/Footer.module.css.cjs.map +1 -0
- package/dist/components/Footer/Footer.module.css.js +80 -0
- package/dist/components/Footer/Footer.module.css.js.map +1 -0
- package/dist/components/Footer/Footer.types.d.ts +128 -0
- package/dist/components/Footer/Footer.types.d.ts.map +1 -0
- package/dist/components/Footer/Footer.utils.cjs +41 -0
- package/dist/components/Footer/Footer.utils.cjs.map +1 -0
- package/dist/components/Footer/Footer.utils.d.ts +13 -0
- package/dist/components/Footer/Footer.utils.d.ts.map +1 -0
- package/dist/components/Footer/Footer.utils.js +41 -0
- package/dist/components/Footer/Footer.utils.js.map +1 -0
- package/dist/components/Footer/assets/app-store-badge.svg.cjs +4 -0
- package/dist/components/Footer/assets/app-store-badge.svg.cjs.map +1 -0
- package/dist/components/Footer/assets/app-store-badge.svg.js +5 -0
- package/dist/components/Footer/assets/app-store-badge.svg.js.map +1 -0
- package/dist/components/Footer/assets/google-play-badge.svg.cjs +4 -0
- package/dist/components/Footer/assets/google-play-badge.svg.cjs.map +1 -0
- package/dist/components/Footer/assets/google-play-badge.svg.js +5 -0
- package/dist/components/Footer/assets/google-play-badge.svg.js.map +1 -0
- package/dist/components/Footer/index.d.ts +3 -0
- package/dist/components/Footer/index.d.ts.map +1 -0
- package/dist/components/FunctionButton/FunctionButton.cjs +34 -0
- package/dist/components/FunctionButton/FunctionButton.cjs.map +1 -0
- package/dist/components/FunctionButton/FunctionButton.css +125 -0
- package/dist/components/FunctionButton/FunctionButton.d.ts +3 -0
- package/dist/components/FunctionButton/FunctionButton.d.ts.map +1 -0
- package/dist/components/FunctionButton/FunctionButton.js +34 -0
- package/dist/components/FunctionButton/FunctionButton.js.map +1 -0
- package/dist/components/FunctionButton/FunctionButton.module.css.cjs +11 -0
- package/dist/components/FunctionButton/FunctionButton.module.css.cjs.map +1 -0
- package/dist/components/FunctionButton/FunctionButton.module.css.js +12 -0
- package/dist/components/FunctionButton/FunctionButton.module.css.js.map +1 -0
- package/dist/components/FunctionButton/FunctionButton.types.d.ts +21 -0
- package/dist/components/FunctionButton/FunctionButton.types.d.ts.map +1 -0
- package/dist/components/FunctionButton/index.d.ts +3 -0
- package/dist/components/FunctionButton/index.d.ts.map +1 -0
- package/dist/components/Hero/Hero.cjs +44 -30
- package/dist/components/Hero/Hero.cjs.map +1 -1
- package/dist/components/Hero/Hero.css +89 -100
- package/dist/components/Hero/Hero.d.ts +1 -1
- package/dist/components/Hero/Hero.d.ts.map +1 -1
- package/dist/components/Hero/Hero.js +45 -31
- package/dist/components/Hero/Hero.js.map +1 -1
- package/dist/components/Hero/Hero.module.css.cjs +17 -20
- package/dist/components/Hero/Hero.module.css.cjs.map +1 -1
- package/dist/components/Hero/Hero.module.css.js +17 -20
- package/dist/components/Hero/Hero.module.css.js.map +1 -1
- package/dist/components/Hero/Hero.types.d.ts +8 -3
- package/dist/components/Hero/Hero.types.d.ts.map +1 -1
- package/dist/components/Hero/Hero.utils.cjs +5 -8
- package/dist/components/Hero/Hero.utils.cjs.map +1 -1
- package/dist/components/Hero/Hero.utils.d.ts +2 -2
- package/dist/components/Hero/Hero.utils.d.ts.map +1 -1
- package/dist/components/Hero/Hero.utils.js +5 -8
- package/dist/components/Hero/Hero.utils.js.map +1 -1
- package/dist/components/IconButton/IconButton.css +31 -32
- package/dist/components/IconButton/IconButton.module.css.cjs +9 -9
- package/dist/components/IconButton/IconButton.module.css.js +9 -9
- package/dist/components/MainNavigation/MainNavigation.cjs +1094 -0
- package/dist/components/MainNavigation/MainNavigation.cjs.map +1 -0
- package/dist/components/MainNavigation/MainNavigation.css +948 -0
- package/dist/components/MainNavigation/MainNavigation.d.ts +3 -0
- package/dist/components/MainNavigation/MainNavigation.d.ts.map +1 -0
- package/dist/components/MainNavigation/MainNavigation.js +1094 -0
- package/dist/components/MainNavigation/MainNavigation.js.map +1 -0
- package/dist/components/MainNavigation/MainNavigation.module.css.cjs +74 -0
- package/dist/components/MainNavigation/MainNavigation.module.css.cjs.map +1 -0
- package/dist/components/MainNavigation/MainNavigation.module.css.js +75 -0
- package/dist/components/MainNavigation/MainNavigation.module.css.js.map +1 -0
- package/dist/components/MainNavigation/MainNavigation.types.d.ts +149 -0
- package/dist/components/MainNavigation/MainNavigation.types.d.ts.map +1 -0
- package/dist/components/MainNavigation/MainNavigation.utils.cjs +168 -0
- package/dist/components/MainNavigation/MainNavigation.utils.cjs.map +1 -0
- package/dist/components/MainNavigation/MainNavigation.utils.d.ts +29 -0
- package/dist/components/MainNavigation/MainNavigation.utils.d.ts.map +1 -0
- package/dist/components/MainNavigation/MainNavigation.utils.js +168 -0
- package/dist/components/MainNavigation/MainNavigation.utils.js.map +1 -0
- package/dist/components/MainNavigation/index.d.ts +3 -0
- package/dist/components/MainNavigation/index.d.ts.map +1 -0
- package/dist/components/Modal/Modal.cjs +101 -0
- package/dist/components/Modal/Modal.cjs.map +1 -0
- package/dist/components/Modal/Modal.css +205 -0
- package/dist/components/Modal/Modal.d.ts +3 -0
- package/dist/components/Modal/Modal.d.ts.map +1 -0
- package/dist/components/Modal/Modal.js +101 -0
- package/dist/components/Modal/Modal.js.map +1 -0
- package/dist/components/Modal/Modal.module.css.cjs +39 -0
- package/dist/components/Modal/Modal.module.css.cjs.map +1 -0
- package/dist/components/Modal/Modal.module.css.js +39 -0
- package/dist/components/Modal/Modal.module.css.js.map +1 -0
- package/dist/components/Modal/Modal.types.d.ts +62 -0
- package/dist/components/Modal/Modal.types.d.ts.map +1 -0
- package/dist/components/Modal/index.d.ts +3 -0
- package/dist/components/Modal/index.d.ts.map +1 -0
- package/dist/components/Modal/useDialogDismissal.cjs +41 -0
- package/dist/components/Modal/useDialogDismissal.cjs.map +1 -0
- package/dist/components/Modal/useDialogDismissal.d.ts +17 -0
- package/dist/components/Modal/useDialogDismissal.d.ts.map +1 -0
- package/dist/components/Modal/useDialogDismissal.js +41 -0
- package/dist/components/Modal/useDialogDismissal.js.map +1 -0
- package/dist/components/Modal/useNativeDialog.cjs +126 -0
- package/dist/components/Modal/useNativeDialog.cjs.map +1 -0
- package/dist/components/Modal/useNativeDialog.d.ts +14 -0
- package/dist/components/Modal/useNativeDialog.d.ts.map +1 -0
- package/dist/components/Modal/useNativeDialog.js +126 -0
- package/dist/components/Modal/useNativeDialog.js.map +1 -0
- package/dist/components/Pictograph/Pictograph.css +69 -57
- package/dist/components/Pictograph/Pictograph.module.css.cjs +11 -11
- package/dist/components/Pictograph/Pictograph.module.css.js +11 -11
- package/dist/components/Pictograph/Pictograph.types.d.ts +2 -2
- package/dist/components/Pictograph/PictographItem.cjs +15 -4
- package/dist/components/Pictograph/PictographItem.cjs.map +1 -1
- package/dist/components/Pictograph/PictographItem.css +26 -23
- package/dist/components/Pictograph/PictographItem.d.ts.map +1 -1
- package/dist/components/Pictograph/PictographItem.js +15 -4
- package/dist/components/Pictograph/PictographItem.js.map +1 -1
- package/dist/components/Pictograph/PictographItem.module.css.cjs +3 -3
- package/dist/components/Pictograph/PictographItem.module.css.js +3 -3
- package/dist/components/Quote/Quote.cjs +32 -0
- package/dist/components/Quote/Quote.cjs.map +1 -0
- package/dist/components/Quote/Quote.css +95 -0
- package/dist/components/Quote/Quote.d.ts +3 -0
- package/dist/components/Quote/Quote.d.ts.map +1 -0
- package/dist/components/Quote/Quote.js +32 -0
- package/dist/components/Quote/Quote.js.map +1 -0
- package/dist/components/Quote/Quote.module.css.cjs +22 -0
- package/dist/components/Quote/Quote.module.css.cjs.map +1 -0
- package/dist/components/Quote/Quote.module.css.js +22 -0
- package/dist/components/Quote/Quote.module.css.js.map +1 -0
- package/dist/components/Quote/Quote.types.d.ts +12 -0
- package/dist/components/Quote/Quote.types.d.ts.map +1 -0
- package/dist/components/Quote/index.d.ts +3 -0
- package/dist/components/Quote/index.d.ts.map +1 -0
- package/dist/index.cjs +14 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -1
- package/dist/styles/utils/elevation.module.css.cjs +3 -0
- package/dist/styles/utils/elevation.module.css.cjs.map +1 -1
- package/dist/styles/utils/elevation.module.css.js +4 -1
- package/dist/styles/utils/elevation.module.css.js.map +1 -1
- package/dist/styles/utils/focus.css +21 -13
- package/dist/styles/utils/focus.module.css.cjs +3 -3
- package/dist/styles/utils/focus.module.css.js +3 -3
- package/dist/styles/utils/overlay.css +37 -0
- package/dist/styles/utils/overlay.module.css.cjs +13 -0
- package/dist/styles/utils/overlay.module.css.cjs.map +1 -0
- package/dist/styles/utils/overlay.module.css.js +13 -0
- package/dist/styles/utils/overlay.module.css.js.map +1 -0
- package/dist/styles/utils/text-decoration.css +9 -1
- package/dist/styles/utils/text-decoration.module.css.cjs +5 -2
- package/dist/styles/utils/text-decoration.module.css.cjs.map +1 -1
- package/dist/styles/utils/text-decoration.module.css.js +6 -3
- package/dist/styles/utils/text-decoration.module.css.js.map +1 -1
- package/dist/styles.css +24 -7
- package/package.json +4 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MainNavigation.cjs","sources":["../../../src/components/MainNavigation/MainNavigation.tsx"],"sourcesContent":["import { Fragment, useCallback, useEffect, useRef, useState } from 'react';\nimport type { JSX } from 'react';\nimport { ArrowRight, Cart, ChevronRight, Close, Globe, Open, Search, Menu } from '@dnanpm/icons';\nimport { cn } from '../../utils/cn';\nimport focusStyles from '../../styles/utils/focus.module.css';\nimport overlayStyles from '../../styles/utils/overlay.module.css';\nimport elevationStyles from '../../styles/utils/elevation.module.css';\nimport textDecorationStyles from '../../styles/utils/text-decoration.module.css';\nimport { Button } from '../Button';\nimport { IconButton } from '../IconButton';\nimport styles from './MainNavigation.module.css';\nimport {\n assignRef,\n getLinkRel,\n getLinkTarget,\n isDesktopViewportByEnvironment,\n isExternalLink,\n isExternalTarget,\n isItemInCurrentPath,\n isLinkInCurrentPage,\n isMobileIosDeviceByEnvironment,\n isMobileViewportByEnvironment,\n toNavigableHref,\n} from './MainNavigation.utils';\nimport type {\n MainNavigationItem,\n MainNavigationLink,\n MainNavigationRenderLink,\n MainNavigationOrganizationLink,\n MainNavigationProps,\n MainNavigationRenderLinkProps,\n} from './MainNavigation.types';\n\nconst defaultOrganizations: readonly MainNavigationOrganizationLink[] = [];\nconst defaultItems: readonly MainNavigationItem[] = [];\nconst defaultLogoSvg =\n '<svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g clip-path=\"url(#clip0_6509_143)\"><g clip-path=\"url(#clip1_6509_143)\"><rect width=\"40\" height=\"40\" fill=\"white\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M-0.0314789 40V0H40.0019V40H-0.0314789ZM9.33519 27.05C11.6685 27.05 13.5685 25.15 13.5685 22.7667V17.1667C13.5685 14.7833 11.6685 12.8833 9.33519 12.8833H5.10186V27.05H9.33519ZM21.6352 27.05H24.1685V17.1167C24.1685 14.7833 22.2685 12.8833 19.9352 12.8833H15.7019V27.05H18.1852V15.4167H19.9352C20.9019 15.4167 21.6352 16.15 21.6352 17.1167V27.05ZM32.4019 27.05H34.9352V17.05C34.9352 14.7167 33.0352 12.8167 30.7019 12.8167H30.6519C28.3185 12.8167 26.4185 14.7167 26.4185 17.05V27.0667H28.9519V22H32.4019V27.05ZM30.65 15.3333H30.7C31.6167 15.3333 32.4 16.1 32.4 17.0333V19.6167H28.95V17.0333C28.95 16.1167 29.6833 15.3333 30.65 15.3333ZM7.56667 15.4333H9.36667C10.3 15.4333 11.0833 16.15 11.0667 17.1333V22.8333C11.0667 23.75 10.3 24.5333 9.36667 24.5333H7.56667V15.4333Z\" fill=\"#FF007D\"/></g></g><defs><clipPath id=\"clip0_6509_143\"><rect width=\"40\" height=\"40\" fill=\"white\"/></clipPath><clipPath id=\"clip1_6509_143\"><rect width=\"40\" height=\"40\" fill=\"white\"/></clipPath></defs></svg>';\nconst defaultLogoSrc = `data:image/svg+xml,${encodeURIComponent(defaultLogoSvg)}`;\nconst mobilePanelAnimationDurationMs = 200;\nconst mobileBodyScrollLockClass = 'dds-un-scrollable';\nconst defaultOverflowCategoryLabel = 'Muut kategoriat';\nconst desktopMinWidthMediaQuery = '(min-width: 1024px)';\n\nconst defaultRenderLink: MainNavigationRenderLink = (props) => <a {...props} />;\n\nexport const MainNavigation = ({\n organizations = defaultOrganizations,\n items = defaultItems,\n loginHref = '#',\n loginLabel = 'Kirjaudu',\n logoHref = '/',\n languageSelectorLabel = 'FI',\n searchLabel = 'Haku',\n cartLabel = 'Ostoskori',\n showLanguageSelector = false,\n showSearch = false,\n showCart = false,\n cartCounter,\n cartCounterLabel = 'tuotetta ostoskorissa',\n onLanguageSelectorClick,\n onSearchClick,\n onCartClick,\n mobileMenuOpenAriaLabel = 'Avaa valikko',\n mobileMenuCloseAriaLabel = 'Sulje valikko',\n organizationStripAriaLabel = 'Sivustot',\n logoAriaLabel = 'Siirry etusivulle',\n mobilePrimaryNavigationAriaLabel = 'Päävalikko',\n externalLinkAriaLabel = 'avautuu uuteen välilehteen',\n defaultMobileMenuOpen = false,\n defaultOpenItemIndex = null,\n currentPathname,\n overflowCategoryLabel = defaultOverflowCategoryLabel,\n onMobileMenuToggle,\n onDesktopItemToggle,\n renderLink = defaultRenderLink,\n className,\n 'aria-label': ariaLabel = 'Päänavigaatio',\n ref,\n ...props\n}: MainNavigationProps) => {\n const [mobileMenuOpen, setMobileMenuOpen] = useState(defaultMobileMenuOpen);\n const [isMobileMenuClosing, setIsMobileMenuClosing] = useState(false);\n const [openTopLevelItemIndex, setOpenTopLevelItemIndex] = useState<number | null>(\n defaultOpenItemIndex,\n );\n const [isDesktopHeaderOpen, setIsDesktopHeaderOpen] = useState(true);\n const [mobileActiveCategoryIndex, setMobileActiveCategoryIndex] = useState<number | null>(null);\n const [isMobileSecondPanelClosing, setIsMobileSecondPanelClosing] = useState(false);\n const [isMobileThirdPanelClosing, setIsMobileThirdPanelClosing] = useState(false);\n const mobileSecondPanelCloseTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const mobileThirdPanelCloseTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const mobileMenuCloseResetTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const focusMobileSecondPanelTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const focusMobileThirdPanelTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const focusReturnToMobileTopLevelItemTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(\n null,\n );\n const resetMobileThirdPanelScrollTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(\n null,\n );\n const headerElementRef = useRef<HTMLElement | null>(null);\n const desktopPanelTriggerButtonRefs = useRef<Array<HTMLButtonElement | null>>([]);\n const mobilePrimaryNavRef = useRef<HTMLElement | null>(null);\n const mobileMenuToggleButtonRef = useRef<HTMLButtonElement | null>(null);\n const mobileModalPanelRef = useRef<HTMLDivElement | null>(null);\n const mobileThirdPanelRef = useRef<HTMLDivElement | null>(null);\n const mobilePanelBackButtonRef = useRef<HTMLButtonElement | null>(null);\n const mobileThirdPanelBackButtonRef = useRef<HTMLButtonElement | null>(null);\n const mobileLevelTwoCategoryButtonRefs = useRef<Array<HTMLButtonElement | null>>([]);\n const focusMobilePanelBackOnOpenRef = useRef(false);\n const focusMobileThirdPanelBackOnOpenRef = useRef(false);\n const focusReturnToMobileCategoryTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(\n null,\n );\n\n const setHeaderRef = useCallback(\n (node: HTMLElement | null) => {\n headerElementRef.current = node;\n assignRef(ref, node);\n },\n [ref],\n );\n\n useEffect(() => {\n return () => {\n if (mobileSecondPanelCloseTimeoutRef.current != null) {\n clearTimeout(mobileSecondPanelCloseTimeoutRef.current);\n }\n\n if (mobileThirdPanelCloseTimeoutRef.current != null) {\n clearTimeout(mobileThirdPanelCloseTimeoutRef.current);\n }\n\n if (focusMobileSecondPanelTimeoutRef.current != null) {\n clearTimeout(focusMobileSecondPanelTimeoutRef.current);\n }\n\n if (focusMobileThirdPanelTimeoutRef.current != null) {\n clearTimeout(focusMobileThirdPanelTimeoutRef.current);\n }\n\n clearTimeout(focusReturnToMobileTopLevelItemTimeoutRef.current ?? undefined);\n\n if (resetMobileThirdPanelScrollTimeoutRef.current != null) {\n clearTimeout(resetMobileThirdPanelScrollTimeoutRef.current);\n }\n\n if (mobileMenuCloseResetTimeoutRef.current != null) {\n clearTimeout(mobileMenuCloseResetTimeoutRef.current);\n }\n\n if (focusReturnToMobileCategoryTimeoutRef.current != null) {\n clearTimeout(focusReturnToMobileCategoryTimeoutRef.current);\n }\n };\n }, []);\n\n useEffect(() => {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') {\n return;\n }\n\n // Header ref is assigned on commit; this effect keeps header visibility in sync with scroll.\n const headerElement = headerElementRef.current as HTMLElement;\n\n const desktopQuery = window.matchMedia(desktopMinWidthMediaQuery);\n let previousScrollY = window.pageYOffset;\n let headerHeight =\n parseFloat(window.getComputedStyle(headerElement).height.replace('px', '')) ||\n headerElement.offsetHeight;\n\n const openHeader = () => {\n setIsDesktopHeaderOpen(true);\n };\n\n const closeHeader = () => {\n setIsDesktopHeaderOpen(false);\n };\n\n const handleScroll = () => {\n const currentScrollY = window.pageYOffset;\n\n if (!desktopQuery.matches) {\n openHeader();\n previousScrollY = currentScrollY;\n return;\n }\n\n if (mobileMenuOpen || openTopLevelItemIndex != null) {\n openHeader();\n previousScrollY = currentScrollY;\n return;\n }\n\n if (currentScrollY <= headerHeight) {\n openHeader();\n } else if (currentScrollY > previousScrollY) {\n closeHeader();\n } else if (currentScrollY < previousScrollY) {\n openHeader();\n }\n\n previousScrollY = currentScrollY;\n };\n\n const handleViewportChange = () => {\n openHeader();\n previousScrollY = window.pageYOffset;\n headerHeight =\n parseFloat(window.getComputedStyle(headerElement).height.replace('px', '')) ||\n headerElement.offsetHeight;\n };\n\n window.addEventListener('scroll', handleScroll, { passive: true });\n window.addEventListener('resize', handleViewportChange);\n\n desktopQuery.addEventListener('change', handleViewportChange);\n\n handleScroll();\n\n return () => {\n window.removeEventListener('scroll', handleScroll);\n window.removeEventListener('resize', handleViewportChange);\n\n desktopQuery.removeEventListener('change', handleViewportChange);\n };\n }, [mobileMenuOpen, openTopLevelItemIndex]);\n\n useEffect(() => {\n const browserWindow = globalThis.window;\n const browserDocument = globalThis.document;\n\n if (!mobileMenuOpen || browserWindow == null || browserDocument == null) {\n return;\n }\n\n const isMobileViewport = isMobileViewportByEnvironment(browserWindow);\n\n if (!isMobileViewport) {\n return;\n }\n\n const body = browserDocument.body;\n\n if (isMobileIosDeviceByEnvironment(browserWindow, globalThis.navigator)) {\n const scrollY = browserWindow.pageYOffset;\n\n body.style.position = 'fixed';\n body.style.top = `-${scrollY}px`;\n body.style.width = '100%';\n\n return () => {\n const top = body.style.top;\n\n body.style.position = '';\n body.style.top = '';\n body.style.width = '';\n\n if (top !== '') {\n browserWindow.scrollTo(0, Number.parseInt(top, 10) * -1);\n }\n };\n }\n\n body.classList.add(mobileBodyScrollLockClass);\n\n return () => {\n body.classList.remove(mobileBodyScrollLockClass);\n };\n }, [mobileMenuOpen]);\n\n useEffect(() => {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') {\n return;\n }\n\n const desktopQuery = window.matchMedia(desktopMinWidthMediaQuery);\n\n const applyViewportModeChange = ({ matches: isDesktopViewport }: { matches: boolean }) => {\n // Keep mobile and desktop panel states mutually exclusive on breakpoint transitions.\n if (isDesktopViewport) {\n clearTimeout(mobileSecondPanelCloseTimeoutRef.current ?? undefined);\n mobileSecondPanelCloseTimeoutRef.current = null;\n\n clearTimeout(mobileThirdPanelCloseTimeoutRef.current ?? undefined);\n mobileThirdPanelCloseTimeoutRef.current = null;\n\n clearTimeout(resetMobileThirdPanelScrollTimeoutRef.current ?? undefined);\n resetMobileThirdPanelScrollTimeoutRef.current = null;\n\n setMobileMenuOpen((previous) => {\n if (previous) {\n onMobileMenuToggle?.(false);\n }\n\n return false;\n });\n setMobileActiveCategoryIndex(null);\n setIsMobileSecondPanelClosing(false);\n setIsMobileThirdPanelClosing(false);\n return;\n }\n\n setOpenTopLevelItemIndex((previous) => {\n if (previous !== null) {\n onDesktopItemToggle?.(null);\n }\n\n return null;\n });\n };\n\n applyViewportModeChange(desktopQuery);\n\n desktopQuery.addEventListener('change', applyViewportModeChange);\n\n return () => {\n desktopQuery.removeEventListener('change', applyViewportModeChange);\n };\n }, [onDesktopItemToggle, onMobileMenuToggle]);\n\n const resetMobilePanelState = useCallback(() => {\n setOpenTopLevelItemIndex(null);\n setMobileActiveCategoryIndex(null);\n setIsMobileSecondPanelClosing(false);\n setIsMobileThirdPanelClosing(false);\n }, []);\n\n const closeMobileMenu = useCallback(() => {\n clearTimeout(mobileSecondPanelCloseTimeoutRef.current ?? undefined);\n mobileSecondPanelCloseTimeoutRef.current = null;\n\n clearTimeout(mobileThirdPanelCloseTimeoutRef.current ?? undefined);\n mobileThirdPanelCloseTimeoutRef.current = null;\n\n clearTimeout(resetMobileThirdPanelScrollTimeoutRef.current ?? undefined);\n resetMobileThirdPanelScrollTimeoutRef.current = null;\n\n if (!mobileMenuOpen && openTopLevelItemIndex === null) {\n return;\n }\n\n const shouldAnimateMobileClose = mobileMenuOpen;\n\n clearTimeout(mobileMenuCloseResetTimeoutRef.current ?? undefined);\n setIsMobileMenuClosing(shouldAnimateMobileClose);\n setMobileMenuOpen((previous) => {\n if (previous) {\n onMobileMenuToggle?.(false);\n }\n\n return false;\n });\n setOpenTopLevelItemIndex((previous) => {\n if (previous !== null) {\n onDesktopItemToggle?.(null);\n }\n\n return null;\n });\n\n if (shouldAnimateMobileClose) {\n mobileMenuCloseResetTimeoutRef.current = setTimeout(() => {\n resetMobilePanelState();\n setIsMobileMenuClosing(false);\n mobileMenuCloseResetTimeoutRef.current = null;\n }, mobilePanelAnimationDurationMs);\n return;\n }\n\n resetMobilePanelState();\n setIsMobileMenuClosing(false);\n }, [\n mobileMenuOpen,\n onDesktopItemToggle,\n onMobileMenuToggle,\n openTopLevelItemIndex,\n resetMobilePanelState,\n ]);\n\n const toggleMobileMenu = () => {\n if (mobileMenuOpen) {\n closeMobileMenu();\n return;\n }\n\n setMobileMenuOpen(true);\n setIsMobileMenuClosing(false);\n onMobileMenuToggle?.(true);\n };\n\n const toggleTopLevelItem = (index: number) => {\n setOpenTopLevelItemIndex((previous) => {\n const next = previous === index ? null : index;\n setMobileActiveCategoryIndex(null);\n setIsMobileSecondPanelClosing(false);\n setIsMobileThirdPanelClosing(false);\n onDesktopItemToggle?.(next);\n return next;\n });\n };\n\n const isDesktopViewport = useCallback(() => {\n return isDesktopViewportByEnvironment(globalThis.window);\n }, []);\n\n const isFocusable = useCallback((element: HTMLElement) => {\n /* v8 ignore next -- defensive filter branch */\n if (element.tabIndex < 0 || element.hasAttribute('disabled')) {\n return false;\n }\n\n /* v8 ignore next -- defensive filter branch */\n if (element.getAttribute('aria-hidden') === 'true') {\n return false;\n }\n\n /* v8 ignore next -- defensive filter branch */\n if (element.closest('[hidden]') != null) {\n return false;\n }\n\n let currentElement: HTMLElement | null = element;\n\n while (currentElement != null) {\n const computedStyle = window.getComputedStyle(currentElement);\n\n /* v8 ignore next -- defensive filter branch */\n if (computedStyle.display === 'none' || computedStyle.visibility === 'hidden') {\n return false;\n }\n\n currentElement = currentElement.parentElement;\n }\n\n return true;\n }, []);\n\n const getFocusableElements = useCallback(\n (container: ParentNode | null, selector: string) =>\n /* v8 ignore next -- defensive null guard for transient panel refs */\n container == null\n ? []\n : Array.from(container.querySelectorAll<HTMLElement>(selector)).filter(isFocusable),\n [isFocusable],\n );\n\n const getDesktopPanelInteractiveElements = useCallback(() => {\n return getFocusableElements(\n headerElementRef.current,\n `.${styles['main-navigation__panel--desktop']} a[href], .${styles['main-navigation__panel--desktop']} button:not([disabled]), .${styles['main-navigation__panel--desktop']} [tabindex]:not([tabindex=\"-1\"])`,\n );\n }, [getFocusableElements]);\n\n const getDesktopFocusLoopElements = useCallback(\n (openDesktopItemIndex: number) => {\n const focusLoopElements = new Set<HTMLElement>();\n const triggerButton = desktopPanelTriggerButtonRefs.current[openDesktopItemIndex];\n\n if (triggerButton != null && isFocusable(triggerButton)) {\n focusLoopElements.add(triggerButton);\n }\n\n getDesktopPanelInteractiveElements().forEach((element) => {\n focusLoopElements.add(element);\n });\n\n return Array.from(focusLoopElements);\n },\n [getDesktopPanelInteractiveElements, isFocusable],\n );\n\n const getMobileFocusableElements = useCallback(() => {\n const focusableElements: HTMLElement[] = [];\n const addFocusableElements = (elements: readonly HTMLElement[]) => {\n focusableElements.push(...elements);\n };\n\n if (\n mobileMenuToggleButtonRef.current != null &&\n isFocusable(mobileMenuToggleButtonRef.current)\n ) {\n focusableElements.push(mobileMenuToggleButtonRef.current);\n }\n\n if (openTopLevelItemIndex == null) {\n addFocusableElements(\n getFocusableElements(\n mobilePrimaryNavRef.current,\n `.${styles['main-navigation__primary-list']} .${styles['main-navigation__item-toggle']}, .${styles['main-navigation__primary-list']} .${styles['main-navigation__item-link']}`,\n ),\n );\n return Array.from(new Set(focusableElements));\n }\n\n if (mobileActiveCategoryIndex == null) {\n addFocusableElements(\n getFocusableElements(\n mobileModalPanelRef.current,\n `.${styles['main-navigation__mobile-back-item']}, .${styles['main-navigation__mobile-feature-link']}, .${styles['main-navigation__mobile-level-2-category-button']}`,\n ),\n );\n return Array.from(new Set(focusableElements));\n }\n\n addFocusableElements(\n getFocusableElements(\n mobileThirdPanelRef.current,\n `.${styles['main-navigation__mobile-back-item']}, .${styles['main-navigation__mobile-level-3-link']}`,\n ),\n );\n\n return Array.from(new Set(focusableElements));\n }, [getFocusableElements, isFocusable, mobileActiveCategoryIndex, openTopLevelItemIndex]);\n\n const openMobileCategoryPanel = useCallback((index: number) => {\n clearTimeout(resetMobileThirdPanelScrollTimeoutRef.current ?? undefined);\n setIsMobileThirdPanelClosing(false);\n setMobileActiveCategoryIndex(index);\n resetMobileThirdPanelScrollTimeoutRef.current = setTimeout(() => {\n (mobileThirdPanelRef.current ?? { scrollTop: 0 }).scrollTop = 0;\n resetMobileThirdPanelScrollTimeoutRef.current = null;\n }, 0);\n }, []);\n\n const closeMenus = useCallback(() => {\n clearTimeout(mobileSecondPanelCloseTimeoutRef.current ?? undefined);\n mobileSecondPanelCloseTimeoutRef.current = null;\n\n clearTimeout(mobileThirdPanelCloseTimeoutRef.current ?? undefined);\n mobileThirdPanelCloseTimeoutRef.current = null;\n\n clearTimeout(focusMobileSecondPanelTimeoutRef.current ?? undefined);\n focusMobileSecondPanelTimeoutRef.current = null;\n\n clearTimeout(focusMobileThirdPanelTimeoutRef.current ?? undefined);\n focusMobileThirdPanelTimeoutRef.current = null;\n\n clearTimeout(resetMobileThirdPanelScrollTimeoutRef.current ?? undefined);\n resetMobileThirdPanelScrollTimeoutRef.current = null;\n\n clearTimeout(focusReturnToMobileTopLevelItemTimeoutRef.current ?? undefined);\n focusReturnToMobileTopLevelItemTimeoutRef.current = null;\n\n clearTimeout(focusReturnToMobileCategoryTimeoutRef.current ?? undefined);\n focusReturnToMobileCategoryTimeoutRef.current = null;\n closeMobileMenu();\n }, [closeMobileMenu]);\n\n const closeMobilePanel = useCallback(\n ({\n isClosing,\n setIsClosing,\n closeTimeoutRef,\n onClosed,\n }: {\n isClosing: boolean;\n setIsClosing: (isClosing: boolean) => void;\n closeTimeoutRef: { current: ReturnType<typeof setTimeout> | null };\n onClosed?: () => void;\n }) => {\n /* v8 ignore next -- rapid double click during closing animation */\n if (isClosing) {\n return;\n }\n\n clearTimeout(closeTimeoutRef.current ?? undefined);\n setIsClosing(true);\n closeTimeoutRef.current = setTimeout(() => {\n onClosed?.();\n setIsClosing(false);\n closeTimeoutRef.current = null;\n }, mobilePanelAnimationDurationMs);\n },\n [],\n );\n\n const renderNavigationLink = useCallback(\n ({\n link,\n className,\n children,\n ariaCurrent,\n onKeyDown,\n }: {\n link: MainNavigationLink;\n className: string;\n children: MainNavigationRenderLinkProps['children'];\n ariaCurrent?: 'page';\n onKeyDown?: MainNavigationRenderLinkProps['onKeyDown'];\n }) =>\n renderLink(\n {\n href: toNavigableHref(link.href),\n className,\n rel: getLinkRel(link.target),\n target: getLinkTarget(link.target),\n 'aria-current': ariaCurrent,\n onKeyDown,\n children,\n },\n { external: isExternalLink(link) },\n ),\n [renderLink],\n );\n\n const renderUtilityLink = useCallback(\n (props: MainNavigationRenderLinkProps) => renderLink(props, { external: false }),\n [renderLink],\n );\n\n const openItem = openTopLevelItemIndex != null ? items[openTopLevelItemIndex] : undefined;\n const openPanel = openItem?.panel;\n const isMobilePanelClosingOut = isMobileMenuClosing && !mobileMenuOpen;\n const showPageOverlay = mobileMenuOpen || openPanel != null || isMobilePanelClosingOut;\n const isOverlayClosingOut = isMobilePanelClosingOut && openPanel == null;\n const cartAccessibleLabel =\n cartCounter != null ? `${cartLabel} ${cartCounter} ${cartCounterLabel}` : cartLabel;\n\n useEffect(() => {\n if (!showPageOverlay) {\n return;\n }\n\n const handleOutsidePointerDown = (event: PointerEvent) => {\n const target = event.target;\n if (!(target instanceof Node)) {\n return;\n }\n\n if (headerElementRef.current?.contains(target)) {\n return;\n }\n\n closeMenus();\n };\n\n document.addEventListener('pointerdown', handleOutsidePointerDown, true);\n\n return () => {\n document.removeEventListener('pointerdown', handleOutsidePointerDown, true);\n };\n }, [closeMenus, showPageOverlay]);\n\n useEffect(() => {\n if (\n !focusMobilePanelBackOnOpenRef.current ||\n openTopLevelItemIndex == null ||\n mobileMenuOpen === false\n ) {\n return;\n }\n\n /* v8 ignore next -- guard for viewport flip during keyboard open */\n if (isDesktopViewport()) {\n focusMobilePanelBackOnOpenRef.current = false;\n return;\n }\n\n clearTimeout(focusMobileSecondPanelTimeoutRef.current ?? undefined);\n\n // Delay keyboard focus transfer so Enter animation timing matches pointer interactions.\n focusMobileSecondPanelTimeoutRef.current = setTimeout(() => {\n mobilePanelBackButtonRef.current?.focus();\n focusMobilePanelBackOnOpenRef.current = false;\n focusMobileSecondPanelTimeoutRef.current = null;\n }, mobilePanelAnimationDurationMs);\n }, [isDesktopViewport, mobileMenuOpen, openTopLevelItemIndex]);\n\n useEffect(() => {\n if (!focusMobileThirdPanelBackOnOpenRef.current || mobileActiveCategoryIndex == null) {\n return;\n }\n\n focusMobileThirdPanelBackOnOpenRef.current =\n focusMobileThirdPanelBackOnOpenRef.current && !isDesktopViewport();\n\n if (focusMobileThirdPanelBackOnOpenRef.current) {\n clearTimeout(focusMobileThirdPanelTimeoutRef.current ?? undefined);\n\n // Delay keyboard focus transfer so Enter animation timing matches pointer interactions.\n focusMobileThirdPanelTimeoutRef.current = setTimeout(() => {\n mobileThirdPanelBackButtonRef.current?.focus();\n focusMobileThirdPanelBackOnOpenRef.current = false;\n focusMobileThirdPanelTimeoutRef.current = null;\n }, mobilePanelAnimationDurationMs);\n }\n }, [isDesktopViewport, mobileActiveCategoryIndex]);\n\n useEffect(() => {\n if (!mobileMenuOpen || openTopLevelItemIndex == null || isDesktopViewport()) {\n return;\n }\n\n const mobileSecondPanel = mobileModalPanelRef.current;\n if (mobileSecondPanel == null) {\n return;\n }\n\n mobileSecondPanel.scrollTop = 0;\n }, [isDesktopViewport, mobileMenuOpen, openTopLevelItemIndex]);\n\n const renderPanel = (panelClassName: string, isMobileModal = false): JSX.Element | null => {\n if (openPanel == null || openItem == null) {\n return null;\n }\n\n const hasFeatureLinks = openPanel.featureLinks != null && openPanel.featureLinks.length > 0;\n const panelColumns = openPanel.columns ?? [];\n const lastDesktopVisibleColumnIndex = panelColumns.reduce((lastIndex, column, index) => {\n /* v8 ignore next -- branch only hit with mobile-only columns in desktop panel data */\n if (column.mobileOnly) {\n return lastIndex;\n }\n\n return index;\n }, -1);\n const mobilePanelColumns = panelColumns.filter((column) => !column.desktopOnly);\n const getColumnHeading = (heading: string, isOverflow?: boolean) => {\n if (!isOverflow) {\n return heading;\n }\n\n /* v8 ignore next -- branch only hit by synthetic empty overflow heading */\n return heading.trim() === '' ? overflowCategoryLabel : heading;\n };\n\n if (isMobileModal) {\n const selectedColumn =\n mobileActiveCategoryIndex != null\n ? mobilePanelColumns[mobileActiveCategoryIndex]\n : null;\n const isLevelThreePanelOpen = selectedColumn != null && !isMobileThirdPanelClosing;\n const shouldHideLevelTwoFromAssistiveTech = isLevelThreePanelOpen;\n\n return (\n <div\n ref={mobileModalPanelRef}\n className={cn(\n panelClassName,\n isMobileSecondPanelClosing && styles['main-navigation__panel--is-closing'],\n )}\n aria-label={openItem.label}\n aria-hidden={isMobilePanelClosingOut || undefined}\n >\n <div className={styles['main-navigation__mobile-level-2-content']}>\n <button\n ref={mobilePanelBackButtonRef}\n type=\"button\"\n className={cn(\n styles['main-navigation__mobile-back-item'],\n focusStyles.focusableInset,\n )}\n onClick={() =>\n closeMobilePanel({\n isClosing: isMobileSecondPanelClosing,\n setIsClosing: setIsMobileSecondPanelClosing,\n closeTimeoutRef: mobileSecondPanelCloseTimeoutRef,\n onClosed: () => {\n const closedTopLevelItemIndex = openTopLevelItemIndex;\n setOpenTopLevelItemIndex(null);\n setMobileActiveCategoryIndex(null);\n onDesktopItemToggle?.(null);\n\n clearTimeout(\n focusReturnToMobileTopLevelItemTimeoutRef.current ??\n undefined,\n );\n focusReturnToMobileTopLevelItemTimeoutRef.current =\n setTimeout(() => {\n desktopPanelTriggerButtonRefs.current[\n closedTopLevelItemIndex as number\n ]?.focus();\n focusReturnToMobileTopLevelItemTimeoutRef.current =\n null;\n }, 0);\n },\n })\n }\n >\n <ChevronRight className={styles['main-navigation__mobile-back-icon']} />\n <span className={styles['main-navigation__mobile-back-label']}>\n {openItem.label}\n </span>\n </button>\n\n {hasFeatureLinks && (\n <div\n className={styles['main-navigation__mobile-level-2-feature-links']}\n aria-hidden={shouldHideLevelTwoFromAssistiveTech || undefined}\n >\n <ul\n className={\n styles['main-navigation__mobile-level-2-feature-list']\n }\n >\n {openPanel.featureLinks!.map((link, index) => {\n const href = toNavigableHref(link.href);\n const isExternalFeatureLink = isExternalTarget(link.target);\n const MobileFeatureIcon = isExternalFeatureLink\n ? Open\n : ArrowRight;\n\n return (\n <li\n key={`mobile-feature-${index}`}\n className={\n styles[\n 'main-navigation__mobile-level-2-feature-list-item'\n ]\n }\n >\n <IconButton\n href={href}\n renderLink={(linkProps) =>\n renderLink(linkProps, {\n external: isExternalLink(link),\n })\n }\n className={\n styles[\n 'main-navigation__mobile-feature-link'\n ]\n }\n icon={MobileFeatureIcon}\n size=\"small\"\n labelBehavior=\"wrap\"\n rel={getLinkRel(link.target)}\n target={getLinkTarget(link.target)}\n >\n {link.label}\n {isExternalFeatureLink &&\n externalLinkAriaLabel && (\n <span\n className={\n styles[\n 'main-navigation__sr-only'\n ]\n }\n >\n {` (${externalLinkAriaLabel})`}\n </span>\n )}\n </IconButton>\n </li>\n );\n })}\n </ul>\n </div>\n )}\n\n {\n <ul\n className={styles['main-navigation__mobile-level-2-category-list']}\n aria-hidden={shouldHideLevelTwoFromAssistiveTech || undefined}\n >\n {mobilePanelColumns.map((column, index) => (\n <li\n key={`mobile-category-${column.heading}-${index}`}\n className={\n styles['main-navigation__mobile-level-2-category-item']\n }\n >\n <button\n ref={(node) => {\n mobileLevelTwoCategoryButtonRefs.current[index] =\n node;\n }}\n type=\"button\"\n className={cn(\n styles[\n 'main-navigation__mobile-level-2-category-button'\n ],\n focusStyles.focusableInset,\n )}\n onClick={() => openMobileCategoryPanel(index)}\n onKeyDown={(event) => {\n if (event.key !== 'Enter' || isDesktopViewport()) {\n return;\n }\n\n event.preventDefault();\n focusMobileThirdPanelBackOnOpenRef.current = true;\n openMobileCategoryPanel(index);\n }}\n >\n <span>\n {getColumnHeading(column.heading, column.overflow)}\n </span>\n <ChevronRight />\n </button>\n </li>\n ))}\n </ul>\n }\n\n <div\n ref={mobileThirdPanelRef}\n className={cn(\n styles['main-navigation__mobile-level-3-panel'],\n isLevelThreePanelOpen &&\n styles['main-navigation__mobile-level-3-panel--open'],\n isMobileThirdPanelClosing &&\n styles['main-navigation__mobile-level-3-panel--is-closing'],\n )}\n >\n {selectedColumn != null && (\n <>\n <button\n ref={mobileThirdPanelBackButtonRef}\n type=\"button\"\n className={cn(\n styles['main-navigation__mobile-back-item'],\n focusStyles.focusableInset,\n )}\n onClick={() =>\n closeMobilePanel({\n isClosing: isMobileThirdPanelClosing,\n setIsClosing: setIsMobileThirdPanelClosing,\n closeTimeoutRef: mobileThirdPanelCloseTimeoutRef,\n onClosed: () => {\n const closedCategoryIndex =\n mobileActiveCategoryIndex;\n setMobileActiveCategoryIndex(null);\n\n clearTimeout(\n focusReturnToMobileCategoryTimeoutRef.current ??\n undefined,\n );\n focusReturnToMobileCategoryTimeoutRef.current =\n setTimeout(() => {\n mobileLevelTwoCategoryButtonRefs.current[\n closedCategoryIndex as number\n ]?.focus();\n focusReturnToMobileCategoryTimeoutRef.current =\n null;\n }, 0);\n },\n })\n }\n >\n <ChevronRight\n className={styles['main-navigation__mobile-back-icon']}\n />\n <span\n className={styles['main-navigation__mobile-back-label']}\n >\n {selectedColumn.heading}\n </span>\n </button>\n <ul className={styles['main-navigation__mobile-level-3-list']}>\n {selectedColumn.links.map((link, index) => (\n <li\n key={`${selectedColumn.heading}-${index}`}\n className={\n styles['main-navigation__mobile-level-3-item']\n }\n >\n {renderNavigationLink({\n link,\n className: cn(\n styles[\n 'main-navigation__mobile-level-3-link'\n ],\n focusStyles.focusableInset,\n ),\n children: link.label,\n })}\n </li>\n ))}\n </ul>\n </>\n )}\n </div>\n </div>\n </div>\n );\n }\n\n return (\n <div className={panelClassName} aria-label={openItem.label}>\n <div className={styles['main-navigation__panel-content']}>\n <div className={styles['main-navigation__panel-main']}>\n <div className={styles['main-navigation__panel-columns']}>\n {panelColumns.map((column, columnIndex) => (\n <section\n key={`column-${columnIndex}`}\n className={cn(\n styles['main-navigation__panel-column'],\n column.highlighted &&\n styles['main-navigation__panel-column--highlighted'],\n column.mobileOnly &&\n styles['main-navigation__panel-column--mobile-only'],\n column.desktopOnly &&\n styles['main-navigation__panel-column--desktop-only'],\n !hasFeatureLinks &&\n columnIndex === lastDesktopVisibleColumnIndex &&\n styles['main-navigation__panel-column--last'],\n )}\n >\n <h2 className={styles['main-navigation__panel-heading']}>\n {getColumnHeading(column.heading, column.overflow)}\n </h2>\n <ul className={styles['main-navigation__panel-list']}>\n {column.links.map((link, index) => {\n const isInCurrentPage = isLinkInCurrentPage(\n link,\n currentPathname,\n );\n\n return (\n <li\n key={`${column.heading}-${index}`}\n className={\n styles['main-navigation__panel-list-item']\n }\n >\n {renderNavigationLink({\n link,\n className: cn(\n styles['main-navigation__panel-link'],\n focusStyles.focusableInset,\n textDecorationStyles.underlineLinkOnHover,\n isInCurrentPage &&\n styles[\n 'main-navigation__panel-link--current'\n ],\n ),\n ariaCurrent: isInCurrentPage\n ? 'page'\n : undefined,\n children: link.label,\n })}\n </li>\n );\n })}\n </ul>\n </section>\n ))}\n </div>\n </div>\n <aside\n className={cn(\n elevationStyles.elevationHigh,\n styles['main-navigation__panel-column'],\n styles['main-navigation__feature-links'],\n styles['main-navigation__panel-column--last'],\n openPanel.featureLinksHighlighted &&\n styles['main-navigation__panel-column--highlighted'],\n !hasFeatureLinks && styles['main-navigation__feature-links--empty'],\n )}\n >\n <ul className={styles['main-navigation__feature-list']}>\n {(openPanel.featureLinks ?? []).map((link, index) => {\n const href = toNavigableHref(link.href);\n const isExternalFeatureLink = isExternalTarget(link.target);\n\n return (\n <li\n key={`feature-${index}`}\n className={styles['main-navigation__panel-list-item']}\n >\n {renderNavigationLink({\n link: { ...link, href },\n className: cn(\n styles['main-navigation__feature-link'],\n textDecorationStyles.underlineLinkOnHover,\n focusStyles.focusableInset,\n ),\n children: (\n <>\n {isExternalFeatureLink ? (\n <Open\n className={\n styles[\n 'main-navigation__feature-link-icon'\n ]\n }\n />\n ) : (\n <ArrowRight\n className={\n styles[\n 'main-navigation__feature-link-icon'\n ]\n }\n />\n )}\n <span\n className={\n styles[\n 'main-navigation__feature-link-label'\n ]\n }\n >\n {link.label}\n </span>\n {isExternalFeatureLink &&\n externalLinkAriaLabel && (\n <span\n className={\n styles[\n 'main-navigation__sr-only'\n ]\n }\n >\n {` (${externalLinkAriaLabel})`}\n </span>\n )}\n </>\n ),\n })}\n </li>\n );\n })}\n </ul>\n </aside>\n </div>\n </div>\n );\n };\n\n const renderPrimaryList = () => (\n <ul className={styles['main-navigation__primary-list']}>\n {items.map((item, index) => {\n const hasPanel = item.panel != null;\n const isOpen = openTopLevelItemIndex === index;\n const isCurrentPathItem = isItemInCurrentPath(item, currentPathname);\n\n return (\n <li key={item.label} className={styles['main-navigation__item']}>\n {hasPanel ? (\n <button\n ref={(node) => {\n desktopPanelTriggerButtonRefs.current[index] = node;\n }}\n type=\"button\"\n className={cn(\n styles['main-navigation__item-toggle'],\n focusStyles.focusableInset,\n isCurrentPathItem &&\n styles['main-navigation__item-toggle--current'],\n isOpen && styles['main-navigation__item-toggle--open'],\n )}\n aria-expanded={isOpen}\n onClick={() => toggleTopLevelItem(index)}\n onKeyDown={(event) => {\n if (event.key === 'Enter' && !isDesktopViewport()) {\n focusMobilePanelBackOnOpenRef.current = true;\n }\n }}\n >\n <span className={styles['main-navigation__item-label']}>\n {item.label}\n </span>\n <ChevronRight\n className={styles['main-navigation__top-level-toggle-icon']}\n />\n </button>\n ) : (\n renderNavigationLink({\n link: item,\n className: cn(\n styles['main-navigation__item-link'],\n focusStyles.focusableInset,\n isCurrentPathItem &&\n styles['main-navigation__item-link--current'],\n ),\n ariaCurrent: isCurrentPathItem ? 'page' : undefined,\n children: (\n <span className={styles['main-navigation__item-label']}>\n {item.label}\n </span>\n ),\n })\n )}\n </li>\n );\n })}\n </ul>\n );\n\n return (\n <header\n ref={setHeaderRef}\n className={cn(\n styles['main-navigation'],\n isDesktopHeaderOpen && styles['main-navigation--open'],\n mobileMenuOpen && styles['main-navigation--menu-open'],\n isMobileMenuClosing && styles['main-navigation--menu-closing'],\n showPageOverlay && styles['main-navigation--overlay'],\n showPageOverlay && overlayStyles.overlayStrong,\n isOverlayClosingOut && overlayStyles.overlayClosing,\n className,\n )}\n {...props}\n onKeyDown={(event) => {\n if (event.key === 'Tab' && mobileMenuOpen && !isDesktopViewport()) {\n const focusableElements = getMobileFocusableElements();\n\n if (focusableElements.length > 0) {\n event.preventDefault();\n\n // Keep Tab traversal inside the active mobile navigation context.\n const currentIndex = focusableElements.indexOf(\n document.activeElement as HTMLElement,\n );\n const direction = event.shiftKey ? -1 : 1;\n const nextIndex =\n currentIndex === -1\n ? event.shiftKey\n ? focusableElements.length - 1\n : 0\n : (currentIndex + direction + focusableElements.length) %\n focusableElements.length;\n\n focusableElements[nextIndex]?.focus();\n }\n return;\n }\n\n if (event.key === 'Tab' && openTopLevelItemIndex != null && isDesktopViewport()) {\n const focusLoopElements = getDesktopFocusLoopElements(openTopLevelItemIndex);\n\n if (focusLoopElements.length > 0) {\n event.preventDefault();\n\n // Keep Tab traversal between the trigger and desktop panel controls.\n const currentIndex = focusLoopElements.indexOf(\n document.activeElement as HTMLElement,\n );\n const direction = event.shiftKey ? -1 : 1;\n const nextIndex =\n currentIndex === -1\n ? event.shiftKey\n ? focusLoopElements.length - 1\n : 0\n : (currentIndex + direction + focusLoopElements.length) %\n focusLoopElements.length;\n\n focusLoopElements[nextIndex]?.focus();\n return;\n }\n }\n\n if (event.key === 'Escape') {\n closeMenus();\n }\n\n props.onKeyDown?.(event);\n }}\n >\n <nav\n aria-label={organizationStripAriaLabel}\n className={styles['main-navigation__organization-strip']}\n >\n {organizations.map((organization) => (\n <Fragment key={organization.label}>\n {renderNavigationLink({\n link: organization,\n className: cn(\n styles['main-navigation__organization-link'],\n focusStyles.focusable,\n organization.current &&\n styles['main-navigation__organization-link--current'],\n ),\n ariaCurrent: organization.current ? 'page' : undefined,\n children: organization.label,\n })}\n </Fragment>\n ))}\n </nav>\n\n <div className={styles['main-navigation__navbar']}>\n {renderUtilityLink({\n href: toNavigableHref(logoHref),\n className: cn(styles['main-navigation__logo'], focusStyles.focusable),\n 'aria-label': logoAriaLabel,\n children: <img src={defaultLogoSrc} alt=\"\" aria-hidden=\"true\" />,\n })}\n\n <nav\n ref={mobilePrimaryNavRef}\n aria-label={mobileMenuOpen ? mobilePrimaryNavigationAriaLabel : ariaLabel}\n data-open={mobileMenuOpen ? 'true' : 'false'}\n className={cn(\n styles['main-navigation__primary'],\n mobileMenuOpen && styles['main-navigation__primary--open'],\n )}\n >\n {renderPrimaryList()}\n {(mobileMenuOpen || isMobileMenuClosing) &&\n renderPanel(\n cn(\n styles['main-navigation__panel'],\n styles['main-navigation__panel--mobile'],\n ),\n true,\n )}\n </nav>\n\n <div className={styles['main-navigation__icon-nav']}>\n {showLanguageSelector && (\n <button\n type=\"button\"\n className={cn(\n styles['main-navigation__icon-nav-item'],\n focusStyles.focusableInset,\n )}\n aria-label={languageSelectorLabel}\n onClick={onLanguageSelectorClick}\n >\n <Globe />\n <span className={styles['main-navigation__icon-nav-label']}>\n {languageSelectorLabel}\n </span>\n </button>\n )}\n {showSearch && (\n <button\n type=\"button\"\n className={cn(\n styles['main-navigation__icon-nav-item'],\n focusStyles.focusableInset,\n )}\n aria-label={searchLabel}\n onClick={onSearchClick}\n >\n <Search />\n <span className={styles['main-navigation__icon-nav-label']}>\n {searchLabel}\n </span>\n </button>\n )}\n {showCart && (\n <button\n type=\"button\"\n className={cn(\n styles['main-navigation__icon-nav-item'],\n focusStyles.focusableInset,\n )}\n aria-label={cartAccessibleLabel}\n onClick={onCartClick}\n >\n <Cart />\n <span className={styles['main-navigation__icon-nav-label']}>\n {cartLabel}\n </span>\n {cartCounter != null && (\n <span\n aria-hidden=\"true\"\n className={styles['main-navigation__icon-nav-item--counter']}\n >\n {cartCounter}\n </span>\n )}\n </button>\n )}\n <Button\n href={toNavigableHref(loginHref)}\n size=\"small\"\n renderLink={renderUtilityLink}\n >\n {loginLabel}\n </Button>\n </div>\n\n <button\n ref={mobileMenuToggleButtonRef}\n type=\"button\"\n className={cn(\n styles['main-navigation__menu-toggle'],\n mobileMenuOpen && styles['main-navigation__menu-toggle--open'],\n focusStyles.focusableInset,\n )}\n aria-label={mobileMenuOpen ? mobileMenuCloseAriaLabel : mobileMenuOpenAriaLabel}\n aria-expanded={mobileMenuOpen}\n onClick={toggleMobileMenu}\n >\n {mobileMenuOpen ? <Close size=\"32px\" /> : <Menu size=\"32px\" />}\n </button>\n </div>\n\n {!mobileMenuOpen &&\n renderPanel(\n cn(styles['main-navigation__panel'], styles['main-navigation__panel--desktop']),\n )}\n </header>\n );\n};\n"],"names":["jsx","useState","useRef","useCallback","assignRef","useEffect","isMobileViewportByEnvironment","isMobileIosDeviceByEnvironment","isDesktopViewport","isDesktopViewportByEnvironment","styles","className","toNavigableHref","getLinkRel","getLinkTarget","isExternalLink","props","cn","jsxs","focusStyles","ChevronRight","isExternalTarget","Open","ArrowRight","IconButton","Fragment","isLinkInCurrentPage","textDecorationStyles","elevationStyles","isItemInCurrentPath","overlayStyles","Globe","Search","Cart","Button","Close","Menu"],"mappings":"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"}
|