@postnord/pn-marketweb-components 4.2.5 → 4.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (511) hide show
  1. package/cjs/header-theme-a250bf67.js +245 -0
  2. package/cjs/header-theme-a250bf67.js.map +1 -0
  3. package/cjs/index-9a9efa1c.js +24 -16
  4. package/cjs/loader.cjs.js +1 -1
  5. package/cjs/pn-app-banner.cjs.entry.js +1 -1
  6. package/cjs/pn-breakpoints.cjs.entry.js +1 -1
  7. package/cjs/pn-chat-message_2.cjs.entry.js +2 -2
  8. package/cjs/pn-chat.cjs.entry.js +2 -2
  9. package/cjs/pn-customernumber-selector-option.cjs.entry.js +1 -1
  10. package/cjs/pn-customernumber-selector.cjs.entry.js +1 -1
  11. package/cjs/pn-find-price-result.cjs.entry.js +1 -1
  12. package/cjs/pn-find-price.cjs.entry.js +2 -2
  13. package/cjs/pn-find-service-and-price-result.cjs.entry.js +1 -1
  14. package/cjs/pn-find-service-and-price.cjs.entry.js +1 -1
  15. package/cjs/pn-hero-block-international.cjs.entry.js +1 -1
  16. package/cjs/pn-language-selector_13.cjs.entry.js +1519 -0
  17. package/cjs/pn-language-selector_13.cjs.entry.js.map +1 -0
  18. package/cjs/pn-level-up-modal.cjs.entry.js +1 -1
  19. package/cjs/pn-level-up.cjs.entry.js +2 -2
  20. package/cjs/pn-link-list.cjs.entry.js +1 -1
  21. package/cjs/pn-market-web-components.cjs.js +1 -1
  22. package/cjs/pn-marketweb-header-main-row_2.cjs.entry.js +222 -0
  23. package/cjs/pn-marketweb-header-main-row_2.cjs.entry.js.map +1 -0
  24. package/cjs/pn-marketweb-header-skeleton-loader.cjs.entry.js +23 -0
  25. package/cjs/pn-marketweb-header-skeleton-loader.cjs.entry.js.map +1 -0
  26. package/cjs/pn-marketweb-header-toggle.cjs.entry.js +46 -0
  27. package/cjs/pn-marketweb-header-toggle.cjs.entry.js.map +1 -0
  28. package/cjs/pn-marketweb-header.cjs.entry.js +1043 -0
  29. package/cjs/pn-marketweb-header.cjs.entry.js.map +1 -0
  30. package/cjs/pn-marketweb-icon.cjs.entry.js +1 -1
  31. package/cjs/{pn-marketweb-siteheader-login-linklist.cjs.entry.js → pn-marketweb-siteheader-login-button_2.cjs.entry.js} +44 -2
  32. package/cjs/pn-marketweb-siteheader-login-button_2.cjs.entry.js.map +1 -0
  33. package/cjs/pn-marketweb-siteheader-login-mypage-button.cjs.entry.js +1 -1
  34. package/cjs/pn-marketweb-siteheader.cjs.entry.js +7 -199
  35. package/cjs/pn-marketweb-siteheader.cjs.entry.js.map +1 -1
  36. package/cjs/pn-marketweb-table.cjs.entry.js +1 -1
  37. package/cjs/pn-media-block.cjs.entry.js +1 -1
  38. package/cjs/pn-pex-pricefinder.cjs.entry.js +1 -1
  39. package/cjs/pn-product-card_3.cjs.entry.js +1 -1
  40. package/cjs/pn-product-pricelist-result.cjs.entry.js +1 -1
  41. package/cjs/pn-product-pricelist.cjs.entry.js +2 -2
  42. package/cjs/pn-product-tile-info_2.cjs.entry.js +1 -1
  43. package/cjs/pn-product-tile.cjs.entry.js +1 -1
  44. package/cjs/pn-profile-modal-customernumber.cjs.entry.js +1 -1
  45. package/cjs/pn-profile-modal-profile.cjs.entry.js +2 -2
  46. package/cjs/pn-profile-modal-type.cjs.entry.js +1 -1
  47. package/cjs/pn-profile-modal.cjs.entry.js +1 -1
  48. package/cjs/pn-profile-selector-option.cjs.entry.js +1 -1
  49. package/cjs/pn-profile-selector.cjs.entry.js +1 -1
  50. package/cjs/pn-proxio-findprice-result.cjs.entry.js +1 -1
  51. package/cjs/pn-proxio-findprice.cjs.entry.js +3 -3
  52. package/cjs/pn-proxio-pricegroup.cjs.entry.js +1 -1
  53. package/cjs/pn-proxio-productcard_4.cjs.entry.js +3 -3
  54. package/cjs/pn-qr-code-generator.cjs.entry.js +1 -1
  55. package/cjs/pn-sidenav-level.cjs.entry.js +1 -1
  56. package/cjs/pn-sidenav-link.cjs.entry.js +1 -1
  57. package/cjs/pn-sidenav-togglebutton.cjs.entry.js +1 -1
  58. package/cjs/pn-sidenav.cjs.entry.js +1 -1
  59. package/cjs/pn-site-footer_3.cjs.entry.js +3 -3
  60. package/cjs/pn-titletag.cjs.entry.js +1 -1
  61. package/cjs/pn-usp-promoter.cjs.entry.js +1 -1
  62. package/cjs/translations-9510f11c.js +198 -0
  63. package/cjs/translations-9510f11c.js.map +1 -0
  64. package/collection/collection-manifest.json +5 -0
  65. package/collection/components/layout-components/pn-marketweb-header/components/pn-marketweb-header-main-row.css +204 -0
  66. package/collection/components/layout-components/pn-marketweb-header/components/pn-marketweb-header-main-row.js +658 -0
  67. package/collection/components/layout-components/pn-marketweb-header/components/pn-marketweb-header-main-row.js.map +1 -0
  68. package/collection/components/layout-components/pn-marketweb-header/components/pn-marketweb-header-skeleton-loader.css +217 -0
  69. package/collection/components/layout-components/pn-marketweb-header/components/pn-marketweb-header-skeleton-loader.js +20 -0
  70. package/collection/components/layout-components/pn-marketweb-header/components/pn-marketweb-header-skeleton-loader.js.map +1 -0
  71. package/collection/components/layout-components/pn-marketweb-header/components/pn-marketweb-header-top-row.css +115 -0
  72. package/collection/components/layout-components/pn-marketweb-header/components/pn-marketweb-header-top-row.js +520 -0
  73. package/collection/components/layout-components/pn-marketweb-header/components/pn-marketweb-header-top-row.js.map +1 -0
  74. package/collection/components/layout-components/pn-marketweb-header/components/shared/pn-marketweb-header-shared.js +37 -0
  75. package/collection/components/layout-components/pn-marketweb-header/components/shared/pn-marketweb-header-shared.js.map +1 -0
  76. package/collection/components/layout-components/pn-marketweb-header/mapper/pn-marketweb-header.mapper.js +109 -0
  77. package/collection/components/layout-components/pn-marketweb-header/mapper/pn-marketweb-header.mapper.js.map +1 -0
  78. package/collection/components/layout-components/pn-marketweb-header/pn-marketweb-header.css +225 -0
  79. package/collection/components/layout-components/pn-marketweb-header/pn-marketweb-header.js +916 -0
  80. package/collection/components/layout-components/pn-marketweb-header/pn-marketweb-header.js.map +1 -0
  81. package/collection/components/layout-components/pn-marketweb-header/pn-marketweb-header.stories.js +638 -0
  82. package/collection/components/layout-components/pn-marketweb-header/pn-marketweb-header.stories.js.map +1 -0
  83. package/collection/components/layout-components/pn-marketweb-header/services/pn-marketweb-header.service.js +180 -0
  84. package/collection/components/layout-components/pn-marketweb-header/services/pn-marketweb-header.service.js.map +1 -0
  85. package/collection/components/layout-components/pn-marketweb-header/types/pn-marketweb-header.types.js +2 -0
  86. package/collection/components/layout-components/pn-marketweb-header/types/pn-marketweb-header.types.js.map +1 -0
  87. package/collection/components/layout-components/pn-marketweb-header/utils/header-i18n.js +37 -0
  88. package/collection/components/layout-components/pn-marketweb-header/utils/header-i18n.js.map +1 -0
  89. package/collection/components/layout-components/pn-marketweb-header/utils/header-language.js +46 -0
  90. package/collection/components/layout-components/pn-marketweb-header/utils/header-language.js.map +1 -0
  91. package/collection/components/layout-components/pn-marketweb-header/utils/header-menu.js +36 -0
  92. package/collection/components/layout-components/pn-marketweb-header/utils/header-menu.js.map +1 -0
  93. package/collection/components/layout-components/pn-marketweb-header/utils/header-theme.js +48 -0
  94. package/collection/components/layout-components/pn-marketweb-header/utils/header-theme.js.map +1 -0
  95. package/collection/components/layout-components/pn-marketweb-header/utils/header-toggle-menu.js +101 -0
  96. package/collection/components/layout-components/pn-marketweb-header/utils/header-toggle-menu.js.map +1 -0
  97. package/collection/components/layout-components/pn-marketweb-header/utils/header-toggle-menu.storage.js +63 -0
  98. package/collection/components/layout-components/pn-marketweb-header/utils/header-toggle-menu.storage.js.map +1 -0
  99. package/collection/components/layout-components/pn-marketweb-header/utils/header-url.js +91 -0
  100. package/collection/components/layout-components/pn-marketweb-header/utils/header-url.js.map +1 -0
  101. package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-login-button.js +1 -1
  102. package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-login-linklist.css +34 -12
  103. package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-login-mypage-button.js +1 -1
  104. package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-login-profileselection.css +36 -15
  105. package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-login.css +27 -13
  106. package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-login.js +29 -4
  107. package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-login.js.map +1 -1
  108. package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-types.js.map +1 -1
  109. package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-unified-login.js +1 -1
  110. package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader.js +4 -4
  111. package/collection/components/media/pn-media-block/pn-media-block.js +1 -1
  112. package/collection/components/minor/pn-app-banner/pn-app-banner.js +1 -1
  113. package/collection/components/minor/pn-marketweb-icon/pn-marketweb-icon.js +1 -1
  114. package/collection/components/minor/pn-swan/pn-swan.js +1 -1
  115. package/collection/components/minor/pn-titletag/pn-titletag.js +1 -1
  116. package/collection/components/navigation/pn-language-selector/pn-language-selector-option.css +25 -12
  117. package/collection/components/navigation/pn-language-selector/pn-language-selector-option.js +1 -1
  118. package/collection/components/navigation/pn-language-selector/pn-language-selector.css +17 -5
  119. package/collection/components/navigation/pn-language-selector/pn-language-selector.js +22 -3
  120. package/collection/components/navigation/pn-language-selector/pn-language-selector.js.map +1 -1
  121. package/collection/components/navigation/pn-mainnav/pn-mainnav-level.css +37 -17
  122. package/collection/components/navigation/pn-mainnav/pn-mainnav-level.js +2 -2
  123. package/collection/components/navigation/pn-mainnav/pn-mainnav-link.css +81 -33
  124. package/collection/components/navigation/pn-mainnav/pn-mainnav-link.js +1 -1
  125. package/collection/components/navigation/pn-mainnav/pn-mainnav-list.css +12 -2
  126. package/collection/components/navigation/pn-mainnav/pn-mainnav-list.js +1 -1
  127. package/collection/components/navigation/pn-mainnav/pn-mainnav.css +35 -22
  128. package/collection/components/navigation/pn-mainnav/pn-mainnav.js +1 -1
  129. package/collection/components/navigation/pn-marketweb-header-toggle/pn-marketweb-header-toggle.css +80 -0
  130. package/collection/components/navigation/pn-marketweb-header-toggle/pn-marketweb-header-toggle.js +147 -0
  131. package/collection/components/navigation/pn-marketweb-header-toggle/pn-marketweb-header-toggle.js.map +1 -0
  132. package/collection/components/navigation/pn-sidenav/pn-sidenav-level.js +1 -1
  133. package/collection/components/navigation/pn-sidenav/pn-sidenav-link.js +1 -1
  134. package/collection/components/navigation/pn-sidenav/pn-sidenav-togglebutton.js +1 -1
  135. package/collection/components/navigation/pn-sidenav/pn-sidenav.js +1 -1
  136. package/collection/components/navigation/pn-site-footer/pn-site-footer-col.js +1 -1
  137. package/collection/components/navigation/pn-site-footer/pn-site-footer.js +1 -1
  138. package/collection/components/navigation/pn-site-selector/pn-site-selector-item.css +16 -12
  139. package/collection/components/navigation/pn-site-selector/pn-site-selector-item.js +1 -1
  140. package/collection/components/navigation/pn-site-selector/pn-site-selector.css +15 -0
  141. package/collection/components/navigation/pn-site-selector/pn-site-selector.js +22 -3
  142. package/collection/components/navigation/pn-site-selector/pn-site-selector.js.map +1 -1
  143. package/collection/components/profile/pn-customernumber-selector/pn-customernumber-selector-option.js +1 -1
  144. package/collection/components/profile/pn-customernumber-selector/pn-customernumber-selector.js +1 -1
  145. package/collection/components/profile/pn-profile-modal/pn-profile-modal-customernumber.js +1 -1
  146. package/collection/components/profile/pn-profile-modal/pn-profile-modal-profile.js +2 -2
  147. package/collection/components/profile/pn-profile-modal/pn-profile-modal-type.js +1 -1
  148. package/collection/components/profile/pn-profile-modal/pn-profile-modal.js +1 -1
  149. package/collection/components/profile/pn-profile-selector/pn-profile-selector-option.js +1 -1
  150. package/collection/components/profile/pn-profile-selector/pn-profile-selector.js +1 -1
  151. package/collection/components/utilities/pn-breakpoints/pn-breakpoints.js +1 -1
  152. package/collection/components/widgets/pn-chat/pn-chat-message/pn-chat-message.js +1 -1
  153. package/collection/components/widgets/pn-chat/pn-chat.js +2 -2
  154. package/collection/components/widgets/pn-find-price/pn-find-price-result.js +1 -1
  155. package/collection/components/widgets/pn-find-price/pn-find-price.js +2 -2
  156. package/collection/components/widgets/pn-find-service-and-price/pn-find-service-and-price-result.js +1 -1
  157. package/collection/components/widgets/pn-find-service-and-price/pn-find-service-and-price.js +1 -1
  158. package/collection/components/widgets/pn-hero-block-international/pn-hero-block-international.js +1 -1
  159. package/collection/components/widgets/pn-level-up/pn-level-up-modal/pn-level-up-modal.js +1 -1
  160. package/collection/components/widgets/pn-level-up/pn-level-up.js +2 -2
  161. package/collection/components/widgets/pn-link-list/pn-link-list.js +1 -1
  162. package/collection/components/widgets/pn-marketweb-carousel/pn-marketweb-carousel.js +1 -1
  163. package/collection/components/widgets/pn-marketweb-table/pn-marketweb-table.js +1 -1
  164. package/collection/components/widgets/pn-pex-pricefinder/pn-pex-pricefinder.js +1 -1
  165. package/collection/components/widgets/pn-product-card/pn-product-card.js +1 -1
  166. package/collection/components/widgets/pn-product-pricelist/pn-product-pricelist-result.js +1 -1
  167. package/collection/components/widgets/pn-product-pricelist/pn-product-pricelist.js +2 -2
  168. package/collection/components/widgets/pn-product-tile/pn-product-tile-info.js +1 -1
  169. package/collection/components/widgets/pn-product-tile/pn-product-tile.js +1 -1
  170. package/collection/components/widgets/pn-proxio-findprice/pn-proxio-findprice-result.js +1 -1
  171. package/collection/components/widgets/pn-proxio-findprice/pn-proxio-findprice.js +3 -3
  172. package/collection/components/widgets/pn-proxio-pricegroup/pn-proxio-pricegroup.js +1 -1
  173. package/collection/components/widgets/pn-proxio-productcard/pn-proxio-productcard-description.js +1 -1
  174. package/collection/components/widgets/pn-proxio-productcard/pn-proxio-productcard-information.js +1 -1
  175. package/collection/components/widgets/pn-proxio-productcard/pn-proxio-productcard.js +1 -1
  176. package/collection/components/widgets/pn-qr-code-generator/pn-qr-code-generator.js +1 -1
  177. package/collection/components/widgets/pn-usp-promoter/pn-usp-promoter.js +1 -1
  178. package/collection/services/pn-refined-marketweb-context/pn-refined-marketweb-context.constants.js +105 -0
  179. package/collection/services/pn-refined-marketweb-context/pn-refined-marketweb-context.constants.js.map +1 -0
  180. package/collection/services/pn-refined-marketweb-context/pn-refined-marketweb-context.service.js +166 -0
  181. package/collection/services/pn-refined-marketweb-context/pn-refined-marketweb-context.service.js.map +1 -0
  182. package/collection/services/pn-refined-marketweb-context/pn-refined-marketweb-context.types.js +2 -0
  183. package/collection/services/pn-refined-marketweb-context/pn-refined-marketweb-context.types.js.map +1 -0
  184. package/components/pn-app-banner.js +1 -1
  185. package/components/pn-breakpoints.js +1 -1
  186. package/components/pn-chat-message2.js +1 -1
  187. package/components/pn-chat.js +2 -2
  188. package/components/pn-customernumber-selector-option.js +1 -1
  189. package/components/pn-customernumber-selector.js +1 -1
  190. package/components/pn-find-price-result2.js +1 -1
  191. package/components/pn-find-price.js +2 -2
  192. package/components/pn-find-service-and-price-result2.js +1 -1
  193. package/components/pn-find-service-and-price.js +1 -1
  194. package/components/pn-hero-block-international.js +1 -1
  195. package/components/pn-language-selector-option2.js +2 -2
  196. package/components/pn-language-selector-option2.js.map +1 -1
  197. package/components/pn-language-selector2.js +4 -2
  198. package/components/pn-language-selector2.js.map +1 -1
  199. package/components/pn-level-up-modal2.js +1 -1
  200. package/components/pn-level-up.js +2 -2
  201. package/components/pn-link-list.js +1 -1
  202. package/components/pn-mainnav-level2.js +3 -3
  203. package/components/pn-mainnav-level2.js.map +1 -1
  204. package/components/pn-mainnav-link2.js +2 -2
  205. package/components/pn-mainnav-link2.js.map +1 -1
  206. package/components/pn-mainnav-list2.js +2 -2
  207. package/components/pn-mainnav-list2.js.map +1 -1
  208. package/components/pn-mainnav2.js +2 -2
  209. package/components/pn-mainnav2.js.map +1 -1
  210. package/components/pn-marketweb-carousel2.js +1 -1
  211. package/components/pn-marketweb-header-main-row.d.ts +11 -0
  212. package/components/pn-marketweb-header-main-row.js +8 -0
  213. package/components/pn-marketweb-header-main-row.js.map +1 -0
  214. package/components/pn-marketweb-header-main-row2.js +281 -0
  215. package/components/pn-marketweb-header-main-row2.js.map +1 -0
  216. package/components/pn-marketweb-header-shared.js +192 -0
  217. package/components/pn-marketweb-header-shared.js.map +1 -0
  218. package/components/pn-marketweb-header-skeleton-loader.d.ts +11 -0
  219. package/components/pn-marketweb-header-skeleton-loader.js +37 -0
  220. package/components/pn-marketweb-header-skeleton-loader.js.map +1 -0
  221. package/components/pn-marketweb-header-toggle.d.ts +11 -0
  222. package/components/pn-marketweb-header-toggle.js +8 -0
  223. package/components/pn-marketweb-header-toggle.js.map +1 -0
  224. package/components/pn-marketweb-header-toggle2.js +61 -0
  225. package/components/pn-marketweb-header-toggle2.js.map +1 -0
  226. package/components/pn-marketweb-header-top-row.d.ts +11 -0
  227. package/components/pn-marketweb-header-top-row.js +8 -0
  228. package/components/pn-marketweb-header-top-row.js.map +1 -0
  229. package/components/pn-marketweb-header-top-row2.js +238 -0
  230. package/components/pn-marketweb-header-top-row2.js.map +1 -0
  231. package/components/pn-marketweb-header.d.ts +11 -0
  232. package/components/pn-marketweb-header.js +1206 -0
  233. package/components/pn-marketweb-header.js.map +1 -0
  234. package/components/pn-marketweb-icon.js +1 -1
  235. package/components/pn-marketweb-siteheader-login-button2.js +1 -1
  236. package/components/pn-marketweb-siteheader-login-linklist2.js +1 -1
  237. package/components/pn-marketweb-siteheader-login-linklist2.js.map +1 -1
  238. package/components/pn-marketweb-siteheader-login-mypage-button.js +1 -1
  239. package/components/pn-marketweb-siteheader-login-profileselection2.js +1 -1
  240. package/components/pn-marketweb-siteheader-login-profileselection2.js.map +1 -1
  241. package/components/pn-marketweb-siteheader-login2.js +4 -2
  242. package/components/pn-marketweb-siteheader-login2.js.map +1 -1
  243. package/components/pn-marketweb-siteheader-unified-login2.js +1 -1
  244. package/components/pn-marketweb-siteheader.js +5 -197
  245. package/components/pn-marketweb-siteheader.js.map +1 -1
  246. package/components/pn-marketweb-table.js +1 -1
  247. package/components/pn-media-block.js +1 -1
  248. package/components/pn-pex-pricefinder.js +1 -1
  249. package/components/pn-product-card2.js +1 -1
  250. package/components/pn-product-pricelist-result.js +1 -1
  251. package/components/pn-product-pricelist.js +2 -2
  252. package/components/pn-product-tile-info2.js +1 -1
  253. package/components/pn-product-tile.js +1 -1
  254. package/components/pn-profile-modal-customernumber.js +1 -1
  255. package/components/pn-profile-modal-profile.js +2 -2
  256. package/components/pn-profile-modal-type.js +1 -1
  257. package/components/pn-profile-modal.js +1 -1
  258. package/components/pn-profile-selector-option.js +1 -1
  259. package/components/pn-profile-selector.js +1 -1
  260. package/components/pn-proxio-findprice-result2.js +2 -2
  261. package/components/pn-proxio-findprice.js +3 -3
  262. package/components/pn-proxio-pricegroup.js +2 -2
  263. package/components/pn-proxio-productcard-description2.js +1 -1
  264. package/components/pn-proxio-productcard-information2.js +1 -1
  265. package/components/pn-proxio-productcard2.js +1 -1
  266. package/components/pn-qr-code-generator2.js +1 -1
  267. package/components/pn-sidenav-level.js +1 -1
  268. package/components/pn-sidenav-link.js +1 -1
  269. package/components/pn-sidenav-togglebutton.js +1 -1
  270. package/components/pn-sidenav.js +1 -1
  271. package/components/pn-site-footer-col2.js +1 -1
  272. package/components/pn-site-footer2.js +1 -1
  273. package/components/pn-site-selector-item2.js +2 -2
  274. package/components/pn-site-selector-item2.js.map +1 -1
  275. package/components/pn-site-selector2.js +4 -2
  276. package/components/pn-site-selector2.js.map +1 -1
  277. package/components/pn-swan2.js +1 -1
  278. package/components/pn-titletag2.js +1 -1
  279. package/components/pn-usp-promoter.js +1 -1
  280. package/components/translations.js +189 -14
  281. package/components/translations.js.map +1 -1
  282. package/components/translations2.js +21 -0
  283. package/components/translations2.js.map +1 -0
  284. package/esm/header-theme-d09b64c7.js +234 -0
  285. package/esm/header-theme-d09b64c7.js.map +1 -0
  286. package/esm/index-c0a4d8bd.js +24 -16
  287. package/esm/loader.js +1 -1
  288. package/esm/pn-app-banner.entry.js +1 -1
  289. package/esm/pn-breakpoints.entry.js +1 -1
  290. package/esm/pn-chat-message_2.entry.js +2 -2
  291. package/esm/pn-chat.entry.js +2 -2
  292. package/esm/pn-customernumber-selector-option.entry.js +1 -1
  293. package/esm/pn-customernumber-selector.entry.js +1 -1
  294. package/esm/pn-find-price-result.entry.js +1 -1
  295. package/esm/pn-find-price.entry.js +2 -2
  296. package/esm/pn-find-service-and-price-result.entry.js +1 -1
  297. package/esm/pn-find-service-and-price.entry.js +1 -1
  298. package/esm/pn-hero-block-international.entry.js +1 -1
  299. package/esm/{pn-language-selector_9.entry.js → pn-language-selector_13.entry.js} +381 -22
  300. package/esm/pn-language-selector_13.entry.js.map +1 -0
  301. package/esm/pn-level-up-modal.entry.js +1 -1
  302. package/esm/pn-level-up.entry.js +2 -2
  303. package/esm/pn-link-list.entry.js +1 -1
  304. package/esm/pn-market-web-components.js +1 -1
  305. package/esm/pn-marketweb-header-main-row_2.entry.js +217 -0
  306. package/esm/pn-marketweb-header-main-row_2.entry.js.map +1 -0
  307. package/esm/pn-marketweb-header-skeleton-loader.entry.js +19 -0
  308. package/esm/pn-marketweb-header-skeleton-loader.entry.js.map +1 -0
  309. package/esm/pn-marketweb-header-toggle.entry.js +42 -0
  310. package/esm/pn-marketweb-header-toggle.entry.js.map +1 -0
  311. package/esm/pn-marketweb-header.entry.js +1039 -0
  312. package/esm/pn-marketweb-header.entry.js.map +1 -0
  313. package/esm/pn-marketweb-icon.entry.js +1 -1
  314. package/esm/{pn-marketweb-siteheader-login-linklist.entry.js → pn-marketweb-siteheader-login-button_2.entry.js} +44 -3
  315. package/esm/pn-marketweb-siteheader-login-button_2.entry.js.map +1 -0
  316. package/esm/pn-marketweb-siteheader-login-mypage-button.entry.js +1 -1
  317. package/esm/pn-marketweb-siteheader.entry.js +5 -197
  318. package/esm/pn-marketweb-siteheader.entry.js.map +1 -1
  319. package/esm/pn-marketweb-table.entry.js +1 -1
  320. package/esm/pn-media-block.entry.js +1 -1
  321. package/esm/pn-pex-pricefinder.entry.js +1 -1
  322. package/esm/pn-product-card_3.entry.js +1 -1
  323. package/esm/pn-product-pricelist-result.entry.js +1 -1
  324. package/esm/pn-product-pricelist.entry.js +2 -2
  325. package/esm/pn-product-tile-info_2.entry.js +1 -1
  326. package/esm/pn-product-tile.entry.js +1 -1
  327. package/esm/pn-profile-modal-customernumber.entry.js +1 -1
  328. package/esm/pn-profile-modal-profile.entry.js +2 -2
  329. package/esm/pn-profile-modal-type.entry.js +1 -1
  330. package/esm/pn-profile-modal.entry.js +1 -1
  331. package/esm/pn-profile-selector-option.entry.js +1 -1
  332. package/esm/pn-profile-selector.entry.js +1 -1
  333. package/esm/pn-proxio-findprice-result.entry.js +1 -1
  334. package/esm/pn-proxio-findprice.entry.js +3 -3
  335. package/esm/pn-proxio-pricegroup.entry.js +1 -1
  336. package/esm/pn-proxio-productcard_4.entry.js +3 -3
  337. package/esm/pn-qr-code-generator.entry.js +1 -1
  338. package/esm/pn-sidenav-level.entry.js +1 -1
  339. package/esm/pn-sidenav-link.entry.js +1 -1
  340. package/esm/pn-sidenav-togglebutton.entry.js +1 -1
  341. package/esm/pn-sidenav.entry.js +1 -1
  342. package/esm/pn-site-footer_3.entry.js +3 -3
  343. package/esm/pn-titletag.entry.js +1 -1
  344. package/esm/pn-usp-promoter.entry.js +1 -1
  345. package/esm/translations-d2f5804e.js +196 -0
  346. package/esm/translations-d2f5804e.js.map +1 -0
  347. package/package.json +1 -1
  348. package/pn-market-web-components/{p-4a164ef8.entry.js → p-03728b0b.entry.js} +2 -2
  349. package/pn-market-web-components/p-04f51418.js +2 -0
  350. package/pn-market-web-components/p-04f51418.js.map +1 -0
  351. package/pn-market-web-components/{p-e43a36e0.entry.js → p-067c1c2f.entry.js} +2 -2
  352. package/pn-market-web-components/{p-2616cdc1.entry.js → p-191c8cfc.entry.js} +2 -2
  353. package/pn-market-web-components/{p-ca003c1f.entry.js → p-1a91c313.entry.js} +2 -2
  354. package/pn-market-web-components/{p-ab1e3dc2.entry.js → p-1f8304be.entry.js} +2 -2
  355. package/pn-market-web-components/{p-a3f601cb.entry.js → p-24ffac0a.entry.js} +2 -2
  356. package/pn-market-web-components/p-3239c36b.entry.js +2 -0
  357. package/pn-market-web-components/p-3239c36b.entry.js.map +1 -0
  358. package/pn-market-web-components/{p-12cafd55.entry.js → p-3aa74418.entry.js} +2 -2
  359. package/pn-market-web-components/p-3d27faee.entry.js +2 -0
  360. package/pn-market-web-components/{p-9d0ca27b.entry.js.map → p-3d27faee.entry.js.map} +1 -1
  361. package/pn-market-web-components/p-3e25f431.entry.js +2 -0
  362. package/pn-market-web-components/p-3e25f431.entry.js.map +1 -0
  363. package/pn-market-web-components/{p-64f6691d.entry.js → p-42da7c5f.entry.js} +2 -2
  364. package/pn-market-web-components/{p-f0d423d0.entry.js → p-43748ca2.entry.js} +2 -2
  365. package/pn-market-web-components/{p-1c644b91.entry.js → p-466958a8.entry.js} +2 -2
  366. package/pn-market-web-components/{p-150da889.entry.js → p-4ab53d5d.entry.js} +2 -2
  367. package/pn-market-web-components/{p-118fe47d.entry.js → p-4d595345.entry.js} +2 -2
  368. package/pn-market-web-components/{p-0f6f715b.entry.js → p-4dac1980.entry.js} +2 -2
  369. package/pn-market-web-components/{p-a13f1f73.entry.js → p-4fcce83d.entry.js} +2 -2
  370. package/pn-market-web-components/{p-89fbca3b.entry.js → p-5a51d0b0.entry.js} +2 -2
  371. package/pn-market-web-components/{p-f4d2d0d3.entry.js → p-61346425.entry.js} +2 -2
  372. package/pn-market-web-components/{p-6e693269.entry.js → p-6b557670.entry.js} +2 -2
  373. package/pn-market-web-components/{p-e6d6a752.entry.js → p-70a71854.entry.js} +2 -2
  374. package/pn-market-web-components/p-75311d67.js +2 -0
  375. package/pn-market-web-components/p-75311d67.js.map +1 -0
  376. package/pn-market-web-components/p-756d8d95.entry.js +2 -0
  377. package/pn-market-web-components/p-756d8d95.entry.js.map +1 -0
  378. package/pn-market-web-components/{p-c0315c45.entry.js → p-76fb0c21.entry.js} +2 -2
  379. package/pn-market-web-components/{p-b2b2bae0.entry.js → p-81210644.entry.js} +2 -2
  380. package/pn-market-web-components/p-81e4d75b.entry.js +2 -0
  381. package/pn-market-web-components/p-81e4d75b.entry.js.map +1 -0
  382. package/pn-market-web-components/{p-d0f27361.entry.js → p-8382794b.entry.js} +2 -2
  383. package/pn-market-web-components/{p-8f25176b.entry.js → p-8519e39e.entry.js} +2 -2
  384. package/pn-market-web-components/p-8c26c1f2.entry.js +2 -0
  385. package/pn-market-web-components/p-8c26c1f2.entry.js.map +1 -0
  386. package/pn-market-web-components/{p-461c8792.entry.js → p-92b6477c.entry.js} +2 -2
  387. package/pn-market-web-components/{p-0d4d9d90.entry.js → p-9eab8192.entry.js} +2 -2
  388. package/pn-market-web-components/{p-40e632cc.entry.js → p-a3beee11.entry.js} +2 -2
  389. package/pn-market-web-components/{p-01fbf1ce.entry.js → p-a6935dc2.entry.js} +2 -2
  390. package/pn-market-web-components/{p-af646091.entry.js → p-a6dd3e4f.entry.js} +2 -2
  391. package/pn-market-web-components/{p-6d77e747.entry.js → p-af89c95a.entry.js} +2 -2
  392. package/pn-market-web-components/p-b318ff19.entry.js +2 -0
  393. package/pn-market-web-components/{p-0700cb4c.entry.js.map → p-b318ff19.entry.js.map} +1 -1
  394. package/pn-market-web-components/{p-c89f3d6b.entry.js → p-ba14b0ef.entry.js} +2 -2
  395. package/pn-market-web-components/{p-c7965104.entry.js → p-ba680948.entry.js} +2 -2
  396. package/pn-market-web-components/{p-11c6e458.entry.js → p-ba75bfdb.entry.js} +2 -2
  397. package/pn-market-web-components/{p-4149e715.entry.js → p-c186ec41.entry.js} +2 -2
  398. package/pn-market-web-components/{p-66c0c8dc.entry.js → p-c38707f9.entry.js} +2 -2
  399. package/pn-market-web-components/{p-671a8129.entry.js → p-c89cdd5a.entry.js} +2 -2
  400. package/pn-market-web-components/{p-4d848e18.entry.js → p-e8cd1608.entry.js} +2 -2
  401. package/pn-market-web-components/{p-4517a3d4.entry.js → p-ef090656.entry.js} +2 -2
  402. package/pn-market-web-components/p-f23ed5d2.entry.js +2 -0
  403. package/pn-market-web-components/p-f23ed5d2.entry.js.map +1 -0
  404. package/pn-market-web-components/{p-bd8ec517.entry.js → p-f3b4c13d.entry.js} +2 -2
  405. package/pn-market-web-components/{p-ff38b9a5.entry.js → p-f710445f.entry.js} +2 -2
  406. package/pn-market-web-components/{p-2e585ed5.entry.js → p-fcefe4a4.entry.js} +2 -2
  407. package/pn-market-web-components/p-fded22b7.entry.js +2 -0
  408. package/pn-market-web-components/p-fded22b7.entry.js.map +1 -0
  409. package/pn-market-web-components/{p-32bd2ff8.entry.js → p-ff6118f8.entry.js} +2 -2
  410. package/pn-market-web-components/pn-market-web-components.esm.js +1 -1
  411. package/pn-market-web-components/pn-market-web-components.esm.js.map +1 -1
  412. package/types/components/layout-components/pn-marketweb-header/components/pn-marketweb-header-main-row.d.ts +40 -0
  413. package/types/components/layout-components/pn-marketweb-header/components/pn-marketweb-header-skeleton-loader.d.ts +3 -0
  414. package/types/components/layout-components/pn-marketweb-header/components/pn-marketweb-header-top-row.d.ts +30 -0
  415. package/types/components/layout-components/pn-marketweb-header/components/shared/pn-marketweb-header-shared.d.ts +48 -0
  416. package/types/components/layout-components/pn-marketweb-header/mapper/pn-marketweb-header.mapper.d.ts +34 -0
  417. package/types/components/layout-components/pn-marketweb-header/pn-marketweb-header.d.ts +121 -0
  418. package/types/components/layout-components/pn-marketweb-header/pn-marketweb-header.stories.d.ts +99 -0
  419. package/types/components/layout-components/pn-marketweb-header/services/pn-marketweb-header.service.d.ts +108 -0
  420. package/types/components/layout-components/pn-marketweb-header/types/pn-marketweb-header.types.d.ts +103 -0
  421. package/types/components/layout-components/pn-marketweb-header/utils/header-i18n.d.ts +16 -0
  422. package/types/components/layout-components/pn-marketweb-header/utils/header-language.d.ts +20 -0
  423. package/types/components/layout-components/pn-marketweb-header/utils/header-menu.d.ts +16 -0
  424. package/types/components/layout-components/pn-marketweb-header/utils/header-theme.d.ts +6 -0
  425. package/types/components/layout-components/pn-marketweb-header/utils/header-toggle-menu.d.ts +49 -0
  426. package/types/components/layout-components/pn-marketweb-header/utils/header-toggle-menu.storage.d.ts +25 -0
  427. package/types/components/layout-components/pn-marketweb-header/utils/header-url.d.ts +41 -0
  428. package/types/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-login.d.ts +2 -0
  429. package/types/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-types.d.ts +1 -0
  430. package/types/components/navigation/pn-language-selector/pn-language-selector.d.ts +1 -0
  431. package/types/components/navigation/pn-marketweb-header-toggle/pn-marketweb-header-toggle.d.ts +25 -0
  432. package/types/components/navigation/pn-site-selector/pn-site-selector.d.ts +1 -0
  433. package/types/components/widgets/pn-proxio-pricegroup/pn-proxio-pricegroup.d.ts +1 -1
  434. package/types/components.d.ts +532 -2
  435. package/types/services/pn-refined-marketweb-context/pn-refined-marketweb-context.constants.d.ts +7 -0
  436. package/types/services/pn-refined-marketweb-context/pn-refined-marketweb-context.service.d.ts +24 -0
  437. package/types/services/pn-refined-marketweb-context/pn-refined-marketweb-context.types.d.ts +16 -0
  438. package/umd/pn-marketweb-init.js +1 -1
  439. package/umd/pn-marketweb-salesforce.js +1 -1
  440. package/vscode-data.json +421 -0
  441. package/cjs/pn-language-selector_9.cjs.entry.js +0 -1156
  442. package/cjs/pn-language-selector_9.cjs.entry.js.map +0 -1
  443. package/cjs/pn-mainnav-link.cjs.entry.js +0 -45
  444. package/cjs/pn-mainnav-link.cjs.entry.js.map +0 -1
  445. package/cjs/pn-mainnav-store-13aaa243.js +0 -22
  446. package/cjs/pn-mainnav-store-13aaa243.js.map +0 -1
  447. package/cjs/pn-marketweb-siteheader-login-button_4.cjs.entry.js +0 -366
  448. package/cjs/pn-marketweb-siteheader-login-button_4.cjs.entry.js.map +0 -1
  449. package/cjs/pn-marketweb-siteheader-login-linklist.cjs.entry.js.map +0 -1
  450. package/esm/pn-language-selector_9.entry.js.map +0 -1
  451. package/esm/pn-mainnav-link.entry.js +0 -41
  452. package/esm/pn-mainnav-link.entry.js.map +0 -1
  453. package/esm/pn-mainnav-store-c98d831e.js +0 -19
  454. package/esm/pn-mainnav-store-c98d831e.js.map +0 -1
  455. package/esm/pn-marketweb-siteheader-login-button_4.entry.js +0 -359
  456. package/esm/pn-marketweb-siteheader-login-button_4.entry.js.map +0 -1
  457. package/esm/pn-marketweb-siteheader-login-linklist.entry.js.map +0 -1
  458. package/pn-market-web-components/p-022780ab.entry.js +0 -2
  459. package/pn-market-web-components/p-022780ab.entry.js.map +0 -1
  460. package/pn-market-web-components/p-0700cb4c.entry.js +0 -2
  461. package/pn-market-web-components/p-4bc6d49f.entry.js +0 -2
  462. package/pn-market-web-components/p-4bc6d49f.entry.js.map +0 -1
  463. package/pn-market-web-components/p-4c8bda8f.entry.js +0 -2
  464. package/pn-market-web-components/p-4c8bda8f.entry.js.map +0 -1
  465. package/pn-market-web-components/p-5090bb1d.entry.js +0 -2
  466. package/pn-market-web-components/p-5090bb1d.entry.js.map +0 -1
  467. package/pn-market-web-components/p-9d0ca27b.entry.js +0 -2
  468. package/pn-market-web-components/p-a30de538.entry.js +0 -2
  469. package/pn-market-web-components/p-a30de538.entry.js.map +0 -1
  470. package/pn-market-web-components/p-e3b2486a.js +0 -2
  471. package/pn-market-web-components/p-e3b2486a.js.map +0 -1
  472. /package/pn-market-web-components/{p-4a164ef8.entry.js.map → p-03728b0b.entry.js.map} +0 -0
  473. /package/pn-market-web-components/{p-e43a36e0.entry.js.map → p-067c1c2f.entry.js.map} +0 -0
  474. /package/pn-market-web-components/{p-2616cdc1.entry.js.map → p-191c8cfc.entry.js.map} +0 -0
  475. /package/pn-market-web-components/{p-ca003c1f.entry.js.map → p-1a91c313.entry.js.map} +0 -0
  476. /package/pn-market-web-components/{p-ab1e3dc2.entry.js.map → p-1f8304be.entry.js.map} +0 -0
  477. /package/pn-market-web-components/{p-a3f601cb.entry.js.map → p-24ffac0a.entry.js.map} +0 -0
  478. /package/pn-market-web-components/{p-12cafd55.entry.js.map → p-3aa74418.entry.js.map} +0 -0
  479. /package/pn-market-web-components/{p-64f6691d.entry.js.map → p-42da7c5f.entry.js.map} +0 -0
  480. /package/pn-market-web-components/{p-f0d423d0.entry.js.map → p-43748ca2.entry.js.map} +0 -0
  481. /package/pn-market-web-components/{p-1c644b91.entry.js.map → p-466958a8.entry.js.map} +0 -0
  482. /package/pn-market-web-components/{p-150da889.entry.js.map → p-4ab53d5d.entry.js.map} +0 -0
  483. /package/pn-market-web-components/{p-118fe47d.entry.js.map → p-4d595345.entry.js.map} +0 -0
  484. /package/pn-market-web-components/{p-0f6f715b.entry.js.map → p-4dac1980.entry.js.map} +0 -0
  485. /package/pn-market-web-components/{p-a13f1f73.entry.js.map → p-4fcce83d.entry.js.map} +0 -0
  486. /package/pn-market-web-components/{p-89fbca3b.entry.js.map → p-5a51d0b0.entry.js.map} +0 -0
  487. /package/pn-market-web-components/{p-f4d2d0d3.entry.js.map → p-61346425.entry.js.map} +0 -0
  488. /package/pn-market-web-components/{p-6e693269.entry.js.map → p-6b557670.entry.js.map} +0 -0
  489. /package/pn-market-web-components/{p-e6d6a752.entry.js.map → p-70a71854.entry.js.map} +0 -0
  490. /package/pn-market-web-components/{p-c0315c45.entry.js.map → p-76fb0c21.entry.js.map} +0 -0
  491. /package/pn-market-web-components/{p-b2b2bae0.entry.js.map → p-81210644.entry.js.map} +0 -0
  492. /package/pn-market-web-components/{p-d0f27361.entry.js.map → p-8382794b.entry.js.map} +0 -0
  493. /package/pn-market-web-components/{p-8f25176b.entry.js.map → p-8519e39e.entry.js.map} +0 -0
  494. /package/pn-market-web-components/{p-461c8792.entry.js.map → p-92b6477c.entry.js.map} +0 -0
  495. /package/pn-market-web-components/{p-0d4d9d90.entry.js.map → p-9eab8192.entry.js.map} +0 -0
  496. /package/pn-market-web-components/{p-40e632cc.entry.js.map → p-a3beee11.entry.js.map} +0 -0
  497. /package/pn-market-web-components/{p-01fbf1ce.entry.js.map → p-a6935dc2.entry.js.map} +0 -0
  498. /package/pn-market-web-components/{p-af646091.entry.js.map → p-a6dd3e4f.entry.js.map} +0 -0
  499. /package/pn-market-web-components/{p-6d77e747.entry.js.map → p-af89c95a.entry.js.map} +0 -0
  500. /package/pn-market-web-components/{p-c89f3d6b.entry.js.map → p-ba14b0ef.entry.js.map} +0 -0
  501. /package/pn-market-web-components/{p-c7965104.entry.js.map → p-ba680948.entry.js.map} +0 -0
  502. /package/pn-market-web-components/{p-11c6e458.entry.js.map → p-ba75bfdb.entry.js.map} +0 -0
  503. /package/pn-market-web-components/{p-4149e715.entry.js.map → p-c186ec41.entry.js.map} +0 -0
  504. /package/pn-market-web-components/{p-66c0c8dc.entry.js.map → p-c38707f9.entry.js.map} +0 -0
  505. /package/pn-market-web-components/{p-671a8129.entry.js.map → p-c89cdd5a.entry.js.map} +0 -0
  506. /package/pn-market-web-components/{p-4d848e18.entry.js.map → p-e8cd1608.entry.js.map} +0 -0
  507. /package/pn-market-web-components/{p-4517a3d4.entry.js.map → p-ef090656.entry.js.map} +0 -0
  508. /package/pn-market-web-components/{p-bd8ec517.entry.js.map → p-f3b4c13d.entry.js.map} +0 -0
  509. /package/pn-market-web-components/{p-ff38b9a5.entry.js.map → p-f710445f.entry.js.map} +0 -0
  510. /package/pn-market-web-components/{p-2e585ed5.entry.js.map → p-fcefe4a4.entry.js.map} +0 -0
  511. /package/pn-market-web-components/{p-32bd2ff8.entry.js.map → p-ff6118f8.entry.js.map} +0 -0
