@dnanpm/styleguide 4.0.9 → 4.0.10

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 (415) hide show
  1. package/build/cjs/components/Accordion/Accordion.js +66 -54
  2. package/build/cjs/components/AccordionItem/AccordionItem.js +94 -73
  3. package/build/cjs/components/AmountSelector/AmountSelector.js +121 -134
  4. package/build/cjs/components/Box/Box.js +38 -13
  5. package/build/cjs/components/Breadcrumb/Breadcrumb.js +73 -71
  6. package/build/cjs/components/Button/Button.js +131 -127
  7. package/build/cjs/components/ButtonArrow/ButtonArrow.js +47 -49
  8. package/build/cjs/components/ButtonCard/ButtonCard.js +97 -112
  9. package/build/cjs/components/ButtonClose/ButtonClose.js +24 -18
  10. package/build/cjs/components/ButtonIcon/ButtonIcon.js +103 -106
  11. package/build/cjs/components/ButtonPrimary/ButtonPrimary.d.ts +43 -2
  12. package/build/cjs/components/ButtonPrimary/ButtonPrimary.js +7 -35
  13. package/build/cjs/components/ButtonSecondary/ButtonSecondary.d.ts +43 -2
  14. package/build/cjs/components/ButtonSecondary/ButtonSecondary.js +7 -35
  15. package/build/cjs/components/Carousel/Carousel.d.ts +8 -2
  16. package/build/cjs/components/Carousel/Carousel.js +315 -346
  17. package/build/cjs/components/Checkbox/Checkbox.js +49 -108
  18. package/build/cjs/components/Chip/Chip.js +40 -34
  19. package/build/cjs/components/DateTimePicker/DateTimePicker.js +198 -334
  20. package/build/cjs/components/Divider/Divider.js +29 -15
  21. package/build/cjs/components/DnaLogo/DnaLogo.js +87 -51
  22. package/build/cjs/components/Drawer/Drawer.js +172 -167
  23. package/build/cjs/components/EmptyState/EmptyState.js +24 -12
  24. package/build/cjs/components/EnergyLabel/EnergyLabel.js +77 -73
  25. package/build/cjs/components/Expander/Expander.js +43 -38
  26. package/build/cjs/components/Floater/Floater.js +36 -14
  27. package/build/cjs/components/Footer/Components/FooterComponents.d.ts +4 -2
  28. package/build/cjs/components/Footer/Components/FooterComponents.js +305 -346
  29. package/build/cjs/components/Footer/Footer.js +51 -80
  30. package/build/cjs/components/Footer/context/FooterContext.js +9 -9
  31. package/build/cjs/components/Hero/Hero.js +101 -149
  32. package/build/cjs/components/Icon/Icon.js +41 -22
  33. package/build/cjs/components/Icons/Small/hlArrowBackSmall.js +12 -4
  34. package/build/cjs/components/Icons/Small/hlArrowForwardSmall.js +12 -4
  35. package/build/cjs/components/Icons/Small/hlArrowUnderSmall.js +12 -4
  36. package/build/cjs/components/Icons/Small/hlCalendarSmall.js +12 -4
  37. package/build/cjs/components/Icons/Small/hlChevronDownSmall.js +12 -4
  38. package/build/cjs/components/Icons/Small/hlChevronLeftSmall.js +12 -4
  39. package/build/cjs/components/Icons/Small/hlChevronRightSmall.js +12 -4
  40. package/build/cjs/components/Icons/Small/hlChevronUpSmall.js +12 -4
  41. package/build/cjs/components/Icons/Small/hlClockSmall.js +14 -5
  42. package/build/cjs/components/Icons/Small/hlDownloadSmall.js +18 -6
  43. package/build/cjs/components/Icons/Small/hlExternalSmall.js +12 -4
  44. package/build/cjs/components/Icons/Small/hlUploadSmall.js +18 -6
  45. package/build/cjs/components/Icons/Social/facebook.js +13 -4
  46. package/build/cjs/components/Icons/Social/instagram.js +13 -4
  47. package/build/cjs/components/Icons/Social/linkedin.js +13 -4
  48. package/build/cjs/components/Icons/Social/tiktok.js +12 -4
  49. package/build/cjs/components/Icons/Social/twitter.js +13 -4
  50. package/build/cjs/components/Icons/Social/youtube.js +12 -4
  51. package/build/cjs/components/Icons/hl404.js +12 -4
  52. package/build/cjs/components/Icons/hl4gSim.js +12 -4
  53. package/build/cjs/components/Icons/hl5gSim.js +12 -4
  54. package/build/cjs/components/Icons/hlBattery.js +16 -6
  55. package/build/cjs/components/Icons/hlBell.js +12 -4
  56. package/build/cjs/components/Icons/hlCableTVCard.js +12 -4
  57. package/build/cjs/components/Icons/hlCalendar.js +56 -15
  58. package/build/cjs/components/Icons/hlCall.js +12 -4
  59. package/build/cjs/components/Icons/hlCameraBack.js +18 -6
  60. package/build/cjs/components/Icons/hlCameraFront.js +14 -5
  61. package/build/cjs/components/Icons/hlCart.js +16 -6
  62. package/build/cjs/components/Icons/hlCartEmpty.js +16 -6
  63. package/build/cjs/components/Icons/hlChat.js +24 -7
  64. package/build/cjs/components/Icons/hlCheck.js +12 -4
  65. package/build/cjs/components/Icons/hlChevronDown.js +12 -4
  66. package/build/cjs/components/Icons/hlChevronLeft.js +12 -4
  67. package/build/cjs/components/Icons/hlChevronRight.js +12 -4
  68. package/build/cjs/components/Icons/hlChevronUp.js +12 -4
  69. package/build/cjs/components/Icons/hlCompensation.js +12 -4
  70. package/build/cjs/components/Icons/hlCookie.js +12 -4
  71. package/build/cjs/components/Icons/hlCopy.js +14 -5
  72. package/build/cjs/components/Icons/hlCoupon.js +16 -6
  73. package/build/cjs/components/Icons/hlDelivery.js +14 -4
  74. package/build/cjs/components/Icons/hlDigiturva.js +14 -4
  75. package/build/cjs/components/Icons/hlDisplaySize.js +19 -6
  76. package/build/cjs/components/Icons/hlDocument.js +14 -5
  77. package/build/cjs/components/Icons/hlDownload.js +18 -6
  78. package/build/cjs/components/Icons/hlEnvelope.js +12 -4
  79. package/build/cjs/components/Icons/hlError.js +22 -6
  80. package/build/cjs/components/Icons/hlEuro.js +12 -4
  81. package/build/cjs/components/Icons/hlExclamationMark.js +12 -4
  82. package/build/cjs/components/Icons/hlExpand.js +12 -4
  83. package/build/cjs/components/Icons/hlExternal.js +12 -4
  84. package/build/cjs/components/Icons/hlEyeClosed.js +12 -4
  85. package/build/cjs/components/Icons/hlEyeOpen.js +14 -5
  86. package/build/cjs/components/Icons/hlFaceId.js +12 -4
  87. package/build/cjs/components/Icons/hlFastDelivery.js +12 -4
  88. package/build/cjs/components/Icons/hlFingerprint.js +20 -8
  89. package/build/cjs/components/Icons/hlGlobe.js +12 -4
  90. package/build/cjs/components/Icons/hlHeadphones.js +12 -4
  91. package/build/cjs/components/Icons/hlHeadset.js +18 -6
  92. package/build/cjs/components/Icons/hlHeart.js +12 -4
  93. package/build/cjs/components/Icons/hlHome.js +12 -4
  94. package/build/cjs/components/Icons/hlHub.js +14 -5
  95. package/build/cjs/components/Icons/hlImage.js +12 -4
  96. package/build/cjs/components/Icons/hlInfo.js +18 -6
  97. package/build/cjs/components/Icons/hlInstallment.js +14 -5
  98. package/build/cjs/components/Icons/hlIotSim.js +14 -5
  99. package/build/cjs/components/Icons/hlLaptop.js +13 -4
  100. package/build/cjs/components/Icons/hlLink.js +16 -5
  101. package/build/cjs/components/Icons/hlLiveVideo.js +12 -4
  102. package/build/cjs/components/Icons/hlLock.js +18 -6
  103. package/build/cjs/components/Icons/hlMagnifyingGlass.js +14 -5
  104. package/build/cjs/components/Icons/hlMarker.js +14 -5
  105. package/build/cjs/components/Icons/hlMemory.js +14 -5
  106. package/build/cjs/components/Icons/hlMenu.js +12 -4
  107. package/build/cjs/components/Icons/hlMinimize.js +12 -4
  108. package/build/cjs/components/Icons/hlMinus.js +12 -4
  109. package/build/cjs/components/Icons/hlMobileData.js +12 -4
  110. package/build/cjs/components/Icons/hlMobilePayment.js +19 -6
  111. package/build/cjs/components/Icons/hlModem.js +26 -8
  112. package/build/cjs/components/Icons/hlMore.js +22 -6
  113. package/build/cjs/components/Icons/hlOs.js +14 -5
  114. package/build/cjs/components/Icons/hlPackage.js +12 -4
  115. package/build/cjs/components/Icons/hlPaperclip.js +12 -4
  116. package/build/cjs/components/Icons/hlPaytime.js +12 -4
  117. package/build/cjs/components/Icons/hlPen.js +12 -4
  118. package/build/cjs/components/Icons/hlPerson.js +12 -4
  119. package/build/cjs/components/Icons/hlPhone.js +17 -5
  120. package/build/cjs/components/Icons/hlPlaylist.js +13 -4
  121. package/build/cjs/components/Icons/hlPlus.js +14 -5
  122. package/build/cjs/components/Icons/hlPrepaid.js +12 -4
  123. package/build/cjs/components/Icons/hlProcessor.js +14 -5
  124. package/build/cjs/components/Icons/hlServices.js +12 -4
  125. package/build/cjs/components/Icons/hlSettings.js +12 -4
  126. package/build/cjs/components/Icons/hlShield.js +14 -5
  127. package/build/cjs/components/Icons/hlSim.js +14 -5
  128. package/build/cjs/components/Icons/hlSimSimple.js +18 -6
  129. package/build/cjs/components/Icons/hlSmile.js +22 -7
  130. package/build/cjs/components/Icons/hlSpeechBubble.js +14 -5
  131. package/build/cjs/components/Icons/hlSquaretrade.js +13 -4
  132. package/build/cjs/components/Icons/hlStar.js +12 -4
  133. package/build/cjs/components/Icons/hlStarFilled.js +12 -4
  134. package/build/cjs/components/Icons/hlTrash.js +14 -5
  135. package/build/cjs/components/Icons/hlTv.js +12 -4
  136. package/build/cjs/components/Icons/hlUnlock.js +14 -6
  137. package/build/cjs/components/Icons/hlUpload.js +18 -6
  138. package/build/cjs/components/Icons/hlWarning.js +18 -6
  139. package/build/cjs/components/Icons/hlWifi.js +18 -6
  140. package/build/cjs/components/Icons/hlWrench.js +12 -4
  141. package/build/cjs/components/Icons/hlX.js +12 -4
  142. package/build/cjs/components/InfoDialog/InfoDialog.js +31 -46
  143. package/build/cjs/components/Input/Input.js +143 -159
  144. package/build/cjs/components/Label/Label.js +22 -22
  145. package/build/cjs/components/LabelText/LabelText.js +24 -17
  146. package/build/cjs/components/MainHeaderNavigation/ChildComponents/BusinessMenu.js +29 -44
  147. package/build/cjs/components/MainHeaderNavigation/ChildComponents/DesktopMenu.js +167 -153
  148. package/build/cjs/components/MainHeaderNavigation/ChildComponents/LanguageSelector.js +34 -20
  149. package/build/cjs/components/MainHeaderNavigation/ChildComponents/LinkModifier.js +50 -32
  150. package/build/cjs/components/MainHeaderNavigation/ChildComponents/LoginTooltip.js +17 -5
  151. package/build/cjs/components/MainHeaderNavigation/ChildComponents/MainNavTooltipMenu.d.ts +5 -2
  152. package/build/cjs/components/MainHeaderNavigation/ChildComponents/MainNavTooltipMenu.js +100 -95
  153. package/build/cjs/components/MainHeaderNavigation/ChildComponents/MainNavTooltipMenuExportedStyles.d.ts +6 -2
  154. package/build/cjs/components/MainHeaderNavigation/ChildComponents/MainNavTooltipMenuExportedStyles.js +4 -58
  155. package/build/cjs/components/MainHeaderNavigation/ChildComponents/MinicartTooltip.js +20 -4
  156. package/build/cjs/components/MainHeaderNavigation/ChildComponents/MobileMenu.js +187 -159
  157. package/build/cjs/components/MainHeaderNavigation/ChildComponents/PageSearch.js +16 -5
  158. package/build/cjs/components/MainHeaderNavigation/MainHeaderNavigation.js +305 -272
  159. package/build/cjs/components/MainHeaderNavigation/context/NavContext.js +61 -49
  160. package/build/cjs/components/MainHeaderNavigation/globalNavStyles.d.ts +31 -16
  161. package/build/cjs/components/MainHeaderNavigation/globalNavStyles.js +39 -172
  162. package/build/cjs/components/Modal/Modal.js +127 -145
  163. package/build/cjs/components/Notification/Notification.js +74 -54
  164. package/build/cjs/components/NotificationBadge/NotificationBadge.js +29 -32
  165. package/build/cjs/components/Overlay/Overlay.js +70 -68
  166. package/build/cjs/components/Pill/Pill.js +91 -82
  167. package/build/cjs/components/PillGroup/PillGroup.js +50 -33
  168. package/build/cjs/components/PixelLoader/PixelLoader.js +37 -34
  169. package/build/cjs/components/PriorityNavigation/PriorityNavigation.js +281 -303
  170. package/build/cjs/components/PriorityNavigationItem/PriorityNavigationItem.js +27 -49
  171. package/build/cjs/components/ProgressIndicator/ProgressIndicator.js +140 -109
  172. package/build/cjs/components/RadioButton/RadioButton.js +91 -114
  173. package/build/cjs/components/ReadMore/ReadMore.js +86 -69
  174. package/build/cjs/components/Search/Search.js +52 -64
  175. package/build/cjs/components/Selectbox/Selectbox.js +279 -94
  176. package/build/cjs/components/Skeleton/Skeleton.js +69 -56
  177. package/build/cjs/components/Switch/Switch.js +62 -76
  178. package/build/cjs/components/Tab/Tab.js +55 -53
  179. package/build/cjs/components/Tabs/Tabs.js +93 -71
  180. package/build/cjs/components/Textarea/Textarea.js +76 -73
  181. package/build/cjs/components/Toaster/Toaster.js +59 -44
  182. package/build/cjs/components/Tooltip/Tooltip.js +74 -87
  183. package/build/cjs/hooks/useCloseOutsideOrElementClicked.js +23 -21
  184. package/build/cjs/hooks/useDebounce.js +9 -9
  185. package/build/cjs/hooks/useDocHeight.js +13 -13
  186. package/build/cjs/hooks/useOutsideClick.js +10 -10
  187. package/build/cjs/hooks/useResizeObserver.js +37 -24
  188. package/build/cjs/hooks/useScrollPosition.js +55 -54
  189. package/build/cjs/hooks/useWindowSize.js +20 -20
  190. package/build/cjs/themes/globalStyles.js +4 -4
  191. package/build/cjs/themes/gridTheme.js +1 -1
  192. package/build/cjs/themes/theme.js +12 -12
  193. package/build/cjs/themes/themeComponents/base.js +9 -8
  194. package/build/cjs/themes/themeComponents/breakpoints.js +6 -6
  195. package/build/cjs/themes/themeComponents/color.js +76 -74
  196. package/build/cjs/themes/themeComponents/fontFamily.js +3 -3
  197. package/build/cjs/themes/themeComponents/fontSize.js +31 -15
  198. package/build/cjs/themes/themeComponents/fontWeight.js +16 -16
  199. package/build/cjs/themes/themeComponents/forms.js +3 -2
  200. package/build/cjs/themes/themeComponents/layout.js +27 -27
  201. package/build/cjs/themes/themeComponents/lineHeight.js +32 -16
  202. package/build/cjs/themes/themeComponents/navigation.js +13 -13
  203. package/build/cjs/themes/themeComponents/radius.js +26 -26
  204. package/build/cjs/utils/common.js +15 -19
  205. package/build/cjs/utils/createStyled.d.ts +154 -134
  206. package/build/cjs/utils/createStyled.js +16 -2
  207. package/build/cjs/utils/styledUtils.js +2 -6
  208. package/build/es/components/Accordion/Accordion.js +66 -54
  209. package/build/es/components/AccordionItem/AccordionItem.js +94 -73
  210. package/build/es/components/AmountSelector/AmountSelector.js +121 -134
  211. package/build/es/components/Box/Box.js +38 -13
  212. package/build/es/components/Breadcrumb/Breadcrumb.js +73 -71
  213. package/build/es/components/Button/Button.js +131 -127
  214. package/build/es/components/ButtonArrow/ButtonArrow.js +47 -49
  215. package/build/es/components/ButtonCard/ButtonCard.js +97 -112
  216. package/build/es/components/ButtonClose/ButtonClose.js +24 -18
  217. package/build/es/components/ButtonIcon/ButtonIcon.js +103 -106
  218. package/build/es/components/ButtonPrimary/ButtonPrimary.d.ts +43 -2
  219. package/build/es/components/ButtonPrimary/ButtonPrimary.js +7 -35
  220. package/build/es/components/ButtonSecondary/ButtonSecondary.d.ts +43 -2
  221. package/build/es/components/ButtonSecondary/ButtonSecondary.js +7 -35
  222. package/build/es/components/Carousel/Carousel.d.ts +8 -2
  223. package/build/es/components/Carousel/Carousel.js +315 -346
  224. package/build/es/components/Checkbox/Checkbox.js +49 -108
  225. package/build/es/components/Chip/Chip.js +40 -34
  226. package/build/es/components/DateTimePicker/DateTimePicker.js +198 -334
  227. package/build/es/components/Divider/Divider.js +29 -15
  228. package/build/es/components/DnaLogo/DnaLogo.js +87 -51
  229. package/build/es/components/Drawer/Drawer.js +172 -167
  230. package/build/es/components/EmptyState/EmptyState.js +24 -12
  231. package/build/es/components/EnergyLabel/EnergyLabel.js +77 -73
  232. package/build/es/components/Expander/Expander.js +43 -38
  233. package/build/es/components/Floater/Floater.js +36 -14
  234. package/build/es/components/Footer/Components/FooterComponents.d.ts +4 -2
  235. package/build/es/components/Footer/Components/FooterComponents.js +305 -346
  236. package/build/es/components/Footer/Footer.js +51 -80
  237. package/build/es/components/Footer/context/FooterContext.js +9 -9
  238. package/build/es/components/Hero/Hero.js +101 -149
  239. package/build/es/components/Icon/Icon.js +41 -22
  240. package/build/es/components/Icons/Small/hlArrowBackSmall.js +12 -4
  241. package/build/es/components/Icons/Small/hlArrowForwardSmall.js +12 -4
  242. package/build/es/components/Icons/Small/hlArrowUnderSmall.js +12 -4
  243. package/build/es/components/Icons/Small/hlCalendarSmall.js +12 -4
  244. package/build/es/components/Icons/Small/hlChevronDownSmall.js +12 -4
  245. package/build/es/components/Icons/Small/hlChevronLeftSmall.js +12 -4
  246. package/build/es/components/Icons/Small/hlChevronRightSmall.js +12 -4
  247. package/build/es/components/Icons/Small/hlChevronUpSmall.js +12 -4
  248. package/build/es/components/Icons/Small/hlClockSmall.js +14 -5
  249. package/build/es/components/Icons/Small/hlDownloadSmall.js +18 -6
  250. package/build/es/components/Icons/Small/hlExternalSmall.js +12 -4
  251. package/build/es/components/Icons/Small/hlUploadSmall.js +18 -6
  252. package/build/es/components/Icons/Social/facebook.js +13 -4
  253. package/build/es/components/Icons/Social/instagram.js +13 -4
  254. package/build/es/components/Icons/Social/linkedin.js +13 -4
  255. package/build/es/components/Icons/Social/tiktok.js +12 -4
  256. package/build/es/components/Icons/Social/twitter.js +13 -4
  257. package/build/es/components/Icons/Social/youtube.js +12 -4
  258. package/build/es/components/Icons/hl404.js +12 -4
  259. package/build/es/components/Icons/hl4gSim.js +12 -4
  260. package/build/es/components/Icons/hl5gSim.js +12 -4
  261. package/build/es/components/Icons/hlBattery.js +16 -6
  262. package/build/es/components/Icons/hlBell.js +12 -4
  263. package/build/es/components/Icons/hlCableTVCard.js +12 -4
  264. package/build/es/components/Icons/hlCalendar.js +56 -15
  265. package/build/es/components/Icons/hlCall.js +12 -4
  266. package/build/es/components/Icons/hlCameraBack.js +18 -6
  267. package/build/es/components/Icons/hlCameraFront.js +14 -5
  268. package/build/es/components/Icons/hlCart.js +16 -6
  269. package/build/es/components/Icons/hlCartEmpty.js +16 -6
  270. package/build/es/components/Icons/hlChat.js +24 -7
  271. package/build/es/components/Icons/hlCheck.js +12 -4
  272. package/build/es/components/Icons/hlChevronDown.js +12 -4
  273. package/build/es/components/Icons/hlChevronLeft.js +12 -4
  274. package/build/es/components/Icons/hlChevronRight.js +12 -4
  275. package/build/es/components/Icons/hlChevronUp.js +12 -4
  276. package/build/es/components/Icons/hlCompensation.js +12 -4
  277. package/build/es/components/Icons/hlCookie.js +12 -4
  278. package/build/es/components/Icons/hlCopy.js +14 -5
  279. package/build/es/components/Icons/hlCoupon.js +16 -6
  280. package/build/es/components/Icons/hlDelivery.js +14 -4
  281. package/build/es/components/Icons/hlDigiturva.js +14 -4
  282. package/build/es/components/Icons/hlDisplaySize.js +19 -6
  283. package/build/es/components/Icons/hlDocument.js +14 -5
  284. package/build/es/components/Icons/hlDownload.js +18 -6
  285. package/build/es/components/Icons/hlEnvelope.js +12 -4
  286. package/build/es/components/Icons/hlError.js +22 -6
  287. package/build/es/components/Icons/hlEuro.js +12 -4
  288. package/build/es/components/Icons/hlExclamationMark.js +12 -4
  289. package/build/es/components/Icons/hlExpand.js +12 -4
  290. package/build/es/components/Icons/hlExternal.js +12 -4
  291. package/build/es/components/Icons/hlEyeClosed.js +12 -4
  292. package/build/es/components/Icons/hlEyeOpen.js +14 -5
  293. package/build/es/components/Icons/hlFaceId.js +12 -4
  294. package/build/es/components/Icons/hlFastDelivery.js +12 -4
  295. package/build/es/components/Icons/hlFingerprint.js +20 -8
  296. package/build/es/components/Icons/hlGlobe.js +12 -4
  297. package/build/es/components/Icons/hlHeadphones.js +12 -4
  298. package/build/es/components/Icons/hlHeadset.js +18 -6
  299. package/build/es/components/Icons/hlHeart.js +12 -4
  300. package/build/es/components/Icons/hlHome.js +12 -4
  301. package/build/es/components/Icons/hlHub.js +14 -5
  302. package/build/es/components/Icons/hlImage.js +12 -4
  303. package/build/es/components/Icons/hlInfo.js +18 -6
  304. package/build/es/components/Icons/hlInstallment.js +14 -5
  305. package/build/es/components/Icons/hlIotSim.js +14 -5
  306. package/build/es/components/Icons/hlLaptop.js +13 -4
  307. package/build/es/components/Icons/hlLink.js +16 -5
  308. package/build/es/components/Icons/hlLiveVideo.js +12 -4
  309. package/build/es/components/Icons/hlLock.js +18 -6
  310. package/build/es/components/Icons/hlMagnifyingGlass.js +14 -5
  311. package/build/es/components/Icons/hlMarker.js +14 -5
  312. package/build/es/components/Icons/hlMemory.js +14 -5
  313. package/build/es/components/Icons/hlMenu.js +12 -4
  314. package/build/es/components/Icons/hlMinimize.js +12 -4
  315. package/build/es/components/Icons/hlMinus.js +12 -4
  316. package/build/es/components/Icons/hlMobileData.js +12 -4
  317. package/build/es/components/Icons/hlMobilePayment.js +19 -6
  318. package/build/es/components/Icons/hlModem.js +26 -8
  319. package/build/es/components/Icons/hlMore.js +22 -6
  320. package/build/es/components/Icons/hlOs.js +14 -5
  321. package/build/es/components/Icons/hlPackage.js +12 -4
  322. package/build/es/components/Icons/hlPaperclip.js +12 -4
  323. package/build/es/components/Icons/hlPaytime.js +12 -4
  324. package/build/es/components/Icons/hlPen.js +12 -4
  325. package/build/es/components/Icons/hlPerson.js +12 -4
  326. package/build/es/components/Icons/hlPhone.js +17 -5
  327. package/build/es/components/Icons/hlPlaylist.js +13 -4
  328. package/build/es/components/Icons/hlPlus.js +14 -5
  329. package/build/es/components/Icons/hlPrepaid.js +12 -4
  330. package/build/es/components/Icons/hlProcessor.js +14 -5
  331. package/build/es/components/Icons/hlServices.js +12 -4
  332. package/build/es/components/Icons/hlSettings.js +12 -4
  333. package/build/es/components/Icons/hlShield.js +14 -5
  334. package/build/es/components/Icons/hlSim.js +14 -5
  335. package/build/es/components/Icons/hlSimSimple.js +18 -6
  336. package/build/es/components/Icons/hlSmile.js +22 -7
  337. package/build/es/components/Icons/hlSpeechBubble.js +14 -5
  338. package/build/es/components/Icons/hlSquaretrade.js +13 -4
  339. package/build/es/components/Icons/hlStar.js +12 -4
  340. package/build/es/components/Icons/hlStarFilled.js +12 -4
  341. package/build/es/components/Icons/hlTrash.js +14 -5
  342. package/build/es/components/Icons/hlTv.js +12 -4
  343. package/build/es/components/Icons/hlUnlock.js +14 -6
  344. package/build/es/components/Icons/hlUpload.js +18 -6
  345. package/build/es/components/Icons/hlWarning.js +18 -6
  346. package/build/es/components/Icons/hlWifi.js +18 -6
  347. package/build/es/components/Icons/hlWrench.js +12 -4
  348. package/build/es/components/Icons/hlX.js +12 -4
  349. package/build/es/components/InfoDialog/InfoDialog.js +31 -46
  350. package/build/es/components/Input/Input.js +143 -159
  351. package/build/es/components/Label/Label.js +22 -22
  352. package/build/es/components/LabelText/LabelText.js +24 -17
  353. package/build/es/components/MainHeaderNavigation/ChildComponents/BusinessMenu.js +29 -44
  354. package/build/es/components/MainHeaderNavigation/ChildComponents/DesktopMenu.js +167 -153
  355. package/build/es/components/MainHeaderNavigation/ChildComponents/LanguageSelector.js +34 -20
  356. package/build/es/components/MainHeaderNavigation/ChildComponents/LinkModifier.js +50 -32
  357. package/build/es/components/MainHeaderNavigation/ChildComponents/LoginTooltip.js +17 -5
  358. package/build/es/components/MainHeaderNavigation/ChildComponents/MainNavTooltipMenu.d.ts +5 -2
  359. package/build/es/components/MainHeaderNavigation/ChildComponents/MainNavTooltipMenu.js +100 -95
  360. package/build/es/components/MainHeaderNavigation/ChildComponents/MainNavTooltipMenuExportedStyles.d.ts +6 -2
  361. package/build/es/components/MainHeaderNavigation/ChildComponents/MainNavTooltipMenuExportedStyles.js +4 -58
  362. package/build/es/components/MainHeaderNavigation/ChildComponents/MinicartTooltip.js +20 -4
  363. package/build/es/components/MainHeaderNavigation/ChildComponents/MobileMenu.js +187 -159
  364. package/build/es/components/MainHeaderNavigation/ChildComponents/PageSearch.js +16 -5
  365. package/build/es/components/MainHeaderNavigation/MainHeaderNavigation.js +305 -272
  366. package/build/es/components/MainHeaderNavigation/context/NavContext.js +61 -49
  367. package/build/es/components/MainHeaderNavigation/globalNavStyles.d.ts +31 -16
  368. package/build/es/components/MainHeaderNavigation/globalNavStyles.js +39 -172
  369. package/build/es/components/Modal/Modal.js +127 -145
  370. package/build/es/components/Notification/Notification.js +74 -54
  371. package/build/es/components/NotificationBadge/NotificationBadge.js +29 -32
  372. package/build/es/components/Overlay/Overlay.js +70 -68
  373. package/build/es/components/Pill/Pill.js +91 -82
  374. package/build/es/components/PillGroup/PillGroup.js +50 -33
  375. package/build/es/components/PixelLoader/PixelLoader.js +37 -34
  376. package/build/es/components/PriorityNavigation/PriorityNavigation.js +281 -303
  377. package/build/es/components/PriorityNavigationItem/PriorityNavigationItem.js +27 -49
  378. package/build/es/components/ProgressIndicator/ProgressIndicator.js +140 -109
  379. package/build/es/components/RadioButton/RadioButton.js +91 -114
  380. package/build/es/components/ReadMore/ReadMore.js +86 -69
  381. package/build/es/components/Search/Search.js +52 -64
  382. package/build/es/components/Selectbox/Selectbox.js +279 -94
  383. package/build/es/components/Skeleton/Skeleton.js +69 -56
  384. package/build/es/components/Switch/Switch.js +62 -76
  385. package/build/es/components/Tab/Tab.js +55 -53
  386. package/build/es/components/Tabs/Tabs.js +93 -71
  387. package/build/es/components/Textarea/Textarea.js +76 -73
  388. package/build/es/components/Toaster/Toaster.js +59 -44
  389. package/build/es/components/Tooltip/Tooltip.js +74 -87
  390. package/build/es/hooks/useCloseOutsideOrElementClicked.js +23 -21
  391. package/build/es/hooks/useDebounce.js +9 -9
  392. package/build/es/hooks/useDocHeight.js +13 -13
  393. package/build/es/hooks/useOutsideClick.js +10 -10
  394. package/build/es/hooks/useResizeObserver.js +37 -24
  395. package/build/es/hooks/useScrollPosition.js +55 -54
  396. package/build/es/hooks/useWindowSize.js +20 -20
  397. package/build/es/themes/globalStyles.js +4 -4
  398. package/build/es/themes/gridTheme.js +1 -1
  399. package/build/es/themes/theme.js +12 -12
  400. package/build/es/themes/themeComponents/base.js +9 -8
  401. package/build/es/themes/themeComponents/breakpoints.js +6 -6
  402. package/build/es/themes/themeComponents/color.js +76 -74
  403. package/build/es/themes/themeComponents/fontFamily.js +3 -3
  404. package/build/es/themes/themeComponents/fontSize.js +31 -15
  405. package/build/es/themes/themeComponents/fontWeight.js +16 -16
  406. package/build/es/themes/themeComponents/forms.js +3 -2
  407. package/build/es/themes/themeComponents/layout.js +27 -27
  408. package/build/es/themes/themeComponents/lineHeight.js +32 -16
  409. package/build/es/themes/themeComponents/navigation.js +13 -13
  410. package/build/es/themes/themeComponents/radius.js +26 -26
  411. package/build/es/utils/common.js +15 -19
  412. package/build/es/utils/createStyled.d.ts +154 -134
  413. package/build/es/utils/createStyled.js +16 -2
  414. package/build/es/utils/styledUtils.js +2 -6
  415. package/package.json +15 -13
