@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.
Files changed (205) hide show
  1. package/dist/components/AccordionItem/AccordionItem.css +16 -16
  2. package/dist/components/AccordionItem/AccordionItem.module.css.cjs +11 -11
  3. package/dist/components/AccordionItem/AccordionItem.module.css.js +11 -11
  4. package/dist/components/Breadcrumb/Breadcrumb.css +9 -9
  5. package/dist/components/Breadcrumb/Breadcrumb.module.css.cjs +6 -6
  6. package/dist/components/Breadcrumb/Breadcrumb.module.css.js +6 -6
  7. package/dist/components/Button/Button.css +32 -30
  8. package/dist/components/Button/Button.module.css.cjs +11 -11
  9. package/dist/components/Button/Button.module.css.js +11 -11
  10. package/dist/components/ButtonCard/ButtonCard.cjs +105 -0
  11. package/dist/components/ButtonCard/ButtonCard.cjs.map +1 -0
  12. package/dist/components/ButtonCard/ButtonCard.css +167 -0
  13. package/dist/components/ButtonCard/ButtonCard.d.ts +3 -0
  14. package/dist/components/ButtonCard/ButtonCard.d.ts.map +1 -0
  15. package/dist/components/ButtonCard/ButtonCard.js +105 -0
  16. package/dist/components/ButtonCard/ButtonCard.js.map +1 -0
  17. package/dist/components/ButtonCard/ButtonCard.module.css.cjs +18 -0
  18. package/dist/components/ButtonCard/ButtonCard.module.css.cjs.map +1 -0
  19. package/dist/components/ButtonCard/ButtonCard.module.css.js +19 -0
  20. package/dist/components/ButtonCard/ButtonCard.module.css.js.map +1 -0
  21. package/dist/components/ButtonCard/ButtonCard.types.d.ts +103 -0
  22. package/dist/components/ButtonCard/ButtonCard.types.d.ts.map +1 -0
  23. package/dist/components/ButtonCard/index.d.ts +3 -0
  24. package/dist/components/ButtonCard/index.d.ts.map +1 -0
  25. package/dist/components/Drawer/Drawer.cjs +101 -0
  26. package/dist/components/Drawer/Drawer.cjs.map +1 -0
  27. package/dist/components/Drawer/Drawer.css +219 -0
  28. package/dist/components/Drawer/Drawer.d.ts +3 -0
  29. package/dist/components/Drawer/Drawer.d.ts.map +1 -0
  30. package/dist/components/Drawer/Drawer.js +101 -0
  31. package/dist/components/Drawer/Drawer.js.map +1 -0
  32. package/dist/components/Drawer/Drawer.module.css.cjs +37 -0
  33. package/dist/components/Drawer/Drawer.module.css.cjs.map +1 -0
  34. package/dist/components/Drawer/Drawer.module.css.js +37 -0
  35. package/dist/components/Drawer/Drawer.module.css.js.map +1 -0
  36. package/dist/components/Drawer/Drawer.types.d.ts +63 -0
  37. package/dist/components/Drawer/Drawer.types.d.ts.map +1 -0
  38. package/dist/components/Drawer/index.d.ts +3 -0
  39. package/dist/components/Drawer/index.d.ts.map +1 -0
  40. package/dist/components/Footer/Footer.cjs +272 -0
  41. package/dist/components/Footer/Footer.cjs.map +1 -0
  42. package/dist/components/Footer/Footer.css +473 -0
  43. package/dist/components/Footer/Footer.d.ts +3 -0
  44. package/dist/components/Footer/Footer.d.ts.map +1 -0
  45. package/dist/components/Footer/Footer.js +272 -0
  46. package/dist/components/Footer/Footer.js.map +1 -0
  47. package/dist/components/Footer/Footer.module.css.cjs +80 -0
  48. package/dist/components/Footer/Footer.module.css.cjs.map +1 -0
  49. package/dist/components/Footer/Footer.module.css.js +80 -0
  50. package/dist/components/Footer/Footer.module.css.js.map +1 -0
  51. package/dist/components/Footer/Footer.types.d.ts +128 -0
  52. package/dist/components/Footer/Footer.types.d.ts.map +1 -0
  53. package/dist/components/Footer/Footer.utils.cjs +41 -0
  54. package/dist/components/Footer/Footer.utils.cjs.map +1 -0
  55. package/dist/components/Footer/Footer.utils.d.ts +13 -0
  56. package/dist/components/Footer/Footer.utils.d.ts.map +1 -0
  57. package/dist/components/Footer/Footer.utils.js +41 -0
  58. package/dist/components/Footer/Footer.utils.js.map +1 -0
  59. package/dist/components/Footer/assets/app-store-badge.svg.cjs +4 -0
  60. package/dist/components/Footer/assets/app-store-badge.svg.cjs.map +1 -0
  61. package/dist/components/Footer/assets/app-store-badge.svg.js +5 -0
  62. package/dist/components/Footer/assets/app-store-badge.svg.js.map +1 -0
  63. package/dist/components/Footer/assets/google-play-badge.svg.cjs +4 -0
  64. package/dist/components/Footer/assets/google-play-badge.svg.cjs.map +1 -0
  65. package/dist/components/Footer/assets/google-play-badge.svg.js +5 -0
  66. package/dist/components/Footer/assets/google-play-badge.svg.js.map +1 -0
  67. package/dist/components/Footer/index.d.ts +3 -0
  68. package/dist/components/Footer/index.d.ts.map +1 -0
  69. package/dist/components/FunctionButton/FunctionButton.cjs +34 -0
  70. package/dist/components/FunctionButton/FunctionButton.cjs.map +1 -0
  71. package/dist/components/FunctionButton/FunctionButton.css +125 -0
  72. package/dist/components/FunctionButton/FunctionButton.d.ts +3 -0
  73. package/dist/components/FunctionButton/FunctionButton.d.ts.map +1 -0
  74. package/dist/components/FunctionButton/FunctionButton.js +34 -0
  75. package/dist/components/FunctionButton/FunctionButton.js.map +1 -0
  76. package/dist/components/FunctionButton/FunctionButton.module.css.cjs +11 -0
  77. package/dist/components/FunctionButton/FunctionButton.module.css.cjs.map +1 -0
  78. package/dist/components/FunctionButton/FunctionButton.module.css.js +12 -0
  79. package/dist/components/FunctionButton/FunctionButton.module.css.js.map +1 -0
  80. package/dist/components/FunctionButton/FunctionButton.types.d.ts +21 -0
  81. package/dist/components/FunctionButton/FunctionButton.types.d.ts.map +1 -0
  82. package/dist/components/FunctionButton/index.d.ts +3 -0
  83. package/dist/components/FunctionButton/index.d.ts.map +1 -0
  84. package/dist/components/Hero/Hero.cjs +44 -30
  85. package/dist/components/Hero/Hero.cjs.map +1 -1
  86. package/dist/components/Hero/Hero.css +89 -100
  87. package/dist/components/Hero/Hero.d.ts +1 -1
  88. package/dist/components/Hero/Hero.d.ts.map +1 -1
  89. package/dist/components/Hero/Hero.js +45 -31
  90. package/dist/components/Hero/Hero.js.map +1 -1
  91. package/dist/components/Hero/Hero.module.css.cjs +17 -20
  92. package/dist/components/Hero/Hero.module.css.cjs.map +1 -1
  93. package/dist/components/Hero/Hero.module.css.js +17 -20
  94. package/dist/components/Hero/Hero.module.css.js.map +1 -1
  95. package/dist/components/Hero/Hero.types.d.ts +8 -3
  96. package/dist/components/Hero/Hero.types.d.ts.map +1 -1
  97. package/dist/components/Hero/Hero.utils.cjs +5 -8
  98. package/dist/components/Hero/Hero.utils.cjs.map +1 -1
  99. package/dist/components/Hero/Hero.utils.d.ts +2 -2
  100. package/dist/components/Hero/Hero.utils.d.ts.map +1 -1
  101. package/dist/components/Hero/Hero.utils.js +5 -8
  102. package/dist/components/Hero/Hero.utils.js.map +1 -1
  103. package/dist/components/IconButton/IconButton.css +31 -32
  104. package/dist/components/IconButton/IconButton.module.css.cjs +9 -9
  105. package/dist/components/IconButton/IconButton.module.css.js +9 -9
  106. package/dist/components/MainNavigation/MainNavigation.cjs +1094 -0
  107. package/dist/components/MainNavigation/MainNavigation.cjs.map +1 -0
  108. package/dist/components/MainNavigation/MainNavigation.css +948 -0
  109. package/dist/components/MainNavigation/MainNavigation.d.ts +3 -0
  110. package/dist/components/MainNavigation/MainNavigation.d.ts.map +1 -0
  111. package/dist/components/MainNavigation/MainNavigation.js +1094 -0
  112. package/dist/components/MainNavigation/MainNavigation.js.map +1 -0
  113. package/dist/components/MainNavigation/MainNavigation.module.css.cjs +74 -0
  114. package/dist/components/MainNavigation/MainNavigation.module.css.cjs.map +1 -0
  115. package/dist/components/MainNavigation/MainNavigation.module.css.js +75 -0
  116. package/dist/components/MainNavigation/MainNavigation.module.css.js.map +1 -0
  117. package/dist/components/MainNavigation/MainNavigation.types.d.ts +149 -0
  118. package/dist/components/MainNavigation/MainNavigation.types.d.ts.map +1 -0
  119. package/dist/components/MainNavigation/MainNavigation.utils.cjs +168 -0
  120. package/dist/components/MainNavigation/MainNavigation.utils.cjs.map +1 -0
  121. package/dist/components/MainNavigation/MainNavigation.utils.d.ts +29 -0
  122. package/dist/components/MainNavigation/MainNavigation.utils.d.ts.map +1 -0
  123. package/dist/components/MainNavigation/MainNavigation.utils.js +168 -0
  124. package/dist/components/MainNavigation/MainNavigation.utils.js.map +1 -0
  125. package/dist/components/MainNavigation/index.d.ts +3 -0
  126. package/dist/components/MainNavigation/index.d.ts.map +1 -0
  127. package/dist/components/Modal/Modal.cjs +101 -0
  128. package/dist/components/Modal/Modal.cjs.map +1 -0
  129. package/dist/components/Modal/Modal.css +205 -0
  130. package/dist/components/Modal/Modal.d.ts +3 -0
  131. package/dist/components/Modal/Modal.d.ts.map +1 -0
  132. package/dist/components/Modal/Modal.js +101 -0
  133. package/dist/components/Modal/Modal.js.map +1 -0
  134. package/dist/components/Modal/Modal.module.css.cjs +39 -0
  135. package/dist/components/Modal/Modal.module.css.cjs.map +1 -0
  136. package/dist/components/Modal/Modal.module.css.js +39 -0
  137. package/dist/components/Modal/Modal.module.css.js.map +1 -0
  138. package/dist/components/Modal/Modal.types.d.ts +62 -0
  139. package/dist/components/Modal/Modal.types.d.ts.map +1 -0
  140. package/dist/components/Modal/index.d.ts +3 -0
  141. package/dist/components/Modal/index.d.ts.map +1 -0
  142. package/dist/components/Modal/useDialogDismissal.cjs +41 -0
  143. package/dist/components/Modal/useDialogDismissal.cjs.map +1 -0
  144. package/dist/components/Modal/useDialogDismissal.d.ts +17 -0
  145. package/dist/components/Modal/useDialogDismissal.d.ts.map +1 -0
  146. package/dist/components/Modal/useDialogDismissal.js +41 -0
  147. package/dist/components/Modal/useDialogDismissal.js.map +1 -0
  148. package/dist/components/Modal/useNativeDialog.cjs +126 -0
  149. package/dist/components/Modal/useNativeDialog.cjs.map +1 -0
  150. package/dist/components/Modal/useNativeDialog.d.ts +14 -0
  151. package/dist/components/Modal/useNativeDialog.d.ts.map +1 -0
  152. package/dist/components/Modal/useNativeDialog.js +126 -0
  153. package/dist/components/Modal/useNativeDialog.js.map +1 -0
  154. package/dist/components/Pictograph/Pictograph.css +69 -57
  155. package/dist/components/Pictograph/Pictograph.module.css.cjs +11 -11
  156. package/dist/components/Pictograph/Pictograph.module.css.js +11 -11
  157. package/dist/components/Pictograph/Pictograph.types.d.ts +2 -2
  158. package/dist/components/Pictograph/PictographItem.cjs +15 -4
  159. package/dist/components/Pictograph/PictographItem.cjs.map +1 -1
  160. package/dist/components/Pictograph/PictographItem.css +26 -23
  161. package/dist/components/Pictograph/PictographItem.d.ts.map +1 -1
  162. package/dist/components/Pictograph/PictographItem.js +15 -4
  163. package/dist/components/Pictograph/PictographItem.js.map +1 -1
  164. package/dist/components/Pictograph/PictographItem.module.css.cjs +3 -3
  165. package/dist/components/Pictograph/PictographItem.module.css.js +3 -3
  166. package/dist/components/Quote/Quote.cjs +32 -0
  167. package/dist/components/Quote/Quote.cjs.map +1 -0
  168. package/dist/components/Quote/Quote.css +95 -0
  169. package/dist/components/Quote/Quote.d.ts +3 -0
  170. package/dist/components/Quote/Quote.d.ts.map +1 -0
  171. package/dist/components/Quote/Quote.js +32 -0
  172. package/dist/components/Quote/Quote.js.map +1 -0
  173. package/dist/components/Quote/Quote.module.css.cjs +22 -0
  174. package/dist/components/Quote/Quote.module.css.cjs.map +1 -0
  175. package/dist/components/Quote/Quote.module.css.js +22 -0
  176. package/dist/components/Quote/Quote.module.css.js.map +1 -0
  177. package/dist/components/Quote/Quote.types.d.ts +12 -0
  178. package/dist/components/Quote/Quote.types.d.ts.map +1 -0
  179. package/dist/components/Quote/index.d.ts +3 -0
  180. package/dist/components/Quote/index.d.ts.map +1 -0
  181. package/dist/index.cjs +14 -0
  182. package/dist/index.cjs.map +1 -1
  183. package/dist/index.d.ts +14 -0
  184. package/dist/index.d.ts.map +1 -1
  185. package/dist/index.js +14 -0
  186. package/dist/index.js.map +1 -1
  187. package/dist/styles/utils/elevation.module.css.cjs +3 -0
  188. package/dist/styles/utils/elevation.module.css.cjs.map +1 -1
  189. package/dist/styles/utils/elevation.module.css.js +4 -1
  190. package/dist/styles/utils/elevation.module.css.js.map +1 -1
  191. package/dist/styles/utils/focus.css +21 -13
  192. package/dist/styles/utils/focus.module.css.cjs +3 -3
  193. package/dist/styles/utils/focus.module.css.js +3 -3
  194. package/dist/styles/utils/overlay.css +37 -0
  195. package/dist/styles/utils/overlay.module.css.cjs +13 -0
  196. package/dist/styles/utils/overlay.module.css.cjs.map +1 -0
  197. package/dist/styles/utils/overlay.module.css.js +13 -0
  198. package/dist/styles/utils/overlay.module.css.js.map +1 -0
  199. package/dist/styles/utils/text-decoration.css +9 -1
  200. package/dist/styles/utils/text-decoration.module.css.cjs +5 -2
  201. package/dist/styles/utils/text-decoration.module.css.cjs.map +1 -1
  202. package/dist/styles/utils/text-decoration.module.css.js +6 -3
  203. package/dist/styles/utils/text-decoration.module.css.js.map +1 -1
  204. package/dist/styles.css +24 -7
  205. package/package.json +4 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MainNavigation.js","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":["isDesktopViewport","className","props","Fragment"],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ require('./MainNavigation.css');
