@dnanpm/styleguide 4.0.8 → 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 (427) hide show
  1. package/build/cjs/_virtual/_virtual_inject.js +5 -0
  2. package/build/cjs/assets/fonts/fonts.css.js +3 -1
  3. package/build/cjs/components/Accordion/Accordion.js +66 -54
  4. package/build/cjs/components/AccordionItem/AccordionItem.js +94 -73
  5. package/build/cjs/components/AmountSelector/AmountSelector.js +121 -134
  6. package/build/cjs/components/Box/Box.js +38 -13
  7. package/build/cjs/components/Breadcrumb/Breadcrumb.js +73 -71
  8. package/build/cjs/components/Button/Button.d.ts +1 -1
  9. package/build/cjs/components/Button/Button.js +131 -127
  10. package/build/cjs/components/ButtonArrow/ButtonArrow.js +47 -49
  11. package/build/cjs/components/ButtonCard/ButtonCard.d.ts +2 -2
  12. package/build/cjs/components/ButtonCard/ButtonCard.js +97 -112
  13. package/build/cjs/components/ButtonClose/ButtonClose.d.ts +1 -1
  14. package/build/cjs/components/ButtonClose/ButtonClose.js +25 -14
  15. package/build/cjs/components/ButtonIcon/ButtonIcon.d.ts +44 -3
  16. package/build/cjs/components/ButtonIcon/ButtonIcon.js +105 -67
  17. package/build/cjs/components/ButtonPrimary/ButtonPrimary.d.ts +43 -2
  18. package/build/cjs/components/ButtonPrimary/ButtonPrimary.js +7 -35
  19. package/build/cjs/components/ButtonSecondary/ButtonSecondary.d.ts +43 -2
  20. package/build/cjs/components/ButtonSecondary/ButtonSecondary.js +7 -35
  21. package/build/cjs/components/Carousel/Carousel.d.ts +8 -2
  22. package/build/cjs/components/Carousel/Carousel.js +315 -346
  23. package/build/cjs/components/Checkbox/Checkbox.js +49 -108
  24. package/build/cjs/components/Chip/Chip.js +40 -34
  25. package/build/cjs/components/DateTimePicker/DateTimePicker.js +198 -334
  26. package/build/cjs/components/Divider/Divider.js +29 -15
  27. package/build/cjs/components/DnaLogo/DnaLogo.js +87 -51
  28. package/build/cjs/components/Drawer/Drawer.js +172 -167
  29. package/build/cjs/components/EmptyState/EmptyState.js +24 -12
  30. package/build/cjs/components/EnergyLabel/EnergyLabel.js +77 -73
  31. package/build/cjs/components/Expander/Expander.js +43 -38
  32. package/build/cjs/components/Floater/Floater.js +36 -14
  33. package/build/cjs/components/Footer/Components/FooterComponents.d.ts +4 -2
  34. package/build/cjs/components/Footer/Components/FooterComponents.js +305 -346
  35. package/build/cjs/components/Footer/Footer.js +51 -80
  36. package/build/cjs/components/Footer/context/FooterContext.js +9 -9
  37. package/build/cjs/components/Hero/Hero.js +101 -149
  38. package/build/cjs/components/Icon/Icon.js +41 -22
  39. package/build/cjs/components/Icons/Small/hlArrowBackSmall.js +12 -4
  40. package/build/cjs/components/Icons/Small/hlArrowForwardSmall.js +12 -4
  41. package/build/cjs/components/Icons/Small/hlArrowUnderSmall.js +12 -4
  42. package/build/cjs/components/Icons/Small/hlCalendarSmall.js +12 -4
  43. package/build/cjs/components/Icons/Small/hlChevronDownSmall.js +12 -4
  44. package/build/cjs/components/Icons/Small/hlChevronLeftSmall.js +12 -4
  45. package/build/cjs/components/Icons/Small/hlChevronRightSmall.js +12 -4
  46. package/build/cjs/components/Icons/Small/hlChevronUpSmall.js +12 -4
  47. package/build/cjs/components/Icons/Small/hlClockSmall.js +14 -5
  48. package/build/cjs/components/Icons/Small/hlDownloadSmall.js +18 -6
  49. package/build/cjs/components/Icons/Small/hlExternalSmall.js +12 -4
  50. package/build/cjs/components/Icons/Small/hlUploadSmall.js +18 -6
  51. package/build/cjs/components/Icons/Social/facebook.js +13 -4
  52. package/build/cjs/components/Icons/Social/instagram.js +13 -4
  53. package/build/cjs/components/Icons/Social/linkedin.js +13 -4
  54. package/build/cjs/components/Icons/Social/tiktok.js +12 -4
  55. package/build/cjs/components/Icons/Social/twitter.js +13 -4
  56. package/build/cjs/components/Icons/Social/youtube.js +12 -4
  57. package/build/cjs/components/Icons/hl404.js +12 -4
  58. package/build/cjs/components/Icons/hl4gSim.js +12 -4
  59. package/build/cjs/components/Icons/hl5gSim.js +12 -4
  60. package/build/cjs/components/Icons/hlBattery.js +16 -6
  61. package/build/cjs/components/Icons/hlBell.js +12 -4
  62. package/build/cjs/components/Icons/hlCableTVCard.js +12 -4
  63. package/build/cjs/components/Icons/hlCalendar.js +56 -15
  64. package/build/cjs/components/Icons/hlCall.js +12 -4
  65. package/build/cjs/components/Icons/hlCameraBack.js +18 -6
  66. package/build/cjs/components/Icons/hlCameraFront.js +14 -5
  67. package/build/cjs/components/Icons/hlCart.js +16 -6
  68. package/build/cjs/components/Icons/hlCartEmpty.js +16 -6
  69. package/build/cjs/components/Icons/hlChat.js +24 -7
  70. package/build/cjs/components/Icons/hlCheck.js +12 -4
  71. package/build/cjs/components/Icons/hlChevronDown.js +12 -4
  72. package/build/cjs/components/Icons/hlChevronLeft.js +12 -4
  73. package/build/cjs/components/Icons/hlChevronRight.js +12 -4
  74. package/build/cjs/components/Icons/hlChevronUp.js +12 -4
  75. package/build/cjs/components/Icons/hlCompensation.js +12 -4
  76. package/build/cjs/components/Icons/hlCookie.js +12 -4
  77. package/build/cjs/components/Icons/hlCopy.js +14 -5
  78. package/build/cjs/components/Icons/hlCoupon.js +16 -6
  79. package/build/cjs/components/Icons/hlDelivery.js +14 -4
  80. package/build/cjs/components/Icons/hlDigiturva.js +14 -4
  81. package/build/cjs/components/Icons/hlDisplaySize.js +19 -6
  82. package/build/cjs/components/Icons/hlDocument.js +14 -5
  83. package/build/cjs/components/Icons/hlDownload.js +18 -6
  84. package/build/cjs/components/Icons/hlEnvelope.js +12 -4
  85. package/build/cjs/components/Icons/hlError.js +22 -6
  86. package/build/cjs/components/Icons/hlEuro.js +12 -4
  87. package/build/cjs/components/Icons/hlExclamationMark.js +12 -4
  88. package/build/cjs/components/Icons/hlExpand.js +12 -4
  89. package/build/cjs/components/Icons/hlExternal.js +12 -4
  90. package/build/cjs/components/Icons/hlEyeClosed.js +12 -4
  91. package/build/cjs/components/Icons/hlEyeOpen.js +14 -5
  92. package/build/cjs/components/Icons/hlFaceId.js +12 -4
  93. package/build/cjs/components/Icons/hlFastDelivery.js +12 -4
  94. package/build/cjs/components/Icons/hlFingerprint.js +20 -8
  95. package/build/cjs/components/Icons/hlGlobe.js +12 -4
  96. package/build/cjs/components/Icons/hlHeadphones.js +12 -4
  97. package/build/cjs/components/Icons/hlHeadset.js +18 -6
  98. package/build/cjs/components/Icons/hlHeart.js +12 -4
  99. package/build/cjs/components/Icons/hlHome.js +12 -4
  100. package/build/cjs/components/Icons/hlHub.js +14 -5
  101. package/build/cjs/components/Icons/hlImage.js +12 -4
  102. package/build/cjs/components/Icons/hlInfo.js +18 -6
  103. package/build/cjs/components/Icons/hlInstallment.js +14 -5
  104. package/build/cjs/components/Icons/hlIotSim.js +14 -5
  105. package/build/cjs/components/Icons/hlLaptop.js +13 -4
  106. package/build/cjs/components/Icons/hlLink.js +16 -5
  107. package/build/cjs/components/Icons/hlLiveVideo.js +12 -4
  108. package/build/cjs/components/Icons/hlLock.js +18 -6
  109. package/build/cjs/components/Icons/hlMagnifyingGlass.js +14 -5
  110. package/build/cjs/components/Icons/hlMarker.js +14 -5
  111. package/build/cjs/components/Icons/hlMemory.js +14 -5
  112. package/build/cjs/components/Icons/hlMenu.js +12 -4
  113. package/build/cjs/components/Icons/hlMinimize.js +12 -4
  114. package/build/cjs/components/Icons/hlMinus.js +12 -4
  115. package/build/cjs/components/Icons/hlMobileData.js +12 -4
  116. package/build/cjs/components/Icons/hlMobilePayment.js +19 -6
  117. package/build/cjs/components/Icons/hlModem.js +26 -8
  118. package/build/cjs/components/Icons/hlMore.js +22 -6
  119. package/build/cjs/components/Icons/hlOs.js +14 -5
  120. package/build/cjs/components/Icons/hlPackage.js +12 -4
  121. package/build/cjs/components/Icons/hlPaperclip.js +12 -4
  122. package/build/cjs/components/Icons/hlPaytime.js +12 -4
  123. package/build/cjs/components/Icons/hlPen.js +12 -4
  124. package/build/cjs/components/Icons/hlPerson.js +12 -4
  125. package/build/cjs/components/Icons/hlPhone.js +17 -5
  126. package/build/cjs/components/Icons/hlPlaylist.js +13 -4
  127. package/build/cjs/components/Icons/hlPlus.js +14 -5
  128. package/build/cjs/components/Icons/hlPrepaid.js +12 -4
  129. package/build/cjs/components/Icons/hlProcessor.js +14 -5
  130. package/build/cjs/components/Icons/hlServices.js +12 -4
  131. package/build/cjs/components/Icons/hlSettings.js +12 -4
  132. package/build/cjs/components/Icons/hlShield.js +14 -5
  133. package/build/cjs/components/Icons/hlSim.js +14 -5
  134. package/build/cjs/components/Icons/hlSimSimple.js +18 -6
  135. package/build/cjs/components/Icons/hlSmile.js +22 -7
  136. package/build/cjs/components/Icons/hlSpeechBubble.js +14 -5
  137. package/build/cjs/components/Icons/hlSquaretrade.js +13 -4
  138. package/build/cjs/components/Icons/hlStar.js +12 -4
  139. package/build/cjs/components/Icons/hlStarFilled.js +12 -4
  140. package/build/cjs/components/Icons/hlTrash.js +14 -5
  141. package/build/cjs/components/Icons/hlTv.js +12 -4
  142. package/build/cjs/components/Icons/hlUnlock.js +14 -6
  143. package/build/cjs/components/Icons/hlUpload.js +18 -6
  144. package/build/cjs/components/Icons/hlWarning.js +18 -6
  145. package/build/cjs/components/Icons/hlWifi.js +18 -6
  146. package/build/cjs/components/Icons/hlWrench.js +12 -4
  147. package/build/cjs/components/Icons/hlX.js +12 -4
  148. package/build/cjs/components/InfoDialog/InfoDialog.js +31 -46
  149. package/build/cjs/components/Input/Input.js +143 -159
  150. package/build/cjs/components/Label/Label.js +22 -22
  151. package/build/cjs/components/LabelText/LabelText.js +24 -17
  152. package/build/cjs/components/MainHeaderNavigation/ChildComponents/BusinessMenu.js +29 -44
  153. package/build/cjs/components/MainHeaderNavigation/ChildComponents/DesktopMenu.js +167 -153
  154. package/build/cjs/components/MainHeaderNavigation/ChildComponents/LanguageSelector.js +34 -20
  155. package/build/cjs/components/MainHeaderNavigation/ChildComponents/LinkModifier.js +50 -32
  156. package/build/cjs/components/MainHeaderNavigation/ChildComponents/LoginTooltip.js +17 -5
  157. package/build/cjs/components/MainHeaderNavigation/ChildComponents/MainNavTooltipMenu.d.ts +5 -2
  158. package/build/cjs/components/MainHeaderNavigation/ChildComponents/MainNavTooltipMenu.js +100 -95
  159. package/build/cjs/components/MainHeaderNavigation/ChildComponents/MainNavTooltipMenuExportedStyles.d.ts +6 -2
  160. package/build/cjs/components/MainHeaderNavigation/ChildComponents/MainNavTooltipMenuExportedStyles.js +4 -58
  161. package/build/cjs/components/MainHeaderNavigation/ChildComponents/MinicartTooltip.js +20 -4
  162. package/build/cjs/components/MainHeaderNavigation/ChildComponents/MobileMenu.js +187 -159
  163. package/build/cjs/components/MainHeaderNavigation/ChildComponents/PageSearch.js +16 -5
  164. package/build/cjs/components/MainHeaderNavigation/MainHeaderNavigation.js +305 -272
  165. package/build/cjs/components/MainHeaderNavigation/context/NavContext.js +61 -49
  166. package/build/cjs/components/MainHeaderNavigation/globalNavStyles.d.ts +31 -16
  167. package/build/cjs/components/MainHeaderNavigation/globalNavStyles.js +39 -172
  168. package/build/cjs/components/Modal/Modal.js +127 -145
  169. package/build/cjs/components/Notification/Notification.js +74 -54
  170. package/build/cjs/components/NotificationBadge/NotificationBadge.js +29 -32
  171. package/build/cjs/components/Overlay/Overlay.js +70 -68
  172. package/build/cjs/components/Pill/Pill.js +91 -82
  173. package/build/cjs/components/PillGroup/PillGroup.js +50 -33
  174. package/build/cjs/components/PixelLoader/PixelLoader.js +37 -34
  175. package/build/cjs/components/PriorityNavigation/PriorityNavigation.js +281 -303
  176. package/build/cjs/components/PriorityNavigationItem/PriorityNavigationItem.js +27 -49
  177. package/build/cjs/components/ProgressIndicator/ProgressIndicator.js +140 -109
  178. package/build/cjs/components/RadioButton/RadioButton.js +91 -114
  179. package/build/cjs/components/ReadMore/ReadMore.js +86 -69
  180. package/build/cjs/components/Search/Search.js +52 -64
  181. package/build/cjs/components/Selectbox/Selectbox.js +279 -94
  182. package/build/cjs/components/Skeleton/Skeleton.js +69 -56
  183. package/build/cjs/components/Switch/Switch.js +62 -76
  184. package/build/cjs/components/Tab/Tab.js +55 -53
  185. package/build/cjs/components/Tabs/Tabs.js +93 -71
  186. package/build/cjs/components/Textarea/Textarea.js +76 -73
  187. package/build/cjs/components/Toaster/Toaster.js +59 -44
  188. package/build/cjs/components/Tooltip/Tooltip.js +74 -87
  189. package/build/cjs/hooks/useCloseOutsideOrElementClicked.js +23 -21
  190. package/build/cjs/hooks/useDebounce.js +9 -9
  191. package/build/cjs/hooks/useDocHeight.js +13 -13
  192. package/build/cjs/hooks/useOutsideClick.js +10 -10
  193. package/build/cjs/hooks/useResizeObserver.js +37 -24
  194. package/build/cjs/hooks/useScrollPosition.js +55 -54
  195. package/build/cjs/hooks/useWindowSize.js +20 -20
  196. package/build/cjs/themes/globalStyles.js +4 -4
  197. package/build/cjs/themes/gridTheme.js +1 -1
  198. package/build/cjs/themes/theme.js +12 -12
  199. package/build/cjs/themes/themeComponents/base.js +9 -8
  200. package/build/cjs/themes/themeComponents/breakpoints.js +6 -6
  201. package/build/cjs/themes/themeComponents/color.js +76 -74
  202. package/build/cjs/themes/themeComponents/fontFamily.js +3 -3
  203. package/build/cjs/themes/themeComponents/fontSize.js +31 -15
  204. package/build/cjs/themes/themeComponents/fontWeight.js +16 -16
  205. package/build/cjs/themes/themeComponents/forms.js +3 -2
  206. package/build/cjs/themes/themeComponents/layout.js +27 -27
  207. package/build/cjs/themes/themeComponents/lineHeight.js +32 -16
  208. package/build/cjs/themes/themeComponents/navigation.js +13 -13
  209. package/build/cjs/themes/themeComponents/radius.js +26 -26
  210. package/build/cjs/utils/common.js +15 -19
  211. package/build/cjs/utils/createStyled.d.ts +154 -134
  212. package/build/cjs/utils/createStyled.js +16 -2
  213. package/build/cjs/utils/styledUtils.js +2 -6
  214. package/build/es/_virtual/_virtual_inject.js +3 -0
  215. package/build/es/assets/fonts/fonts.css.js +3 -1
  216. package/build/es/components/Accordion/Accordion.js +66 -54
  217. package/build/es/components/AccordionItem/AccordionItem.js +94 -73
  218. package/build/es/components/AmountSelector/AmountSelector.js +121 -134
  219. package/build/es/components/Box/Box.js +38 -13
  220. package/build/es/components/Breadcrumb/Breadcrumb.js +73 -71
  221. package/build/es/components/Button/Button.d.ts +1 -1
  222. package/build/es/components/Button/Button.js +131 -127
  223. package/build/es/components/ButtonArrow/ButtonArrow.js +47 -49
  224. package/build/es/components/ButtonCard/ButtonCard.d.ts +2 -2
  225. package/build/es/components/ButtonCard/ButtonCard.js +97 -112
  226. package/build/es/components/ButtonClose/ButtonClose.d.ts +1 -1
  227. package/build/es/components/ButtonClose/ButtonClose.js +25 -14
  228. package/build/es/components/ButtonIcon/ButtonIcon.d.ts +44 -3
  229. package/build/es/components/ButtonIcon/ButtonIcon.js +105 -67
  230. package/build/es/components/ButtonPrimary/ButtonPrimary.d.ts +43 -2
  231. package/build/es/components/ButtonPrimary/ButtonPrimary.js +7 -35
  232. package/build/es/components/ButtonSecondary/ButtonSecondary.d.ts +43 -2
  233. package/build/es/components/ButtonSecondary/ButtonSecondary.js +7 -35
  234. package/build/es/components/Carousel/Carousel.d.ts +8 -2
  235. package/build/es/components/Carousel/Carousel.js +315 -346
  236. package/build/es/components/Checkbox/Checkbox.js +49 -108
  237. package/build/es/components/Chip/Chip.js +40 -34
  238. package/build/es/components/DateTimePicker/DateTimePicker.js +198 -334
  239. package/build/es/components/Divider/Divider.js +29 -15
  240. package/build/es/components/DnaLogo/DnaLogo.js +87 -51
  241. package/build/es/components/Drawer/Drawer.js +172 -167
  242. package/build/es/components/EmptyState/EmptyState.js +24 -12
  243. package/build/es/components/EnergyLabel/EnergyLabel.js +77 -73
  244. package/build/es/components/Expander/Expander.js +43 -38
  245. package/build/es/components/Floater/Floater.js +36 -14
  246. package/build/es/components/Footer/Components/FooterComponents.d.ts +4 -2
  247. package/build/es/components/Footer/Components/FooterComponents.js +305 -346
  248. package/build/es/components/Footer/Footer.js +51 -80
  249. package/build/es/components/Footer/context/FooterContext.js +9 -9
  250. package/build/es/components/Hero/Hero.js +101 -149
  251. package/build/es/components/Icon/Icon.js +41 -22
  252. package/build/es/components/Icons/Small/hlArrowBackSmall.js +12 -4
  253. package/build/es/components/Icons/Small/hlArrowForwardSmall.js +12 -4
  254. package/build/es/components/Icons/Small/hlArrowUnderSmall.js +12 -4
  255. package/build/es/components/Icons/Small/hlCalendarSmall.js +12 -4
  256. package/build/es/components/Icons/Small/hlChevronDownSmall.js +12 -4
  257. package/build/es/components/Icons/Small/hlChevronLeftSmall.js +12 -4
  258. package/build/es/components/Icons/Small/hlChevronRightSmall.js +12 -4
  259. package/build/es/components/Icons/Small/hlChevronUpSmall.js +12 -4
  260. package/build/es/components/Icons/Small/hlClockSmall.js +14 -5
  261. package/build/es/components/Icons/Small/hlDownloadSmall.js +18 -6
  262. package/build/es/components/Icons/Small/hlExternalSmall.js +12 -4
  263. package/build/es/components/Icons/Small/hlUploadSmall.js +18 -6
  264. package/build/es/components/Icons/Social/facebook.js +13 -4
  265. package/build/es/components/Icons/Social/instagram.js +13 -4
  266. package/build/es/components/Icons/Social/linkedin.js +13 -4
  267. package/build/es/components/Icons/Social/tiktok.js +12 -4
  268. package/build/es/components/Icons/Social/twitter.js +13 -4
  269. package/build/es/components/Icons/Social/youtube.js +12 -4
  270. package/build/es/components/Icons/hl404.js +12 -4
  271. package/build/es/components/Icons/hl4gSim.js +12 -4
  272. package/build/es/components/Icons/hl5gSim.js +12 -4
  273. package/build/es/components/Icons/hlBattery.js +16 -6
  274. package/build/es/components/Icons/hlBell.js +12 -4
  275. package/build/es/components/Icons/hlCableTVCard.js +12 -4
  276. package/build/es/components/Icons/hlCalendar.js +56 -15
  277. package/build/es/components/Icons/hlCall.js +12 -4
  278. package/build/es/components/Icons/hlCameraBack.js +18 -6
  279. package/build/es/components/Icons/hlCameraFront.js +14 -5
  280. package/build/es/components/Icons/hlCart.js +16 -6
  281. package/build/es/components/Icons/hlCartEmpty.js +16 -6
  282. package/build/es/components/Icons/hlChat.js +24 -7
  283. package/build/es/components/Icons/hlCheck.js +12 -4
  284. package/build/es/components/Icons/hlChevronDown.js +12 -4
  285. package/build/es/components/Icons/hlChevronLeft.js +12 -4
  286. package/build/es/components/Icons/hlChevronRight.js +12 -4
  287. package/build/es/components/Icons/hlChevronUp.js +12 -4
  288. package/build/es/components/Icons/hlCompensation.js +12 -4
  289. package/build/es/components/Icons/hlCookie.js +12 -4
  290. package/build/es/components/Icons/hlCopy.js +14 -5
  291. package/build/es/components/Icons/hlCoupon.js +16 -6
  292. package/build/es/components/Icons/hlDelivery.js +14 -4
  293. package/build/es/components/Icons/hlDigiturva.js +14 -4
  294. package/build/es/components/Icons/hlDisplaySize.js +19 -6
  295. package/build/es/components/Icons/hlDocument.js +14 -5
  296. package/build/es/components/Icons/hlDownload.js +18 -6
  297. package/build/es/components/Icons/hlEnvelope.js +12 -4
  298. package/build/es/components/Icons/hlError.js +22 -6
  299. package/build/es/components/Icons/hlEuro.js +12 -4
  300. package/build/es/components/Icons/hlExclamationMark.js +12 -4
  301. package/build/es/components/Icons/hlExpand.js +12 -4
  302. package/build/es/components/Icons/hlExternal.js +12 -4
  303. package/build/es/components/Icons/hlEyeClosed.js +12 -4
  304. package/build/es/components/Icons/hlEyeOpen.js +14 -5
  305. package/build/es/components/Icons/hlFaceId.js +12 -4
  306. package/build/es/components/Icons/hlFastDelivery.js +12 -4
  307. package/build/es/components/Icons/hlFingerprint.js +20 -8
  308. package/build/es/components/Icons/hlGlobe.js +12 -4
  309. package/build/es/components/Icons/hlHeadphones.js +12 -4
  310. package/build/es/components/Icons/hlHeadset.js +18 -6
  311. package/build/es/components/Icons/hlHeart.js +12 -4
  312. package/build/es/components/Icons/hlHome.js +12 -4
  313. package/build/es/components/Icons/hlHub.js +14 -5
  314. package/build/es/components/Icons/hlImage.js +12 -4
  315. package/build/es/components/Icons/hlInfo.js +18 -6
  316. package/build/es/components/Icons/hlInstallment.js +14 -5
  317. package/build/es/components/Icons/hlIotSim.js +14 -5
  318. package/build/es/components/Icons/hlLaptop.js +13 -4
  319. package/build/es/components/Icons/hlLink.js +16 -5
  320. package/build/es/components/Icons/hlLiveVideo.js +12 -4
  321. package/build/es/components/Icons/hlLock.js +18 -6
  322. package/build/es/components/Icons/hlMagnifyingGlass.js +14 -5
  323. package/build/es/components/Icons/hlMarker.js +14 -5
  324. package/build/es/components/Icons/hlMemory.js +14 -5
  325. package/build/es/components/Icons/hlMenu.js +12 -4
  326. package/build/es/components/Icons/hlMinimize.js +12 -4
  327. package/build/es/components/Icons/hlMinus.js +12 -4
  328. package/build/es/components/Icons/hlMobileData.js +12 -4
  329. package/build/es/components/Icons/hlMobilePayment.js +19 -6
  330. package/build/es/components/Icons/hlModem.js +26 -8
  331. package/build/es/components/Icons/hlMore.js +22 -6
  332. package/build/es/components/Icons/hlOs.js +14 -5
  333. package/build/es/components/Icons/hlPackage.js +12 -4
  334. package/build/es/components/Icons/hlPaperclip.js +12 -4
  335. package/build/es/components/Icons/hlPaytime.js +12 -4
  336. package/build/es/components/Icons/hlPen.js +12 -4
  337. package/build/es/components/Icons/hlPerson.js +12 -4
  338. package/build/es/components/Icons/hlPhone.js +17 -5
  339. package/build/es/components/Icons/hlPlaylist.js +13 -4
  340. package/build/es/components/Icons/hlPlus.js +14 -5
  341. package/build/es/components/Icons/hlPrepaid.js +12 -4
  342. package/build/es/components/Icons/hlProcessor.js +14 -5
  343. package/build/es/components/Icons/hlServices.js +12 -4
  344. package/build/es/components/Icons/hlSettings.js +12 -4
  345. package/build/es/components/Icons/hlShield.js +14 -5
  346. package/build/es/components/Icons/hlSim.js +14 -5
  347. package/build/es/components/Icons/hlSimSimple.js +18 -6
  348. package/build/es/components/Icons/hlSmile.js +22 -7
  349. package/build/es/components/Icons/hlSpeechBubble.js +14 -5
  350. package/build/es/components/Icons/hlSquaretrade.js +13 -4
  351. package/build/es/components/Icons/hlStar.js +12 -4
  352. package/build/es/components/Icons/hlStarFilled.js +12 -4
  353. package/build/es/components/Icons/hlTrash.js +14 -5
  354. package/build/es/components/Icons/hlTv.js +12 -4
  355. package/build/es/components/Icons/hlUnlock.js +14 -6
  356. package/build/es/components/Icons/hlUpload.js +18 -6
  357. package/build/es/components/Icons/hlWarning.js +18 -6
  358. package/build/es/components/Icons/hlWifi.js +18 -6
  359. package/build/es/components/Icons/hlWrench.js +12 -4
  360. package/build/es/components/Icons/hlX.js +12 -4
  361. package/build/es/components/InfoDialog/InfoDialog.js +31 -46
  362. package/build/es/components/Input/Input.js +143 -159
  363. package/build/es/components/Label/Label.js +22 -22
  364. package/build/es/components/LabelText/LabelText.js +24 -17
  365. package/build/es/components/MainHeaderNavigation/ChildComponents/BusinessMenu.js +29 -44
  366. package/build/es/components/MainHeaderNavigation/ChildComponents/DesktopMenu.js +167 -153
  367. package/build/es/components/MainHeaderNavigation/ChildComponents/LanguageSelector.js +34 -20
  368. package/build/es/components/MainHeaderNavigation/ChildComponents/LinkModifier.js +50 -32
  369. package/build/es/components/MainHeaderNavigation/ChildComponents/LoginTooltip.js +17 -5
  370. package/build/es/components/MainHeaderNavigation/ChildComponents/MainNavTooltipMenu.d.ts +5 -2
  371. package/build/es/components/MainHeaderNavigation/ChildComponents/MainNavTooltipMenu.js +100 -95
  372. package/build/es/components/MainHeaderNavigation/ChildComponents/MainNavTooltipMenuExportedStyles.d.ts +6 -2
  373. package/build/es/components/MainHeaderNavigation/ChildComponents/MainNavTooltipMenuExportedStyles.js +4 -58
  374. package/build/es/components/MainHeaderNavigation/ChildComponents/MinicartTooltip.js +20 -4
  375. package/build/es/components/MainHeaderNavigation/ChildComponents/MobileMenu.js +187 -159
  376. package/build/es/components/MainHeaderNavigation/ChildComponents/PageSearch.js +16 -5
  377. package/build/es/components/MainHeaderNavigation/MainHeaderNavigation.js +305 -272
  378. package/build/es/components/MainHeaderNavigation/context/NavContext.js +61 -49
  379. package/build/es/components/MainHeaderNavigation/globalNavStyles.d.ts +31 -16
  380. package/build/es/components/MainHeaderNavigation/globalNavStyles.js +39 -172
  381. package/build/es/components/Modal/Modal.js +127 -145
  382. package/build/es/components/Notification/Notification.js +74 -54
  383. package/build/es/components/NotificationBadge/NotificationBadge.js +29 -32
  384. package/build/es/components/Overlay/Overlay.js +70 -68
  385. package/build/es/components/Pill/Pill.js +91 -82
  386. package/build/es/components/PillGroup/PillGroup.js +50 -33
  387. package/build/es/components/PixelLoader/PixelLoader.js +37 -34
  388. package/build/es/components/PriorityNavigation/PriorityNavigation.js +281 -303
  389. package/build/es/components/PriorityNavigationItem/PriorityNavigationItem.js +27 -49
  390. package/build/es/components/ProgressIndicator/ProgressIndicator.js +140 -109
  391. package/build/es/components/RadioButton/RadioButton.js +91 -114
  392. package/build/es/components/ReadMore/ReadMore.js +86 -69
  393. package/build/es/components/Search/Search.js +52 -64
  394. package/build/es/components/Selectbox/Selectbox.js +279 -94
  395. package/build/es/components/Skeleton/Skeleton.js +69 -56
  396. package/build/es/components/Switch/Switch.js +62 -76
  397. package/build/es/components/Tab/Tab.js +55 -53
  398. package/build/es/components/Tabs/Tabs.js +93 -71
  399. package/build/es/components/Textarea/Textarea.js +76 -73
  400. package/build/es/components/Toaster/Toaster.js +59 -44
  401. package/build/es/components/Tooltip/Tooltip.js +74 -87
  402. package/build/es/hooks/useCloseOutsideOrElementClicked.js +23 -21
  403. package/build/es/hooks/useDebounce.js +9 -9
  404. package/build/es/hooks/useDocHeight.js +13 -13
  405. package/build/es/hooks/useOutsideClick.js +10 -10
  406. package/build/es/hooks/useResizeObserver.js +37 -24
  407. package/build/es/hooks/useScrollPosition.js +55 -54
  408. package/build/es/hooks/useWindowSize.js +20 -20
  409. package/build/es/themes/globalStyles.js +4 -4
  410. package/build/es/themes/gridTheme.js +1 -1
  411. package/build/es/themes/theme.js +12 -12
  412. package/build/es/themes/themeComponents/base.js +9 -8
  413. package/build/es/themes/themeComponents/breakpoints.js +6 -6
  414. package/build/es/themes/themeComponents/color.js +76 -74
  415. package/build/es/themes/themeComponents/fontFamily.js +3 -3
  416. package/build/es/themes/themeComponents/fontSize.js +31 -15
  417. package/build/es/themes/themeComponents/fontWeight.js +16 -16
  418. package/build/es/themes/themeComponents/forms.js +3 -2
  419. package/build/es/themes/themeComponents/layout.js +27 -27
  420. package/build/es/themes/themeComponents/lineHeight.js +32 -16
  421. package/build/es/themes/themeComponents/navigation.js +13 -13
  422. package/build/es/themes/themeComponents/radius.js +26 -26
  423. package/build/es/utils/common.js +15 -19
  424. package/build/es/utils/createStyled.d.ts +154 -134
  425. package/build/es/utils/createStyled.js +16 -2
  426. package/build/es/utils/styledUtils.js +2 -6
  427. package/package.json +19 -17