@@ -21,301 +21,334 @@ import PageSearch from './ChildComponents/PageSearch.js';
21
21
  import NavContext from './context/NavContext.js';
22
22
  import { LogoLink, DesktopMenuContainer, HeaderIconContainer, MobileMenuButton } from './globalNavStyles.js';
23
23
 
24
- const GlobalStyle = createGlobalStyle `
25
- body.overflow-hidden {
26
- overflow: hidden;
27
- }
28
- `;
24
+ const GlobalStyle = createGlobalStyle(["body.overflow-hidden{overflow:hidden;}"]);
29
25
  // detect common touch screen devices
30
26
  const isIosDevice = () => {
31
- const validate = /iPad|iPhone|iPod|iPad Simulator|iPhone Simulator/i;
32
- if (typeof navigator !== 'undefined' && typeof window !== 'undefined') {
33
- return (validate.test(navigator.userAgent) &&
34
- !window.MSStream);
35
- }
36
- return false;
27
+ const validate = /iPad|iPhone|iPod|iPad Simulator|iPhone Simulator/i;
28
+ if (typeof navigator !== 'undefined' && typeof window !== 'undefined') {
29
+ return validate.test(navigator.userAgent) && !window.MSStream;
30
+ }
31
+ return false;
37
32
  };
38
33
  const iosDevice = isIosDevice();