@@ -0,0 +1,101 @@
1
+ function getLastMenuItem(menuItems) {
2
+ return menuItems.length > 0
3
+ ? menuItems[menuItems.length - 1]
4
+ : null;
5
+ }
6
+ function getModeRoots(menuItems) {
7
+ if (menuItems.length <= 1) {
8
+ return [];
9
+ }
10
+ return menuItems.slice(0, -1);
11
+ }
12
+ /**
13
+ * Header menu mode utilities.
14
+ *
15
+ * Purpose
16
+ * -------
17
+ * Interprets the backend top-level menu structure used for header menu
18
+ * switching.
19
+ *
20
+ * Expected top-level order:
21
+ * - all items except the last = switchable root menus
22
+ * - last item = shared/common root
23
+ *
24
+ * Responsibilities
25
+ * ----------------
26
+ * - extract a structured representation of the switchable menu roots
27
+ * - resolve the active root for a selected mode
28
+ * - return grouped or flat visible items for rendering
29
+ */
30
+ export function extractToggleableMenuStructure(menuItems) {
31
+ const sharedRoot = getLastMenuItem(menuItems);
32
+ const modeRoots = getModeRoots(menuItems);
33
+ const menuModeOptions = modeRoots.map((root, index) => ({
34
+ index,
35
+ label: root.name,
36
+ href: root.href || undefined,
37
+ root,
38
+ }));
39
+ return {
40
+ hasMenuSwitching: menuModeOptions.length > 0,
41
+ modeRoots,
42
+ menuModeOptions,
43
+ sharedRoot,
44
+ sharedItems: sharedRoot?.children ?? [],
45
+ };
46
+ }
47
+ /**
48
+ * Returns the active root item for the selected mode.
49
+ *
50
+ * Falls back to the first available mode root when the requested mode
51
+ * is out of bounds.
52
+ */
53
+ export function getToggleRootForMode(structure, mode) {
54
+ return structure.modeRoots[mode] ?? structure.modeRoots[0] ?? null;
55
+ }
56
+ /**
57
+ * Returns the active root item for the selected mode directly from raw menu items.
58
+ */
59
+ export function getToggleRootForMenuItems(menuItems, mode) {
60
+ const structure = extractToggleableMenuStructure(menuItems);
61
+ return getToggleRootForMode(structure, mode);
62
+ }
63
+ /**
64
+ * Returns grouped visible items for rendering.
65
+ *
66
+ * - primaryItems = children of the active root
67
+ * - sharedItems = children of the shared/common root
68
+ */
69
+ export function getMenuGroupsForMode(structure, mode) {
70
+ const activeRoot = getToggleRootForMode(structure, mode);
71
+ if (!activeRoot) {
72
+ return {
73
+ primaryItems: structure.sharedItems,
74
+ sharedItems: [],
75
+ };
76
+ }
77
+ return {
78
+ primaryItems: activeRoot?.children ?? [],
79
+ sharedItems: structure.sharedItems,
80
+ };
81
+ }
82
+ /**
83
+ * Returns grouped visible items directly from raw menu items.
84
+ */
85
+ export function getVisibleMenuGroupsForMode(menuItems, mode) {
86
+ const structure = extractToggleableMenuStructure(menuItems);
87
+ return getMenuGroupsForMode(structure, mode);
88
+ }
89
+ /**
90
+ * Builds a flat list of visible menu items for the selected mode.
91
+ *
92
+ * Useful for render paths that do not need grouped rendering.
93
+ */
94
+ export function buildMenuItemsForMode(structure, mode) {
95
+ const groups = getMenuGroupsForMode(structure, mode);
96
+ return [
97
+ ...groups.primaryItems,
98
+ ...groups.sharedItems,
99
+ ];
100
+ }
101
+ //# sourceMappingURL=header-toggle-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header-toggle-menu.js","sourceRoot":"","sources":["../../../../../src/components/layout-components/pn-marketweb-header/utils/header-toggle-menu.ts"],"names":[],"mappings":"AAUA,SAAS,eAAe,CAAC,SAAqB;IAC1C,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC;QACvB,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;QACjC,CAAC,CAAC,IAAI,CAAC;AACf,CAAC;AAED,SAAS,YAAY,CAAC,SAAqB;IACvC,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACd,CAAC;IAED,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAClC,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,8BAA8B,CAC1C,SAAqB;IAErB,MAAM,UAAU,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IAE1C,MAAM,eAAe,GAA2B,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5E,KAAK;QACL,KAAK,EAAE,IAAI,CAAC,IAAI;QAChB,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,SAAS;QAC5B,IAAI;KACP,CAAC,CAAC,CAAC;IAEJ,OAAO;QACH,gBAAgB,EAAE,eAAe,CAAC,MAAM,GAAG,CAAC;QAC5C,SAAS;QACT,eAAe;QACf,UAAU;QACV,WAAW,EAAE,UAAU,EAAE,QAAQ,IAAI,EAAE;KAC1C,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAChC,SAA8B,EAC9B,IAAoB;IAEpB,OAAO,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AACvE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CACrC,SAAqB,EACrB,IAAoB;IAEpB,MAAM,SAAS,GAAG,8BAA8B,CAAC,SAAS,CAAC,CAAC;IAC5D,OAAO,oBAAoB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AACjD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAChC,SAA8B,EAC9B,IAAoB;IAEpB,MAAM,UAAU,GAAG,oBAAoB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAEzD,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,OAAO;YACH,YAAY,EAAE,SAAS,CAAC,WAAW;YACnC,WAAW,EAAE,EAAE;SAClB,CAAC;IACN,CAAC;IAED,OAAO;QACH,YAAY,EAAE,UAAU,EAAE,QAAQ,IAAI,EAAE;QACxC,WAAW,EAAE,SAAS,CAAC,WAAW;KACrC,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B,CACvC,SAAqB,EACrB,IAAoB;IAEpB,MAAM,SAAS,GAAG,8BAA8B,CAAC,SAAS,CAAC,CAAC;IAC5D,OAAO,oBAAoB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AACjD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CACjC,SAA8B,EAC9B,IAAoB;IAEpB,MAAM,MAAM,GAAG,oBAAoB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAErD,OAAO;QACH,GAAG,MAAM,CAAC,YAAY;QACtB,GAAG,MAAM,CAAC,WAAW;KACxB,CAAC;AACN,CAAC","sourcesContent":["import type {\n MenuItem,\n} from '../../pn-marketweb-siteheader/pn-marketweb-siteheader-types';\nimport type {\n HeaderMenuGroups,\n HeaderMenuMode,\n HeaderMenuModeOption,\n HeaderMenuStructure,\n} from '../types/pn-marketweb-header.types';\n\nfunction getLastMenuItem(menuItems: MenuItem[]): MenuItem | null {\n return menuItems.length > 0\n ? menuItems[menuItems.length - 1]\n : null;\n}\n\nfunction getModeRoots(menuItems: MenuItem[]): MenuItem[] {\n if (menuItems.length <= 1) {\n return [];\n }\n\n return menuItems.slice(0, -1);\n}\n\n/**\n * Header menu mode utilities.\n *\n * Purpose\n * -------\n * Interprets the backend top-level menu structure used for header menu\n * switching.\n *\n * Expected top-level order:\n * - all items except the last = switchable root menus\n * - last item = shared/common root\n *\n * Responsibilities\n * ----------------\n * - extract a structured representation of the switchable menu roots\n * - resolve the active root for a selected mode\n * - return grouped or flat visible items for rendering\n */\nexport function extractToggleableMenuStructure(\n menuItems: MenuItem[],\n): HeaderMenuStructure {\n const sharedRoot = getLastMenuItem(menuItems);\n const modeRoots = getModeRoots(menuItems);\n\n const menuModeOptions: HeaderMenuModeOption[] = modeRoots.map((root, index) => ({\n index,\n label: root.name,\n href: root.href || undefined,\n root,\n }));\n\n return {\n hasMenuSwitching: menuModeOptions.length > 0,\n modeRoots,\n menuModeOptions,\n sharedRoot,\n sharedItems: sharedRoot?.children ?? [],\n };\n}\n\n/**\n * Returns the active root item for the selected mode.\n *\n * Falls back to the first available mode root when the requested mode\n * is out of bounds.\n */\nexport function getToggleRootForMode(\n structure: HeaderMenuStructure,\n mode: HeaderMenuMode,\n): MenuItem | null {\n return structure.modeRoots[mode] ?? structure.modeRoots[0] ?? null;\n}\n\n/**\n * Returns the active root item for the selected mode directly from raw menu items.\n */\nexport function getToggleRootForMenuItems(\n menuItems: MenuItem[],\n mode: HeaderMenuMode,\n): MenuItem | null {\n const structure = extractToggleableMenuStructure(menuItems);\n return getToggleRootForMode(structure, mode);\n}\n\n/**\n * Returns grouped visible items for rendering.\n *\n * - primaryItems = children of the active root\n * - sharedItems = children of the shared/common root\n */\nexport function getMenuGroupsForMode(\n structure: HeaderMenuStructure,\n mode: HeaderMenuMode,\n): HeaderMenuGroups {\n const activeRoot = getToggleRootForMode(structure, mode);\n\n if (!activeRoot) {\n return {\n primaryItems: structure.sharedItems,\n sharedItems: [],\n };\n }\n\n return {\n primaryItems: activeRoot?.children ?? [],\n sharedItems: structure.sharedItems,\n };\n}\n\n/**\n * Returns grouped visible items directly from raw menu items.\n */\nexport function getVisibleMenuGroupsForMode(\n menuItems: MenuItem[],\n mode: HeaderMenuMode,\n): HeaderMenuGroups {\n const structure = extractToggleableMenuStructure(menuItems);\n return getMenuGroupsForMode(structure, mode);\n}\n\n/**\n * Builds a flat list of visible menu items for the selected mode.\n *\n * Useful for render paths that do not need grouped rendering.\n */\nexport function buildMenuItemsForMode(\n structure: HeaderMenuStructure,\n mode: HeaderMenuMode,\n): MenuItem[] {\n const groups = getMenuGroupsForMode(structure, mode);\n\n return [\n ...groups.primaryItems,\n ...groups.sharedItems,\n ];\n}"]}
@@ -0,0 +1,63 @@
1
+ const STORAGE_KEY = 'pn-marketweb-header:menu-mode';
2
+ /**
3
+ * Returns the previously selected menu mode from localStorage.
4
+ *
5
+ * Returns null if:
6
+ * - nothing is stored
7
+ * - value is invalid
8
+ * - storage is unavailable
9
+ */
10
+ export function getStoredHeaderMenuMode() {
11
+ if (typeof window === 'undefined') {
12
+ return null;
13
+ }
14
+ try {
15
+ const value = window.localStorage.getItem(STORAGE_KEY);
16
+ if (value == null) {
17
+ return null;
18
+ }
19
+ const parsed = Number(value);
20
+ if (Number.isInteger(parsed) && parsed >= 0) {
21
+ return parsed;
22
+ }
23
+ }
24
+ catch {
25
+ // intentionally ignored
26
+ }
27
+ return null;
28
+ }
29
+ /**
30
+ * Persists the selected menu mode in localStorage.
31
+ *
32
+ * Storage failures are intentionally ignored.
33
+ */
34
+ export function storeHeaderMenuMode(mode) {
35
+ if (typeof window === 'undefined') {
36
+ return;
37
+ }
38
+ try {
39
+ window.localStorage.setItem(STORAGE_KEY, String(mode));
40
+ }
41
+ catch {
42
+ // intentionally ignored
43
+ }
44
+ }
45
+ /**
46
+ * Resolves the effective initial menu mode.
47
+ *
48
+ * Priority:
49
+ * 1. Stored user preference
50
+ * 2. Server-provided initial mode
51
+ * 3. Fallback to first mode (index 0)
52
+ */
53
+ export function resolveInitialHeaderMenuMode(hasMenuSwitching, initialActiveMenuMode) {
54
+ if (!hasMenuSwitching) {
55
+ return 0;
56
+ }
57
+ const storedMode = getStoredHeaderMenuMode();
58
+ if (typeof storedMode === 'number') {
59
+ return storedMode;
60
+ }
61
+ return initialActiveMenuMode ?? 0;
62
+ }
63
+ //# sourceMappingURL=header-toggle-menu.storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header-toggle-menu.storage.js","sourceRoot":"","sources":["../../../../../src/components/layout-components/pn-marketweb-header/utils/header-toggle-menu.storage.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,GAAG,+BAA+B,CAAC;AAEpD;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB;IACnC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAEvD,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;YAC1C,OAAO,MAAM,CAAC;QAClB,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACL,wBAAwB;IAC5B,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAoB;IACpD,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAChC,OAAO;IACX,CAAC;IAED,IAAI,CAAC;QACD,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACL,wBAAwB;IAC5B,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,4BAA4B,CACxC,gBAAyB,EACzB,qBAA6C;IAE7C,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACpB,OAAO,CAAC,CAAC;IACb,CAAC;IAED,MAAM,UAAU,GAAG,uBAAuB,EAAE,CAAC;IAC7C,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,OAAO,qBAAqB,IAAI,CAAC,CAAC;AACtC,CAAC","sourcesContent":["import type { HeaderMenuMode } from '../types/pn-marketweb-header.types';\n\nconst STORAGE_KEY = 'pn-marketweb-header:menu-mode';\n\n/**\n * Returns the previously selected menu mode from localStorage.\n *\n * Returns null if:\n * - nothing is stored\n * - value is invalid\n * - storage is unavailable\n */\nexport function getStoredHeaderMenuMode(): HeaderMenuMode | null {\n if (typeof window === 'undefined') {\n return null;\n }\n\n try {\n const value = window.localStorage.getItem(STORAGE_KEY);\n\n if (value == null) {\n return null;\n }\n\n const parsed = Number(value);\n if (Number.isInteger(parsed) && parsed >= 0) {\n return parsed;\n }\n } catch {\n // intentionally ignored\n }\n\n return null;\n}\n\n/**\n * Persists the selected menu mode in localStorage.\n *\n * Storage failures are intentionally ignored.\n */\nexport function storeHeaderMenuMode(mode: HeaderMenuMode): void {\n if (typeof window === 'undefined') {\n return;\n }\n\n try {\n window.localStorage.setItem(STORAGE_KEY, String(mode));\n } catch {\n // intentionally ignored\n }\n}\n\n/**\n * Resolves the effective initial menu mode.\n *\n * Priority:\n * 1. Stored user preference\n * 2. Server-provided initial mode\n * 3. Fallback to first mode (index 0)\n */\nexport function resolveInitialHeaderMenuMode(\n hasMenuSwitching: boolean,\n initialActiveMenuMode?: HeaderMenuMode | null,\n): HeaderMenuMode {\n if (!hasMenuSwitching) {\n return 0;\n }\n\n const storedMode = getStoredHeaderMenuMode();\n if (typeof storedMode === 'number') {\n return storedMode;\n }\n\n return initialActiveMenuMode ?? 0;\n}"]}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Removes duplicated language segments from generated URLs.
3
+ *
4
+ * Example:
5
+ * /sv/sv/page -> /sv/page
6
+ *
7
+ * This protects against incorrectly concatenated site-domain-based URLs.
8
+ */
9
+ export function removeDoubleLanguage(url, language) {
10
+ if (!language) {
11
+ return url;
12
+ }
13
+ const languageSegment = language.toLowerCase() + '/';
14
+ const doubleLanguageSegment = '/' + languageSegment + languageSegment;
15
+ if (url.includes(doubleLanguageSegment)) {
16
+ return url.replace(doubleLanguageSegment, '/' + languageSegment);
17
+ }
18
+ return url;
19
+ }
20
+ /**
21
+ * Resolves a menu/login href to an absolute site-relative URL when needed.
22
+ *
23
+ * What it does:
24
+ * - Leaves fully-qualified http/https URLs unchanged
25
+ * - Prefixes relative URLs with the current site definition domain
26
+ * - Cleans up accidental double language segments
27
+ */
28
+ export function adjustHref(href, siteDefinition, language) {
29
+ if (!href) {
30
+ return href;
31
+ }
32
+ if (href.indexOf('http') === 0) {
33
+ return href;
34
+ }
35
+ const siteUrl = siteDefinition?.url ?? '';
36
+ const domainUrl = siteUrl.lastIndexOf('/') === siteUrl.length - 1
37
+ ? siteUrl.substring(0, siteUrl.length - 1)
38
+ : siteUrl;
39
+ return removeDoubleLanguage(domainUrl + href, language);
40
+ }
41
+ /**
42
+ * Recursively adjusts a menu item and all child menu items so that
43
+ * relative URLs become site-domain-aware absolute URLs.
44
+ *
45
+ * This returns a new object rather than mutating the original API item.
46
+ */
47
+ export function adjustMenuItemUrls(item, siteDefinition, language) {
48
+ return {
49
+ ...item,
50
+ href: adjustHref(item.href, siteDefinition, language),
51
+ children: (item.children ?? []).map(child => adjustMenuItemUrls(child, siteDefinition, language)),
52
+ };
53
+ }
54
+ /**
55
+ * Adjusts login dialog links so that relative URLs are resolved against
56
+ * the active site domain.
57
+ *
58
+ * This is used when siteDomainInUrls is enabled.
59
+ */
60
+ export function adjustLoginDialogUrls(loginDialog, siteDefinition, language) {
61
+ if (!loginDialog) {
62
+ return null;
63
+ }
64
+ return {
65
+ ...loginDialog,
66
+ loggedInLinks: (loginDialog.loggedInLinks ?? []).map(item => ({
67
+ ...item,
68
+ href: adjustHref(item.href, siteDefinition, language),
69
+ })),
70
+ loginMenuLinks: (loginDialog.loginMenuLinks ?? []).map(item => ({
71
+ ...item,
72
+ href: adjustHref(item.href, siteDefinition, language),
73
+ })),
74
+ };
75
+ }
76
+ /**
77
+ * Navigates to the provided href when available.
78
+ */
79
+ export function navigateToHref(href) {
80
+ if (!href) {
81
+ return;
82
+ }
83
+ window.location.href = href;
84
+ }
85
+ /**
86
+ * Navigates to a menu item's href when available.
87
+ */
88
+ export function navigateToMenuItem(item) {
89
+ navigateToHref(item?.href);
90
+ }
91
+ //# sourceMappingURL=header-url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header-url.js","sourceRoot":"","sources":["../../../../../src/components/layout-components/pn-marketweb-header/utils/header-url.ts"],"names":[],"mappings":"AAMA;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAW,EAAE,QAAgB;IAC9D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,OAAO,GAAG,CAAC;IACf,CAAC;IAED,MAAM,eAAe,GAAG,QAAQ,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC;IACrD,MAAM,qBAAqB,GAAG,GAAG,GAAG,eAAe,GAAG,eAAe,CAAC;IAEtE,IAAI,GAAG,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;QACtC,OAAO,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,GAAG,GAAG,eAAe,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,GAAG,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,cAAkC,EAAE,QAAgB;IACzF,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,OAAO,GAAG,cAAc,EAAE,GAAG,IAAI,EAAE,CAAC;IAC1C,MAAM,SAAS,GACX,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC;QAC3C,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QAC1C,CAAC,CAAC,OAAO,CAAC;IAElB,OAAO,oBAAoB,CAAC,SAAS,GAAG,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC5D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAC9B,IAAc,EACd,cAAkC,EAClC,QAAgB;IAEhB,OAAO;QACH,GAAG,IAAI;QACP,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,QAAQ,CAAC;QACrD,QAAQ,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;KACpG,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CACjC,WAA+B,EAC/B,cAAkC,EAClC,QAAgB;IAEhB,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO;QACH,GAAG,WAAW;QACd,aAAa,EAAE,CAAC,WAAW,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC1D,GAAG,IAAI;YACP,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,QAAQ,CAAC;SACxD,CAAC,CAAC;QACH,cAAc,EAAE,CAAC,WAAW,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5D,GAAG,IAAI;YACP,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,QAAQ,CAAC;SACxD,CAAC,CAAC;KACN,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,IAAoB;IAC/C,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,OAAO;IACX,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAqB;IACpD,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC/B,CAAC","sourcesContent":["import {\n LoginDialog,\n MenuItem,\n MenuSiteDefinition,\n} from '../../pn-marketweb-siteheader/pn-marketweb-siteheader-types';\n\n/**\n * Removes duplicated language segments from generated URLs.\n *\n * Example:\n * /sv/sv/page -> /sv/page\n *\n * This protects against incorrectly concatenated site-domain-based URLs.\n */\nexport function removeDoubleLanguage(url: string, language: string): string {\n if (!language) {\n return url;\n }\n\n const languageSegment = language.toLowerCase() + '/';\n const doubleLanguageSegment = '/' + languageSegment + languageSegment;\n\n if (url.includes(doubleLanguageSegment)) {\n return url.replace(doubleLanguageSegment, '/' + languageSegment);\n }\n\n return url;\n}\n\n/**\n * Resolves a menu/login href to an absolute site-relative URL when needed.\n *\n * What it does:\n * - Leaves fully-qualified http/https URLs unchanged\n * - Prefixes relative URLs with the current site definition domain\n * - Cleans up accidental double language segments\n */\nexport function adjustHref(href: string, siteDefinition: MenuSiteDefinition, language: string): string {\n if (!href) {\n return href;\n }\n\n if (href.indexOf('http') === 0) {\n return href;\n }\n\n const siteUrl = siteDefinition?.url ?? '';\n const domainUrl =\n siteUrl.lastIndexOf('/') === siteUrl.length - 1\n ? siteUrl.substring(0, siteUrl.length - 1)\n : siteUrl;\n\n return removeDoubleLanguage(domainUrl + href, language);\n}\n\n/**\n * Recursively adjusts a menu item and all child menu items so that\n * relative URLs become site-domain-aware absolute URLs.\n *\n * This returns a new object rather than mutating the original API item.\n */\nexport function adjustMenuItemUrls(\n item: MenuItem,\n siteDefinition: MenuSiteDefinition,\n language: string,\n): MenuItem {\n return {\n ...item,\n href: adjustHref(item.href, siteDefinition, language),\n children: (item.children ?? []).map(child => adjustMenuItemUrls(child, siteDefinition, language)),\n };\n}\n\n/**\n * Adjusts login dialog links so that relative URLs are resolved against\n * the active site domain.\n *\n * This is used when siteDomainInUrls is enabled.\n */\nexport function adjustLoginDialogUrls(\n loginDialog: LoginDialog | null,\n siteDefinition: MenuSiteDefinition,\n language: string,\n): LoginDialog | null {\n if (!loginDialog) {\n return null;\n }\n\n return {\n ...loginDialog,\n loggedInLinks: (loginDialog.loggedInLinks ?? []).map(item => ({\n ...item,\n href: adjustHref(item.href, siteDefinition, language),\n })),\n loginMenuLinks: (loginDialog.loginMenuLinks ?? []).map(item => ({\n ...item,\n href: adjustHref(item.href, siteDefinition, language),\n })),\n };\n}\n\n/**\n * Navigates to the provided href when available.\n */\nexport function navigateToHref(href?: string | null): void {\n if (!href) {\n return;\n }\n\n window.location.href = href;\n}\n\n/**\n * Navigates to a menu item's href when available.\n */\nexport function navigateToMenuItem(item: MenuItem | null): void {\n navigateToHref(item?.href);\n}"]}
@@ -16,7 +16,7 @@ export class PnMarketwebSiteheaderLoginButton {
16
16
  return navigationUrl;
17
17
  }