2
+ "use strict";
3
+ const styles = {
4
+ "main-navigation": "_main-navigation_1h5w0_2",
5
+ "main-navigation--open": "_main-navigation--open_1h5w0_45",
6
+ "main-navigation--overlay": "_main-navigation--overlay_1h5w0_49",
7
+ "main-navigation__organization-strip": "_main-navigation__organization-strip_1h5w0_54",
8
+ "main-navigation__organization-link": "_main-navigation__organization-link_1h5w0_76",
9
+ "main-navigation__organization-link--current": "_main-navigation__organization-link--current_1h5w0_107",
10
+ "main-navigation__navbar": "_main-navigation__navbar_1h5w0_136",
11
+ "main-navigation__logo": "_main-navigation__logo_1h5w0_151",
12
+ "main-navigation__primary": "_main-navigation__primary_1h5w0_169",
13
+ "main-navigation--menu-open": "_main-navigation--menu-open_1h5w0_190",
14
+ "main-navigation--menu-closing": "_main-navigation--menu-closing_1h5w0_190",
15
+ "main-navigation__primary-list": "_main-navigation__primary-list_1h5w0_195",
16
+ "main-navigation__item": "_main-navigation__item_1h5w0_206",
17
+ "main-navigation__item-link": "_main-navigation__item-link_1h5w0_212",
18
+ "main-navigation__item-toggle": "_main-navigation__item-toggle_1h5w0_213",
19
+ "main-navigation__top-level-toggle-icon": "_main-navigation__top-level-toggle-icon_1h5w0_240",
20
+ "main-navigation__item-toggle--open": "_main-navigation__item-toggle--open_1h5w0_249",
21
+ "main-navigation__item-label": "_main-navigation__item-label_1h5w0_256",
22
+ "main-navigation__item-link--current": "_main-navigation__item-link--current_1h5w0_263",
23
+ "main-navigation__icon-nav": "_main-navigation__icon-nav_1h5w0_283",
24
+ "main-navigation__icon-nav-item": "_main-navigation__icon-nav-item_1h5w0_292",
25
+ "main-navigation__icon-nav-label": "_main-navigation__icon-nav-label_1h5w0_317",
26
+ "main-navigation__icon-nav-item--counter": "_main-navigation__icon-nav-item--counter_1h5w0_321",
27
+ "main-navigation__panel": "_main-navigation__panel_1h5w0_342",
28
+ "main-navigation__panel-content": "_main-navigation__panel-content_1h5w0_347",
29
+ "main-navigation__panel-main": "_main-navigation__panel-main_1h5w0_352",
30
+ "main-navigation__mobile-level-2-content": "_main-navigation__mobile-level-2-content_1h5w0_357",
31
+ "main-navigation__mobile-back-item": "_main-navigation__mobile-back-item_1h5w0_368",
32
+ "main-navigation__mobile-back-icon": "_main-navigation__mobile-back-icon_1h5w0_381",
33
+ "main-navigation__mobile-back-label": "_main-navigation__mobile-back-label_1h5w0_387",
34
+ "main-navigation__mobile-level-2-feature-links": "_main-navigation__mobile-level-2-feature-links_1h5w0_393",
35
+ "main-navigation__mobile-level-2-feature-list": "_main-navigation__mobile-level-2-feature-list_1h5w0_399",
36
+ "main-navigation__panel-list-item": "_main-navigation__panel-list-item_1h5w0_406",
37
+ "main-navigation__mobile-level-2-feature-list-item": "_main-navigation__mobile-level-2-feature-list-item_1h5w0_412",
38
+ "main-navigation__mobile-feature-link": "_main-navigation__mobile-feature-link_1h5w0_392",
39
+ "main-navigation__mobile-level-2-category-list": "_main-navigation__mobile-level-2-category-list_1h5w0_436",
40
+ "main-navigation__mobile-level-2-category-item": "_main-navigation__mobile-level-2-category-item_1h5w0_443",
41
+ "main-navigation__mobile-level-2-category-button": "_main-navigation__mobile-level-2-category-button_1h5w0_448",
42
+ "main-navigation__mobile-level-3-panel": "_main-navigation__mobile-level-3-panel_1h5w0_469",
43
+ "main-navigation__mobile-level-3-panel--open": "_main-navigation__mobile-level-3-panel--open_1h5w0_485",
44
+ "main-navigation__mobile-level-3-panel--is-closing": "_main-navigation__mobile-level-3-panel--is-closing_1h5w0_492",
45
+ "main-navigation__mobile-level-3-list": "_main-navigation__mobile-level-3-list_1h5w0_499",
46
+ "main-navigation__mobile-level-3-item": "_main-navigation__mobile-level-3-item_1h5w0_506",
47
+ "main-navigation__mobile-level-3-link": "_main-navigation__mobile-level-3-link_1h5w0_511",
48
+ "main-navigation__panel-columns": "_main-navigation__panel-columns_1h5w0_522",
49
+ "main-navigation__panel-column": "_main-navigation__panel-column_1h5w0_522",
50
+ "main-navigation__panel-column--highlighted": "_main-navigation__panel-column--highlighted_1h5w0_541",
51
+ "main-navigation__panel-column--mobile-only": "_main-navigation__panel-column--mobile-only_1h5w0_545",
52
+ "main-navigation__panel-column--desktop-only": "_main-navigation__panel-column--desktop-only_1h5w0_549",
53
+ "main-navigation__panel-heading": "_main-navigation__panel-heading_1h5w0_553",
54
+ "main-navigation__panel-list": "_main-navigation__panel-list_1h5w0_406",
55
+ "main-navigation__panel-link": "_main-navigation__panel-link_1h5w0_578",
56
+ "main-navigation__panel-link--current": "_main-navigation__panel-link--current_1h5w0_595",
57
+ "main-navigation__feature-links": "_main-navigation__feature-links_1h5w0_601",
58
+ "main-navigation__feature-links--empty": "_main-navigation__feature-links--empty_1h5w0_607",
59
+ "main-navigation__feature-list": "_main-navigation__feature-list_1h5w0_611",
60
+ "main-navigation__feature-link": "_main-navigation__feature-link_1h5w0_601",
61
+ "main-navigation__feature-link-icon": "_main-navigation__feature-link-icon_1h5w0_645",
62
+ "main-navigation__feature-link-label": "_main-navigation__feature-link-label_1h5w0_650",
63
+ "main-navigation__sr-only": "_main-navigation__sr-only_1h5w0_654",
64
+ "main-navigation__menu-toggle": "_main-navigation__menu-toggle_1h5w0_667",
65
+ "main-navigation__menu-toggle--open": "_main-navigation__menu-toggle--open_1h5w0_680",
66
+ "main-navigation__panel--mobile": "_main-navigation__panel--mobile_1h5w0_685",
67
+ "main-navigation__panel--is-closing": "_main-navigation__panel--is-closing_1h5w0_704",
68
+ "main-navigation__panel--desktop": "_main-navigation__panel--desktop_1h5w0_709",
69
+ "main-navigation__primary--open": "_main-navigation__primary--open_1h5w0_713",
70
+ "main-navigation__item-toggle--current": "_main-navigation__item-toggle--current_1h5w0_829",
71
+ "main-navigation__panel-column--last": "_main-navigation__panel-column--last_1h5w0_915"
72
+ };
73
+ module.exports = styles;
74
+ //# sourceMappingURL=MainNavigation.module.css.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MainNavigation.module.css.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,75 @@
1
+ import './MainNavigation.css';
2
+ const styles = {
3
+ "main-navigation": "_main-navigation_1h5w0_2",
4
+ "main-navigation--open": "_main-navigation--open_1h5w0_45",
5
+ "main-navigation--overlay": "_main-navigation--overlay_1h5w0_49",
6
+ "main-navigation__organization-strip": "_main-navigation__organization-strip_1h5w0_54",
7
+ "main-navigation__organization-link": "_main-navigation__organization-link_1h5w0_76",
8
+ "main-navigation__organization-link--current": "_main-navigation__organization-link--current_1h5w0_107",
9
+ "main-navigation__navbar": "_main-navigation__navbar_1h5w0_136",
10
+ "main-navigation__logo": "_main-navigation__logo_1h5w0_151",
11
+ "main-navigation__primary": "_main-navigation__primary_1h5w0_169",
12
+ "main-navigation--menu-open": "_main-navigation--menu-open_1h5w0_190",
13
+ "main-navigation--menu-closing": "_main-navigation--menu-closing_1h5w0_190",
14
+ "main-navigation__primary-list": "_main-navigation__primary-list_1h5w0_195",
15
+ "main-navigation__item": "_main-navigation__item_1h5w0_206",
16
+ "main-navigation__item-link": "_main-navigation__item-link_1h5w0_212",
17
+ "main-navigation__item-toggle": "_main-navigation__item-toggle_1h5w0_213",
18
+ "main-navigation__top-level-toggle-icon": "_main-navigation__top-level-toggle-icon_1h5w0_240",
19
+ "main-navigation__item-toggle--open": "_main-navigation__item-toggle--open_1h5w0_249",
20
+ "main-navigation__item-label": "_main-navigation__item-label_1h5w0_256",
21
+ "main-navigation__item-link--current": "_main-navigation__item-link--current_1h5w0_263",
22
+ "main-navigation__icon-nav": "_main-navigation__icon-nav_1h5w0_283",
23
+ "main-navigation__icon-nav-item": "_main-navigation__icon-nav-item_1h5w0_292",
24
+ "main-navigation__icon-nav-label": "_main-navigation__icon-nav-label_1h5w0_317",
25
+ "main-navigation__icon-nav-item--counter": "_main-navigation__icon-nav-item--counter_1h5w0_321",
26
+ "main-navigation__panel": "_main-navigation__panel_1h5w0_342",
27
+ "main-navigation__panel-content": "_main-navigation__panel-content_1h5w0_347",
28
+ "main-navigation__panel-main": "_main-navigation__panel-main_1h5w0_352",
29
+ "main-navigation__mobile-level-2-content": "_main-navigation__mobile-level-2-content_1h5w0_357",
30
+ "main-navigation__mobile-back-item": "_main-navigation__mobile-back-item_1h5w0_368",
31
+ "main-navigation__mobile-back-icon": "_main-navigation__mobile-back-icon_1h5w0_381",
32
+ "main-navigation__mobile-back-label": "_main-navigation__mobile-back-label_1h5w0_387",
33
+ "main-navigation__mobile-level-2-feature-links": "_main-navigation__mobile-level-2-feature-links_1h5w0_393",
34
+ "main-navigation__mobile-level-2-feature-list": "_main-navigation__mobile-level-2-feature-list_1h5w0_399",
35
+ "main-navigation__panel-list-item": "_main-navigation__panel-list-item_1h5w0_406",
36
+ "main-navigation__mobile-level-2-feature-list-item": "_main-navigation__mobile-level-2-feature-list-item_1h5w0_412",
37
+ "main-navigation__mobile-feature-link": "_main-navigation__mobile-feature-link_1h5w0_392",
38
+ "main-navigation__mobile-level-2-category-list": "_main-navigation__mobile-level-2-category-list_1h5w0_436",
39
+ "main-navigation__mobile-level-2-category-item": "_main-navigation__mobile-level-2-category-item_1h5w0_443",
40
+ "main-navigation__mobile-level-2-category-button": "_main-navigation__mobile-level-2-category-button_1h5w0_448",
41
+ "main-navigation__mobile-level-3-panel": "_main-navigation__mobile-level-3-panel_1h5w0_469",
42
+ "main-navigation__mobile-level-3-panel--open": "_main-navigation__mobile-level-3-panel--open_1h5w0_485",
43
+ "main-navigation__mobile-level-3-panel--is-closing": "_main-navigation__mobile-level-3-panel--is-closing_1h5w0_492",
44
+ "main-navigation__mobile-level-3-list": "_main-navigation__mobile-level-3-list_1h5w0_499",
45
+ "main-navigation__mobile-level-3-item": "_main-navigation__mobile-level-3-item_1h5w0_506",
46
+ "main-navigation__mobile-level-3-link": "_main-navigation__mobile-level-3-link_1h5w0_511",
47
+ "main-navigation__panel-columns": "_main-navigation__panel-columns_1h5w0_522",
48
+ "main-navigation__panel-column": "_main-navigation__panel-column_1h5w0_522",
49
+ "main-navigation__panel-column--highlighted": "_main-navigation__panel-column--highlighted_1h5w0_541",
50
+ "main-navigation__panel-column--mobile-only": "_main-navigation__panel-column--mobile-only_1h5w0_545",
51
+ "main-navigation__panel-column--desktop-only": "_main-navigation__panel-column--desktop-only_1h5w0_549",
52
+ "main-navigation__panel-heading": "_main-navigation__panel-heading_1h5w0_553",
53
+ "main-navigation__panel-list": "_main-navigation__panel-list_1h5w0_406",
54
+ "main-navigation__panel-link": "_main-navigation__panel-link_1h5w0_578",
55
+ "main-navigation__panel-link--current": "_main-navigation__panel-link--current_1h5w0_595",
56
+ "main-navigation__feature-links": "_main-navigation__feature-links_1h5w0_601",
57
+ "main-navigation__feature-links--empty": "_main-navigation__feature-links--empty_1h5w0_607",
58
+ "main-navigation__feature-list": "_main-navigation__feature-list_1h5w0_611",
59
+ "main-navigation__feature-link": "_main-navigation__feature-link_1h5w0_601",
60
+ "main-navigation__feature-link-icon": "_main-navigation__feature-link-icon_1h5w0_645",
61
+ "main-navigation__feature-link-label": "_main-navigation__feature-link-label_1h5w0_650",
62
+ "main-navigation__sr-only": "_main-navigation__sr-only_1h5w0_654",
63
+ "main-navigation__menu-toggle": "_main-navigation__menu-toggle_1h5w0_667",
64
+ "main-navigation__menu-toggle--open": "_main-navigation__menu-toggle--open_1h5w0_680",
65
+ "main-navigation__panel--mobile": "_main-navigation__panel--mobile_1h5w0_685",
66
+ "main-navigation__panel--is-closing": "_main-navigation__panel--is-closing_1h5w0_704",
67
+ "main-navigation__panel--desktop": "_main-navigation__panel--desktop_1h5w0_709",
68
+ "main-navigation__primary--open": "_main-navigation__primary--open_1h5w0_713",
69
+ "main-navigation__item-toggle--current": "_main-navigation__item-toggle--current_1h5w0_829",
70
+ "main-navigation__panel-column--last": "_main-navigation__panel-column--last_1h5w0_915"
71
+ };
72
+ export {
73
+ styles as default
74
+ };
75
+ //# sourceMappingURL=MainNavigation.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MainNavigation.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,149 @@
1
+ import { AnchorHTMLAttributes, ComponentPropsWithoutRef, ReactNode, Ref } from 'react';
2
+ export interface MainNavigationLink {
3
+ /** Visible link label. */
4
+ readonly label: string;
5
+ /** Link destination (absolute or relative URL). */
6
+ readonly href: string;
7
+ /** Optional anchor target, e.g. `_blank` for external links. */
8
+ readonly target?: string;
9
+ /** Optional external routing hint used in renderLink metadata. */
10
+ readonly external?: boolean;
11
+ /** Explicit current state (optional when using pathname matching). */
12
+ readonly current?: boolean;
13
+ }
14
+ export interface MainNavigationSubmenuColumn {
15
+ /** Category heading shown above the links. */
16
+ readonly heading: string;
17
+ /** Links rendered under this category. */
18
+ readonly links: readonly MainNavigationLink[];
19
+ /** Optional visual emphasis for selected columns (desktop). */
20
+ readonly highlighted?: boolean;
21
+ /** Category only shown in mobile panel variants. */
22
+ readonly mobileOnly?: boolean;
23
+ /** Category only shown in desktop panel variants. */
24
+ readonly desktopOnly?: boolean;
25
+ /** Synthetic overflow category bucket. */
26
+ readonly overflow?: boolean;
27
+ }
28
+ export interface MainNavigationPanel {
29
+ /** Category columns for dropdown / mobile second & third panels. */
30
+ readonly columns?: readonly MainNavigationSubmenuColumn[];
31
+ /** Feature links area (desktop sidebar / mobile feature grid). */
32
+ readonly featureLinks?: readonly MainNavigationLink[];
33
+ /** Optional desktop emphasis style for feature links area. */
34
+ readonly featureLinksHighlighted?: boolean;
35
+ }
36
+ interface MainNavigationItemBase {
37
+ /** Visible link/toggle label. */
38
+ readonly label: string;
39
+ /** Optional anchor target, e.g. `_blank` for external links. */
40
+ readonly target?: string;
41
+ /** Optional external routing hint used in renderLink metadata. */
42
+ readonly external?: boolean;
43
+ /** Explicit current state (optional when using pathname matching). */
44
+ readonly current?: boolean;
45
+ }
46
+ export type MainNavigationItem = (MainNavigationItemBase & {
47
+ /** Top-level link destination when the item has no panel. */
48
+ readonly href: string;
49
+ readonly panel?: undefined;
50
+ }) | (MainNavigationItemBase & {
51
+ /** Optional: used only for currentPathname matching in panel trigger items. */
52
+ readonly href?: string;
53
+ /** Panel/toggle item rendered as a button in top-level navigation. */
54
+ readonly panel: MainNavigationPanel;
55
+ });
56
+ export type MainNavigationOrganizationLink = MainNavigationLink;
57
+ export interface MainNavigationRenderLinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {
58
+ readonly href: string;
59
+ readonly children: ReactNode;
60
+ }
61
+ export interface MainNavigationLinkMeta {
62
+ /** True when the link should be handled as external navigation by the renderLink adapter. */
63
+ readonly external: boolean;
64
+ }
65
+ export type MainNavigationRenderLink = (props: MainNavigationRenderLinkProps, meta: MainNavigationLinkMeta) => ReactNode;
66
+ export interface MainNavigationProps extends Omit<ComponentPropsWithoutRef<'header'>, 'children'> {
67
+ /** Header element ref */
68
+ readonly ref?: Ref<HTMLElement>;
69
+ /** Site selector links (organization selector) shown in the top strip. */
70
+ readonly organizations?: readonly MainNavigationOrganizationLink[];
71
+ /** Main navigation items. */
72
+ readonly items?: readonly MainNavigationItem[];
73
+ /** Login button destination. */
74
+ readonly loginHref?: string;
75
+ /** Login button label. */
76
+ readonly loginLabel?: string;
77
+ /** Logo link destination (defaults to '/'). */
78
+ readonly logoHref?: string;
79
+ /** Language control label text. */
80
+ readonly languageSelectorLabel?: string;
81
+ /** Search control label text. */
82
+ readonly searchLabel?: string;
83
+ /** Cart control label text. */
84
+ readonly cartLabel?: string;
85
+ /** Show/hide language selector control. */
86
+ readonly showLanguageSelector?: boolean;
87
+ /** Show/hide search control. */
88
+ readonly showSearch?: boolean;
89
+ /** Show/hide cart control. */
90
+ readonly showCart?: boolean;
91
+ /** Optional cart counter badge value. */
92
+ readonly cartCounter?: number;
93
+ /** Screen reader text announced after cart counter value (e.g. "tuotetta ostoskorissa"). */
94
+ readonly cartCounterLabel?: string;
95
+ /** Language selector click callback. */
96
+ readonly onLanguageSelectorClick?: () => void;
97
+ /** Search control click callback. */
98
+ readonly onSearchClick?: () => void;
99
+ /** Cart control click callback. */
100
+ readonly onCartClick?: () => void;
101
+ /** Accessible aria-label for mobile menu toggle when menu is closed. */
102
+ readonly mobileMenuOpenAriaLabel?: string;
103
+ /** Accessible aria-label for mobile menu toggle when menu is open. */
104
+ readonly mobileMenuCloseAriaLabel?: string;
105
+ /** Accessible label for organization/site selector navigation strip. */
106
+ readonly organizationStripAriaLabel?: string;
107
+ /** Accessible label for the logo link back to home. */
108
+ readonly logoAriaLabel?: string;
109
+ /** Accessible label for the mobile primary navigation landmark when menu is open. */
110
+ readonly mobilePrimaryNavigationAriaLabel?: string;
111
+ /** Assistive text appended to external feature links (defaults to Finnish, can be overridden). */
112
+ readonly externalLinkAriaLabel?: string;
113
+ /** Initial mobile menu state (primarily for demos, tests, and previews). */
114
+ readonly defaultMobileMenuOpen?: boolean;
115
+ /** Initial open top-level item index (primarily for demos and tests). */
116
+ readonly defaultOpenItemIndex?: number | null;
117
+ /** Current route pathname used for active-state matching. */
118
+ readonly currentPathname?: string;
119
+ /** Label for synthetic overflow category bucket (desktop). */
120
+ readonly overflowCategoryLabel?: string;
121
+ /** Called when mobile menu open/close state changes. */
122
+ readonly onMobileMenuToggle?: (open: boolean) => void;
123
+ /** Called when top-level desktop item open state changes. */
124
+ readonly onDesktopItemToggle?: (index: number | null) => void;
125
+ /**
126
+ * Custom render function for link elements. Use this to integrate with
127
+ * client-side routing libraries like Next.js or React Router.
128
+ *
129
+ * The optional second argument carries external navigation metadata,
130
+ * similar to Footer renderLink.
131
+ *
132
+ * @example
133
+ * // Next.js
134
+ * import Link from 'next/link';
135
+ * <MainNavigation renderLink={(props, { external }) =>
136
+ * external ? <a {...props} /> : <Link {...props} />
137
+ * } />
138
+ *
139
+ * @example
140
+ * // React Router
141
+ * import { Link } from 'react-router-dom';
142
+ * <MainNavigation renderLink={({ href, ...props }, { external }) =>
143
+ * external ? <a href={href} {...props} /> : <Link to={href} {...props} />
144
+ * } />
145
+ */
146
+ readonly renderLink?: MainNavigationRenderLink;
147
+ }
148
+ export {};
149
+ //# sourceMappingURL=MainNavigation.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MainNavigation.types.d.ts","sourceRoot":"","sources":["../../../src/components/MainNavigation/MainNavigation.types.ts"],"names":[],"mappings":"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"}