39
- const fadeIn = keyframes `
40
- 0% {
41
- opacity: 0;
42
- transform: translateY(-5px);
43
- }
44
- 5% {
45
- opacity: 0;
46
- transform: translateY(-5px);
47
- }
48
- 100% {
49
- opacity: 1;
50
- transform: translateY(0px);
51
- }
52
- `;
34
+ const fadeIn = keyframes(["0%{opacity:0;transform:translateY(-5px);}5%{opacity:0;transform:translateY(-5px);}100%{opacity:1;transform:translateY(0px);}"]);
53
35
  const preventBodyScroll = () => {
54
- const { scrollY } = window;
55
- document.body.style.position = 'fixed';
56
- document.body.style.top = `-${scrollY}px`;
36
+ const {
37
+ scrollY
38
+ } = window;
39
+ document.body.style.position = 'fixed';
40
+ document.body.style.top = `-${scrollY}px`;
57
41
  };
58
42
  const resumeBodyScroll = () => {
59
- const scrollY = document.body.style.top;
60
- document.body.style.position = '';
61
- document.body.style.top = '';
62
- // if the call to close overlay is done multiple times, scroll only the first time
63
- if (scrollY) {
64
- setTimeout(() => {
65
- window.scrollTo(0, parseInt(scrollY, 10) * -1);
66
- });
67
- }
43
+ const scrollY = document.body.style.top;
44
+ document.body.style.position = '';
45
+ document.body.style.top = '';
46
+ // if the call to close overlay is done multiple times, scroll only the first time
47
+ if (scrollY) {
48
+ setTimeout(() => {
49
+ window.scrollTo(0, parseInt(scrollY, 10) * -1);
50
+ });
51
+ }
68
52
  };