@@ -21,88 +21,53 @@ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'defau
21
21
 
22
22
  var React__default = /*#__PURE__*/_interopDefaultCompat(React);
23
23
 
24
- const Container = styledComponents.styled.div `
25
- width: 100%;
26
-
27
- ${styledUtils.media.md ` border-bottom: 1px solid ${theme.default.color.line.L03}; `}
28
- `;
29
- const Category = styledComponents.styled.span `
30
- margin: 0;
31
- color: ${theme.default.color.text.black};
32
- font-size: ${theme.default.fontSize.h4};
33
- font-weight: ${theme.default.fontWeight.bold};
34
- line-height: ${theme.default.lineHeight.h4};
35
- display: block;
36
-
37
- ${styledUtils.media.md `
24
+ const Container = styledComponents.styled.div.withConfig({
25
+ displayName: "PriorityNavigation__Container",
26
+ componentId: "sc-1fa414d-0"
27
+ })(["width:100%;", ""], styledUtils.media.md` border-bottom: 1px solid ${theme.default.color.line.L03}; `);
28
+ const Category = styledComponents.styled.span.withConfig({
29
+ displayName: "PriorityNavigation__Category",
30
+ componentId: "sc-1fa414d-1"
31
+ })(["margin:0;color:", ";font-size:", ";font-weight:", ";line-height:", ";display:block;", ""], theme.default.color.text.black, theme.default.fontSize.h4, theme.default.fontWeight.bold, theme.default.lineHeight.h4, styledUtils.media.md`
38
32
  padding: 1.25rem 0.25rem 0;
39
33
  background: linear-gradient(
40
34
  ${theme.default.color.default.black}05 0%,
41
35
  ${theme.default.color.default.black}00 50%,
42
36
  ${theme.default.color.default.black}00 100%),
43
37
  ${theme.default.color.background.white.default};
44
- `}
45
- `;
46
- const ListsContainer = styledComponents.styled.div `
47
- display: flex;
48
- flex-direction: column;
49
- position: relative;
50
- background-color: ${theme.default.color.background.white.default};
51
-
52
- ${styledUtils.media.md `
38
+ `);
39
+ const ListsContainer = styledComponents.styled.div.withConfig({
40
+ displayName: "PriorityNavigation__ListsContainer",
41
+ componentId: "sc-1fa414d-2"
42
+ })(["display:flex;flex-direction:column;position:relative;background-color:", ";", ""], theme.default.color.background.white.default, styledUtils.media.md`
53
43
  justify-content: space-between;
54
44
  flex-direction: row;
55
45
  height: 100%;
56
46
  align-items: center;
57
47
  margin: 0 auto;
58
- `}
59
- `;
60
- const MobileDropdown = styledComponents.styled.button `
61
- display: flex;
62
- align-items: center;
63
- justify-content: space-between;
64
- cursor: pointer;
65
- background: none;
66
- border: none;
67
- padding: ${({ $isCategoryLabel }) => ($isCategoryLabel ? '0.5rem' : '0.75rem')} 1.25rem;
68
- color: ${theme.default.color.text.pink};
69
- font-size: ${theme.default.fontSize.default};
70
- line-height: ${theme.default.lineHeight.default};
71
- font-weight: ${theme.default.fontWeight.bold};
72
- border-bottom: 3px solid ${theme.default.color.default.pink};
73
-
74
- & svg {
75
- pointer-events: none;
76
- }
77
- `;
78
- const MobileDropdownContent = styledComponents.styled.div `
79
- display: flex;
80
- flex-direction: column;
81
- align-items: baseline;
82
- text-align: left;
83
- `;
84
- const CoreULStyles = styledComponents.styled.ul `
85
- list-style: none;
86
- margin: 0;
87
- padding: 0;
88
- overflow: hidden;
89
- `;
90
- const NavigationList = styledComponents.styled(CoreULStyles) `
91
- display: flex;
92
- flex-direction: column;
93
- justify-content: flex-start;
94
- z-index: 1;
95
- width: 100%;
96
- background-color: ${theme.default.color.background.white.default};
97
- position: absolute;
98
- top: ${styledUtils.getMultipliedSize(theme.default.base.baseHeight, 5.6)};
99
- visibility: ${({ $isMobileNavigationOpen }) => $isMobileNavigationOpen ? 'visible' : 'hidden'};
100
- clip-path: inset(
101
- 0% 0% ${({ $isMobileNavigationOpen }) => ($isMobileNavigationOpen ? '0%' : '100%')} 0%
102
- );
103
- transition: all 0.2s ease-in-out;
104
-
105
- ${styledUtils.media.md `
48
+ `);
49
+ const MobileDropdown = styledComponents.styled.button.withConfig({
50
+ displayName: "PriorityNavigation__MobileDropdown",
51
+ componentId: "sc-1fa414d-3"
52
+ })(["display:flex;align-items:center;justify-content:space-between;cursor:pointer;background:none;border:none;padding:", " 1.25rem;color:", ";font-size:", ";line-height:", ";font-weight:", ";border-bottom:3px solid ", ";& svg{pointer-events:none;}"], ({
53
+ $isCategoryLabel
54
+ }) => $isCategoryLabel ? '0.5rem' : '0.75rem', theme.default.color.text.pink, theme.default.fontSize.default, theme.default.lineHeight.default, theme.default.fontWeight.bold, theme.default.color.default.pink);
55
+ const MobileDropdownContent = styledComponents.styled.div.withConfig({
56
+ displayName: "PriorityNavigation__MobileDropdownContent",
57
+ componentId: "sc-1fa414d-4"
58
+ })(["display:flex;flex-direction:column;align-items:baseline;text-align:left;"]);
59
+ const CoreULStyles = styledComponents.styled.ul.withConfig({
60
+ displayName: "PriorityNavigation__CoreULStyles",
61
+ componentId: "sc-1fa414d-5"
62
+ })(["list-style:none;margin:0;padding:0;overflow:hidden;"]);
63
+ const NavigationList = styledComponents.styled(CoreULStyles).withConfig({
64
+ displayName: "PriorityNavigation__NavigationList",
65
+ componentId: "sc-1fa414d-6"
66
+ })(["display:flex;flex-direction:column;justify-content:flex-start;z-index:1;width:100%;background-color:", ";position:absolute;top:", ";visibility:", ";clip-path:inset( 0% 0% ", " 0% );transition:all 0.2s ease-in-out;", ""], theme.default.color.background.white.default, styledUtils.getMultipliedSize(theme.default.base.baseHeight, 5.6), ({
67
+ $isMobileNavigationOpen
68
+ }) => $isMobileNavigationOpen ? 'visible' : 'hidden', ({
69
+ $isMobileNavigationOpen
70
+ }) => $isMobileNavigationOpen ? '0%' : '100%', styledUtils.media.md`
106
71
  position: static;
107
72
  flex-direction: row;
108
73
  visibility: visible;
@@ -114,255 +79,268 @@ const NavigationList = styledComponents.styled(CoreULStyles) `
114
79
  & > li:first-child {
115
80
  margin-left: 0;
116
81
  }
117
- `}
118
- `;
119
- const DropdownList = styledComponents.styled(CoreULStyles) `
120
- position: absolute;
121
- top: ${styledUtils.getMultipliedSize(theme.default.base.baseHeight, 6)};
122
- right: 0;
123
- z-index: 1;
124
- padding-bottom: 0.5rem;
125
- background-color: ${theme.default.color.background.white.default};
126
- border: 1px solid ${theme.default.color.line.L04};
127
- border-radius: 0 0 ${theme.default.radius.default} ${theme.default.radius.default};
128
- visibility: ${({ $isDropdownListOpen }) => ($isDropdownListOpen ? 'visible' : 'hidden')};
129
- clip-path: inset(
130
- 0% 0% ${({ $isDropdownListOpen }) => ($isDropdownListOpen ? '0%' : '100%')} 0%
131
- );
132
- transition: all 0.2s ease-in-out;
133
-
134
- ${styledUtils.media.md `
82
+ `);
83
+ const DropdownList = styledComponents.styled(CoreULStyles).withConfig({
84
+ displayName: "PriorityNavigation__DropdownList",
85
+ componentId: "sc-1fa414d-7"
86
+ })(["position:absolute;top:", ";right:0;z-index:1;padding-bottom:0.5rem;background-color:", ";border:1px solid ", ";border-radius:0 0 ", " ", ";visibility:", ";clip-path:inset( 0% 0% ", " 0% );transition:all 0.2s ease-in-out;", " ", ""], styledUtils.getMultipliedSize(theme.default.base.baseHeight, 6), theme.default.color.background.white.default, theme.default.color.line.L04, theme.default.radius.default, theme.default.radius.default, ({
87
+ $isDropdownListOpen
88
+ }) => $isDropdownListOpen ? 'visible' : 'hidden', ({
89
+ $isDropdownListOpen
90
+ }) => $isDropdownListOpen ? '0%' : '100%', styledUtils.media.md`
135
91
  & > li {
136
92
  margin: auto 1.25rem;
137
93
  }
138
- `}
139
-
140
- ${common.default({ elevation: 'low' })}
141
- `;
94
+ `, common.default({
95
+ elevation: 'low'
96
+ }));
142
97
  /**
143
98
  * TODO: Replace the VisuallyHidden styled component with the global class name.
144
99
  * Ticket: https://jira.dna.fi/browse/STYLE-916
145
100
  */
146
- const VisuallyHidden = styledComponents.styled.span `
147
- position: absolute;
148
- width: 1px;
149
- height: 1px;
150
- padding: 0;
151
- margin: -1px;
152
- overflow: hidden;
153
- clip: rect(0 0 0 0);
154
- clip-path: inset(50%);
155
- white-space: nowrap;
156
- border: 0;
157
- `;
101
+ const VisuallyHidden = styledComponents.styled.span.withConfig({
102
+ displayName: "PriorityNavigation__VisuallyHidden",
103
+ componentId: "sc-1fa414d-8"
104
+ })(["position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;"]);
158
105
  const reducer = (state, action) => {
159
- var _a, _b;
160
- switch (action.type) {
161
- case 'resetNavigationState': {
162
- const navigationItems = React.Children.toArray((_a = action === null || action === void 0 ? void 0 : action.payload) === null || _a === void 0 ? void 0 : _a.navigationItems);
163
- return Object.assign(Object.assign({}, state), { navigationItems: navigationItems.slice(0, navigationItems.length - state.lastItemWidth.length), dropdownItems: navigationItems.slice(navigationItems.length - state.lastItemWidth.length) });
164
- }
165
- case 'moveItemToDropdown': {
166
- const lastChild = state.navigationItems[state.navigationItems.length - 1];
167
- return Object.assign(Object.assign(Object.assign({}, state), { navigationItems: state.navigationItems.slice(0, -1), dropdownItems: [lastChild, ...state.dropdownItems] }), (((_b = action === null || action === void 0 ? void 0 : action.payload) === null || _b === void 0 ? void 0 : _b.lastItem) && {
168
- lastItemWidth: [
169
- ...state.lastItemWidth,
170
- action.payload.lastItem.offsetWidth + 40,
171
- ],
172
- }));
106
+ var _a, _b;
107
+ switch (action.type) {
108
+ case 'resetNavigationState':
109
+ {
110
+ const navigationItems = React.Children.toArray((_a = action === null || action === void 0 ? void 0 : action.payload) === null || _a === void 0 ? void 0 : _a.navigationItems);
111
+ return Object.assign(Object.assign({}, state), {
112
+ navigationItems: navigationItems.slice(0, navigationItems.length - state.lastItemWidth.length),
113
+ dropdownItems: navigationItems.slice(navigationItems.length - state.lastItemWidth.length)
114
+ });
115
+ }
116
+ case 'moveItemToDropdown':
117
+ {
118
+ const lastChild = state.navigationItems[state.navigationItems.length - 1];
119
+ return Object.assign(Object.assign(Object.assign({}, state), {
120
+ navigationItems: state.navigationItems.slice(0, -1),
121
+ dropdownItems: [lastChild, ...state.dropdownItems]
122
+ }), ((_b = action === null || action === void 0 ? void 0 : action.payload) === null || _b === void 0 ? void 0 : _b.lastItem) && {
123
+ lastItemWidth: [...state.lastItemWidth, action.payload.lastItem.offsetWidth + 40]
124
+ });
125
+ }
126
+ case 'moveItemToNavigation':
127
+ {
128
+ const [firstItemFromList, ...dropdownItems] = state.dropdownItems;
129
+ const [, ...lastItemWidth] = state.lastItemWidth;
130
+ return {
131
+ navigationItems: [...state.navigationItems, firstItemFromList],
132
+ dropdownItems,
133
+ lastItemWidth
134
+ };
135
+ }
136
+ default:
137
+ return state;
138
+ }
139
+ };
140
+ const getReactNodeText = reactNode => {
141
+ if (reactNode === null) {
142
+ return '';
143
+ }
144
+ switch (typeof reactNode) {
145
+ case 'string':
146
+ case 'number':
147
+ return reactNode.toString();
148
+ case 'boolean':
149
+ return '';
150
+ case 'object':
151
+ {
152
+ if (reactNode instanceof Array) {
153
+ return reactNode.map(getReactNodeText).join('');
173
154
  }
174
- case 'moveItemToNavigation': {
175
- const [firstItemFromList, ...dropdownItems] = state.dropdownItems;
176
- const [, ...lastItemWidth] = state.lastItemWidth;
177
- return {
178
- navigationItems: [...state.navigationItems, firstItemFromList],
179
- dropdownItems,
180
- lastItemWidth,
181
- };
155
+ if ('props' in reactNode) {
156
+ // Unsafe member access .children on an `any` value (@typescript-eslint/no-unsafe-member-access)
157
+ // eslint-disable-next-line
158
+ return getReactNodeText(reactNode.props.children);
182
159
  }
183
- default:
184
- return state;
185
- }
186
- };
187
- const getReactNodeText = (reactNode) => {
188
- if (reactNode === null) {
189
160
  return '';
190
- }
191
- switch (typeof reactNode) {
192
- case 'string':
193
- case 'number':
194
- return reactNode.toString();
195
- case 'boolean':
196
- return '';
197
- case 'object': {
198
- if (reactNode instanceof Array) {
199
- return reactNode.map(getReactNodeText).join('');
200
- }
201
- if ('props' in reactNode) {
202
- // Unsafe member access .children on an `any` value (@typescript-eslint/no-unsafe-member-access)
203
- // eslint-disable-next-line
204
- return getReactNodeText(reactNode.props.children);
205
- }
206
- return '';
207
- }
208
- default:
209
- return '';
210
- }
161
+ }
162
+ default:
163
+ return '';
164
+ }
211
165
  };
212
166
  /**
213
167
  * @visibleName Priority Navigation
214
168
  */
215
- const PriorityNavigation = (_a) => {
216
- var { dropdownButtonLabel = 'Lisää', 'data-testid': dataTestId, mobileDropdownAriaLabel, currentPageAriaLabel, openMoreSubpagesAriaLabel } = _a, props = tslib.__rest(_a, ["dropdownButtonLabel", 'data-testid', "mobileDropdownAriaLabel", "currentPageAriaLabel", "openMoreSubpagesAriaLabel"]);
217
- const listsContainerRef = React.useRef(null);
218
- const navigationListRef = React.useRef(null);
219
- const dropdownButtonRef = React.useRef(null);
220
- const categoryId = React.useId();
221
- const { isMobile } = useWindowSize.default(theme.default.breakpoints.md);
222
- const { width: wrapperContainerWidth } = useResizeObserver.default(listsContainerRef);
223
- const [isMobileNavigationOpen, setIsMobileNavigationOpen] = React.useState(false);
224
- const toggleMobileNavigation = () => setIsMobileNavigationOpen(!isMobileNavigationOpen);
225
- const [isDropdownListOpen, setIsDropdownListOpen] = React.useState(false);
226
- const toggleDropdown = () => {
227
- if (props.onDropdownListToggle) {
228
- props.onDropdownListToggle(!isDropdownListOpen);
229
- }
230
- setIsDropdownListOpen(!isDropdownListOpen);
231
- };
232
- const navigationItems = React.useRef(new Map()).current;
233
- const initialState = {
234
- navigationItems: React.Children.toArray(props.children),
235
- dropdownItems: [],
236
- lastItemWidth: [],
237
- };
238
- const [state, dispatch] = React.useReducer(reducer, initialState);
239
- const checkHorizontalOverflow = useDebounce.default(() => {
240
- var _a, _b;
241
- if (navigationListRef.current && listsContainerRef.current) {
242
- const navigationListWidth = navigationListRef.current.scrollWidth;
243
- const dropdownButtonWidth = ((_b = (_a = dropdownButtonRef.current) === null || _a === void 0 ? void 0 : _a.offsetWidth) !== null && _b !== void 0 ? _b : 80) + 20;
244
- if (state.navigationItems.length > 0 &&
245
- navigationListWidth + dropdownButtonWidth > wrapperContainerWidth) {
246
- dispatch({
247
- type: 'moveItemToDropdown',
248
- payload: {
249
- lastItem: navigationItems.get(state.navigationItems.length - 1),
250
- },
251
- });
252
- }
253
- else if (state.dropdownItems.length > 0 &&
254
- wrapperContainerWidth >
255
- navigationListWidth +
256
- state.lastItemWidth[state.lastItemWidth.length - 1] +
257
- dropdownButtonWidth +
258
- 20) {
259
- dispatch({
260
- type: 'moveItemToNavigation',
261
- });
262
- }
263
- }
264
- }, 100);
265
- const activeItem = [...state.navigationItems, ...state.dropdownItems].find(child => React.isValidElement(child) &&
266
- child.type === PriorityNavigationItem.default &&
267
- child.props.isActive);
268
- const selectedItem = isMobile
269
- ? getReactNodeText(activeItem === null || activeItem === void 0 ? void 0 : activeItem.props.children) ||
270
- ''
271
- : props.categoryLabel;
272
- useOutsideClick.default(listsContainerRef, () => {
273
- if (isMobileNavigationOpen) {
274
- setIsMobileNavigationOpen(false);
275
- }
276
- if (isDropdownListOpen) {
277
- if (props.onDropdownListToggle) {
278
- props.onDropdownListToggle(false);
279
- }
280
- setIsDropdownListOpen(false);
281
- }
282
- });
283
- React.useEffect(() => {
284
- if (!isMobile) {
285
- requestAnimationFrame(() => {
286
- dispatch({
287
- type: 'resetNavigationState',
288
- payload: {
289
- navigationItems: props.children,
290
- },
291
- });
292
- setTimeout(() => {
293
- checkHorizontalOverflow();
294
- }, 0);
295
- });
296
- }
297
- setIsMobileNavigationOpen(false);
298
- // eslint-disable-next-line react-hooks/exhaustive-deps
299
- }, [isMobile, props.children]);
300
- React.useLayoutEffect(() => {
301
- if (!isMobile) {
302
- requestAnimationFrame(() => {
303
- checkHorizontalOverflow();
304
- });
305
- }
306
- }, [
307
- isMobile,
308
- wrapperContainerWidth,
309
- state.navigationItems.length,
310
- state.dropdownItems.length,
311
- checkHorizontalOverflow,
312
- ]);
313
- const handleNavigationListKeyDown = React.useCallback((e) => {
314
- var _a, _b;
315
- if (isMobile && isMobileNavigationOpen && e.key === 'Tab') {
316
- const focusableElements = (_a = navigationListRef.current) === null || _a === void 0 ? void 0 : _a.querySelectorAll('a, button, input, [tabindex]:not([tabindex="-1"])');
317
- const lastElement = focusableElements === null || focusableElements === void 0 ? void 0 : focusableElements[focusableElements.length - 1];
318
- const goingForward = !e.shiftKey;
319
- if (goingForward && document.activeElement === lastElement) {
320
- e.preventDefault();
321
- setIsMobileNavigationOpen(false);
322
- (_b = dropdownButtonRef.current) === null || _b === void 0 ? void 0 : _b.focus();
323
- }
324
- }
325
- }, [isMobile, isMobileNavigationOpen]);
326
- const handleItemClick = (e) => {
169
+ const PriorityNavigation = _a => {
170
+ var {
171
+ dropdownButtonLabel = 'Lisää',
172
+ 'data-testid': dataTestId,
173
+ mobileDropdownAriaLabel,
174
+ currentPageAriaLabel,
175
+ openMoreSubpagesAriaLabel
176
+ } = _a,
177
+ props = tslib.__rest(_a, ["dropdownButtonLabel", 'data-testid', "mobileDropdownAriaLabel", "currentPageAriaLabel", "openMoreSubpagesAriaLabel"]);
178
+ const listsContainerRef = React.useRef(null);
179
+ const navigationListRef = React.useRef(null);
180
+ const dropdownButtonRef = React.useRef(null);
181
+ const categoryId = React.useId();
182
+ const {
183
+ isMobile
184
+ } = useWindowSize.default(theme.default.breakpoints.md);
185
+ const {
186
+ width: wrapperContainerWidth
187
+ } = useResizeObserver.default(listsContainerRef);
188
+ const [isMobileNavigationOpen, setIsMobileNavigationOpen] = React.useState(false);
189
+ const toggleMobileNavigation = () => setIsMobileNavigationOpen(!isMobileNavigationOpen);
190
+ const [isDropdownListOpen, setIsDropdownListOpen] = React.useState(false);
191
+ const toggleDropdown = () => {
192
+ if (props.onDropdownListToggle) {
193
+ props.onDropdownListToggle(!isDropdownListOpen);
194
+ }
195
+ setIsDropdownListOpen(!isDropdownListOpen);
196
+ };
197
+ const navigationItems = React.useRef(new Map()).current;
198
+ const initialState = {
199
+ navigationItems: React.Children.toArray(props.children),
200
+ dropdownItems: [],
201
+ lastItemWidth: []
202
+ };
203
+ const [state, dispatch] = React.useReducer(reducer, initialState);
204
+ const checkHorizontalOverflow = useDebounce.default(() => {
205
+ var _a, _b;
206
+ if (navigationListRef.current && listsContainerRef.current) {
207
+ const navigationListWidth = navigationListRef.current.scrollWidth;
208
+ const dropdownButtonWidth = ((_b = (_a = dropdownButtonRef.current) === null || _a === void 0 ? void 0 : _a.offsetWidth) !== null && _b !== void 0 ? _b : 80) + 20;
209
+ if (state.navigationItems.length > 0 && navigationListWidth + dropdownButtonWidth > wrapperContainerWidth) {
210
+ dispatch({
211
+ type: 'moveItemToDropdown',
212
+ payload: {
213
+ lastItem: navigationItems.get(state.navigationItems.length - 1)
214
+ }
215
+ });
216
+ } else if (state.dropdownItems.length > 0 && wrapperContainerWidth > navigationListWidth + state.lastItemWidth[state.lastItemWidth.length - 1] + dropdownButtonWidth + 20) {
217
+ dispatch({
218
+ type: 'moveItemToNavigation'
219
+ });
220
+ }
221
+ }
222
+ }, 100);
223
+ const activeItem = [...state.navigationItems, ...state.dropdownItems].find(child => /*#__PURE__*/React.isValidElement(child) && child.type === PriorityNavigationItem.default && child.props.isActive);
224
+ const selectedItem = isMobile ? getReactNodeText(activeItem === null || activeItem === void 0 ? void 0 : activeItem.props.children) || '' : props.categoryLabel;
225
+ useOutsideClick.default(listsContainerRef, () => {
226
+ if (isMobileNavigationOpen) {
227
+ setIsMobileNavigationOpen(false);
228
+ }
229
+ if (isDropdownListOpen) {
230
+ if (props.onDropdownListToggle) {
231
+ props.onDropdownListToggle(false);
232
+ }
233
+ setIsDropdownListOpen(false);
234
+ }
235
+ });
236
+ React.useEffect(() => {
237
+ if (!isMobile) {
238
+ requestAnimationFrame(() => {
239
+ dispatch({
240
+ type: 'resetNavigationState',
241
+ payload: {
242
+ navigationItems: props.children
243
+ }
244
+ });
245
+ setTimeout(() => {
246
+ checkHorizontalOverflow();
247
+ }, 0);
248
+ });
249
+ }
250
+ setIsMobileNavigationOpen(false);
251
+ // eslint-disable-next-line react-hooks/exhaustive-deps
252
+ }, [isMobile, props.children]);
253
+ React.useLayoutEffect(() => {
254
+ if (!isMobile) {
255
+ requestAnimationFrame(() => {
256
+ checkHorizontalOverflow();
257
+ });
258
+ }
259
+ }, [isMobile, wrapperContainerWidth, state.navigationItems.length, state.dropdownItems.length, checkHorizontalOverflow]);
260
+ const handleNavigationListKeyDown = React.useCallback(e => {
261
+ var _a, _b;
262
+ if (isMobile && isMobileNavigationOpen && e.key === 'Tab') {
263
+ const focusableElements = (_a = navigationListRef.current) === null || _a === void 0 ? void 0 : _a.querySelectorAll('a, button, input, [tabindex]:not([tabindex="-1"])');
264
+ const lastElement = focusableElements === null || focusableElements === void 0 ? void 0 : focusableElements[focusableElements.length - 1];
265
+ const goingForward = !e.shiftKey;
266
+ if (goingForward && document.activeElement === lastElement) {
267
+ e.preventDefault();
327
268
  setIsMobileNavigationOpen(false);
328
- if (props.onClick) {
329
- props.onClick(e);
269
+ (_b = dropdownButtonRef.current) === null || _b === void 0 ? void 0 : _b.focus();
270
+ }
271
+ }
272
+ }, [isMobile, isMobileNavigationOpen]);
273
+ const handleItemClick = e => {
274
+ setIsMobileNavigationOpen(false);
275
+ if (props.onClick) {
276
+ props.onClick(e);
277
+ }
278
+ };
279
+ return /*#__PURE__*/React__default.default.createElement(Container, {
280
+ id: props.id,
281
+ className: props.className,
282
+ "data-testid": dataTestId
283
+ }, !isMobile && props.categoryLabel && (/*#__PURE__*/React__default.default.createElement(Category, {
284
+ id: categoryId
285
+ }, props.categoryLabel)), /*#__PURE__*/React__default.default.createElement("nav", {
286
+ "aria-labelledby": categoryId
287
+ }, /*#__PURE__*/React__default.default.createElement(ListsContainer, {
288
+ ref: listsContainerRef
289
+ }, isMobile && selectedItem && (/*#__PURE__*/React__default.default.createElement(MobileDropdown, {
290
+ onClick: toggleMobileNavigation,
291
+ "aria-label": mobileDropdownAriaLabel !== null && mobileDropdownAriaLabel !== void 0 ? mobileDropdownAriaLabel : `${props.categoryLabel ? `${props.categoryLabel}, ` : ''}${selectedItem}.`,
292
+ "aria-expanded": isMobileNavigationOpen,
293
+ "$isCategoryLabel": Boolean(props.categoryLabel)
294
+ }, /*#__PURE__*/React__default.default.createElement(MobileDropdownContent, null, props.categoryLabel && /*#__PURE__*/React__default.default.createElement(Category, null, props.categoryLabel), selectedItem), /*#__PURE__*/React__default.default.createElement(Icon.default, {
295
+ icon: isMobileNavigationOpen ? icons.OvalChevronUp : icons.OvalChevronDown,
296
+ size: "2.5rem"
297
+ }))), /*#__PURE__*/React__default.default.createElement(NavigationList, {
298
+ ref: navigationListRef,
299
+ "$isMobileNavigationOpen": isMobileNavigationOpen,
300
+ onKeyDown: handleNavigationListKeyDown
301
+ }, React.Children.map([...state.navigationItems, ...(isMobile ? state.dropdownItems : [])], (navigationItem, index) => {
302
+ if (/*#__PURE__*/React.isValidElement(navigationItem) && navigationItem.type === PriorityNavigationItem.default) {
303
+ return /*#__PURE__*/React__default.default.createElement(PriorityNavigationItem.default, {
304
+ id: navigationItem.props.id,
305
+ key: navigationItem.key,
306
+ onClick: handleItemClick,
307
+ onKeyDown: navigationItem.props.onKeyDown || props.onKeyDown,
308
+ isActive: navigationItem.props.isActive,
309
+ className: navigationItem.props.className,
310
+ "data-testid": navigationItem.props['data-testid'],
311
+ ref: instance => {
312
+ if (instance) {
313
+ navigationItems.set(index, instance);
314
+ }
330
315
  }
331
- };
332
- return (React__default.default.createElement(Container, { id: props.id, className: props.className, "data-testid": dataTestId },
333
- !isMobile && props.categoryLabel && (React__default.default.createElement(Category, { id: categoryId }, props.categoryLabel)),
334
- React__default.default.createElement("nav", { "aria-labelledby": categoryId },
335
- React__default.default.createElement(ListsContainer, { ref: listsContainerRef },
336
- isMobile && selectedItem && (React__default.default.createElement(MobileDropdown, { onClick: toggleMobileNavigation, "aria-label": mobileDropdownAriaLabel !== null && mobileDropdownAriaLabel !== void 0 ? mobileDropdownAriaLabel : `${props.categoryLabel ? `${props.categoryLabel}, ` : ''}${selectedItem}.`, "aria-expanded": isMobileNavigationOpen, "$isCategoryLabel": Boolean(props.categoryLabel) },
337
- React__default.default.createElement(MobileDropdownContent, null,
338
- props.categoryLabel && React__default.default.createElement(Category, null, props.categoryLabel),
339
- selectedItem),
340
- React__default.default.createElement(Icon.default, { icon: isMobileNavigationOpen ? icons.OvalChevronUp : icons.OvalChevronDown, size: "2.5rem" }))),
341
- React__default.default.createElement(NavigationList, { ref: navigationListRef, "$isMobileNavigationOpen": isMobileNavigationOpen, onKeyDown: handleNavigationListKeyDown }, React.Children.map([...state.navigationItems, ...(isMobile ? state.dropdownItems : [])], (navigationItem, index) => {
342
- if (React.isValidElement(navigationItem) &&
343
- navigationItem.type === PriorityNavigationItem.default) {
344
- return (React__default.default.createElement(PriorityNavigationItem.default, { id: navigationItem.props.id, key: navigationItem.key, onClick: handleItemClick, onKeyDown: navigationItem.props.onKeyDown || props.onKeyDown, isActive: navigationItem.props.isActive, className: navigationItem.props.className, "data-testid": navigationItem.props['data-testid'], ref: instance => {
345
- if (instance) {
346
- navigationItems.set(index, instance);
347
- }
348
- } },
349
- navigationItem.props.isActive
350
- ? React.cloneElement(navigationItem.props.children, {
351
- 'aria-current': 'page',
352
- })
353
- : navigationItem.props.children,
354
- navigationItem.props.isActive && isMobile && (React__default.default.createElement(React__default.default.Fragment, null,
355
- React__default.default.createElement(Icon.default, { icon: icons.Check, "aria-hidden": true, color: theme.default.color.default.pink }),
356
- React__default.default.createElement(VisuallyHidden, null, currentPageAriaLabel)))));
357
- }
358
- return null;
359
- })),
360
- !isMobile && Boolean(state.dropdownItems.length) && (React__default.default.createElement(React__default.default.Fragment, null,
361
- React__default.default.createElement("div", null,
362
- React__default.default.createElement(ButtonIcon.default, { ref: dropdownButtonRef, ariaLabel: openMoreSubpagesAriaLabel, ariaExpanded: isDropdownListOpen, onClick: toggleDropdown, icon: isDropdownListOpen ? icons.ChevronUp : icons.ChevronDown, isReversed: true, "data-testid": "dropdown-button" }, dropdownButtonLabel)),
363
- isDropdownListOpen && (React__default.default.createElement(DropdownList, { "$isDropdownListOpen": isDropdownListOpen }, state.dropdownItems.map(dropdownItem => React.isValidElement(dropdownItem) &&
364
- dropdownItem.type === PriorityNavigationItem.default && (React__default.default.createElement(PriorityNavigationItem.default, { id: dropdownItem.props.id, key: dropdownItem.key, onClick: dropdownItem.props.onClick || props.onClick, onKeyDown: dropdownItem.props.onKeyDown ||
365
- props.onKeyDown, isActive: dropdownItem.props.isActive, className: dropdownItem.props.className, "data-testid": dropdownItem.props['data-testid'] }, dropdownItem.props.children)))))))))));
316
+ }, navigationItem.props.isActive ? /*#__PURE__*/React.cloneElement(navigationItem.props.children, {
317
+ 'aria-current': 'page'
318
+ }) : navigationItem.props.children, navigationItem.props.isActive && isMobile && (/*#__PURE__*/React__default.default.createElement(React__default.default.Fragment, null, /*#__PURE__*/React__default.default.createElement(Icon.default, {
319
+ icon: icons.Check,
320
+ "aria-hidden": true,
321
+ color: theme.default.color.default.pink
322
+ }), /*#__PURE__*/React__default.default.createElement(VisuallyHidden, null, currentPageAriaLabel))));
323
+ }
324
+ return null;
325
+ })), !isMobile && Boolean(state.dropdownItems.length) && (/*#__PURE__*/React__default.default.createElement(React__default.default.Fragment, null, /*#__PURE__*/React__default.default.createElement("div", null, /*#__PURE__*/React__default.default.createElement(ButtonIcon.default, {
326
+ ref: dropdownButtonRef,
327
+ ariaLabel: openMoreSubpagesAriaLabel,
328
+ ariaExpanded: isDropdownListOpen,
329
+ onClick: toggleDropdown,
330
+ icon: isDropdownListOpen ? icons.ChevronUp : icons.ChevronDown,
331
+ isReversed: true,
332
+ "data-testid": "dropdown-button"
333
+ }, dropdownButtonLabel)), isDropdownListOpen && (/*#__PURE__*/React__default.default.createElement(DropdownList, {
334
+ "$isDropdownListOpen": isDropdownListOpen
335
+ }, state.dropdownItems.map(dropdownItem => /*#__PURE__*/React.isValidElement(dropdownItem) && dropdownItem.type === PriorityNavigationItem.default && (/*#__PURE__*/React__default.default.createElement(PriorityNavigationItem.default, {
336
+ id: dropdownItem.props.id,
337
+ key: dropdownItem.key,
338
+ onClick: dropdownItem.props.onClick || props.onClick,
339
+ onKeyDown: dropdownItem.props.onKeyDown || props.onKeyDown,
340
+ isActive: dropdownItem.props.isActive,
341
+ className: dropdownItem.props.className,
342
+ "data-testid": dropdownItem.props['data-testid']
343
+ }, dropdownItem.props.children))))))))));
366
344
  };
367
345
 
368
346
  exports.default = PriorityNavigation;