18
18
  render() {
19
- return (h(Host, { key: '9851d49c77b44d630cddd1bbb32bbb9a8d79a99f' }, h("pn-button", { key: '48e7f40c6633213f5ba1ae5a56d93addc668ea75', href: this.nagivateToLoginUrl() }, this.label)));
19
+ return (h(Host, { key: '0cffb1a2af16a85f88b3a5dbe992c65c2cfda95f' }, h("pn-button", { key: 'bc5fd64d3f2d12a253cd725cbbb710466fdca6ab', href: this.nagivateToLoginUrl() }, this.label)));
20
20
  }
21
21
  static get is() { return "pn-marketweb-siteheader-login-button"; }
22
22
  static get originalStyleUrls() {
@@ -27,48 +27,70 @@ pn-button-dropdown .pn-button-dropdown > pn-button > .pn-button {
27
27
  }
28
28
  }
29
29
 
30
+ pn-marketweb-siteheader-login-linklist {
31
+ --login-linklist-heading-color: var(--siteheader-login-linklist-heading-color, inherit);
32
+ --login-linklist-link-color: var(--siteheader-login-linklist-link-color, #005d92);
33
+ --login-linklist-link-hover-color: var(--siteheader-login-linklist-link-hover-color, #0d234b);
34
+ --login-linklist-button-link-color: var(--siteheader-login-linklist-button-link-color, #ffffff);
35
+ --login-linklist-icon-color: var(--siteheader-login-linklist-icon-color, #005d92);
36
+ --login-linklist-icon-hover-color: var(--siteheader-login-linklist-icon-hover-color, #0d234b);
37
+ }
38
+
30
39
  pn-marketweb-siteheader-login-linklist {
31
40
  display: flex;
32
41
  flex-direction: column;
33
42
  }
34
- pn-marketweb-siteheader-login-linklist .pn-marketweb-siteheader-login-linklist-heading {
43
+
44
+ .pn-marketweb-siteheader-login-linklist-heading {
35
45
  font-weight: 500;
36
46
  font-size: 1.6rem;
37
47
  margin-bottom: 2.4rem;
48
+ color: var(--login-linklist-heading-color);
38
49
  }
50
+
39
51
  pn-marketweb-siteheader-login-linklist strong {
40
52
  margin-bottom: 2.4rem;
41
53
  }
54
+
42
55
  pn-marketweb-siteheader-login-linklist ul {
43
56
  list-style-type: none;
44
57
  padding: 0;
45
58
  margin: 0;
46
59
  }
60
+
47
61
  pn-marketweb-siteheader-login-linklist ul > li {
48
62
  margin-bottom: 2.4rem;
49
63
  }
50
- pn-marketweb-siteheader-login-linklist ul > li a:not(.pn-button) {
51
- color: #005d92;
64
+ pn-marketweb-siteheader-login-linklist ul > li:last-of-type {
65
+ margin-bottom: 0;
52
66
  }
67
+
53
68
  pn-marketweb-siteheader-login-linklist ul > li a {
54
69
  text-decoration: none;
55
70
  font-size: 1.6rem;
56
71
  line-height: 1.5;
57
72
  font-weight: 500;
58
73
  }
74
+ pn-marketweb-siteheader-login-linklist ul > li a:hover {
75
+ color: var(--login-linklist-button-link-color);
76
+ }
77
+
78
+ pn-marketweb-siteheader-login-linklist ul > li a:not(.pn-button) {
79
+ color: var(--login-linklist-link-color);
80
+ }
81
+
82
+ pn-marketweb-siteheader-login-linklist ul > li:hover a:not(.pn-button) {
83
+ color: var(--login-linklist-link-hover-color);
84
+ text-decoration: underline;
85
+ }
86
+
59
87
  pn-marketweb-siteheader-login-linklist ul > li pn-icon {
60
88
  padding-left: 0.8rem;
61
89
  }
62
90
  pn-marketweb-siteheader-login-linklist ul > li pn-icon svg > path {
63
- fill: #005d92 !important;
64
- }
65
- pn-marketweb-siteheader-login-linklist ul > li:hover a {
66
- color: #0d234b;
67
- text-decoration: underline;
91
+ fill: var(--login-linklist-icon-color) !important;
68
92
  }
93
+
69
94
  pn-marketweb-siteheader-login-linklist ul > li:hover pn-icon svg > path {
70
- fill: #0d234b !important;
71
- }
72
- pn-marketweb-siteheader-login-linklist ul > li:last-of-type {
73
- margin-bottom: 0;
95
+ fill: var(--login-linklist-icon-hover-color) !important;
74
96
  }
@@ -6,7 +6,7 @@ export class PnMarketwebSiteheaderLoginMypageButton {
6
6
  }
7
7
  hostElement;
8
8
  render() {
9
- return (h(Host, { key: '35dc38e3b181c223a3b5325e8ad4408b078cf9c9' }, h("pn-button", { key: 'daeeac6b7da9a0ad3424cefe30614c83f638ac66', href: this.myPageUrl }, this.label)));
9
+ return (h(Host, { key: 'c124432d15ec5bdf0aa2bbeb4354f6ecf2bce080' }, h("pn-button", { key: 'a5dd43d7ed7d03ca1cbe6ac6ff467cb75da83082', href: this.myPageUrl }, this.label)));
10
10
  }
11
11
  static get is() { return "pn-marketweb-siteheader-login-mypage-button"; }
12
12
  static get originalStyleUrls() {
@@ -27,9 +27,29 @@ pn-button-dropdown .pn-button-dropdown > pn-button > .pn-button {
27
27
  }
28
28
  }
29
29
 
30
+ pn-marketweb-siteheader-login-profileselection {
31
+ --login-profileselection-heading-color: var(--siteheader-login-profileselection-heading-color,
32
+ inherit);
33
+ --login-profileselection-description-color: var(--siteheader-login-profileselection-description-color,
34
+ #5e554a);
35
+ --login-profileselection-user-name-color: var(--siteheader-login-profileselection-user-name-color,
36
+ inherit);
37
+ --login-profileselection-divider-background: var(--siteheader-login-profileselection-divider-background,
38
+ #00a0d6);
39
+ --login-profileselection-profileoption-link-background: var(--siteheader-login-profileselection-profileoption-link-background,
40
+ #ffffff);
41
+ --login-profileselection-profileoption-link-color: var(--siteheader-login-profileselection-profileoption-link-color,
42
+ #005d92);
43
+ --login-profileselection-profileoption-link-hover-background: var(--siteheader-login-profileselection-profileoption-link-hover-background,
44
+ #f3f2f2);
45
+ --login-profileselection-logout-link-color: var(--siteheader-login-profileselection-logout-link-color,
46
+ #005d92);
47
+ }
48
+
30
49
  .pn-marketweb-siteheader-login-profileselection-heading {
31
50
  display: block;
32
51
  padding: 0.5rem 0 1rem;
52
+ color: var(--login-profileselection-heading-color);
33
53
  }
34
54
 
35
55
  .pn-marketweb-siteheader-login-profileselection-user,
@@ -41,6 +61,7 @@ pn-button-dropdown .pn-button-dropdown > pn-button > .pn-button {
41
61
  .pn-marketweb-siteheader-login-profileselection-user-name,
42
62
  .pn-marketweb-siteheader-login-profileselection-currentprofile-name {
43
63
  line-height: 1;
64
+ color: var(--login-profileselection-user-name-color);
44
65
  }
45
66
 
46
67
  .pn-marketweb-siteheader-login-profileselection-user-description,
@@ -48,15 +69,15 @@ pn-button-dropdown .pn-button-dropdown > pn-button > .pn-button {
48
69
  font-weight: 400;
49
70
  white-space: normal;
50
71
  word-break: break-all;
51
- color: #5e554a;
72
+ color: var(--login-profileselection-description-color);
52
73
  font-size: 0.75em;
53
74
  }
54
75
 
55
76
  .pn-marketweb-siteheader-login-profileselection-divider {
56
- height: 1rem;
57
- width: 100%;
58
- background: #00a0d6;
59
77
  position: relative;
78
+ width: 100%;
79
+ height: 1rem;
80
+ background: var(--login-profileselection-divider-background);
60
81
  margin-left: -1em;
61
82
  margin-top: 1.6rem;
62
83
  margin-bottom: 1.6rem;
@@ -65,28 +86,28 @@ pn-button-dropdown .pn-button-dropdown > pn-button > .pn-button {
65
86
  }
66
87
  .pn-marketweb-siteheader-login-profileselection-divider::after {
67
88
  content: "";
68
- width: 0.6em;
69
- height: 0.6em;
70
- border-radius: 50%;
71
89
  position: absolute;
72
90
  right: 0;
73
91
  top: 0;
92
+ width: 0.6em;
93
+ height: 0.6em;
94
+ border-radius: 50%;
74
95
  background: inherit;
75
96
  transform: translateX(calc(100% + 0.2em));
76
97
  }
77
98
 
78
99
  .pn-marketweb-siteheader-login-profileselection-profileoption-link {
79
100
  display: flex;
80
- background: #ffffff;
81
- transition: background 0.15s ease-in-out;
101
+ align-items: center;
82
102
  margin: 0 -1em;
83
103
  padding: 0.6rem 1.6rem;
104
+ background: var(--login-profileselection-profileoption-link-background);
105
+ color: var(--login-profileselection-profileoption-link-color);
84
106
  text-decoration: none;
85
- color: #005d92;
86
- align-items: center;
107
+ transition: background 0.15s ease-in-out;
87
108
  }
88
109
  .pn-marketweb-siteheader-login-profileselection-profileoption-link:hover, .pn-marketweb-siteheader-login-profileselection-profileoption-link:focus, .pn-marketweb-siteheader-login-profileselection-profileoption-link:active {
89
- background: #f3f2f2;
110
+ background: var(--login-profileselection-profileoption-link-hover-background);
90
111
  }
91
112
 
92
113
  .pn-marketweb-siteheader-login-profileselection-profileoption-content {
@@ -101,20 +122,20 @@ pn-button-dropdown .pn-button-dropdown > pn-button > .pn-button {
101
122
  font-weight: 400;
102
123
  white-space: normal;
103
124
  word-break: break-all;
104
- color: #5e554a;
125
+ color: var(--login-profileselection-description-color);
105
126
  font-size: 0.75em;
106
127
  }
107
128
 
108
129
  .pn-marketweb-siteheader-login-profileselection-logout {
130
+ width: 100%;
109
131
  padding: 1.6rem;
110
132
  text-align: center;
111
- width: 100%;
112
133
  }
113
134
 
114
135
  .pn-marketweb-siteheader-login-profileselection-logout-link {
115
136
  display: inline-block;
116
137
  font-weight: 500;
117
- color: #005d92;
138
+ color: var(--login-profileselection-logout-link-color);
118
139
  text-decoration: none;
119
140
  }
120
141
  .pn-marketweb-siteheader-login-profileselection-logout-link:hover, .pn-marketweb-siteheader-login-profileselection-logout-link:focus, .pn-marketweb-siteheader-login-profileselection-logout-link:active {
@@ -28,10 +28,23 @@ pn-button-dropdown .pn-button-dropdown > pn-button > .pn-button {
28
28
  }
29
29
 
30
30
  pn-marketweb-siteheader-login {
31
+ --login-dropdown-divider-background: var(--siteheader-login-dropdown-divider-background,
32
+ #f9f8f8);
33
+ --login-dropdown-text-color: var(--siteheader-login-dropdown-text-color,
34
+ #2d2013);
35
+ --login-dropdown-link-color: var(--siteheader-login-dropdown-link-color,
36
+ #005d92);
37
+ --login-dropdown-link-hover-decoration: var(--siteheader-login-dropdown-link-hover-decoration,
38
+ underline);
39
+ --login-dark-icon-hover-fill: var(--siteheader-login-dark-icon-hover-fill,
40
+ #000000);
31
41
  padding: 1rem 0;
32
42
  max-height: 5.2rem;
33
43
  position: relative;
34
44
  }
45
+ pn-marketweb-siteheader-login pn-button-dropdown {
46
+ display: none;
47
+ }
35
48
  pn-marketweb-siteheader-login pn-button-dropdown .pn-button-dropdown-container .pn-button-dropdown-content {
36
49
  max-width: 350px;
37
50
  display: flex;
@@ -45,36 +58,37 @@ pn-marketweb-siteheader-login pn-button-dropdown .pn-button-dropdown-container .
45
58
  pn-marketweb-siteheader-login pn-button-dropdown .pn-button-dropdown-container .pn-button-dropdown-content pn-marketweb-siteheader-unified-login::after {
46
59
  display: block;
47
60
  content: "";
48
- height: 2px;
49
- background: #f9f8f8;
50
61
  width: 100%;
62
+ height: 2px;
51
63
  margin-top: 2.4rem;
64
+ background: var(--login-dropdown-divider-background);
65
+ }
66
+ pn-marketweb-siteheader-login pn-button-dropdown .pn-button-dropdown-container .pn-button-dropdown-content span {
67
+ font-size: 1.4rem;
68
+ color: var(--login-dropdown-text-color);
52
69
  }
53
70
  pn-marketweb-siteheader-login pn-button-dropdown .pn-button-dropdown-container .pn-button-dropdown-content span::before {
54
71
  display: block;
55
72
  content: "";
56
- height: 2px;
57
- background: #f9f8f8;
58
73
  width: 100%;
74
+ height: 2px;
59
75
  margin-bottom: 2.4rem;
60
- }
61
- pn-marketweb-siteheader-login pn-button-dropdown .pn-button-dropdown-container .pn-button-dropdown-content span {
62
- font-size: 1.4rem;
63
- color: #2d2013;
76
+ background: var(--login-dropdown-divider-background);
64
77
  }
65
78
  pn-marketweb-siteheader-login pn-button-dropdown .pn-button-dropdown-container .pn-button-dropdown-content span a {
66
79
  text-decoration: none;
67
- color: #005d92;
80
+ color: var(--login-dropdown-link-color);
68
81
  }
69
82
  pn-marketweb-siteheader-login pn-button-dropdown .pn-button-dropdown-container .pn-button-dropdown-content span a:hover {
70
- text-decoration: underline;
83
+ text-decoration: var(--login-dropdown-link-hover-decoration);
71
84
  }
72
85
  pn-marketweb-siteheader-login pn-button-dropdown .pn-button-dropdown-container .pn-button-dropdown-content span * {
73
86
  margin-bottom: 0;
74
87
  }
75
- pn-marketweb-siteheader-login pn-button-dropdown {
76
- display: none;
77
- }
78
88
  pn-marketweb-siteheader-login.hydrated pn-button-dropdown {
79
89
  display: block;
90
+ }
91
+
92
+ pn-marketweb-siteheader-login[appearance=dark] button:hover pn-icon svg path {
93
+ fill: var(--login-dark-icon-hover-fill);
80
94
  }
@@ -1,7 +1,7 @@
1
- import { h, Host } from "@stencil/core";
2
- import { MarketWebLoginManager } from "../../../globals/MarketWebLoginManager";
3
- import { state as headerState } from "./pn-marketweb-siteheader-store";
4
1
  import { user } from "pn-design-assets/pn-assets/icons.js";
2
+ import { h, Host, } from "@stencil/core";
3
+ import { MarketWebLoginManager, } from "../../../globals/MarketWebLoginManager";
4
+ import { state as headerState } from "./pn-marketweb-siteheader-store";
5
5
  export class PnMarketwebSiteheaderLogin {
6
6
  constructor() {
7
7
  this.endpoint = '';
@@ -27,6 +27,7 @@ export class PnMarketwebSiteheaderLogin {
27
27
  this.showUnifiedLogin = false;
28
28
  this.checkUserLoggedInStateInterval = 0;
29
29
  this.environment = undefined;
30
+ this.appearance = 'light';
30
31
  this.loginLinks = undefined;
31
32
  this.toggleButtonText = this.loginDialog?.loginMenuLinkText ? this.loginDialog.loginMenuLinkText : '';
32
33
  this.username = this.fullname;
@@ -155,7 +156,7 @@ export class PnMarketwebSiteheaderLogin {
155
156
  hostElementAttribute.username = this.username;
156
157
  hostElementAttribute.loggedin = this.loggedin + '';
157
158
  }
158
- return (h(Host, { ...hostElementAttribute }, h("pn-button-dropdown", { label: this.toggleButtonText, icon: user, appearance: "light", variant: "borderless", class: "siteheader-logindialog" }, this.showUnifiedLogin && !this.loggedin && (h("pn-marketweb-siteheader-unified-login", { loggedIn: this.loggedin, logInLabel: this.i18n.unifiedLoginButton, useMarketwebLogin: this.useMarketwebLogin, environment: this.environment })), this.loggedin && this.showProfileSelection ? (h("pn-marketweb-siteheader-login-profileselection", { loginDialog: this.loginDialog, loggedin: this.loggedin, i18n: this.i18n, idNamespace: this.emitEvents ? '1' : '2', endpoint: this.endpoint })) : (h("pn-marketweb-siteheader-login-links", { loginDialog: this.loginDialog, loggedin: this.loggedin, idNamespace: this.emitEvents ? '1' : '2', username: this.username, showUnifiedLogin: this.showUnifiedLogin })), !this.loggedin && this.loginDialog?.loginInfo && (h("span", { innerHTML: `${this.loginDialog.loginInfo}` })))));
159
+ return (h(Host, { ...hostElementAttribute }, h("pn-button-dropdown", { label: this.toggleButtonText, icon: user, appearance: this.appearance, variant: "borderless", class: "siteheader-logindialog" }, this.showUnifiedLogin && !this.loggedin && (h("pn-marketweb-siteheader-unified-login", { loggedIn: this.loggedin, logInLabel: this.i18n.unifiedLoginButton, useMarketwebLogin: this.useMarketwebLogin, environment: this.environment })), this.loggedin && this.showProfileSelection ? (h("pn-marketweb-siteheader-login-profileselection", { loginDialog: this.loginDialog, loggedin: this.loggedin, i18n: this.i18n, idNamespace: this.emitEvents ? '1' : '2', endpoint: this.endpoint })) : (h("pn-marketweb-siteheader-login-links", { loginDialog: this.loginDialog, loggedin: this.loggedin, idNamespace: this.emitEvents ? '1' : '2', username: this.username, showUnifiedLogin: this.showUnifiedLogin })), !this.loggedin && this.loginDialog?.loginInfo && (h("span", { innerHTML: `${this.loginDialog.loginInfo}` })))));
159
160
  }
160
161
  static get is() { return "pn-marketweb-siteheader-login"; }
161
162
  static get originalStyleUrls() {
@@ -393,6 +394,30 @@ export class PnMarketwebSiteheaderLogin {
393
394
  "attribute": "environment",
394
395
  "reflect": false
395
396
  },
397
+ "appearance": {
398
+ "type": "string",
399
+ "mutable": true,
400
+ "complexType": {
401
+ "original": "HeaderAppearance",
402
+ "resolved": "\"dark\" | \"light\"",
403
+ "references": {
404
+ "HeaderAppearance": {
405
+ "location": "import",
406
+ "path": "../pn-marketweb-header/utils/header-theme",
407
+ "id": "src/components/layout-components/pn-marketweb-header/utils/header-theme.ts::HeaderAppearance"
408
+ }
409
+ }
410
+ },
411
+ "required": false,
412
+ "optional": true,
413
+ "docs": {
414
+ "tags": [],
415
+ "text": ""
416
+ },
417
+ "attribute": "appearance",
418
+ "reflect": true,
419
+ "defaultValue": "'light'"
420
+ },
396
421
  "useMarketwebLogin": {
397
422
  "type": "boolean",
398
423
  "mutable": false,