69
- const PageOverlay = styled.div `
70
- position: fixed;
71
- animation: ${fadeIn} 0.2s ease-in-out;
72
- top: 0;
73
- left: 0;
74
- width: 100%;
75
- height: 100%;
76
- background: ${theme.color.background.plum.default + theme.color.transparency.T10};
77
- z-index: ${({ $navZIndex }) => $navZIndex - 1};
78
- `;
53
+ const PageOverlay = styled.div.withConfig({
54
+ displayName: "MainHeaderNavigation__PageOverlay",
55
+ componentId: "sc-v3v2bk-0"
56
+ })(["position:fixed;animation:", " 0.2s ease-in-out;top:0;left:0;width:100%;height:100%;background:", ";z-index:", ";"], fadeIn, theme.color.background.plum.default + theme.color.transparency.T10, ({
57
+ $navZIndex
58
+ }) => $navZIndex - 1);
79
59
  const scrollThreshold = 82;
80
60
  const checkThreshold = (prevPos, currPos) => {
81
- if (prevPos >= currPos) {
82
- return prevPos - currPos > scrollThreshold;
83
- }
84
- return currPos - prevPos > scrollThreshold;
61
+ if (prevPos >= currPos) {
62
+ return prevPos - currPos > scrollThreshold;
63
+ }
64
+ return currPos - prevPos > scrollThreshold;
85
65
  };
86
- const GlobalNavigationContainer = styled.header `
87
- z-index: ${({ $navZIndex }) => $navZIndex};
88
- position: sticky;
89
- top: 0;
90
- left: 0;
91
- right: 0;
92
- width: 100%;
93
- background-color: ${theme.color.background.white.default};
94
- color: ${theme.color.text.black};
95
- max-width: ${theme.layout.page.maxWidth}px;
96
- margin: 0 auto;
97
- > nav {
98
- background-color: ${theme.color.background.plum.E02};
99
- }
100
- `;
101
- const NavigationWrapper = styled.div `
102
- display: flex;
103
- width: 100%;
104
- max-width: ${theme.layout.page.maxWidth}px;
105
- margin: 0 auto;
106
- height: ${navMaxHeight};
107
- position: relative;
108
- flex-wrap: nowrap;
109
- gap: 0;
110
- background-color: ${theme.color.background.white.default};
111
- border-bottom: 1px solid ${theme.color.line.L04};
112
- @media (min-width: ${p => p.$collapseSize + 1}px) {
113
- flex-wrap: nowrap;
114
- gap: 0 ${getMultipliedSize(theme.base.baseWidth, 1.5)};
115
- }
116
- `;
66
+ const GlobalNavigationContainer = styled.header.withConfig({
67
+ displayName: "MainHeaderNavigation__GlobalNavigationContainer",
68
+ componentId: "sc-v3v2bk-1"
69
+ })(["z-index:", ";position:sticky;top:0;left:0;right:0;width:100%;background-color:", ";color:", ";max-width:", "px;margin:0 auto;> nav{background-color:", ";}"], ({
70
+ $navZIndex
71
+ }) => $navZIndex, theme.color.background.white.default, theme.color.text.black, theme.layout.page.maxWidth, theme.color.background.plum.E02);
72
+ const NavigationWrapper = styled.div.withConfig({
73
+ displayName: "MainHeaderNavigation__NavigationWrapper",
74
+ componentId: "sc-v3v2bk-2"
75
+ })(["display:flex;width:100%;max-width:", "px;margin:0 auto;height:", ";position:relative;flex-wrap:nowrap;gap:0;background-color:", ";border-bottom:1px solid ", ";@media (min-width:", "px){flex-wrap:nowrap;gap:0 ", ";}"], theme.layout.page.maxWidth, navMaxHeight, theme.color.background.white.default, theme.color.line.L04, p => p.$collapseSize + 1, getMultipliedSize(theme.base.baseWidth, 1.5));
117
76
  let previousValue = false;
118
- const isStickySupported = typeof CSS !== 'undefined' &&
119
- typeof CSS.supports !== 'undefined' &&
120
- (CSS.supports('position', 'sticky') || CSS.supports('position', '-webkit-sticky'));
121
- const initiateScrollToHeader = (componentRef) => {
122
- if ((componentRef === null || componentRef === void 0 ? void 0 : componentRef.current) && isStickySupported && typeof window !== 'undefined') {
123
- window.scrollTo({ top: componentRef.current.offsetTop, left: 0 });
124
- }
77
+ const isStickySupported = typeof CSS !== 'undefined' && typeof CSS.supports !== 'undefined' && (CSS.supports('position', 'sticky') || CSS.supports('position', '-webkit-sticky'));
78
+ const initiateScrollToHeader = componentRef => {
79
+ if ((componentRef === null || componentRef === void 0 ? void 0 : componentRef.current) && isStickySupported && typeof window !== 'undefined') {
80
+ window.scrollTo({
81
+ top: componentRef.current.offsetTop,
82
+ left: 0
83
+ });
84
+ }
125
85
  };
126
86
  /** @visibleName MainHeaderNavigation */
127
- const MainHeaderNavigation = (_a) => {
128
- var _b, _c, _d;
129
- var { backToPreviousCategoryLabel = '', businessMenuAriaLabel = 'Sivustot', categoryCollectionText = 'Muut kategoriat', closeMainMenuAriaLabel, className, collapseSize = 767, currentUrl = '', dnaLogoLinkAriaLabel, featuredItemsAriaLabel = '', isLoggedIn = false, items = {}, language = 'fi', languageSelector = false, languageSelectorText = 'Vaihda kieltä', login = true, loginComponent, loginText = 'Kirjaudu', mainMenuAriaLabel = 'Päänavigaatio', minicart = true, minicartAmount = 0, minicartAmountLabel, minicartText = 'Ostoskori', nextJSLinkComponent = false, nextJSLinkLegacyBehavior = true, notificationText = '', openMainMenuAriaLabel, search = true, searchComponent = false, searchText = 'Haku', showLoginTooltip = false, showMinicart = false, zIndex = 1030 } = _a, props = __rest(_a, ["backToPreviousCategoryLabel", "businessMenuAriaLabel", "categoryCollectionText", "closeMainMenuAriaLabel", "className", "collapseSize", "currentUrl", "dnaLogoLinkAriaLabel", "featuredItemsAriaLabel", "isLoggedIn", "items", "language", "languageSelector", "languageSelectorText", "login", "loginComponent", "loginText", "mainMenuAriaLabel", "minicart", "minicartAmount", "minicartAmountLabel", "minicartText", "nextJSLinkComponent", "nextJSLinkLegacyBehavior", "notificationText", "openMainMenuAriaLabel", "search", "searchComponent", "searchText", "showLoginTooltip", "showMinicart", "zIndex"]);
130
- const { isMobile } = useWindowSize(collapseSize);
131
- const navigationEl = useRef(null);
132
- const key = prop('id');
133
- // Index & memoize menu levels
134
- const level1 = useMemo(() => { var _a, _b; return (_b = (_a = items.mainNavigation) === null || _a === void 0 ? void 0 : _a.pages) !== null && _b !== void 0 ? _b : []; }, [items.mainNavigation]);
135
- const level1Items = useMemo(() => indexBy(key, level1), [level1, key]);
136
- const level2 = useMemo(() => level1.map(item => indexBy(key, item.pages)), [level1, key]);
137
- const level2Items = Object.assign({}, ...level2);
138
- // All states to for handling menus
139
- const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);
140
- const [menuLevel, setMenuLevel] = useState({
141
- level1: null,
142
- animate1: true,
87
+ const MainHeaderNavigation = _a => {
88
+ var _b, _c, _d;
89
+ var {
90
+ backToPreviousCategoryLabel = '',
91
+ businessMenuAriaLabel = 'Sivustot',
92
+ categoryCollectionText = 'Muut kategoriat',
93
+ closeMainMenuAriaLabel,
94
+ className,
95
+ collapseSize = 767,
96
+ currentUrl = '',
97
+ dnaLogoLinkAriaLabel,
98
+ featuredItemsAriaLabel = '',
99
+ isLoggedIn = false,
100
+ items = {},
101
+ language = 'fi',
102
+ languageSelector = false,
103
+ languageSelectorText = 'Vaihda kieltä',
104
+ login = true,
105
+ loginComponent,
106
+ loginText = 'Kirjaudu',
107
+ mainMenuAriaLabel = 'Päänavigaatio',
108
+ minicart = true,
109
+ minicartAmount = 0,
110
+ minicartAmountLabel,
111
+ minicartText = 'Ostoskori',
112
+ nextJSLinkComponent = false,
113
+ nextJSLinkLegacyBehavior = true,
114
+ notificationText = '',
115
+ openMainMenuAriaLabel,
116
+ search = true,
117
+ searchComponent = false,
118
+ searchText = 'Haku',
119
+ showLoginTooltip = false,
120
+ showMinicart = false,
121
+ zIndex = 1030
122
+ } = _a,
123
+ props = __rest(_a, ["backToPreviousCategoryLabel", "businessMenuAriaLabel", "categoryCollectionText", "closeMainMenuAriaLabel", "className", "collapseSize", "currentUrl", "dnaLogoLinkAriaLabel", "featuredItemsAriaLabel", "isLoggedIn", "items", "language", "languageSelector", "languageSelectorText", "login", "loginComponent", "loginText", "mainMenuAriaLabel", "minicart", "minicartAmount", "minicartAmountLabel", "minicartText", "nextJSLinkComponent", "nextJSLinkLegacyBehavior", "notificationText", "openMainMenuAriaLabel", "search", "searchComponent", "searchText", "showLoginTooltip", "showMinicart", "zIndex"]);
124
+ const {
125
+ isMobile
126
+ } = useWindowSize(collapseSize);
127
+ const navigationEl = useRef(null);
128
+ const key = prop('id');
129
+ // Index & memoize menu levels
130
+ const level1 = useMemo(() => {
131
+ var _a, _b;
132
+ return (_b = (_a = items.mainNavigation) === null || _a === void 0 ? void 0 : _a.pages) !== null && _b !== void 0 ? _b : [];
133
+ }, [items.mainNavigation]);
134
+ const level1Items = useMemo(() => indexBy(key, level1), [level1, key]);
135
+ const level2 = useMemo(() => level1.map(item => indexBy(key, item.pages)), [level1, key]);
136
+ const level2Items = Object.assign({}, ...level2);
137
+ // All states to for handling menus
138
+ const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);
139
+ const [menuLevel, setMenuLevel] = useState({
140
+ level1: null,
141
+ animate1: true,
142
+ level2: null,
143
+ animate2: true,
144
+ level1Mobile: null,
145
+ level2Mobile: null,
146
+ scrollPosition: 0,
147
+ hideOnScroll: false
148
+ });
149
+ const [lang] = useState(language);
150
+ // As scroll position cannot be always retained, close mobile menu when orientation changes
151
+ const initRotation = () => {
152
+ setIsMobileMenuOpen(false);
153
+ };
154
+ useEffect(() => {
155
+ if (iosDevice && isMobileMenuOpen) {
156
+ window.addEventListener('orientationchange', initRotation, false);
157
+ preventBodyScroll();
158
+ }
159
+ if (iosDevice && !isMobileMenuOpen) {
160
+ window.removeEventListener('orientationchange', initRotation, false);
161
+ resumeBodyScroll();
162
+ }
163
+ return () => {
164
+ window.removeEventListener('orientationchange', initRotation, false);
165
+ resumeBodyScroll();
166
+ };
167
+ }, [isMobileMenuOpen]);
168
+ const [tooltipItems, setTooltipItems] = useState(useMemo(() => ({
169
+ minicart: false,
170
+ login: false,
171
+ search: false
172
+ }), []));
173
+ const tooltipMenuActive = tooltipItems.minicart || tooltipItems.login || tooltipItems.search;
174
+ const freezeOverflow = isMobileMenuOpen || tooltipMenuActive && isMobile;
175
+ const isPageOverlay = isMobileMenuOpen || tooltipMenuActive || menuLevel.level1 || menuLevel.level2;
176
+ useEffect(() => {
177
+ const bodyClasses = ['overflow-shown', 'overflow-hidden'];
178
+ document.body.classList.remove(...bodyClasses);
179
+ document.body.classList.add(bodyClasses[Number(Boolean(freezeOverflow))]);
180
+ }, [freezeOverflow]);
181
+ const navigationContext = useMemo(() => {
182
+ const handleNavMenuClick = (newValue, updatedLevel) => {
183
+ let clickedItself = false;
184
+ switch (updatedLevel) {
185
+ case 'level1':
186
+ clickedItself = newValue === menuLevel.level1;
187
+ setMenuLevel(Object.assign(Object.assign({}, menuLevel), {
188
+ level1: !clickedItself ? newValue : null,
189
+ animate1: !clickedItself,
190
+ level2: null,
191
+ animate2: true
192
+ }));
193
+ break;
194
+ case 'level2':
195
+ clickedItself = newValue === menuLevel.level2;
196
+ setMenuLevel(Object.assign(Object.assign({}, menuLevel), {
197
+ level2: newValue !== menuLevel.level2 ? newValue : null,
198
+ animate1: false,
199
+ animate2: !clickedItself
200
+ }));
201
+ break;
202
+ case 'level1Mobile':
203
+ setMenuLevel(Object.assign(Object.assign({}, menuLevel), {
204
+ level1Mobile: newValue || menuLevel.level1Mobile,
205
+ scrollPosition: newValue ? 1 : 0
206
+ }));
207
+ break;
208
+ case 'level2Mobile':
209
+ setMenuLevel(Object.assign(Object.assign({}, menuLevel), {
210
+ level2Mobile: newValue || menuLevel.level2Mobile,
211
+ scrollPosition: newValue ? 2 : 1
212
+ }));
213
+ break;
214
+ }
215
+ };
216
+ const resetMenuEvents = () => {
217
+ setMenuLevel({
143
218
  level2: null,
144
219
  animate2: true,
220
+ level1: null,
221
+ animate1: true,
145
222
  level1Mobile: null,
146
223
  level2Mobile: null,
147
224
  scrollPosition: 0,
148
- hideOnScroll: false,
149
- });
150
- const [lang] = useState(language);
151
- // As scroll position cannot be always retained, close mobile menu when orientation changes
152
- const initRotation = () => {
225
+ hideOnScroll: false
226
+ });
227
+ if (isMobileMenuOpen) {
153
228
  setIsMobileMenuOpen(false);
154
- };
155
- useEffect(() => {
156
- if (iosDevice && isMobileMenuOpen) {
157
- window.addEventListener('orientationchange', initRotation, false);
158
- preventBodyScroll();
159
- }
160
- if (iosDevice && !isMobileMenuOpen) {
161
- window.removeEventListener('orientationchange', initRotation, false);
162
- resumeBodyScroll();
163
- }
164
- return () => {
165
- window.removeEventListener('orientationchange', initRotation, false);
166
- resumeBodyScroll();
167
- };
168
- }, [isMobileMenuOpen]);
169
- const [tooltipItems, setTooltipItems] = useState(useMemo(() => ({
229
+ }
230
+ setTooltipItems({
170
231
  minicart: false,
171
232
  login: false,
172
- search: false,
173
- }), []));
174
- const tooltipMenuActive = tooltipItems.minicart || tooltipItems.login || tooltipItems.search;
175
- const freezeOverflow = isMobileMenuOpen || (tooltipMenuActive && isMobile);
176
- const isPageOverlay = isMobileMenuOpen || tooltipMenuActive || menuLevel.level1 || menuLevel.level2;
177
- useEffect(() => {
178
- const bodyClasses = ['overflow-shown', 'overflow-hidden'];
179
- document.body.classList.remove(...bodyClasses);
180
- document.body.classList.add(bodyClasses[Number(Boolean(freezeOverflow))]);
181
- }, [freezeOverflow]);
182
- const navigationContext = useMemo(() => {
183
- const handleNavMenuClick = (newValue, updatedLevel) => {
184
- let clickedItself = false;
185
- switch (updatedLevel) {
186
- case 'level1':
187
- clickedItself = newValue === menuLevel.level1;
188
- setMenuLevel(Object.assign(Object.assign({}, menuLevel), { level1: !clickedItself ? newValue : null, animate1: !clickedItself, level2: null, animate2: true }));
189
- break;
190
- case 'level2':
191
- clickedItself = newValue === menuLevel.level2;
192
- setMenuLevel(Object.assign(Object.assign({}, menuLevel), { level2: newValue !== menuLevel.level2 ? newValue : null, animate1: false, animate2: !clickedItself }));
193
- break;
194
- case 'level1Mobile':
195
- setMenuLevel(Object.assign(Object.assign({}, menuLevel), { level1Mobile: newValue || menuLevel.level1Mobile, scrollPosition: newValue ? 1 : 0 }));
196
- break;
197
- case 'level2Mobile':
198
- setMenuLevel(Object.assign(Object.assign({}, menuLevel), { level2Mobile: newValue || menuLevel.level2Mobile, scrollPosition: newValue ? 2 : 1 }));
199
- break;
200
- }
201
- };
202
- const resetMenuEvents = () => {
203
- setMenuLevel({
204
- level2: null,
205
- animate2: true,
206
- level1: null,
207
- animate1: true,
208
- level1Mobile: null,
209
- level2Mobile: null,
210
- scrollPosition: 0,
211
- hideOnScroll: false,
212
- });
213
- if (isMobileMenuOpen) {
214
- setIsMobileMenuOpen(false);
215
- }
216
- setTooltipItems({
217
- minicart: false,
218
- login: false,
219
- search: false,
220
- });
221
- };
222
- const getBackLink = (menuElements, i) => {
223
- const idValue = menuLevel[`level${i}Mobile`];
224
- return menuElements[idValue];
225
- };
226
- // Resets menu states when menu content alters between mobile and desktop
227
- const menuChanged = previousValue !== isMobile;
228
- if (menuChanged) {
229
- resetMenuEvents();
230
- previousValue = isMobile;
231
- }
232
- return {
233
- backToPreviousCategoryLabel,
234
- categoryCollectionText,
235
- collapseSize,
236
- currentUrl,
237
- getBackLink,
238
- featuredItemsAriaLabel,
239
- handleNavMenuClick,
240
- isLoggedIn,
241
- isMobileMenu: isMobile,
242
- isMobileMenuOpen,
243
- items,
244
- lang,
245
- level1Items,
246
- level2Items,
247
- loginComponent,
248
- menuLevel,
249
- navZIndex: zIndex,
250
- nextJSLinkComponent,
251
- nextJSLinkLegacyBehavior,
252
- resetMenuEvents,
253
- searchComponent,
254
- setTooltipItems,
255
- showLoginTooltip,
256
- showMinicart,
257
- tooltipItems,
258
- };
259
- }, [
260
- backToPreviousCategoryLabel,
261
- categoryCollectionText,
262
- collapseSize,
263
- currentUrl,
264
- featuredItemsAriaLabel,
265
- isLoggedIn,
266
- isMobile,
267
- isMobileMenuOpen,
268
- items,
269
- lang,
270
- level1Items,
271
- level2Items,
272
- loginComponent,
273
- menuLevel,
274
- nextJSLinkComponent,
275
- nextJSLinkLegacyBehavior,
276
- searchComponent,
277
- showLoginTooltip,
278
- showMinicart,
279
- tooltipItems,
280
- zIndex,
281
- ]);
282
- useScrollPosition(({ prevPos, currPos }) => {
283
- const overThreshold = checkThreshold(prevPos.y, currPos.y);
284
- const isShow = currPos.y < prevPos.y;
285
- if (isShow !== menuLevel.hideOnScroll && overThreshold && !menuLevel.level1) {
286
- setMenuLevel(Object.assign(Object.assign({}, menuLevel), { animate1: false, animate2: false, hideOnScroll: isShow }));
287
- }
288
- }, undefined, false, 200);
289
- const currentBusinessSite = (_b = items === null || items === void 0 ? void 0 : items.businessSelector) === null || _b === void 0 ? void 0 : _b.items.find(item => item.businessId === items.businessId);
290
- const languagesObject = (_c = items === null || items === void 0 ? void 0 : items.languageSelector) === null || _c === void 0 ? void 0 : _c.urls;
291
- const { resetMenuEvents } = navigationContext;
292
- const handleToggleClick = () => {
293
- resetMenuEvents();
294
- initiateScrollToHeader(navigationEl);
295
- setIsMobileMenuOpen(!isMobileMenuOpen);
233
+ search: false
234
+ });
235
+ };
236
+ const getBackLink = (menuElements, i) => {
237
+ const idValue = menuLevel[`level${i}Mobile`];
238
+ return menuElements[idValue];
296
239
  };
297
- return (React__default.createElement(React__default.Fragment, null,
298
- isPageOverlay && React__default.createElement(PageOverlay, { "data-testid": "navigation-overlay", "$navZIndex": zIndex }),
299
- React__default.createElement(GlobalNavigationContainer, { className: className, "$collapseSize": collapseSize, "data-testid": "dna-main-header", "$navZIndex": zIndex, ref: navigationEl },
300
- React__default.createElement(NavContext.Provider, { value: navigationContext },
301
- React__default.createElement(GlobalStyle, null),
302
- !items.mainNavigation && notificationText && (React__default.createElement(Notification, { type: "info" }, notificationText)),
303
- React__default.createElement(BusinessMenu, { ariaLabel: businessMenuAriaLabel, currentBusinessId: items.businessId, items: (_d = items.businessSelector) === null || _d === void 0 ? void 0 : _d.items, lang: language }),
304
- React__default.createElement(NavigationWrapper, { "$collapseSize": collapseSize },
305
- React__default.createElement(LogoLink, { "data-testid": "dna-logo-link", href: currentBusinessSite === null || currentBusinessSite === void 0 ? void 0 : currentBusinessSite.urls[language], "aria-label": dnaLogoLinkAriaLabel },
306
- React__default.createElement(DnaLogo, { size: headerLogoSize })),
307
- React__default.createElement(DesktopMenuContainer, { "aria-label": mainMenuAriaLabel, "$collapseSize": collapseSize },
308
- React__default.createElement(DesktopMenu, null)),
309
- React__default.createElement(HeaderIconContainer, { "$collapseSize": collapseSize },
310
- languagesObject && languageSelector && (React__default.createElement(LanguageSelector, { currentLanguage: language, languagesObject: languagesObject, languageSelectorLabel: languageSelectorText })),
311
- search && React__default.createElement(PageSearch, { searchLabel: searchText }),
312
- minicart && (React__default.createElement(MinicartTooltip, { minicartAmount: minicartAmount, minicartAmountLabel: minicartAmountLabel !== null && minicartAmountLabel !== void 0 ? minicartAmountLabel : '', minicartLabel: minicartText, onCartButtonClick: props.onCartButtonClick })),
313
- login && React__default.createElement(LoginTooltip, { loginLabel: loginText, isLogged: isLoggedIn }),
314
- React__default.createElement(IconContainer, { "$collapseSize": collapseSize, "data-testid": "header-mobile-menu-container" },
315
- React__default.createElement(MobileMenuButton, { "aria-expanded": isMobileMenuOpen, "aria-label": isMobileMenuOpen
316
- ? closeMainMenuAriaLabel
317
- : openMainMenuAriaLabel, "data-testid": "header-mobile-menu-toggle", onClick: handleToggleClick }, isMobileMenuOpen ? React__default.createElement(Close, null) : React__default.createElement(Menu, null)))),
318
- isMobile && React__default.createElement(RenderMobileMenu, null))))));
240
+ // Resets menu states when menu content alters between mobile and desktop
241
+ const menuChanged = previousValue !== isMobile;
242
+ if (menuChanged) {
243
+ resetMenuEvents();
244
+ previousValue = isMobile;
245
+ }
246
+ return {
247
+ backToPreviousCategoryLabel,
248
+ categoryCollectionText,
249
+ collapseSize,
250
+ currentUrl,
251
+ getBackLink,
252
+ featuredItemsAriaLabel,
253
+ handleNavMenuClick,
254
+ isLoggedIn,
255
+ isMobileMenu: isMobile,
256
+ isMobileMenuOpen,
257
+ items,
258
+ lang,
259
+ level1Items,
260
+ level2Items,
261
+ loginComponent,
262
+ menuLevel,
263
+ navZIndex: zIndex,
264
+ nextJSLinkComponent,
265
+ nextJSLinkLegacyBehavior,
266
+ resetMenuEvents,
267
+ searchComponent,
268
+ setTooltipItems,
269
+ showLoginTooltip,
270
+ showMinicart,
271
+ tooltipItems
272
+ };
273
+ }, [backToPreviousCategoryLabel, categoryCollectionText, collapseSize, currentUrl, featuredItemsAriaLabel, isLoggedIn, isMobile, isMobileMenuOpen, items, lang, level1Items, level2Items, loginComponent, menuLevel, nextJSLinkComponent, nextJSLinkLegacyBehavior, searchComponent, showLoginTooltip, showMinicart, tooltipItems, zIndex]);
274
+ useScrollPosition(({
275
+ prevPos,
276
+ currPos
277
+ }) => {
278
+ const overThreshold = checkThreshold(prevPos.y, currPos.y);
279
+ const isShow = currPos.y < prevPos.y;
280
+ if (isShow !== menuLevel.hideOnScroll && overThreshold && !menuLevel.level1) {
281
+ setMenuLevel(Object.assign(Object.assign({}, menuLevel), {
282
+ animate1: false,
283
+ animate2: false,
284
+ hideOnScroll: isShow
285
+ }));
286
+ }
287
+ }, undefined, false, 200);
288
+ const currentBusinessSite = (_b = items === null || items === void 0 ? void 0 : items.businessSelector) === null || _b === void 0 ? void 0 : _b.items.find(item => item.businessId === items.businessId);
289
+ const languagesObject = (_c = items === null || items === void 0 ? void 0 : items.languageSelector) === null || _c === void 0 ? void 0 : _c.urls;
290
+ const {
291
+ resetMenuEvents
292
+ } = navigationContext;
293
+ const handleToggleClick = () => {
294
+ resetMenuEvents();
295
+ initiateScrollToHeader(navigationEl);
296
+ setIsMobileMenuOpen(!isMobileMenuOpen);
297
+ };
298
+ return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, isPageOverlay && /*#__PURE__*/React__default.createElement(PageOverlay, {
299
+ "data-testid": "navigation-overlay",
300
+ "$navZIndex": zIndex
301
+ }), /*#__PURE__*/React__default.createElement(GlobalNavigationContainer, {
302
+ className: className,
303
+ "$collapseSize": collapseSize,
304
+ "data-testid": "dna-main-header",
305
+ "$navZIndex": zIndex,
306
+ ref: navigationEl
307
+ }, /*#__PURE__*/React__default.createElement(NavContext.Provider, {
308
+ value: navigationContext
309
+ }, /*#__PURE__*/React__default.createElement(GlobalStyle, null), !items.mainNavigation && notificationText && (/*#__PURE__*/React__default.createElement(Notification, {
310
+ type: "info"
311
+ }, notificationText)), /*#__PURE__*/React__default.createElement(BusinessMenu, {
312
+ ariaLabel: businessMenuAriaLabel,
313
+ currentBusinessId: items.businessId,
314
+ items: (_d = items.businessSelector) === null || _d === void 0 ? void 0 : _d.items,
315
+ lang: language
316
+ }), /*#__PURE__*/React__default.createElement(NavigationWrapper, {
317
+ "$collapseSize": collapseSize
318
+ }, /*#__PURE__*/React__default.createElement(LogoLink, {
319
+ "data-testid": "dna-logo-link",
320
+ href: currentBusinessSite === null || currentBusinessSite === void 0 ? void 0 : currentBusinessSite.urls[language],
321
+ "aria-label": dnaLogoLinkAriaLabel
322
+ }, /*#__PURE__*/React__default.createElement(DnaLogo, {
323
+ size: headerLogoSize
324
+ })), /*#__PURE__*/React__default.createElement(DesktopMenuContainer, {
325
+ "aria-label": mainMenuAriaLabel,
326
+ "$collapseSize": collapseSize
327
+ }, /*#__PURE__*/React__default.createElement(DesktopMenu, null)), /*#__PURE__*/React__default.createElement(HeaderIconContainer, {
328
+ "$collapseSize": collapseSize
329
+ }, languagesObject && languageSelector && (/*#__PURE__*/React__default.createElement(LanguageSelector, {
330
+ currentLanguage: language,
331
+ languagesObject: languagesObject,
332
+ languageSelectorLabel: languageSelectorText
333
+ })), search && /*#__PURE__*/React__default.createElement(PageSearch, {
334
+ searchLabel: searchText
335
+ }), minicart && (/*#__PURE__*/React__default.createElement(MinicartTooltip, {
336
+ minicartAmount: minicartAmount,
337
+ minicartAmountLabel: minicartAmountLabel !== null && minicartAmountLabel !== void 0 ? minicartAmountLabel : '',
338
+ minicartLabel: minicartText,
339
+ onCartButtonClick: props.onCartButtonClick
340
+ })), login && /*#__PURE__*/React__default.createElement(LoginTooltip, {
341
+ loginLabel: loginText,
342
+ isLogged: isLoggedIn
343
+ }), /*#__PURE__*/React__default.createElement(IconContainer, {
344
+ "$collapseSize": collapseSize,
345
+ "data-testid": "header-mobile-menu-container"
346
+ }, /*#__PURE__*/React__default.createElement(MobileMenuButton, {
347
+ "aria-expanded": isMobileMenuOpen,
348
+ "aria-label": isMobileMenuOpen ? closeMainMenuAriaLabel : openMainMenuAriaLabel,
349
+ "data-testid": "header-mobile-menu-toggle",
350
+ onClick: handleToggleClick
351
+ }, isMobileMenuOpen ? /*#__PURE__*/React__default.createElement(Close, null) : /*#__PURE__*/React__default.createElement(Menu, null)))), isMobile && /*#__PURE__*/React__default.createElement(RenderMobileMenu, null)))));
319
352
  };
320
353
 
321
354
  export { MainHeaderNavigation as default };