@swisspost/design-system-components 10.0.0-next.54 → 10.0.0-next.56

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 (409) hide show
  1. package/dist/{components/react/p-CJ80BZ06.js → cjs/breakpoints-Df03Ct7n.js} +103 -5
  2. package/dist/cjs/debounce-BsIBi_-2.js +13 -0
  3. package/dist/cjs/environment-BQE9Unf_.js +52 -0
  4. package/dist/cjs/{event-from-CLvtSUKf.js → event-from-CwMw19f8.js} +2 -2
  5. package/dist/cjs/fade-CPQhl1fP.js +26 -0
  6. package/dist/cjs/fade-slide-dPhQa-I1.js +38 -0
  7. package/dist/cjs/{get-focusable-children-Bx63XUQg.js → get-focusable-children-ChETM1wK.js} +29 -21
  8. package/dist/cjs/{get-root-CyMf3Vsd.js → get-root-CUAv4k4C.js} +2 -2
  9. package/dist/cjs/{index-Cb8CTrOz.js → index-CKNxhb0S.js} +29 -13
  10. package/dist/cjs/loader.cjs.js +2 -2
  11. package/dist/cjs/{package-CvZxvdTJ.js → package-CY7IOoiw.js} +1 -1
  12. package/dist/cjs/post-accordion_2.cjs.entry.js +12 -12
  13. package/dist/cjs/post-avatar.cjs.entry.js +11 -11
  14. package/dist/cjs/post-back-to-top.cjs.entry.js +16 -40
  15. package/dist/cjs/post-banner.cjs.entry.js +11 -10
  16. package/dist/cjs/post-breadcrumb-item_2.cjs.entry.js +7 -7
  17. package/dist/cjs/post-breadcrumbs.cjs.entry.js +22 -31
  18. package/dist/cjs/post-card-control.cjs.entry.js +16 -16
  19. package/dist/cjs/{post-closebutton_15.cjs.entry.js → post-closebutton_13.cjs.entry.js} +537 -507
  20. package/dist/cjs/post-collapsible_2.cjs.entry.js +39 -38
  21. package/dist/cjs/post-components.cjs.js +2 -2
  22. package/dist/cjs/post-env-test.cjs.entry.js +15 -0
  23. package/dist/cjs/post-footer.cjs.entry.js +21 -19
  24. package/dist/cjs/post-linkarea.cjs.entry.js +3 -3
  25. package/dist/cjs/post-pagination.cjs.entry.js +589 -0
  26. package/dist/cjs/post-popover-trigger.cjs.entry.js +46 -30
  27. package/dist/cjs/post-popover.cjs.entry.js +12 -12
  28. package/dist/cjs/post-rating.cjs.entry.js +13 -13
  29. package/dist/cjs/post-stepper-item.cjs.entry.js +18 -0
  30. package/dist/cjs/post-stepper.cjs.entry.js +109 -0
  31. package/dist/cjs/post-tab-item.cjs.entry.js +49 -0
  32. package/dist/cjs/post-tab-panel.cjs.entry.js +9 -9
  33. package/dist/cjs/post-tabs.cjs.entry.js +191 -38
  34. package/dist/cjs/post-tooltip-trigger.cjs.entry.js +8 -8
  35. package/dist/cjs/post-tooltip.cjs.entry.js +7 -7
  36. package/dist/cjs/utils-s05L2ulk.js +26 -0
  37. package/dist/collection/animations/collapse.js +3 -3
  38. package/dist/collection/animations/fade-slide.js +33 -0
  39. package/dist/collection/animations/fade.js +19 -7
  40. package/dist/collection/animations/index.js +2 -0
  41. package/dist/collection/animations/slide.js +25 -21
  42. package/dist/collection/animations/types.js +14 -0
  43. package/dist/collection/animations/utils.js +8 -0
  44. package/dist/collection/collection-manifest.json +8 -6
  45. package/dist/collection/components/post-accordion/post-accordion.css +1 -1
  46. package/dist/collection/components/post-accordion/post-accordion.js +2 -2
  47. package/dist/collection/components/post-accordion-item/post-accordion-item.css +1 -1
  48. package/dist/collection/components/post-accordion-item/post-accordion-item.js +4 -4
  49. package/dist/collection/components/post-avatar/post-avatar.css +1 -1
  50. package/dist/collection/components/post-avatar/post-avatar.js +1 -1
  51. package/dist/collection/components/post-back-to-top/post-back-to-top.js +14 -14
  52. package/dist/collection/components/post-banner/post-banner.css +4 -1
  53. package/dist/collection/components/post-banner/post-banner.js +3 -3
  54. package/dist/collection/components/post-breadcrumb-item/post-breadcrumb-item.js +1 -1
  55. package/dist/collection/components/post-breadcrumbs/post-breadcrumbs.js +28 -28
  56. package/dist/collection/components/post-card-control/post-card-control.js +3 -3
  57. package/dist/collection/components/post-closebutton/post-closebutton.css +1 -1
  58. package/dist/collection/components/post-closebutton/post-closebutton.js +1 -1
  59. package/dist/collection/components/post-collapsible/post-collapsible.js +27 -27
  60. package/dist/collection/components/post-collapsible-trigger/post-collapsible-trigger.js +6 -5
  61. package/dist/collection/components/post-footer/post-footer.css +1 -1
  62. package/dist/collection/components/post-footer/post-footer.js +18 -16
  63. package/dist/collection/components/post-header/post-header.css +1 -1
  64. package/dist/collection/components/post-header/post-header.js +186 -105
  65. package/dist/collection/components/post-icon/post-icon.js +6 -4
  66. package/dist/collection/components/post-language-menu/post-language-menu.css +1 -0
  67. package/dist/collection/components/{post-language-switch/post-language-switch.js → post-language-menu/post-language-menu.js} +25 -25
  68. package/dist/collection/components/post-language-menu-item/post-language-menu-item.css +1 -0
  69. package/dist/collection/components/{post-language-option/post-language-option.js → post-language-menu-item/post-language-menu-item.js} +14 -14
  70. package/dist/collection/components/post-linkarea/post-linkarea.js +1 -1
  71. package/dist/collection/components/post-logo/post-logo.css +3 -1
  72. package/dist/collection/components/post-logo/post-logo.js +1 -1
  73. package/dist/collection/components/post-mainnavigation/post-mainnavigation.css +1 -1
  74. package/dist/collection/components/post-mainnavigation/post-mainnavigation.js +41 -29
  75. package/dist/collection/components/post-megadropdown/post-megadropdown.css +1 -1
  76. package/dist/collection/components/post-megadropdown/post-megadropdown.js +184 -75
  77. package/dist/collection/components/post-megadropdown-trigger/post-megadropdown-trigger.css +3 -1
  78. package/dist/collection/components/post-megadropdown-trigger/post-megadropdown-trigger.js +80 -74
  79. package/dist/collection/components/post-menu/post-menu.css +1 -1
  80. package/dist/collection/components/post-menu/post-menu.js +35 -35
  81. package/dist/collection/components/post-menu-item/post-menu-item.js +1 -1
  82. package/dist/collection/components/post-menu-trigger/post-menu-trigger.js +1 -1
  83. package/dist/collection/components/post-pagination/post-pagination.css +1 -0
  84. package/dist/collection/components/post-pagination/post-pagination.js +838 -0
  85. package/dist/collection/components/post-popover/post-popover.css +1 -1
  86. package/dist/collection/components/post-popover/post-popover.js +10 -10
  87. package/dist/collection/components/post-popover-trigger/post-popover-trigger.js +43 -27
  88. package/dist/collection/components/post-popovercontainer/post-popovercontainer.css +1 -1
  89. package/dist/collection/components/post-popovercontainer/post-popovercontainer.js +45 -92
  90. package/dist/collection/components/post-rating/post-rating.js +3 -3
  91. package/dist/collection/components/post-stepper/post-stepper.css +1 -0
  92. package/dist/collection/components/post-stepper/post-stepper.js +207 -0
  93. package/dist/collection/components/post-stepper-item/post-stepper-item.css +7 -0
  94. package/dist/collection/components/post-stepper-item/post-stepper-item.js +18 -0
  95. package/dist/collection/components/post-tab-item/post-tab-item.css +1 -0
  96. package/dist/collection/components/post-tab-item/post-tab-item.js +86 -0
  97. package/dist/collection/components/post-tab-panel/post-tab-panel.js +9 -9
  98. package/dist/collection/components/post-tabs/post-tabs.js +230 -57
  99. package/dist/collection/components/post-togglebutton/post-togglebutton.js +1 -1
  100. package/dist/collection/components/post-tooltip/post-tooltip.css +1 -1
  101. package/dist/collection/components/post-tooltip/post-tooltip.js +1 -1
  102. package/dist/collection/components/post-tooltip-trigger/post-tooltip-trigger.js +1 -1
  103. package/dist/collection/utils/environment.js +47 -2
  104. package/dist/collection/utils/event-from.js +2 -2
  105. package/dist/collection/utils/get-focusable-children.js +29 -21
  106. package/dist/collection/utils/is-motion-reduced.js +1 -1
  107. package/dist/collection/utils/tests/environment/hydrate-app-helper.js +16 -0
  108. package/dist/collection/utils/tests/environment/post-env-test.js +9 -0
  109. package/dist/component-names.json +6 -5
  110. package/dist/components/breakpoints.js +90 -3
  111. package/dist/components/debounce.js +11 -0
  112. package/dist/components/environment.js +49 -0
  113. package/dist/components/event-from.js +2 -2
  114. package/dist/components/fade-slide.js +36 -0
  115. package/dist/components/fade.js +21 -8
  116. package/dist/components/get-focusable-children.js +29 -21
  117. package/dist/components/get-root.js +1 -1
  118. package/dist/components/index.d.ts +14 -10
  119. package/dist/components/index.js +7 -5
  120. package/dist/components/package.js +1 -1
  121. package/dist/components/post-accordion-item2.js +4 -5
  122. package/dist/components/post-accordion2.js +4 -5
  123. package/dist/components/post-avatar.js +3 -4
  124. package/dist/components/post-back-to-top.js +14 -40
  125. package/dist/components/post-banner.js +5 -6
  126. package/dist/components/post-breadcrumb-item2.js +2 -3
  127. package/dist/components/post-breadcrumbs.js +24 -34
  128. package/dist/components/post-card-control.js +4 -5
  129. package/dist/components/post-closebutton2.js +3 -4
  130. package/dist/components/post-collapsible-trigger2.js +10 -10
  131. package/dist/components/post-collapsible2.js +25 -25
  132. package/dist/components/{post-list.d.ts → post-env-test.d.ts} +4 -4
  133. package/dist/components/post-env-test.js +31 -0
  134. package/dist/components/post-footer.js +17 -16
  135. package/dist/components/post-header.js +156 -119
  136. package/dist/components/post-icon2.js +8 -6
  137. package/dist/components/post-language-menu-item.d.ts +11 -0
  138. package/dist/components/post-language-menu-item.js +98 -0
  139. package/dist/components/{post-language-switch.d.ts → post-language-menu.d.ts} +4 -4
  140. package/dist/components/post-language-menu.js +156 -0
  141. package/dist/components/post-linkarea.js +1 -1
  142. package/dist/components/post-logo.js +3 -4
  143. package/dist/components/post-mainnavigation.js +21 -32
  144. package/dist/components/post-megadropdown-trigger.js +72 -79
  145. package/dist/components/post-megadropdown.js +183 -78
  146. package/dist/components/post-menu-item2.js +1 -1
  147. package/dist/components/post-menu-trigger2.js +2 -3
  148. package/dist/components/post-menu2.js +35 -36
  149. package/dist/components/post-pagination.d.ts +11 -0
  150. package/dist/components/post-pagination.js +635 -0
  151. package/dist/components/post-popover-trigger.js +41 -26
  152. package/dist/components/post-popover.js +9 -10
  153. package/dist/components/post-popovercontainer2.js +44 -40
  154. package/dist/components/post-rating.js +3 -4
  155. package/dist/components/post-stepper-item.d.ts +11 -0
  156. package/dist/components/post-stepper-item.js +33 -0
  157. package/dist/components/{post-list-item.d.ts → post-stepper.d.ts} +4 -4
  158. package/dist/components/post-stepper.js +136 -0
  159. package/dist/components/{post-tab-header.d.ts → post-tab-item.d.ts} +4 -4
  160. package/dist/components/post-tab-item.js +70 -0
  161. package/dist/components/post-tab-panel.js +8 -9
  162. package/dist/components/post-tabs.js +192 -37
  163. package/dist/components/post-togglebutton.js +1 -51
  164. package/dist/components/post-togglebutton2.js +53 -0
  165. package/dist/components/post-tooltip-trigger.js +3 -3
  166. package/dist/components/post-tooltip.js +3 -4
  167. package/dist/components/react/index.js +1 -1
  168. package/dist/{cjs/breakpoints-CEkeixld.js → components/react/p-B8YiQ3mz.js} +89 -6
  169. package/dist/components/react/{p-2U_BGLjc.js → p-BOLlAY91.js} +9 -7
  170. package/dist/components/react/p-BVCjnh6Q.js +36 -0
  171. package/dist/components/react/{p-CBFgkSgY.js → p-BVGcVycs.js} +1 -1
  172. package/dist/components/react/{p-D4NSCxrX.js → p-BYCGzO-t.js} +13 -13
  173. package/dist/components/react/p-C9hMpmsD.js +11 -0
  174. package/dist/components/react/{p-BVXiQdHq.js → p-CJ13r5fi.js} +29 -21
  175. package/dist/components/react/{p-nSFSgY-P.js → p-CnZWXrbA.js} +40 -41
  176. package/dist/components/react/p-CoDiS_Ik.js +24 -0
  177. package/dist/components/react/p-CyniMNY-.js +54 -0
  178. package/dist/components/react/p-D5knoiyy.js +24 -0
  179. package/dist/components/react/{p-Ccgu_WOx.js → p-DBO6FfHt.js} +4 -5
  180. package/dist/components/react/{p-BfLuYwf7.js → p-DRfa3MOV.js} +26 -26
  181. package/dist/components/react/{p-BUxAs8N5.js → p-DYImHx0e.js} +4 -5
  182. package/dist/components/react/p-DZ5m2Ttg.js +3 -0
  183. package/dist/components/react/p-FxUVQ4Tx.js +49 -0
  184. package/dist/components/react/{p-BK474oMI.js → p-L36-yvgK.js} +2 -2
  185. package/dist/components/react/{p-DVxZMuPW.js → p-NCAcc7ZZ.js} +6 -7
  186. package/dist/components/react/{p-mENtrn2l.js → p-QNPIvxLq.js} +45 -41
  187. package/dist/components/react/{p-D3CFjhAf.js → p-_pLhqTys.js} +5 -6
  188. package/dist/components/react/p-c6yNOQwn.js +113 -0
  189. package/dist/components/react/{p-CzIKqBrS.js → p-rEfV4v4a.js} +2 -2
  190. package/dist/components/react/post-accordion-item.js +1 -1
  191. package/dist/components/react/post-accordion.js +1 -1
  192. package/dist/components/react/post-avatar.js +4 -5
  193. package/dist/components/react/post-back-to-top.js +16 -42
  194. package/dist/components/react/post-banner.js +7 -8
  195. package/dist/components/react/post-breadcrumb-item.js +1 -1
  196. package/dist/components/react/post-breadcrumbs.js +31 -41
  197. package/dist/components/react/post-card-control.js +6 -7
  198. package/dist/components/react/post-closebutton.js +1 -1
  199. package/dist/components/react/post-collapsible-trigger.js +1 -1
  200. package/dist/components/react/post-collapsible.js +1 -1
  201. package/dist/components/react/{post-list.d.ts → post-env-test.d.ts} +4 -4
  202. package/dist/components/react/post-env-test.js +32 -0
  203. package/dist/components/react/post-footer.js +23 -22
  204. package/dist/components/react/post-header.js +158 -121
  205. package/dist/components/react/post-icon.js +1 -1
  206. package/dist/components/react/post-language-menu-item.d.ts +11 -0
  207. package/dist/components/react/post-language-menu-item.js +99 -0
  208. package/dist/components/react/{post-language-option.d.ts → post-language-menu.d.ts} +4 -4
  209. package/dist/components/react/post-language-menu.js +157 -0
  210. package/dist/components/react/post-linkarea.js +2 -2
  211. package/dist/components/react/post-logo.js +4 -5
  212. package/dist/components/react/post-mainnavigation.js +23 -34
  213. package/dist/components/react/post-megadropdown-trigger.js +74 -81
  214. package/dist/components/react/post-megadropdown.js +185 -80
  215. package/dist/components/react/post-menu-item.js +1 -1
  216. package/dist/components/react/post-menu-trigger.js +1 -1
  217. package/dist/components/react/post-menu.js +1 -1
  218. package/dist/components/react/post-pagination.d.ts +11 -0
  219. package/dist/components/react/post-pagination.js +636 -0
  220. package/dist/components/react/post-popover-trigger.js +42 -27
  221. package/dist/components/react/post-popover.js +14 -15
  222. package/dist/components/react/post-popovercontainer.js +1 -1
  223. package/dist/components/react/post-rating.js +5 -6
  224. package/dist/components/react/post-stepper-item.d.ts +11 -0
  225. package/dist/components/react/post-stepper-item.js +34 -0
  226. package/dist/components/react/{post-list-item.d.ts → post-stepper.d.ts} +4 -4
  227. package/dist/components/react/post-stepper.js +137 -0
  228. package/dist/components/react/{post-tab-header.d.ts → post-tab-item.d.ts} +4 -4
  229. package/dist/components/react/post-tab-item.js +71 -0
  230. package/dist/components/react/post-tab-panel.js +9 -10
  231. package/dist/components/react/post-tabs.js +193 -38
  232. package/dist/components/react/post-togglebutton.js +1 -52
  233. package/dist/components/react/post-tooltip-trigger.js +4 -4
  234. package/dist/components/react/post-tooltip.js +5 -6
  235. package/dist/components/utils.js +24 -0
  236. package/dist/docs.json +968 -563
  237. package/dist/esm/{breakpoints-CJ80BZ06.js → breakpoints-DYoSKGHO.js} +90 -3
  238. package/dist/esm/debounce-C9hMpmsD.js +11 -0
  239. package/dist/esm/environment-CEmnRoA6.js +49 -0
  240. package/dist/esm/{event-from-CzIKqBrS.js → event-from-rEfV4v4a.js} +2 -2
  241. package/dist/esm/fade-DsgPYmAa.js +24 -0
  242. package/dist/esm/fade-slide-CvOvauo9.js +36 -0
  243. package/dist/esm/{get-focusable-children-D9ZHp2FP.js → get-focusable-children-BXNs2_sw.js} +29 -21
  244. package/dist/esm/{get-root-BkQ3CrLq.js → get-root-CXfAA093.js} +1 -1
  245. package/dist/esm/{index-CFNKgUjL.js → index-1ReqxAnI.js} +29 -13
  246. package/dist/esm/loader.js +3 -3
  247. package/dist/esm/package-DZ5m2Ttg.js +3 -0
  248. package/dist/esm/post-accordion_2.entry.js +10 -10
  249. package/dist/esm/post-avatar.entry.js +6 -6
  250. package/dist/esm/post-back-to-top.entry.js +16 -40
  251. package/dist/esm/post-banner.entry.js +10 -9
  252. package/dist/esm/post-breadcrumb-item_2.entry.js +6 -6
  253. package/dist/esm/post-breadcrumbs.entry.js +20 -29
  254. package/dist/esm/post-card-control.entry.js +6 -6
  255. package/dist/esm/{post-closebutton_15.entry.js → post-closebutton_13.entry.js} +518 -486
  256. package/dist/esm/post-collapsible_2.entry.js +36 -35
  257. package/dist/esm/post-components.js +3 -3
  258. package/dist/esm/post-env-test.entry.js +13 -0
  259. package/dist/esm/post-footer.entry.js +18 -16
  260. package/dist/esm/post-linkarea.entry.js +3 -3
  261. package/dist/esm/post-pagination.entry.js +587 -0
  262. package/dist/esm/post-popover-trigger.entry.js +44 -28
  263. package/dist/esm/post-popover.entry.js +11 -11
  264. package/dist/esm/post-rating.entry.js +5 -5
  265. package/dist/esm/post-stepper-item.entry.js +16 -0
  266. package/dist/esm/post-stepper.entry.js +107 -0
  267. package/dist/esm/post-tab-item.entry.js +47 -0
  268. package/dist/esm/post-tab-panel.entry.js +9 -9
  269. package/dist/esm/post-tabs.entry.js +191 -38
  270. package/dist/esm/post-tooltip-trigger.entry.js +5 -5
  271. package/dist/esm/post-tooltip.entry.js +6 -6
  272. package/dist/esm/utils-CoDiS_Ik.js +24 -0
  273. package/dist/post-components/{p-8f0fc02a.entry.js → p-130eb074.entry.js} +1 -1
  274. package/dist/post-components/p-13d018fe.entry.js +1 -0
  275. package/dist/post-components/p-143e5a84.entry.js +1 -0
  276. package/dist/post-components/p-1ReqxAnI.js +2 -0
  277. package/dist/post-components/p-2b220851.entry.js +1 -0
  278. package/dist/post-components/{p-96750e25.entry.js → p-390f111f.entry.js} +1 -1
  279. package/dist/post-components/p-3cf09fbd.entry.js +1 -0
  280. package/dist/post-components/p-52e584ca.entry.js +1 -0
  281. package/dist/post-components/p-56a4040c.entry.js +1 -0
  282. package/dist/post-components/p-675dab57.entry.js +1 -0
  283. package/dist/post-components/p-6857fd9d.entry.js +1 -0
  284. package/dist/post-components/p-7cd00e3e.entry.js +1 -0
  285. package/dist/post-components/p-7f5d2487.entry.js +1 -0
  286. package/dist/post-components/{p-bf41fe56.entry.js → p-88201353.entry.js} +1 -1
  287. package/dist/post-components/p-89360cd1.entry.js +1 -0
  288. package/dist/post-components/p-B7ebLhHc.js +1 -0
  289. package/dist/post-components/p-BVCjnh6Q.js +1 -0
  290. package/dist/post-components/p-BXNs2_sw.js +1 -0
  291. package/dist/post-components/p-C9hMpmsD.js +1 -0
  292. package/dist/post-components/p-CEmnRoA6.js +1 -0
  293. package/dist/post-components/p-CoDiS_Ik.js +1 -0
  294. package/dist/post-components/p-D5knoiyy.js +1 -0
  295. package/dist/post-components/p-DI-h_mEL.js +1 -0
  296. package/dist/post-components/p-DZ5m2Ttg.js +1 -0
  297. package/dist/post-components/p-a740eaed.entry.js +1 -0
  298. package/dist/post-components/{p-261b1452.entry.js → p-a79590f5.entry.js} +1 -1
  299. package/dist/post-components/p-b708d96a.entry.js +1 -0
  300. package/dist/post-components/p-bcf5786f.entry.js +1 -0
  301. package/dist/post-components/p-c92512f5.entry.js +1 -0
  302. package/dist/post-components/{p-658b1ccc.entry.js → p-d7cb3a61.entry.js} +1 -1
  303. package/dist/post-components/p-d7f33813.entry.js +1 -0
  304. package/dist/post-components/p-da97ee21.entry.js +1 -0
  305. package/dist/post-components/{p-11c204e0.entry.js → p-ed4db774.entry.js} +1 -1
  306. package/dist/post-components/post-components.css +1 -1
  307. package/dist/post-components/post-components.esm.js +1 -1
  308. package/dist/prebuild.js +46 -0
  309. package/dist/types/animations/collapse.d.ts +1 -0
  310. package/dist/types/animations/fade-slide.d.ts +11 -0
  311. package/dist/types/animations/fade.d.ts +2 -2
  312. package/dist/types/animations/index.d.ts +2 -0
  313. package/dist/types/animations/slide.d.ts +9 -2
  314. package/dist/types/animations/types.d.ts +13 -0
  315. package/dist/types/animations/utils.d.ts +2 -0
  316. package/dist/types/components/post-accordion-item/heading-levels.d.ts +1 -1
  317. package/dist/types/components/post-accordion-item/post-accordion-item.d.ts +2 -2
  318. package/dist/types/components/post-back-to-top/post-back-to-top.d.ts +2 -2
  319. package/dist/types/components/post-breadcrumbs/post-breadcrumbs.d.ts +6 -6
  320. package/dist/types/components/post-collapsible/post-collapsible.d.ts +4 -5
  321. package/dist/types/components/post-collapsible-trigger/post-collapsible-trigger.d.ts +1 -0
  322. package/dist/types/components/post-footer/post-footer.d.ts +4 -4
  323. package/dist/types/components/post-header/post-header.d.ts +28 -19
  324. package/dist/types/components/{post-language-switch/post-language-switch.d.ts → post-language-menu/post-language-menu.d.ts} +6 -6
  325. package/dist/types/components/{post-language-option/post-language-option.d.ts → post-language-menu-item/post-language-menu-item.d.ts} +5 -5
  326. package/dist/types/components/post-mainnavigation/post-mainnavigation.d.ts +6 -5
  327. package/dist/types/components/post-megadropdown/post-megadropdown.d.ts +20 -2
  328. package/dist/types/components/post-megadropdown-trigger/post-megadropdown-trigger.d.ts +17 -23
  329. package/dist/types/components/post-menu/post-menu.d.ts +4 -4
  330. package/dist/types/components/post-pagination/post-pagination.d.ts +224 -0
  331. package/dist/types/components/post-popover/post-popover.d.ts +3 -3
  332. package/dist/types/components/post-popover-trigger/post-popover-trigger.d.ts +2 -1
  333. package/dist/types/components/post-popovercontainer/post-popovercontainer.d.ts +13 -16
  334. package/dist/types/components/post-rating/post-rating.d.ts +1 -1
  335. package/dist/types/components/post-stepper/post-stepper.d.ts +39 -0
  336. package/dist/types/components/post-stepper-item/post-stepper-item.d.ts +3 -0
  337. package/dist/types/components/post-tab-item/post-tab-item.d.ts +19 -0
  338. package/dist/types/components/post-tab-panel/post-tab-panel.d.ts +3 -3
  339. package/dist/types/components/post-tabs/post-tabs.d.ts +33 -12
  340. package/dist/types/components.d.ts +357 -186
  341. package/dist/types/home/runner/work/design-system/design-system/packages/components/.stencil/prebuild.d.ts +9 -0
  342. package/dist/types/types/heading-levels.d.ts +1 -1
  343. package/dist/types/utils/environment.d.ts +25 -1
  344. package/dist/types/utils/get-focusable-children.d.ts +2 -2
  345. package/dist/types/utils/tests/environment/hydrate-app-helper.d.ts +5 -0
  346. package/dist/types/utils/tests/environment/post-env-test.d.ts +3 -0
  347. package/hydrate/index.js +1882 -833
  348. package/hydrate/index.mjs +1882 -833
  349. package/package.json +9 -11
  350. package/dist/cjs/fade-nS5zzDQS.js +0 -14
  351. package/dist/cjs/index-DtvYdwe1.js +0 -96
  352. package/dist/cjs/post-tab-header.cjs.entry.js +0 -31
  353. package/dist/collection/animations/slide-and-fade.js +0 -25
  354. package/dist/collection/components/post-language-option/post-language-option.css +0 -1
  355. package/dist/collection/components/post-language-switch/post-language-switch.css +0 -1
  356. package/dist/collection/components/post-list/post-list.css +0 -1
  357. package/dist/collection/components/post-list/post-list.js +0 -97
  358. package/dist/collection/components/post-list-item/post-list-item.css +0 -1
  359. package/dist/collection/components/post-list-item/post-list-item.js +0 -26
  360. package/dist/collection/components/post-tab-header/post-tab-header.css +0 -1
  361. package/dist/collection/components/post-tab-header/post-tab-header.js +0 -65
  362. package/dist/components/index2.js +0 -88
  363. package/dist/components/post-language-option.d.ts +0 -11
  364. package/dist/components/post-language-option.js +0 -99
  365. package/dist/components/post-language-switch.js +0 -157
  366. package/dist/components/post-list-item.js +0 -38
  367. package/dist/components/post-list.js +0 -61
  368. package/dist/components/post-tab-header.js +0 -52
  369. package/dist/components/react/p-BXRsHuTS.js +0 -3
  370. package/dist/components/react/p-CV7fm1rW.js +0 -88
  371. package/dist/components/react/p-Dj7qWba5.js +0 -114
  372. package/dist/components/react/p-SbIC4aZX.js +0 -11
  373. package/dist/components/react/post-language-option.js +0 -100
  374. package/dist/components/react/post-language-switch.d.ts +0 -11
  375. package/dist/components/react/post-language-switch.js +0 -158
  376. package/dist/components/react/post-list-item.js +0 -39
  377. package/dist/components/react/post-list.js +0 -62
  378. package/dist/components/react/post-tab-header.js +0 -53
  379. package/dist/esm/fade-SbIC4aZX.js +0 -11
  380. package/dist/esm/index-VmK3ABCB.js +0 -88
  381. package/dist/esm/package-BXRsHuTS.js +0 -3
  382. package/dist/esm/post-tab-header.entry.js +0 -29
  383. package/dist/post-components/p-02ea3ec5.entry.js +0 -1
  384. package/dist/post-components/p-0e92dbef.entry.js +0 -1
  385. package/dist/post-components/p-0ec2bdd7.entry.js +0 -1
  386. package/dist/post-components/p-197a0f25.entry.js +0 -1
  387. package/dist/post-components/p-3274ab81.entry.js +0 -1
  388. package/dist/post-components/p-77e43032.entry.js +0 -1
  389. package/dist/post-components/p-BXRsHuTS.js +0 -1
  390. package/dist/post-components/p-CBFgkSgY.js +0 -1
  391. package/dist/post-components/p-CFNKgUjL.js +0 -2
  392. package/dist/post-components/p-CJ80BZ06.js +0 -1
  393. package/dist/post-components/p-D9ZHp2FP.js +0 -1
  394. package/dist/post-components/p-SbIC4aZX.js +0 -1
  395. package/dist/post-components/p-VmK3ABCB.js +0 -1
  396. package/dist/post-components/p-b5b5e4b9.entry.js +0 -1
  397. package/dist/post-components/p-b8059ba1.entry.js +0 -1
  398. package/dist/post-components/p-d6134e24.entry.js +0 -1
  399. package/dist/post-components/p-e7029b9e.entry.js +0 -1
  400. package/dist/post-components/p-e90688ab.entry.js +0 -1
  401. package/dist/post-components/p-ea5da614.entry.js +0 -1
  402. package/dist/post-components/p-f1b815b6.entry.js +0 -1
  403. package/dist/types/animations/slide-and-fade.d.ts +0 -2
  404. package/dist/types/components/post-list/post-list.d.ts +0 -24
  405. package/dist/types/components/post-list-item/post-list-item.d.ts +0 -8
  406. package/dist/types/components/post-tab-header/post-tab-header.d.ts +0 -14
  407. /package/dist/collection/components/{post-language-switch → post-language-menu}/switch-variants.js +0 -0
  408. /package/dist/post-components/{p-CzIKqBrS.js → p-rEfV4v4a.js} +0 -0
  409. /package/dist/types/components/{post-language-switch → post-language-menu}/switch-variants.d.ts +0 -0
@@ -1,18 +1,21 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-Cb8CTrOz.js');
4
- var _package = require('./package-CvZxvdTJ.js');
5
- var index$1 = require('./index-DtvYdwe1.js');
6
- var breakpoints = require('./breakpoints-CEkeixld.js');
7
- var getFocusableChildren = require('./get-focusable-children-Bx63XUQg.js');
8
- var eventFrom = require('./event-from-CLvtSUKf.js');
3
+ var index = require('./index-CKNxhb0S.js');
4
+ var _package = require('./package-CY7IOoiw.js');
5
+ var breakpoints = require('./breakpoints-Df03Ct7n.js');
6
+ var fade = require('./fade-CPQhl1fP.js');
7
+ var getFocusableChildren = require('./get-focusable-children-ChETM1wK.js');
8
+ var eventFrom = require('./event-from-CwMw19f8.js');
9
+ var environment = require('./environment-BQE9Unf_.js');
9
10
  var index_browser = require('./index.browser-Doj636JV.js');
11
+ var utils = require('./utils-s05L2ulk.js');
12
+ var fadeSlide = require('./fade-slide-dPhQa-I1.js');
10
13
  var placement = require('./placement-qEFR9hmI.js');
11
- var getRoot = require('./get-root-CyMf3Vsd.js');
14
+ var getRoot = require('./get-root-CUAv4k4C.js');
12
15
 
13
16
  const BUTTON_TYPES = ['button', 'submit', 'reset'];
14
17
 
15
- const postClosebuttonCss = ".visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}post-closebutton .btn{padding:0;border:unset;min-height:unset;min-width:unset;width:var(--post-device-sizing-notification-1);height:var(--post-device-sizing-notification-1);border-radius:var(--post-device-border-radius-round);background-color:var(--post-scheme-color-interactive-button-tertiary-enabled-bg);color:var(--post-scheme-color-interactive-button-tertiary-enabled-fg);display:flex;align-items:center;justify-content:center}post-closebutton .btn>post-icon{min-width:var(--post-device-sizing-interactive-icon-size4);width:var(--post-device-sizing-interactive-icon-size4);height:var(--post-device-sizing-interactive-icon-size4)}post-closebutton .btn:not(:disabled):hover,post-closebutton .btn.pretend-hover{cursor:pointer;background-color:var(--post-scheme-color-interactive-button-tertiary-hover-bg);color:var(--post-scheme-color-interactive-button-tertiary-hover-fg)}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-closebutton .btn:not(:disabled):hover,post-closebutton .btn.pretend-hover{color:HighlightText !important}}";
18
+ const postClosebuttonCss = ".visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}post-closebutton .btn{padding:0;border:unset;min-height:unset;min-width:unset;width:var(--post-device-sizing-notification-1);height:var(--post-device-sizing-notification-1);border-radius:var(--post-device-border-radius-round);background-color:var(--post-scheme-color-interactive-button-tertiary-enabled-bg);color:var(--post-scheme-color-interactive-button-tertiary-enabled-fg);display:flex;align-items:center;justify-content:center}post-closebutton .btn>post-icon{min-width:var(--post-device-sizing-interactive-icon-size4);width:var(--post-device-sizing-interactive-icon-size4);height:var(--post-device-sizing-interactive-icon-size4)}post-closebutton .btn{outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}post-closebutton .btn:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-closebutton .btn:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){post-closebutton .btn:is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-closebutton .btn:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}post-closebutton .btn:not(:disabled):hover,post-closebutton .btn.pretend-hover{cursor:pointer;background-color:var(--post-scheme-color-interactive-button-tertiary-hover-bg);color:var(--post-scheme-color-interactive-button-tertiary-hover-fg)}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-closebutton .btn:not(:disabled):hover,post-closebutton .btn.pretend-hover{color:HighlightText !important}}";
16
19
 
17
20
  const PostClosebutton = class {
18
21
  constructor(hostRef) {
@@ -24,7 +27,7 @@ const PostClosebutton = class {
24
27
  this.buttonType = 'button';
25
28
  }
26
29
  validateButtonType() {
27
- index$1.checkEmptyOrOneOf(this, 'buttonType', BUTTON_TYPES);
30
+ breakpoints.checkEmptyOrOneOf(this, 'buttonType', BUTTON_TYPES);
28
31
  }
29
32
  componentDidLoad() {
30
33
  this.checkContent();
@@ -48,7 +51,7 @@ const PostClosebutton = class {
48
51
  }
49
52
  }
50
53
  render() {
51
- return (index.h(index.Host, { key: '9b5bb7e95c6cf3039119ce485e963ac672834bc3', "data-version": _package.version }, index.h("button", { key: '084709a7c632a8c665905a667fa6498cae1972a6', class: "btn", type: this.buttonType }, index.h("post-icon", { key: 'e19209e0c8de59d3e187531e0185d8f2d5c85408', "aria-hidden": "true", name: "closex" }), index.h("span", { key: '233184a45391e5a9b89635345f2324a87f5e9558', class: "visually-hidden" }, index.h("slot", { key: 'c213ac1dbdd98d83a8b2dc1b74c85926404ad1c1' })))));
54
+ return (index.h(index.Host, { key: '6965a8cb5fb765b4fcec0439ceeafe19d34970c2', "data-version": _package.version }, index.h("button", { key: '7e718f70b0a4ac79e9439784dac46bd1ffd60fd1', class: "btn", type: this.buttonType }, index.h("post-icon", { key: '70acda3fbe6c9420f0be708fde6b29a7d5337d13', "aria-hidden": "true", name: "closex" }), index.h("span", { key: '899b3814c0898b521e4166e1cd951af628558e78', class: "visually-hidden" }, index.h("slot", { key: 'b13d0e95fd567c86e93e5185389909c7c0e7107d' })))));
52
55
  }
53
56
  get host() { return index.getElement(this); }
54
57
  static get watchers() { return {
@@ -57,31 +60,34 @@ const PostClosebutton = class {
57
60
  };
58
61
  PostClosebutton.style = postClosebuttonCss;
59
62
 
60
- const easing$1 = 'ease';
61
- const duration$1 = 500;
62
- const fill = 'forwards';
63
- function slideUp(el, translateSize = '-100%') {
64
- return el.animate([
65
- { transform: 'translateY(0)' }, // Starting position (no translation)
66
- { transform: `translateY(${translateSize})` }, // End position
67
- ], {
68
- duration: duration$1,
69
- easing: easing$1,
70
- fill,
71
- });
63
+ /**
64
+ * Used by PostMegadropdown (burger menu)
65
+ */
66
+ const defaultOptions = {
67
+ translate: 100,
68
+ duration: 500,
69
+ easing: 'ease',
70
+ fill: 'none',
71
+ };
72
+ function animateSlide(el, keyframes, options) {
73
+ const { duration, easing, fill } = { ...defaultOptions, ...options };
74
+ return el.animate(keyframes, { duration, easing: utils.resolveEasing(easing), fill });
72
75
  }
73
- function slideDown(el, translateSize = '-100%') {
74
- return el.animate([
75
- { transform: `translateY(${translateSize})` }, // Starting position (no translation)
76
- { transform: 'translateY(0)' }, // End position
77
- ], {
78
- duration: duration$1,
79
- easing: easing$1,
80
- fill,
81
- });
76
+ function slide(el, direction, options = {}) {
77
+ const mergedOptions = {
78
+ ...defaultOptions,
79
+ ...options,
80
+ };
81
+ const { translate } = mergedOptions;
82
+ const baseKeyframes = [
83
+ { transform: `translateX(${translate}%)` },
84
+ { transform: 'translateX(0)' },
85
+ ];
86
+ const keyframes = direction === 'in' ? baseKeyframes : [...baseKeyframes].reverse();
87
+ return animateSlide(el, keyframes, options);
82
88
  }
83
89
 
84
- const postHeaderCss = "*,::before,::after{box-sizing:border-box}:host{z-index:1020;position:relative;--post-logo-height:calc(var(--post-global-header-expanded-height) - var(--post-header-scroll-top, 0px));--post-global-header-top:calc( var(--post-global-header-reduced-height) - var(--post-global-header-expanded-height) );--post-local-header-top:calc( var(--post-global-header-reduced-height) + var(--post-local-header-reduced-height) - var(--post-local-header-expanded-height) );--post-global-controls-top:clamp( 1000 * var(--post-global-header-top), calc(-1 * min(var(--post-header-scroll-top, 0px) / 4, var(--post-global-header-reduced-height))), 0px )}@media screen and (min-width: 1024px){:host:has(.global-sub>*:not(.logo):focus-within),:host:has(.local-sub:focus-within){--post-global-header-top:0;--post-local-header-top:var(--post-global-header-expanded-height);--post-logo-height:var(--post-global-header-expanded-height);--post-global-controls-top:0}}.d-flex{display:flex}.space-between{justify-content:space-between}.global-header{background-color:#fc0;display:flex;justify-content:space-between;position:sticky;padding-inline:4px;height:var(--post-global-header-expanded-height)}@media screen and (max-width: 1023.98px){.global-header{z-index:4;inset-block-start:0}}@media screen and (min-width: 1024px){.global-header{z-index:5;padding-inline-end:8px;inset-block-start:var(--post-global-header-top);transition:inset-block-start .2s ease-in-out}}.global-header:has(+.local-header.no-navigation.no-title){box-shadow:var(--post-device-elevation-300)}.global-sub{display:flex;align-items:center;gap:4px}@media screen and (min-width: 1024px){.global-sub:not(:has(.logo)){position:relative;transition:inset-block-start .2s ease-in-out;inset-block-start:var(--post-global-controls-top)}.global-sub:not(:last-child):not(:first-child){flex-grow:1}}.align-end{align-items:flex-end}.logo{flex:1 0 auto;height:var(--post-global-header-expanded-height);width:var(--post-global-header-expanded-height);min-height:var(--post-global-header-reduced-height);align-self:flex-end}@media screen and (min-width: 1024px){.logo{transition:height .2 ease-in-out;height:var(--post-logo-height)}}::slotted(ul){margin-block:0 !important;list-style:none;display:flex;padding-inline-start:0;gap:1rem;flex-shrink:0 !important}.local-header{display:flex;position:sticky;inset-block-start:var(--post-local-header-top);flex-wrap:wrap;align-items:center;justify-content:space-between;gap:4px;min-height:var(--post-local-header-expanded-min-height);background:#fff;transition:box-shadow .2s ease-in-out}.local-header::after{content:\"\";position:absolute;width:100%;height:1px;background-color:#e1e0dc;inset-block-end:-1px;z-index:1}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.local-header::after{background-color:Highlight}}@media screen and (min-width: 1024px){.local-header{z-index:3;box-shadow:var(--post-device-elevation-300);transition:box-shadow .2s ease-in-out,inset-block-start .2s ease-in-out}.local-header:not(.no-title){padding-block-start:18px}}@media screen and (max-width: 1023.98px){.local-header{z-index:3;padding-block:8px;flex-wrap:wrap;gap:12px}.local-header.local-header-mobile-extended::after{inset-block-end:0}.local-header:not(.local-header-mobile-extended){box-shadow:var(--post-device-elevation-300)}}.local-header.no-navigation{padding-block:0}.local-header.no-navigation .navigation{display:none}.local-header.no-navigation.no-title{display:none}.local-sub{margin-inline-end:16px}@media screen and (max-width: 1023.98px){.local-sub{margin-inline-end:4px}}::slotted(.list-inline){margin:0 !important;z-index:3 !important;position:relative !important}@media screen and (min-width: 1024px){.mobile-toggle{display:none}}.navigation{width:100%}@media screen and (min-width: 1024px){.navigation{display:flex;align-items:center;justify-content:space-between;inset-block-start:var(--post-global-header-reduced-height)}.navigation::before{display:block;content:\"\";position:absolute;inset:0;z-index:2;background:#fff}}@media screen and (max-width: 1023.98px){.navigation{position:sticky;z-index:2;inset-inline:0;inset-block-start:var(--post-header-height)}.mobile-menu{background-color:#fafafa}::slotted(post-mainnavigation),.navigation-footer{padding-block:16px 24px;padding-inline:40px}.navigation-header,::slotted(post-mainnavigation),.navigation-footer{display:none;flex-direction:column}.navigation.extended .navigation-header,.navigation.extended ::slotted(post-mainnavigation),.navigation.extended .navigation-footer{display:flex}::slotted(post-mainnavigation){padding-block:24px}.navigation.extended>div{display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden;height:calc(min(var(--post-header-scroll-parent-height, 100dvh),100dvh) - var(--post-header-height))}.navigation.extended.megadropdown-open>div{overflow-y:hidden}.navigation.extended ::slotted(post-mainnavigation){flex-grow:1 !important}.navigation-footer{background-color:#f0efed;gap:24px}.navigation-footer ::slotted(post-language-switch){margin-top:16px}}@media screen and (max-width: 1023.98px)and (max-width: 599.98px){.navigation-footer{gap:16px}}@media screen and (max-width: 599.98px){::slotted(post-mainnavigation),.navigation-footer{padding-inline:16px}}";
90
+ const postHeaderCss = ":host{--post-global-header-top:calc( var(--post-global-header-reduced-height) - var(--post-global-header-expanded-height) );--post-header-top:calc(var(--post-header-reduced-height) - var(--post-header-expanded-height));--post-logo-height:calc( var(--post-global-header-expanded-height) - var(--post-header-scroll-top, 0px) );--post-global-controls-top:clamp( 1000 * (var(--post-global-header-reduced-height) - var(--post-global-header-expanded-height)), calc( -1 * min(var(--post-header-scroll-top, 0px) / 4, var(--post-global-header-reduced-height)) ), 0px )}@media screen and (min-width: 1024px){:host{--post-header-gap:0.25rem;--post-global-header-padding-inline-start:0.25rem;--post-global-header-padding-inline-end:0.5rem;--post-local-header-padding-inline-start:0.75rem;--post-local-header-padding-inline-end:0.5rem}}@media screen and (min-width: 600px)and (max-width: 1023.98px){:host{--post-header-gap:0.75rem 0.25rem;--post-global-header-padding-inline-start:0.25rem;--post-global-header-padding-inline-end:0.25rem;--post-local-header-padding-inline-start:0.75rem;--post-local-header-padding-inline-end:0.25rem;--post-local-header-padding-block:0rem;--post-burger-menu-padding-inline:2.5rem;--post-burger-menu-body-gap:2rem;--post-burger-menu-footer-gap:1.5rem}}@media screen and (min-width: 600px)and (max-width: 779.98px){:host{--post-burger-menu-padding-inline:1rem}}@media screen and (min-width: 0)and (max-width: 599.98px){:host{--post-header-gap:0.75rem 0.25rem;--post-global-header-padding-inline-start:0rem;--post-global-header-padding-inline-end:0.5rem;--post-local-header-padding-inline-start:0.5rem;--post-local-header-padding-inline-end:0.5rem;--post-local-header-padding-block:0rem;--post-burger-menu-padding-inline:1rem;--post-burger-menu-body-gap:1.5rem;--post-burger-menu-footer-gap:1rem}}:host([data-expanded]),:host([data-menu-extended]){--post-header-top:0;--post-global-header-top:-0.001px;--post-global-controls-top:0;--post-logo-height:var(--post-global-header-expanded-height)}*,::before,::after{box-sizing:border-box}:host,header,.global-header,.local-header{transition:inset-block-start 150ms cubic-bezier(0.4, 0, 0.2, 1)}.global-header,.local-header,.burger-menu{box-shadow:var(--post-device-elevation-300)}.global-header,.sliding-controls,.local-header,.navigation{display:flex;align-items:center;justify-content:space-between;gap:var(--post-header-gap)}:host{container-type:inline-size;display:block;position:sticky;inset-block-start:var(--post-header-top);z-index:1020}:host post-togglebutton{display:inline-flex;position:relative;align-items:center;justify-content:center;max-width:100%;overflow:hidden;transition:opacity 250ms,border-color 250ms,background-color 250ms,color 250ms;border-width:var(--post-device-border-width-default);border-style:solid;border-radius:var(--post-device-border-radius-round);background-color:rgba(0,0,0,0);box-shadow:none;font-family:inherit;font-weight:var(--post-device-font-weight-bold);text-decoration:none;white-space:nowrap;cursor:pointer;border:unset;font-weight:unset;display:flex;padding:.25rem .625rem;gap:.375rem;font-size:1rem;border-color:var(--post-scheme-color-interactive-button-tertiary-enabled-stroke);background-color:var(--post-scheme-color-interactive-button-tertiary-enabled-bg);color:var(--post-scheme-color-interactive-button-tertiary-enabled-fg)}:host post-togglebutton:hover{text-decoration:none}:host post-togglebutton:disabled{border-style:var(--post-core-border-style-dash)}:host post-togglebutton{outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}:host post-togglebutton:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host post-togglebutton:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){:host post-togglebutton:is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host post-togglebutton:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host post-togglebutton:is(a){color:LinkText;border:unset}:host post-togglebutton:is(button){background-color:ButtonFace !important;border:1px solid ButtonBorder !important}:host post-togglebutton:not(:disabled,.disabled):is(button):hover{background-color:Highlight !important}:host post-togglebutton:not(:disabled,.disabled):is(button):hover>post-icon{color:HighlightText !important}}:host post-togglebutton:hover{border-color:var(--post-scheme-color-interactive-button-tertiary-hover-stroke);background-color:var(--post-scheme-color-interactive-button-tertiary-hover-bg);color:var(--post-scheme-color-interactive-button-tertiary-hover-fg)}:host post-togglebutton:is([aria-current],[aria-pressed=true],[aria-expanded=true],.active){box-shadow:var(--post-device-elevation-100);border-color:var(--post-scheme-color-interactive-button-primary-enabled-stroke);background-color:var(--post-scheme-color-interactive-button-primary-enabled-bg);color:var(--post-scheme-color-interactive-button-primary-enabled-fg)}:host post-togglebutton:is([aria-current],[aria-pressed=true],[aria-expanded=true],.active):hover{border-color:var(--post-scheme-color-interactive-button-primary-hover-stroke);background-color:var(--post-scheme-color-interactive-button-primary-hover-bg);color:var(--post-scheme-color-interactive-button-primary-hover-fg)}@media screen and (min-width: 0)and (max-width: 599.98px){:host post-togglebutton{padding:.625rem}:host post-togglebutton>:not(post-icon){display:none}:host post-togglebutton>post-icon{font-size:1.5rem}}.global-header{z-index:2;position:sticky;inset-block-start:var(--post-global-header-top);background-color:#fc0;height:var(--post-global-header-expanded-height);padding-inline-start:var(--post-global-header-padding-inline-start);padding-inline-end:var(--post-global-header-padding-inline-end)}.global-header:has(~.local-header:not(.no-title.no-navigation)),.global-header:has(~.burger-menu.extended){box-shadow:none}.global-header .logo{align-self:flex-end;width:var(--post-global-header-expanded-height);height:var(--post-logo-height);min-height:var(--post-global-header-reduced-height);max-height:100%;margin-inline-end:calc(1.25rem - var(--post-header-gap))}.global-header .sliding-controls{flex-grow:1;justify-content:flex-end;position:relative;inset-block-start:var(--post-global-controls-top)}.global-header .audience{margin-inline-end:auto}.global-header.no-audience .audience{display:none}.local-header{position:relative;flex-wrap:wrap;background-color:#fff;min-height:var(--post-local-header-expanded-min-height);padding-inline-start:var(--post-local-header-padding-inline-start);padding-inline-end:var(--post-local-header-padding-inline-end);padding-block:var(--post-local-header-padding-block)}.local-header:not(.no-title,.no-navigation){padding-block-start:1.125rem}.local-header.no-title.no-navigation{display:none}.local-header:has(.navigation.megadropdown-open),.local-header:has(~.burger-menu.extended){box-shadow:none}.local-header:has(.navigation.megadropdown-open)::after,.local-header:has(~.burger-menu.extended)::after{content:\"\";display:block;position:absolute;inset-inline:0;inset-block-end:0;height:1px;background-color:#e1e0dc}.local-header .navigation{flex:1 0 100%;height:var(--post-main-navigation-height);margin-inline-start:calc(-1*var(--post-local-header-padding-inline-start));max-width:100cqw}.local-header.no-navigation .navigation{display:none}.local-header .local-nav{flex:0 0 auto}.local-header.no-local-nav .navigation{margin-inline-end:calc(-1*var(--post-local-header-padding-inline-end))}.local-header.no-local-nav .local-nav{display:none}.burger-menu{z-index:-1;position:absolute;inset-inline:0;inset-block-start:100%;height:calc(min(var(--post-header-scroll-parent-height, 100dvh),100dvh) - var(--post-header-height));overflow:hidden auto;display:flex;flex-direction:column;background-color:#fafafa}.burger-menu.extended.megadropdown-open{overflow:hidden}.burger-menu:not(.extended){transform:translateY(-100%);display:none}.burger-menu:not(.extended)>*{display:none}.burger-menu .burger-menu-body,.burger-menu .burger-menu-footer{display:flex;flex-direction:column;padding-inline:var(--post-burger-menu-padding-inline)}.burger-menu .burger-menu-body{flex-grow:1;padding-block:1.5rem;gap:var(--post-burger-menu-body-gap)}.burger-menu .burger-menu-footer{background-color:#f0efed;padding-block:1rem 1.5rem;gap:var(--post-burger-menu-footer-gap)}.burger-menu .local-nav{min-height:3.5rem;display:flex;align-items:center;justify-content:flex-end;padding-inline:.25rem}.burger-menu.no-local-nav .local-nav{display:none}";
85
91
 
86
92
  var __decorate$3 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
87
93
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -94,7 +100,7 @@ var __decorate$3 = (undefined && undefined.__decorate) || function (decorators,
94
100
  return c > 3 && r && Object.defineProperty(target, key, r), r;
95
101
  };
96
102
  const PostHeader = class {
97
- get hasMobileMenu() {
103
+ get hasBurgerMenu() {
98
104
  return this.device !== 'desktop' && this.hasNavigation;
99
105
  }
100
106
  get scrollParent() {
@@ -111,10 +117,13 @@ const PostHeader = class {
111
117
  }
112
118
  return document.body;
113
119
  }
120
+ validateTextMenu() {
121
+ breakpoints.checkRequiredAndType(this, 'textMenu', 'string');
122
+ }
114
123
  lockBody(newValue, _oldValue, propName) {
115
124
  const scrollParent = this.scrollParent;
116
- const mobileMenuExtended = propName === 'mobileMenuExtended' ? newValue : this.mobileMenuExtended;
117
- if (this.device !== 'desktop' && mobileMenuExtended) {
125
+ const burgerMenuExtended = propName === 'burgerMenuExtended' ? newValue : this.burgerMenuExtended;
126
+ if (this.device !== 'desktop' && burgerMenuExtended) {
118
127
  scrollParent.setAttribute('data-post-scroll-locked', '');
119
128
  this.host.addEventListener('keydown', this.keyboardHandler);
120
129
  }
@@ -126,16 +135,22 @@ const PostHeader = class {
126
135
  constructor(hostRef) {
127
136
  index.registerInstance(this, hostRef);
128
137
  this.throttledResize = breakpoints.throttle(50, () => this.updateLocalHeaderHeight());
138
+ this.animationOptions = {
139
+ duration: 350,
140
+ easing: 'headerEase',
141
+ };
129
142
  this.device = breakpoints.breakpoint.get('device');
130
143
  this.hasNavigation = false;
144
+ this.hasLocalNav = false;
145
+ this.hasAudience = false;
131
146
  this.hasTitle = false;
132
- this.mobileMenuExtended = false;
147
+ this.burgerMenuExtended = false;
133
148
  this.megadropdownOpen = false;
134
149
  this.breakpointChange = (e) => {
135
150
  this.device = e.detail;
136
151
  this.switchLanguageSwitchMode();
137
- if (this.device === 'desktop' && this.mobileMenuExtended) {
138
- this.closeMobileMenu();
152
+ if (this.device === 'desktop' && this.burgerMenuExtended) {
153
+ this.closeBurgerMenu();
139
154
  }
140
155
  if (this.device !== 'desktop') {
141
156
  Array.from(this.host.querySelectorAll('post-megadropdown')).forEach(dropdown => {
@@ -144,14 +159,14 @@ const PostHeader = class {
144
159
  this.megadropdownOpen = false;
145
160
  }
146
161
  };
147
- this.megadropdownStateHandler = (event) => {
148
- this.megadropdownOpen = event.detail.isVisible;
149
- };
150
162
  this.handleScrollEvent = this.handleScrollEvent.bind(this);
151
163
  this.updateScrollParentHeight = this.updateScrollParentHeight.bind(this);
152
164
  this.updateLocalHeaderHeight = this.updateLocalHeaderHeight.bind(this);
153
165
  this.keyboardHandler = this.keyboardHandler.bind(this);
154
166
  this.handleLinkClick = this.handleLinkClick.bind(this);
167
+ this.megadropdownStateHandler = this.megadropdownStateHandler.bind(this);
168
+ this.checkSlottedContent = this.checkSlottedContent.bind(this);
169
+ this.megadropdownStateHandler = this.megadropdownStateHandler.bind(this);
155
170
  }
156
171
  connectedCallback() {
157
172
  window.addEventListener('resize', this.throttledResize, { passive: true });
@@ -162,23 +177,23 @@ const PostHeader = class {
162
177
  passive: true,
163
178
  });
164
179
  document.addEventListener('postToggleMegadropdown', this.megadropdownStateHandler);
165
- this.host.addEventListener('click', this.handleLinkClick);
166
180
  window.addEventListener('postBreakpoint:device', this.breakpointChange);
167
- this.checkNavigationExistence();
168
- this.checkTitleExistence();
169
- this.switchLanguageSwitchMode();
170
181
  this.handleScrollParentResize();
171
- this.lockBody(false, this.mobileMenuExtended, 'mobileMenuExtended');
182
+ this.lockBody(false, this.burgerMenuExtended, 'burgerMenuExtended');
172
183
  }
173
184
  componentWillRender() {
174
185
  this.handleScrollEvent();
186
+ this.handleSlottedContentChanges();
187
+ this.switchLanguageSwitchMode();
175
188
  }
176
189
  componentDidRender() {
190
+ this.validateTextMenu();
177
191
  this.getFocusableElements();
178
192
  this.handleLocalHeaderResize();
179
193
  }
180
194
  componentDidLoad() {
181
195
  this.updateLocalHeaderHeight();
196
+ this.host.shadowRoot.addEventListener('click', this.handleLinkClick);
182
197
  }
183
198
  // Clean up possible side effects when post-header is disconnected
184
199
  disconnectedCallback() {
@@ -190,7 +205,9 @@ const PostHeader = class {
190
205
  scrollParent.removeEventListener('scroll', this.handleScrollEvent);
191
206
  document.removeEventListener('postToggleMegadropdown', this.megadropdownStateHandler);
192
207
  this.host.removeEventListener('keydown', this.keyboardHandler);
193
- this.host.removeEventListener('click', this.handleLinkClick);
208
+ if (this.host.shadowRoot) {
209
+ this.host.shadowRoot.removeEventListener('click', this.handleLinkClick);
210
+ }
194
211
  if (this.scrollParentResizeObserver) {
195
212
  this.scrollParentResizeObserver.disconnect();
196
213
  this.scrollParentResizeObserver = null;
@@ -199,81 +216,72 @@ const PostHeader = class {
199
216
  this.localHeaderResizeObserver.disconnect();
200
217
  this.localHeaderResizeObserver = null;
201
218
  }
202
- this.mobileMenuExtended = false;
203
- }
204
- checkNavigationExistence() {
205
- this.hasNavigation = this.host.querySelectorAll('post-mainnavigation').length > 0;
206
- }
207
- checkTitleExistence() {
208
- this.hasTitle = this.host.querySelectorAll('[slot="title"]').length > 0;
209
- }
210
- async closeMobileMenu() {
211
- this.mobileMenuAnimation.finish();
212
- const menuButton = this.getMenuButton();
213
- if (menuButton) {
214
- menuButton.toggled = false;
219
+ if (this.slottedContentObserver) {
220
+ this.slottedContentObserver.disconnect();
221
+ this.slottedContentObserver = null;
215
222
  }
216
- this.mobileMenuExtended = false;
223
+ this.burgerMenuExtended = false;
224
+ }
225
+ async closeBurgerMenu() {
226
+ this.burgerMenuAnimation?.finish();
227
+ if (this.burgerMenuButton)
228
+ this.burgerMenuButton.toggled = false;
229
+ this.burgerMenuExtended = false;
217
230
  }
218
231
  /**
219
- * Toggles the mobile navigation.
232
+ * Toggles the burger navigation menu.
220
233
  */
221
- async toggleMobileMenu(force) {
234
+ async toggleBurgerMenu(force) {
222
235
  if (this.device === 'desktop')
223
236
  return;
224
- this.mobileMenuAnimation = this.mobileMenuExtended
225
- ? slideUp(this.mobileMenu)
226
- : slideDown(this.mobileMenu);
237
+ this.burgerMenuAnimation = this.burgerMenuExtended
238
+ ? fade.fade(this.burgerMenu, 'out', this.animationOptions)
239
+ : fade.fade(this.burgerMenu, 'in', this.animationOptions);
227
240
  // Update the state of the toggle button
228
- const menuButton = this.host.querySelector('post-togglebutton');
229
- menuButton.toggled = force ?? !this.mobileMenuExtended;
230
- if (this.mobileMenuExtended) {
241
+ if (this.burgerMenuButton)
242
+ this.burgerMenuButton.toggled = force ?? !this.burgerMenuExtended;
243
+ if (this.burgerMenuExtended) {
231
244
  // Wait for the close animation to finish before hiding megadropdowns
232
- await this.mobileMenuAnimation.finished;
233
- this.mobileMenuExtended = force ?? !this.mobileMenuExtended;
234
- if (this.mobileMenuExtended === false) {
245
+ await this.burgerMenuAnimation.finished;
246
+ this.burgerMenuExtended = force ?? !this.burgerMenuExtended;
247
+ if (this.burgerMenuExtended === false) {
235
248
  this.closeAllMegadropdowns();
249
+ this.burgerMenu.scrollTop = 0;
236
250
  }
237
251
  }
238
252
  else {
239
- this.mobileMenuExtended = force ?? !this.mobileMenuExtended;
253
+ this.burgerMenuExtended = force ?? !this.burgerMenuExtended;
240
254
  // If opening, close any open megadropdowns immediately
241
255
  if (this.megadropdownOpen) {
242
256
  this.closeAllMegadropdowns();
243
257
  }
244
258
  }
245
259
  }
246
- // Get all the focusable elements in the post-header mobile menu
247
- getFocusableElements() {
248
- // Get elements in the correct order (different as the DOM order)
249
- const focusableEls = [
250
- ...Array.from(this.host.querySelectorAll('.list-inline:not([slot="meta-navigation"]) > li')),
251
- ...Array.from(this.host.querySelectorAll('nav > post-list > div > post-list-item, post-megadropdown-trigger')),
252
- ...Array.from(this.host.querySelectorAll('.list-inline[slot="meta-navigation"] > li, post-language-option')),
253
- ];
254
- // Add the main toggle menu button to the list of focusable children
255
- const focusableChildren = [
256
- this.host.querySelector('post-togglebutton'),
257
- ...focusableEls.flatMap(el => Array.from(getFocusableChildren.getFocusableChildren(el))),
258
- ];
259
- this.firstFocusableEl = focusableChildren[0];
260
- this.lastFocusableEl = focusableChildren[focusableChildren.length - 1];
260
+ megadropdownStateHandler(event) {
261
+ this.megadropdownOpen = event.detail.isVisible;
261
262
  }
262
- getMenuButton() {
263
- return this.host.querySelector('post-togglebutton');
263
+ // Get all the focusable elements in the post-header burger menu
264
+ getFocusableElements() {
265
+ if (!this.burgerMenu)
266
+ return;
267
+ const focusableElements = [this.burgerMenuButton];
268
+ focusableElements.push(...getFocusableChildren.getDeepFocusableChildren(this.localHeader, el => !el.matches('post-megadropdown')), ...getFocusableChildren.getDeepFocusableChildren(this.burgerMenu, el => !el.matches('post-megadropdown')));
269
+ this.firstFocusableEl = focusableElements[0];
270
+ this.lastFocusableEl = focusableElements[focusableElements.length - 1];
264
271
  }
265
272
  keyboardHandler(e) {
266
- if (e.key === 'Tab' && this.mobileMenuExtended) {
267
- if (e.shiftKey && document.activeElement === this.firstFocusableEl) {
268
- // If back tab (Tab + Shift) and first element is focused, focus goes to the last element of the megadropdown
269
- e.preventDefault();
270
- this.lastFocusableEl.focus();
271
- }
272
- else if (!e.shiftKey && document.activeElement === this.lastFocusableEl) {
273
- // If Tab and last element is focused, focus goes back to the first element of the megadropdown
274
- e.preventDefault();
275
- this.firstFocusableEl.focus();
276
- }
273
+ if (e.key !== 'Tab' || !this.burgerMenuExtended)
274
+ return;
275
+ const activeElement = this.host.shadowRoot.activeElement || document.activeElement;
276
+ if (e.shiftKey && activeElement === this.firstFocusableEl) {
277
+ // If back tab (Tab + Shift) and first element is focused, focus goes to the last element of the megadropdown
278
+ e.preventDefault();
279
+ this.lastFocusableEl.focus();
280
+ }
281
+ else if (!e.shiftKey && activeElement === this.lastFocusableEl) {
282
+ // If Tab and last element is focused, focus goes back to the first element of the megadropdown
283
+ e.preventDefault();
284
+ this.firstFocusableEl.focus();
277
285
  }
278
286
  }
279
287
  closeAllMegadropdowns() {
@@ -284,7 +292,7 @@ const PostHeader = class {
284
292
  }
285
293
  handleScrollEvent() {
286
294
  const scrollTop = this.scrollParent === document.body ? window.scrollY : this.scrollParent.scrollTop;
287
- document.documentElement.style.setProperty('--post-header-scroll-top', `${scrollTop}px`);
295
+ document.documentElement.style.setProperty('--post-header-scroll-top', `${Math.max(scrollTop, 0)}px`);
288
296
  }
289
297
  updateLocalHeaderHeight() {
290
298
  const localHeaderElement = this.host.shadowRoot.querySelector('.local-header');
@@ -302,8 +310,8 @@ const PostHeader = class {
302
310
  if (!isLinkInMainNav && !isLinkInMegadropdown) {
303
311
  return;
304
312
  }
305
- if (this.mobileMenuExtended && (isLinkInMainNav || isLinkInMegadropdown)) {
306
- this.toggleMobileMenu(false);
313
+ if (this.burgerMenuExtended && (isLinkInMainNav || isLinkInMegadropdown)) {
314
+ this.toggleBurgerMenu(false);
307
315
  }
308
316
  if (this.device === 'desktop' && isLinkInMegadropdown) {
309
317
  const megadropdownLink = target.closest('post-megadropdown a');
@@ -325,38 +333,80 @@ const PostHeader = class {
325
333
  this.localHeaderResizeObserver.observe(localHeader);
326
334
  }
327
335
  }
336
+ handleSlottedContentChanges() {
337
+ if (!this.slottedContentObserver) {
338
+ this.checkSlottedContent();
339
+ this.slottedContentObserver = new MutationObserver(this.checkSlottedContent);
340
+ this.slottedContentObserver.observe(this.host, { childList: true });
341
+ }
342
+ }
343
+ checkSlottedContent() {
344
+ this.hasNavigation = !!this.host.querySelector('[slot="main-nav"]');
345
+ this.hasLocalNav = !!this.host.querySelector('[slot="local-nav"]');
346
+ this.hasAudience = !!this.host.querySelector('[slot="audience"]');
347
+ this.hasTitle = !!this.host.querySelector('[slot="title"]');
348
+ }
328
349
  switchLanguageSwitchMode() {
329
- const variant = this.hasMobileMenu ? 'list' : 'menu';
330
- Array.from(this.host.querySelectorAll('post-language-switch')).forEach(languageSwitch => {
350
+ const variant = this.hasBurgerMenu ? 'list' : 'menu';
351
+ Array.from(this.host.querySelectorAll('post-language-menu')).forEach(languageSwitch => {
331
352
  languageSwitch?.setAttribute('variant', variant);
332
353
  });
333
354
  }
355
+ onFocusChange(e) {
356
+ const alwaysVisibleElements = this.device === 'desktop'
357
+ ? '.navigation' // logo isn’t included since it would be too small to focus on effectively.
358
+ : '.global-header, .burger-menu';
359
+ const isHeaderExpanded =
360
+ // ensure the expanded state stays accurate during focus changes,
361
+ // e.g., when the focused element is removed from the DOM
362
+ // during a window resize
363
+ e.target === document.activeElement &&
364
+ this.host.matches(':focus-within') &&
365
+ !this.host.shadowRoot.querySelector(`:where(${alwaysVisibleElements}):focus-within`);
366
+ if (isHeaderExpanded) {
367
+ this.host.setAttribute('data-expanded', '');
368
+ }
369
+ else {
370
+ this.host.removeAttribute('data-expanded');
371
+ }
372
+ }
334
373
  renderNavigation() {
335
- const mainNavigation = (index.h("slot", { name: "post-mainnavigation", onSlotchange: () => this.checkNavigationExistence() }));
374
+ const localNav = !this.hasTitle && (index.h("div", { class: "local-nav" }, index.h("slot", { name: "local-nav" })));
336
375
  if (this.device === 'desktop') {
337
- return (index.h("div", { class: { 'navigation': true, 'megadropdown-open': this.megadropdownOpen } }, mainNavigation, index.h("slot", { name: "navigation-controls" })));
376
+ return (index.h("div", { class: { 'navigation': true, 'megadropdown-open': this.megadropdownOpen } }, index.h("slot", { name: "main-nav" }), localNav));
338
377
  }
339
- return (index.h("div", { class: { navigation: true, extended: this.mobileMenuExtended }, style: { '--post-header-navigation-current-inset': `${this.mobileMenu?.scrollTop ?? 0}px` } }, index.h("div", { class: "mobile-menu", ref: el => (this.mobileMenu = el) }, index.h("div", { class: "navigation-header" }, index.h("slot", { name: "navigation-controls" }), index.h("slot", { name: "target-group" })), mainNavigation, index.h("div", { class: "navigation-footer" }, index.h("slot", { name: "meta-navigation" }), index.h("slot", { name: "post-language-switch" })))));
378
+ return (index.h("div", { class: {
379
+ 'burger-menu': true,
380
+ 'extended': this.burgerMenuExtended,
381
+ 'no-local-nav': !this.hasLocalNav,
382
+ 'megadropdown-open': this.megadropdownOpen,
383
+ }, style: { '--post-header-navigation-current-inset': `${this.burgerMenu?.scrollTop ?? 0}px` }, ref: el => (this.burgerMenu = el) }, localNav, index.h("div", { class: "burger-menu-body" }, index.h("slot", { name: "audience" }), index.h("slot", { name: "main-nav" })), index.h("div", { class: "burger-menu-footer" }, index.h("slot", { name: "global-nav-secondary" }), index.h("slot", { name: "language-menu" }))));
340
384
  }
341
385
  render() {
342
- const localHeaderClasses = ['local-header'];
343
- if (this.mobileMenuExtended)
344
- localHeaderClasses.push('local-header-mobile-extended');
345
- if (this.device !== 'desktop' || !this.hasNavigation)
346
- localHeaderClasses.push('no-navigation');
347
- if (!this.hasTitle)
348
- localHeaderClasses.push('no-title');
349
- return (index.h(index.Host, { key: 'fd3c4a534af28b2e35f4a02502283e04be0d9683', "data-version": _package.version, "data-color-scheme": "light" }, index.h("div", { key: '61c70adea7525d3daa7690ac9243c7697df5c8bc', class: "global-header" }, index.h("div", { key: '1fdb106a9624a07d3ad3fd1cb4eade9b05282ab5', class: "global-sub" }, index.h("div", { key: '2c62bccfa8d5fa9642528db265e76aac0d13022c', class: "logo" }, index.h("slot", { key: '75b87c2428b7ccad6940976e46156b807257cbc5', name: "post-logo" }))), index.h("div", { key: 'c1950198cbac96132ca5b1c886bb94238c53b903', class: "global-sub" }, this.device === 'desktop' && index.h("slot", { key: '2e695987df3da854db3ec18cc4b1283d0f06dfd1', name: "target-group" })), index.h("div", { key: '50366842180e3aae87d4e4da68a8f73c2f62c347', class: "global-sub" }, index.h("slot", { key: '7eba07e3dddbc26843a50b39a69953a01d9e2a5e', name: "global-controls" }), !this.hasMobileMenu && index.h("slot", { key: 'aa9fc50e2eb8eee4e3d9de76ccbf564ac30a8d03', name: "meta-navigation" }), !this.hasMobileMenu && index.h("slot", { key: '7742f0d0e30d5b0d90ca9352fec72e49a97ec3cb', name: "post-language-switch" }), index.h("slot", { key: 'a3545c4bb2a61c00105763059f3bd66ddd829681', name: "global-login" }), this.hasNavigation && (index.h("div", { key: 'bb8df618571ea8cadb89b0cd8d50bba7c0dec038', onClick: () => this.toggleMobileMenu(), class: "mobile-toggle" }, index.h("slot", { key: '83b9542127213e39644c280cf9f4e19aaf3f071a', name: "post-togglebutton" }))))), index.h("div", { key: '2ab719d2610d46050fc99345237b7b9cc54fd467', class: localHeaderClasses.join(' ') }, index.h("slot", { key: '0e02b3f7421a1c67e99fdc92aadcf61153665820', name: "title", onSlotchange: () => this.checkTitleExistence() }), this.hasTitle && (index.h("div", { key: '94b091a29727bd556a4907ac4bdb2f8757483135', class: "local-sub" }, index.h("slot", { key: '7647015350e21278b104ff4538525abeaea98442', name: "local-controls" }), index.h("slot", { key: '4e42d3fe5c4f676b7bb836c976c1d7e59a1052ae' }))), this.device === 'desktop' && this.renderNavigation()), this.device !== 'desktop' && this.renderNavigation()));
386
+ return (index.h(index.Host, { key: '15de1ff6ccac94813df10fc0b41a518de68dee94', "data-version": _package.version, "data-color-scheme": "light", "data-burger-menu": this.hasBurgerMenu, "data-menu-extended": this.burgerMenuExtended }, index.h("header", { key: '0af40c8b8944c7ffcf2bf0fe704671f4012ae8c8' }, index.h("div", { key: 'cd4564c5c375c015c673df195ba04fe4d89ff1c2', class: {
387
+ 'global-header': true,
388
+ 'no-audience': !this.hasAudience,
389
+ } }, index.h("div", { key: 'c4ad8a22fed57e54266c6584548f5203a499b63c', class: "logo" }, index.h("slot", { key: 'bf86f7ccf2e46263365023f287f18305160cede6', name: "post-logo" })), index.h("div", { key: 'e89c405cf97ddb08850d3b15ab8977e7e484ba73', class: "sliding-controls" }, this.device === 'desktop' && (index.h("div", { key: 'c3e9f49a105894d0df44a3d2654065b452292154', class: "audience" }, index.h("slot", { key: '20effc0592ca8665de464cc5d45d11ef02894acb', name: "audience" }))), index.h("slot", { key: 'f0ca8a59134520ccbb38907e32bedd4c05800d36', name: "global-nav-primary" }), !this.hasBurgerMenu && [
390
+ index.h("slot", { key: '7e2b2982403f491f083fc9f32cee46cbaeca7c50', name: "global-nav-secondary" }),
391
+ index.h("slot", { key: '3e7b5f6cb16b2cf2bc64b9b11c70f8b363e80134', name: "language-menu" }),
392
+ ], index.h("slot", { key: 'd91059cc4dd4529040aa6436db46f66f2db84e71', name: "post-login" }), this.hasNavigation && this.device !== 'desktop' && (index.h("div", { key: 'f97161e09b27c11c6f85d112e85a59ddf2925aec', onClick: () => this.toggleBurgerMenu(), class: "burger-menu-toggle" }, index.h("slot", { key: '18304b858fa2173b63e842ba4d0512bd438a89b0', name: "post-togglebutton" }))), this.hasNavigation && this.device !== 'desktop' && (index.h("post-togglebutton", { key: '0599e4d106262b7be6557b476becacaf9f5656ba', ref: el => (this.burgerMenuButton = el), onClick: () => this.toggleBurgerMenu() }, index.h("span", { key: '3f3578f6172a9d87c531b5bef6a201b255042511' }, this.textMenu), index.h("post-icon", { key: '7a92cec5793716225cf9dc4646ccff585e02723b', "aria-hidden": "true", name: "burger", "data-showwhen": "untoggled" }), index.h("post-icon", { key: '9170844d117e8f0bf7f35049debe973ff391158e', "aria-hidden": "true", name: "closex", "data-showwhen": "toggled" }))))), index.h("div", { key: 'db13d084905b4633595bb1d4d83cc88c82c3c679', ref: el => (this.localHeader = el), class: {
393
+ 'local-header': true,
394
+ 'no-title': !this.hasTitle,
395
+ 'no-audience': !this.hasAudience,
396
+ 'no-navigation': this.device !== 'desktop' || !this.hasNavigation,
397
+ 'no-local-nav': !this.hasLocalNav,
398
+ } }, index.h("slot", { key: 'f6fb25aef128bf1712995427014c5ff62c3710d0', name: "title" }), this.hasTitle && index.h("slot", { key: '8cba1c7b544d950140d59336baaf7398a4fb23d8', name: "local-nav" }), this.device === 'desktop' && this.renderNavigation()), this.device !== 'desktop' && this.renderNavigation())));
350
399
  }
351
400
  get host() { return index.getElement(this); }
352
401
  static get watchers() { return {
402
+ "textMenu": ["validateTextMenu"],
353
403
  "device": ["lockBody"],
354
- "mobileMenuExtended": ["lockBody"]
404
+ "burgerMenuExtended": ["lockBody"]
355
405
  }; }
356
406
  };
357
407
  __decorate$3([
358
408
  eventFrom.EventFrom('post-megadropdown')
359
- ], PostHeader.prototype, "megadropdownStateHandler", void 0);
409
+ ], PostHeader.prototype, "megadropdownStateHandler", null);
360
410
  PostHeader.style = postHeaderCss;
361
411
 
362
412
  const postIconCss = ":host{display:inline-block;width:1em;height:1em;vertical-align:-0.15em}span{display:block;width:100%;height:100%;fill:currentColor;forced-color-adjust:preserve-parent-color;background-color:currentColor;-webkit-mask-position:center center;mask-position:center center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100%;mask-size:100%}:host([flip-h]:not([flip-h=false])){scale:-1 1}:host([flip-v]:not([flip-v=false])){scale:1 -1}:host([flip-h][flip-v]:not([flip-h=false],[flip-v=false])){scale:-1}:host([animation]){transform-origin:center}:host([animation=cylon]){animation:icon-animation-cylon .75s ease-in-out infinite alternate}:host([animation=cylon-vertical]){animation:icon-animation-cylon-vertical .75s ease-in-out infinite alternate}:host([animation=spin]){animation:icon-animation-spin 2s linear infinite normal}:host([animation=spin-reverse]){animation:icon-animation-spin 2s linear infinite reverse}:host([animation=fade]){animation:icon-animation-fade .75s ease-in-out infinite alternate}:host([animation=throb]){animation:icon-animation-throb .75s ease-in-out infinite alternate}@keyframes icon-animation-cylon{from{transform:translateX(-25%)}to{transform:translateX(25%)}}@keyframes icon-animation-cylon-vertical{from{transform:translateY(25%)}to{transform:translateY(-25%)}}@keyframes icon-animation-fade{from{opacity:.1}to{opacity:1}}@keyframes icon-animation-spin{from{transform:rotate(0deg)}to{transform:rotate(359deg)}}@keyframes icon-animation-throb{from{opacity:.5;transform:scale(0.5)}to{opacity:1;transform:scale(1)}}";
@@ -384,19 +434,19 @@ const PostIcon = class {
384
434
  this.flipV = false;
385
435
  }
386
436
  validateAnimation() {
387
- index$1.checkEmptyOrOneOf(this, 'animation', ANIMATION_KEYS);
437
+ breakpoints.checkEmptyOrOneOf(this, 'animation', ANIMATION_KEYS);
388
438
  }
389
439
  validateBase() {
390
- index$1.checkEmptyOrType(this, 'base', 'string');
440
+ breakpoints.checkEmptyOrType(this, 'base', 'string');
391
441
  }
392
442
  validateName() {
393
- index$1.checkRequiredAndType(this, 'name', 'string');
443
+ breakpoints.checkRequiredAndType(this, 'name', 'string');
394
444
  }
395
445
  validateRotate() {
396
- index$1.checkEmptyOrType(this, 'rotate', 'number');
446
+ breakpoints.checkEmptyOrType(this, 'rotate', 'number');
397
447
  }
398
448
  validateScale() {
399
- index$1.checkEmptyOrType(this, 'scale', 'number');
449
+ breakpoints.checkEmptyOrType(this, 'scale', 'number');
400
450
  }
401
451
  /**
402
452
  * Construct the icon URL according to the following rules:
@@ -411,19 +461,21 @@ const PostIcon = class {
411
461
  **/
412
462
  getUrl() {
413
463
  const fileName = `${this.name}.svg`;
414
- if (!breakpoints.IS_BROWSER && !this.base) {
464
+ if (!environment.IS_BROWSER && !this.base) {
415
465
  return `${CDN_URL}${fileName}`;
416
466
  }
417
467
  const isAbsolute = (url) => /^https?:\/\//.test(url);
418
468
  const normalizeUrl = (url) => (url && !url.endsWith('/') ? `${url}/` : url);
419
469
  const cleanUrl = (url) => url.replace(/([^:])\/\//g, '$1/');
420
- const currentDomain = breakpoints.IS_BROWSER ? window.location.origin : '';
421
- const baseHref = breakpoints.IS_BROWSER
470
+ const currentDomain = environment.IS_BROWSER ? window.location.origin : '';
471
+ const baseHref = environment.IS_BROWSER
422
472
  ? document.querySelector('base[href]')?.getAttribute('href') || ''
423
473
  : '';
424
- const metaIconBase = breakpoints.IS_BROWSER
425
- ? document.querySelector('meta[name="design-system-settings"]')?.getAttribute('data-post-icon-base') || ''
426
- : '';
474
+ let metaIconBase = '';
475
+ if (environment.IS_BROWSER) {
476
+ const metaTag = document.querySelector('meta[name="design-system-settings"]');
477
+ metaIconBase = metaTag?.getAttribute('data-post-icon-base') || '';
478
+ }
427
479
  // Function to build the first part of the URL when 'this.base' or 'metaIconBase' are relative
428
480
  const buildUrlWithBase = (relativeUrl) => {
429
481
  const normalizedHref = normalizeUrl(baseHref);
@@ -470,7 +522,7 @@ const PostIcon = class {
470
522
  this.validateAnimation();
471
523
  }
472
524
  render() {
473
- return (index.h(index.Host, { key: '0031b3e2e4016f9b28cade66fa435741940946a7', "data-version": _package.version }, index.h("span", { key: '0efbcdd5f1dd737640238a0ab81b67ca8218adec', style: this.getStyles() })));
525
+ return (index.h(index.Host, { key: '6469b748f2792c383593dacd1d9f1f17daf9cde0', "data-version": _package.version }, index.h("span", { key: '9f4d9766dc97a07a2562dbc3bb0931de29fe9757', style: this.getStyles() })));
474
526
  }
475
527
  get host() { return index.getElement(this); }
476
528
  static get watchers() { return {
@@ -485,70 +537,7 @@ PostIcon.style = postIconCss;
485
537
 
486
538
  const SWITCH_VARIANTS = ['list', 'menu'];
487
539
 
488
- const postLanguageOptionCss = "post-language-option{display:inline-block}post-language-option button{padding:0;overflow:visible;border:0;background:none;color:var(--post-scheme-color-interactive-button-secondary-enabled-fg);font:inherit;-webkit-user-select:none;user-select:none;appearance:button}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-language-option button{background-color:ButtonFace !important}post-language-option button:hover{background-color:Highlight !important}}post-language-option button .visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}post-language-option a{color:var(--post-current-fg);text-decoration:none}post-language-option :is(a,button){cursor:pointer;display:flex;align-items:center;justify-content:center;width:100%;height:100%;text-transform:uppercase}post-language-option :is(a,button){outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}post-language-option :is(a,button):is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important;outline-offset:-2px !important;border-radius:4px}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-language-option :is(a,button):is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){post-language-option :is(a,button):is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important;outline-offset:-2px !important;border-radius:4px}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-language-option :is(a,button):is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}post-language-option:where([variant=list]) :is(a,button){padding-inline:0;width:40px;height:40px;border-radius:2px}post-language-option:where([variant=list]) :is(a,button):hover{color:#504f4b}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-language-option:where([variant=list]) :is(a,button){border:1px solid ButtonBorder;color:ButtonText}}post-language-option:where([variant=list])[active]:not([active=false]) :is(a,button){background-color:#050400 !important;color:#fff;pointer-events:none}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-language-option:where([variant=list])[active]:not([active=false]) :is(a,button){background-color:Highlight !important;color:HighlightText}}post-language-option:where([variant=menu]){min-width:72px}post-language-option:where([variant=menu])[active]:not([active=false]){display:none}post-language-option:where([variant=menu]) :is(a,button){padding-block:13px;padding-inline:16px;box-sizing:border-box;justify-content:flex-start;position:relative;border-radius:0}post-language-option:where([variant=menu]) :is(a,button):hover{color:#fff;background-color:#504f4b}post-language-option:where([variant=menu]):first-child :is(a,button){border-start-start-radius:4px;border-start-end-radius:4px}post-language-option:where([variant=menu]):last-child :is(a,button){border-end-start-radius:4px;border-end-end-radius:4px}";
489
-
490
- const PostLanguageOption = class {
491
- constructor(hostRef) {
492
- index.registerInstance(this, hostRef);
493
- this.postChange = index.createEvent(this, "postChange");
494
- this.postLanguageOptionInitiallyActive = index.createEvent(this, "postLanguageOptionInitiallyActive");
495
- }
496
- validateCode() {
497
- index$1.checkRequiredAndType(this, 'code', 'string');
498
- }
499
- validateVariant() {
500
- index$1.checkEmptyOrOneOf(this, 'variant', SWITCH_VARIANTS);
501
- }
502
- validateName() {
503
- index$1.checkEmptyOrType(this, 'name', 'string');
504
- }
505
- validateUrl() {
506
- index$1.checkEmptyOrUrl(this, 'url');
507
- }
508
- componentDidLoad() {
509
- this.validateCode();
510
- this.validateName();
511
- this.validateUrl();
512
- if (!this.name && this.isNameRequired()) {
513
- throw new Error('The "name" property of the post-language-option component is required when the full language name is not displayed.');
514
- }
515
- if (this.active) {
516
- this.postLanguageOptionInitiallyActive.emit(this.code);
517
- }
518
- }
519
- /**
520
- * Selects the language option programmatically.
521
- */
522
- async select() {
523
- this.active = true;
524
- this.emitChange();
525
- }
526
- emitChange() {
527
- this.postChange.emit(this.code);
528
- }
529
- isNameRequired() {
530
- return this.host.textContent.toLowerCase() === this.code.toLowerCase();
531
- }
532
- render() {
533
- const lang = this.code.toLowerCase();
534
- const emitOnKeyDown = (e) => {
535
- if (e.key === 'Enter' || e.key === ' ') {
536
- this.emitChange();
537
- }
538
- };
539
- return (index.h(index.Host, { key: 'b86bf33feb890e5dfbfae16f45ce2e56fdfaf16a', "data-version": _package.version, role: this.variant === 'list' ? 'listitem' : undefined }, this.url ? (index.h("a", { "aria-current": this.active ? 'page' : undefined, href: this.url, hrefLang: lang, lang: lang, onClick: () => this.emitChange(), onKeyDown: emitOnKeyDown }, index.h("slot", null), index.h("span", { class: "visually-hidden" }, this.name))) : (index.h("button", { "aria-current": this.active ? 'true' : undefined, lang: lang, onClick: () => this.emitChange(), onKeyDown: emitOnKeyDown }, index.h("slot", null), index.h("span", { class: "visually-hidden" }, this.name)))));
540
- }
541
- get host() { return index.getElement(this); }
542
- static get watchers() { return {
543
- "code": ["validateCode"],
544
- "variant": ["validateVariant"],
545
- "name": ["validateName"],
546
- "url": ["validateUrl"]
547
- }; }
548
- };
549
- PostLanguageOption.style = postLanguageOptionCss;
550
-
551
- const postLanguageSwitchCss = ":host{display:flex !important;flex-wrap:wrap;gap:.5rem}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}.post-language-switch-dropdown-container{display:flex;flex-direction:column}.post-language-switch-trigger{cursor:pointer;text-transform:uppercase;padding:0;overflow:visible;border:0;background:none;color:var(--post-scheme-color-interactive-button-secondary-enabled-fg);font:inherit;-webkit-user-select:none;user-select:none;appearance:button;text-decoration:none;display:inline-flex;align-items:center;gap:6px;border-radius:24px;font-size:16px;padding:3px 10px}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.post-language-switch-trigger{background-color:ButtonFace !important}.post-language-switch-trigger:hover{background-color:Highlight !important}}.post-language-switch-trigger{outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}.post-language-switch-trigger:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.post-language-switch-trigger:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){.post-language-switch-trigger:is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.post-language-switch-trigger:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}.post-language-switch-trigger:not(:disabled):hover,.post-language-switch-trigger.pretend-hover{border-color:var(--post-scheme-color-interactive-button-tertiary-hover-stroke);background-color:var(--post-scheme-color-interactive-button-tertiary-hover-bg);color:var(--post-scheme-color-interactive-button-tertiary-hover-fg)}.post-language-switch-trigger post-icon{height:24px;width:24px}.post-language-switch-trigger[aria-expanded=true]{background-color:#050400;color:#fff}.post-language-switch-trigger[aria-expanded=true] post-icon{transform:rotate(180deg)}.post-language-switch-trigger[aria-expanded=true]:hover{background-color:#504f4b;color:#fff}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.post-language-switch-trigger{border:1px solid ButtonBorder}.post-language-switch-trigger[aria-expanded=true] post-icon,.post-language-switch-trigger:hover post-icon{color:HighlightText}}post-menu::part(menu){padding-block:0}";
540
+ const postLanguageMenuCss = ":host{display:flex !important}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}.post-language-menu-dropdown-container{display:flex;flex-direction:column}.post-language-menu-trigger{display:inline-flex;position:relative;align-items:center;justify-content:center;max-width:100%;overflow:hidden;transition:opacity 250ms,border-color 250ms,background-color 250ms,color 250ms;border-width:var(--post-device-border-width-default);border-style:solid;border-radius:var(--post-device-border-radius-round);background-color:rgba(0,0,0,0);box-shadow:none;font-family:inherit;font-weight:var(--post-device-font-weight-bold);text-decoration:none;white-space:nowrap;cursor:pointer;border:unset;font-weight:unset;display:flex;padding:.25rem .625rem;gap:.375rem;font-size:1rem;border-color:var(--post-scheme-color-interactive-button-tertiary-enabled-stroke);background-color:var(--post-scheme-color-interactive-button-tertiary-enabled-bg);color:var(--post-scheme-color-interactive-button-tertiary-enabled-fg);text-transform:uppercase;cursor:pointer}.post-language-menu-trigger:hover{text-decoration:none}.post-language-menu-trigger:disabled{border-style:var(--post-core-border-style-dash)}.post-language-menu-trigger{outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}.post-language-menu-trigger:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.post-language-menu-trigger:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){.post-language-menu-trigger:is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.post-language-menu-trigger:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.post-language-menu-trigger:is(a){color:LinkText;border:unset}.post-language-menu-trigger:is(button){background-color:ButtonFace !important;border:1px solid ButtonBorder !important}.post-language-menu-trigger:not(:disabled,.disabled):is(button):hover{background-color:Highlight !important}.post-language-menu-trigger:not(:disabled,.disabled):is(button):hover>post-icon{color:HighlightText !important}}.post-language-menu-trigger:hover{border-color:var(--post-scheme-color-interactive-button-tertiary-hover-stroke);background-color:var(--post-scheme-color-interactive-button-tertiary-hover-bg);color:var(--post-scheme-color-interactive-button-tertiary-hover-fg)}.post-language-menu-trigger:is([aria-current],[aria-pressed=true],[aria-expanded=true],.active){box-shadow:var(--post-device-elevation-100);border-color:var(--post-scheme-color-interactive-button-primary-enabled-stroke);background-color:var(--post-scheme-color-interactive-button-primary-enabled-bg);color:var(--post-scheme-color-interactive-button-primary-enabled-fg)}.post-language-menu-trigger:is([aria-current],[aria-pressed=true],[aria-expanded=true],.active):hover{border-color:var(--post-scheme-color-interactive-button-primary-hover-stroke);background-color:var(--post-scheme-color-interactive-button-primary-hover-bg);color:var(--post-scheme-color-interactive-button-primary-hover-fg)}.post-language-menu-trigger post-icon{transition:transform 250ms cubic-bezier(0.4, 0, 0.2, 1)}.post-language-menu-trigger:is([aria-current],[aria-pressed=true],[aria-expanded=true]) post-icon{transform:rotate(180deg)}post-menu::part(post-menu){padding-block:0}.post-language-menu-list{margin-top:1rem}";
552
541
 
553
542
  var __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
554
543
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -560,7 +549,7 @@ var __decorate$2 = (undefined && undefined.__decorate) || function (decorators,
560
549
  r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
561
550
  return c > 3 && r && Object.defineProperty(target, key, r), r;
562
551
  };
563
- const PostLanguageSwitch = class {
552
+ const PostLanguageMenu = class {
564
553
  constructor(hostRef) {
565
554
  index.registerInstance(this, hostRef);
566
555
  this.menuId = `p${index_browser.nanoid(11)}`;
@@ -571,16 +560,16 @@ const PostLanguageSwitch = class {
571
560
  this.variant = 'list';
572
561
  }
573
562
  get languageOptions() {
574
- return Array.from(this.host.querySelectorAll('post-language-option'));
563
+ return Array.from(this.host.querySelectorAll('post-language-menu-item'));
575
564
  }
576
565
  validateCaption() {
577
- index$1.checkRequiredAndType(this, 'caption', 'string');
566
+ breakpoints.checkRequiredAndType(this, 'textChangeLanguage', 'string');
578
567
  }
579
568
  validateDescription() {
580
- index$1.checkRequiredAndType(this, 'description', 'string');
569
+ breakpoints.checkRequiredAndType(this, 'textCurrentLanguage', 'string');
581
570
  }
582
571
  validateVariant() {
583
- index$1.checkEmptyOrOneOf(this, 'variant', SWITCH_VARIANTS);
572
+ breakpoints.checkEmptyOrOneOf(this, 'variant', SWITCH_VARIANTS);
584
573
  this.updateChildrenVariant();
585
574
  }
586
575
  componentDidLoad() {
@@ -592,11 +581,11 @@ const PostLanguageSwitch = class {
592
581
  this.updateChildrenVariant();
593
582
  }
594
583
  /**
595
- * Listen for the postChange event and guard it to run only for events originating from a <post-language-option> element.
584
+ * Listen for the postChange event and guard it to run only for events originating from a <post-language-menu-item> element.
596
585
  */
597
586
  handlePostChange(event) {
598
587
  this.activeLang = event.detail;
599
- // Update the active state in the children post-language-option components
588
+ // Update the active state in the children post-language-menu-item components
600
589
  this.languageOptions.forEach(lang => {
601
590
  if (lang.code && lang.code === this.activeLang) {
602
591
  lang.setAttribute('active', '');
@@ -613,97 +602,109 @@ const PostLanguageSwitch = class {
613
602
  }
614
603
  /**
615
604
  * Handles cases where the language switch is being rendered before options are available
616
- * @param event Initially emitted by <post-langauge-option>
605
+ * @param event Initially emitted by <post-language-menu-item>
617
606
  */
618
607
  handleInitiallyActive(event) {
619
608
  this.activeLang = event.detail;
620
609
  }
621
- // Update post-language-option variant to have the correct style
610
+ // Update post-language-menu-item variant to have the correct style
622
611
  updateChildrenVariant() {
623
612
  this.languageOptions.forEach(el => {
624
613
  el.setAttribute('variant', this.variant);
625
614
  });
626
615
  }
627
616
  renderList() {
628
- return (index.h(index.Host, { "data-version": _package.version }, index.h("div", { class: "post-language-switch-list", role: "list", "aria-label": this.caption, "aria-describedby": this.listSpanId }, index.h("span", { id: this.listSpanId, class: "visually-hidden" }, this.description), index.h("slot", null))));
617
+ return (index.h(index.Host, { "data-version": _package.version }, index.h("div", { class: "post-language-menu-list", role: "list", "aria-label": this.textChangeLanguage, "aria-describedby": this.listSpanId }, index.h("span", { id: this.listSpanId, class: "visually-hidden" }, this.textCurrentLanguage), index.h("slot", null))));
629
618
  }
630
619
  renderDropdown() {
631
- return (index.h(index.Host, { "data-version": _package.version }, index.h("post-menu-trigger", { for: this.menuId }, index.h("button", { class: "post-language-switch-trigger" }, this.activeLang, index.h("span", { class: "visually-hidden" }, this.caption), index.h("span", { class: "visually-hidden" }, this.description), index.h("post-icon", { "aria-hidden": "true", name: "chevrondown" }))), index.h("post-menu", { id: this.menuId, class: "post-language-switch-dropdown-container", label: this.caption }, index.h("slot", null))));
620
+ return (index.h(index.Host, { "data-version": _package.version }, index.h("post-menu-trigger", { for: this.menuId }, index.h("button", { class: "post-language-menu-trigger" }, this.activeLang, index.h("span", { class: "visually-hidden" }, this.textChangeLanguage), index.h("span", { class: "visually-hidden" }, this.textCurrentLanguage), index.h("post-icon", { "aria-hidden": "true", name: "chevrondown" }))), index.h("post-menu", { id: this.menuId, class: "post-language-menu-dropdown-container", label: this.textChangeLanguage, placement: "bottom-end" }, index.h("slot", null))));
632
621
  }
633
622
  render() {
634
623
  return this.variant === 'list' ? this.renderList() : this.renderDropdown();
635
624
  }
636
625
  get host() { return index.getElement(this); }
637
626
  static get watchers() { return {
638
- "caption": ["validateCaption"],
639
- "description": ["validateDescription"],
627
+ "textChangeLanguage": ["validateCaption"],
628
+ "textCurrentLanguage": ["validateDescription"],
640
629
  "variant": ["validateVariant"]
641
630
  }; }
642
631
  };
643
632
  __decorate$2([
644
- eventFrom.EventFrom('post-language-option')
645
- ], PostLanguageSwitch.prototype, "handlePostChange", null);
646
- PostLanguageSwitch.style = postLanguageSwitchCss;
633
+ eventFrom.EventFrom('post-language-menu-item')
634
+ ], PostLanguageMenu.prototype, "handlePostChange", null);
635
+ PostLanguageMenu.style = postLanguageMenuCss;
647
636
 
648
- const postListCss = "post-list{display:flex;flex-direction:column;gap:var(--post-list-title-gap, 0)}post-list>[role=list]{display:flex;flex-direction:column;gap:var(--post-list-item-gap, 0)}post-list:where([horizontal]:not([horizontal=false])){flex-direction:row;align-items:center}post-list:where([horizontal]:not([horizontal=false]))>[role=list]{flex-direction:row;align-items:center}post-list>.list-title.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}";
637
+ const postLanguageMenuItemCss = "post-language-menu-item{display:inline-block}post-language-menu-item button{padding:0;overflow:visible;border:0;background:none;color:var(--post-scheme-color-interactive-button-secondary-enabled-fg);font:inherit;-webkit-user-select:none;user-select:none;appearance:button}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-language-menu-item button{background-color:ButtonFace !important}post-language-menu-item button:hover{background-color:Highlight !important}}post-language-menu-item button .visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}post-language-menu-item a{color:var(--post-current-fg);text-decoration:none}post-language-menu-item :is(a,button){cursor:pointer;display:flex;align-items:center;justify-content:center;width:100%;height:100%;text-transform:uppercase}post-language-menu-item :is(a,button){outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}post-language-menu-item :is(a,button):is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important;border-radius:4px}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-language-menu-item :is(a,button):is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){post-language-menu-item :is(a,button):is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important;border-radius:4px}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-language-menu-item :is(a,button):is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}post-language-menu-item:where([variant=list]) :is(a,button){padding-inline:0;width:40px;height:40px;border-radius:2px}post-language-menu-item:where([variant=list]) :is(a,button):hover{color:#504f4b}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-language-menu-item:where([variant=list]) :is(a,button){border:1px solid ButtonBorder;color:ButtonText}}post-language-menu-item:where([variant=list])[active]:not([active=false]) :is(a,button){background-color:#050400 !important;color:#fff;pointer-events:none}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-language-menu-item:where([variant=list])[active]:not([active=false]) :is(a,button){background-color:Highlight !important;color:HighlightText}}post-language-menu-item:where([variant=menu]){min-width:72px}post-language-menu-item:where([variant=menu])[active]:not([active=false]){display:none}post-language-menu-item:where([variant=menu]) :is(a,button){padding-block:13px;padding-inline:16px;box-sizing:border-box;justify-content:flex-start;position:relative;border-radius:0}post-language-menu-item:where([variant=menu]) :is(a,button):hover{color:#fff;background-color:#504f4b}post-language-menu-item:where([variant=menu]):first-child :is(a,button){border-start-start-radius:4px;border-start-end-radius:4px}post-language-menu-item:where([variant=menu]):last-child :is(a,button){border-end-start-radius:4px;border-end-end-radius:4px}";
649
638
 
650
- const PostList = class {
639
+ const PostLanguageMenuItem = class {
651
640
  constructor(hostRef) {
652
641
  index.registerInstance(this, hostRef);
653
- /**
654
- * If `true`, the list title will be hidden. Otherwise, it will be displayed.`
655
- */
656
- this.titleHidden = false;
657
- /**
658
- * The list can become horizontal by setting `horizontal="true"` or just `horizontal`
659
- */
660
- this.horizontal = false;
642
+ this.postChange = index.createEvent(this, "postChange");
643
+ this.postLanguageMenuItemInitiallyActive = index.createEvent(this, "postLanguageMenuItemInitiallyActive");
661
644
  }
662
- componentWillLoad() {
663
- /**
664
- * Get the id set on the host element or use a random id by default
665
- */
666
- this.titleId = `title-${this.host.id || index_browser.nanoid(6)}`;
645
+ validateCode() {
646
+ breakpoints.checkRequiredAndType(this, 'code', 'string');
667
647
  }
668
- componentDidLoad() {
669
- this.checkTitle();
648
+ validateVariant() {
649
+ breakpoints.checkEmptyOrOneOf(this, 'variant', SWITCH_VARIANTS);
670
650
  }
671
- checkTitle() {
672
- if (!this.titleEl.textContent.trim()) {
673
- console.error('Please provide a title to the list component. Title is mandatory for accessibility purposes.');
651
+ validateName() {
652
+ breakpoints.checkEmptyOrType(this, 'name', 'string');
653
+ }
654
+ validateUrl() {
655
+ breakpoints.checkEmptyOrUrl(this, 'url');
656
+ }
657
+ componentDidLoad() {
658
+ this.validateCode();
659
+ this.validateName();
660
+ this.validateUrl();
661
+ if (!this.name && this.isNameRequired()) {
662
+ throw new Error('The "name" property of the post-language-menu-item component is required when the full language name is not displayed.');
663
+ }
664
+ if (this.active) {
665
+ this.postLanguageMenuItemInitiallyActive.emit(this.code);
674
666
  }
675
667
  }
676
- render() {
677
- return (index.h(index.Host, { key: '908588a3f1261efbb85dbefade9f85f8ec6f16f8', "data-version": _package.version }, index.h("div", { key: '44b224379be814dab98e16ad12a3ca0f10e61ac0', ref: el => (this.titleEl = el), id: this.titleId, class: `list-title${this.titleHidden ? ' visually-hidden' : ''}` }, index.h("slot", { key: '1aed36b7c286796a4d617643e7606e63bc2dd95a' })), index.h("div", { key: '3e1d137712b3e7616bab450426964f6c9334198e', role: "list", "aria-labelledby": this.titleId }, index.h("slot", { key: 'fd5abb2fca95d32295fbfa158795413264200ae8', name: "post-list-item" }))));
668
+ /**
669
+ * Selects the language option programmatically.
670
+ */
671
+ async select() {
672
+ this.active = true;
673
+ this.emitChange();
678
674
  }
679
- get host() { return index.getElement(this); }
680
- };
681
- PostList.style = postListCss;
682
-
683
- const postListItemCss = ":host{display:flex}";
684
-
685
- const PostListItem = class {
686
- constructor(hostRef) {
687
- index.registerInstance(this, hostRef);
675
+ emitChange() {
676
+ this.postChange.emit(this.code);
688
677
  }
689
- connectedCallback() {
690
- this.host.setAttribute('slot', 'post-list-item');
678
+ isNameRequired() {
679
+ return this.host.textContent.toLowerCase() === this.code.toLowerCase();
691
680
  }
692
681
  render() {
693
- return (index.h(index.Host, { key: '67204f0c31a6bc4cad3359030a8da57a045de7c5', role: "listitem", slot: "post-list-item", version: _package.version }, index.h("slot", { key: '0c68073c601a3792880fc0e68af24a4a204548ed' })));
682
+ const lang = this.code.toLowerCase();
683
+ const emitOnKeyDown = (e) => {
684
+ if (e.key === 'Enter' || e.key === ' ') {
685
+ this.emitChange();
686
+ }
687
+ };
688
+ return (index.h(index.Host, { key: '0a0f6a2e04d61991696e86fa9a20b34d154e89ac', "data-version": _package.version, role: this.variant === 'list' ? 'listitem' : undefined }, this.url ? (index.h("a", { "aria-current": this.active ? 'page' : undefined, href: this.url, hrefLang: lang, lang: lang, onClick: () => this.emitChange(), onKeyDown: emitOnKeyDown }, index.h("slot", null), index.h("span", { class: "visually-hidden" }, this.name))) : (index.h("button", { "aria-current": this.active ? 'true' : undefined, lang: lang, onClick: () => this.emitChange(), onKeyDown: emitOnKeyDown }, index.h("slot", null), index.h("span", { class: "visually-hidden" }, this.name)))));
694
689
  }
695
690
  get host() { return index.getElement(this); }
691
+ static get watchers() { return {
692
+ "code": ["validateCode"],
693
+ "variant": ["validateVariant"],
694
+ "name": ["validateName"],
695
+ "url": ["validateUrl"]
696
+ }; }
696
697
  };
697
- PostListItem.style = postListItemCss;
698
+ PostLanguageMenuItem.style = postLanguageMenuItemCss;
698
699
 
699
- const postLogoCss = ":host,.logo{display:inline-block}:host,:host .logo>svg,.logo,.logo .logo>svg{height:100%}.description{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}.logo-link{outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}.logo-link:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.logo-link:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){.logo-link:is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.logo-link:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}.logo-link :focus,:focus-visible{border-radius:2px}";
700
+ const postLogoCss = ":host,.logo{display:inline-block}:host,:host .logo>svg,.logo,.logo .logo>svg{height:100%}.description{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}.logo-link{outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}.logo-link:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.logo-link:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){.logo-link:is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.logo-link:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}.logo-link{outline-offset:calc(\n -2px - var(--post-device-border-width-focus)\n ) !important}.logo-link :focus,:focus-visible{border-radius:.5rem}";
700
701
 
701
702
  const PostLogo = class {
702
703
  constructor(hostRef) {
703
704
  index.registerInstance(this, hostRef);
704
705
  }
705
706
  validateUrl() {
706
- index$1.checkEmptyOrUrl(this, 'url');
707
+ breakpoints.checkEmptyOrUrl(this, 'url');
707
708
  }
708
709
  componentDidLoad() {
709
710
  this.validateUrl();
@@ -717,7 +718,7 @@ const PostLogo = class {
717
718
  render() {
718
719
  const logoLink = this.url && (typeof this.url === 'string' ? this.url : this.url.href);
719
720
  const LogoTag = logoLink ? 'a' : 'span';
720
- return (index.h(index.Host, { key: 'acd3bfab8d395cde2d79066580a8e53e65c426f4', "data-version": _package.version }, index.h(LogoTag, { key: 'c5c2f8a2be6204bb693d5d53fd95e75133518a1d', class: `logo ${logoLink ? 'logo-link' : ''}`, ...(logoLink ? { href: logoLink } : {}) }, index.h("span", { key: '675b756441237173c1046b74c2dfe2dfc08bfd7f', class: "description" }, index.h("slot", { key: '710fd3483f56ad353e1a99f4fff2acc78ee53b46', onSlotchange: () => this.checkDescription() })), index.h("svg", { key: 'e72b70e26da0fefd52a7e9aec41772dd5c9f0258', xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 72 72", "aria-hidden": "true" }, index.h("g", { key: 'b67d56c9319bb576a56c76c5299f4a81c93d6c3c', id: "Logo" }, index.h("rect", { key: '8c073060a51c5e6942c1b33fc5c2a3a7eb422f07', fill: "#ffcc00", x: "0", y: "0", width: "72", height: "72" }), index.h("polygon", { key: 'f97840922aa977b0f74bc5e8a88ff99136c80e46', fill: "#ff0000", points: "34,32.3 34,19 19.7,19 19.7,29.1 10,29.1 10,42.9 19.7,42.9 19.7,53 34,53 34,39.7 30.6,39.7 30.6,49.8 23.1,49.8 23.1,39.7 13.4,39.7 13.4,32.3 23.1,32.3 23.1,22.2 30.6,22.2 30.6,32.3" }), index.h("path", { key: 'f7faf347bb660e2a4550b48fc2d997ad01b2b8ae', d: "M53.56234,31.10526c0,2.41272-1.99154,4.29475-4.51723,4.29475H45.2v-8.3h3.84511C51.66802,27.1,53.56234,28.78889,53.56234,31.10526z M50.69666,19H36v34h9.2V42.9h5.49666c6.75131,0,11.9971-5.15137,11.9971-11.8057C62.69376,24.39136,57.35099,19,50.69666,19z" }))))));
721
+ return (index.h(index.Host, { key: '39444d3dd1a87425c7134de5af6ad623a68197c0', "data-version": _package.version }, index.h(LogoTag, { key: '8f41d8c85212f7fde23c11fa0a0fb506deb5e0c9', class: `logo ${logoLink ? 'logo-link' : ''}`, ...(logoLink ? { href: logoLink } : {}) }, index.h("span", { key: '06b777726f42914b941a980bce9dd4ba3dc3637e', class: "description" }, index.h("slot", { key: 'd95f99a2d3b09ffab6d0e7c11b99178d6c1fb7ef', onSlotchange: () => this.checkDescription() })), index.h("svg", { key: '57fa969750327b0907cd3f5abefd14b52d176dd8', xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 72 72", "aria-hidden": "true" }, index.h("g", { key: '61172060743d8d155bcde7d636da3c5569ec1951', id: "Logo" }, index.h("rect", { key: 'ef042aea64e01c52d241ff599290646af309f868', fill: "#ffcc00", x: "0", y: "0", width: "72", height: "72" }), index.h("polygon", { key: 'ef5b2d4666dc676157fddacfe9b3f15c017e2e02', fill: "#ff0000", points: "34,32.3 34,19 19.7,19 19.7,29.1 10,29.1 10,42.9 19.7,42.9 19.7,53 34,53 34,39.7 30.6,39.7 30.6,49.8 23.1,49.8 23.1,39.7 13.4,39.7 13.4,32.3 23.1,32.3 23.1,22.2 30.6,22.2 30.6,32.3" }), index.h("path", { key: '816fd96b39a89ba22571e7e3257758e39b2599b0', d: "M53.56234,31.10526c0,2.41272-1.99154,4.29475-4.51723,4.29475H45.2v-8.3h3.84511C51.66802,27.1,53.56234,28.78889,53.56234,31.10526z M50.69666,19H36v34h9.2V42.9h5.49666c6.75131,0,11.9971-5.15137,11.9971-11.8057C62.69376,24.39136,57.35099,19,50.69666,19z" }))))));
721
722
  }
722
723
  get host() { return index.getElement(this); }
723
724
  static get watchers() { return {
@@ -726,25 +727,27 @@ const PostLogo = class {
726
727
  };
727
728
  PostLogo.style = postLogoCss;
728
729
 
729
- const postMainnavigationCss = ":root{--post-icon-chevrondown:url(\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxkZWZzPjxzeW1ib2wgaWQ9ImktY2hldnJvbmRvd24iPjxzeW1ib2wgaWQ9InMxNiIgdmlld0JveD0iMCAwIDE2IDE2Ij48cGF0aCBkPSJNMi4wMSA1LjIyYzAtLjE5LjA3LS4zOC4yMi0uNTMuMjktLjI5Ljc3LS4yOSAxLjA2IDBsNC43MiA0LjcyIDQuNzItNC43MmMuMjktLjI5Ljc3LS4yOSAxLjA2IDBzLjI5Ljc3IDAgMS4wNmwtNS43OCA1Ljc4LTUuNzgtNS43OGEuNzQuNzQgMCAwIDEtLjIyLS41MyIvPjwvc3ltYm9sPjxzeW1ib2wgaWQ9InMyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMy4yNiA3Ljg1YzAtLjIyLjA4LS40NS4yNi0uNjIuMzQtLjM0LjktLjM0IDEuMjQgMGw3LjI2IDcuMjYgNy4yNi03LjI2Yy4zNC0uMzQuOS0uMzQgMS4yNCAwcy4zNC45IDAgMS4yNGwtOC41IDguNS04LjUxLTguNWEuOS45IDAgMCAxLS4yNi0uNjJaIi8+PC9zeW1ib2w+PHN5bWJvbCBpZD0iczMyIiB2aWV3Qm94PSIwIDAgMzIgMzIiPjxwYXRoIGQ9Ik00LjUgMTAuNTRjMC0uMjYuMS0uNTEuMjktLjcxYS45OTYuOTk2IDAgMCAxIDEuNDEgMGw5Ljc5IDkuNzkgOS44LTkuOGEuOTk2Ljk5NiAwIDEgMSAxLjQxIDEuNDFMMTUuOTkgMjIuNDQgNC44IDExLjI1Yy0uMi0uMi0uMjktLjQ1LS4yOS0uNzFaIi8+PC9zeW1ib2w+PHN5bWJvbCBpZD0iczQwIiB2aWV3Qm94PSIwIDAgNDAgNDAiPjxwYXRoIGQ9Ik01LjggMTMuMTdhMS4xMjMgMS4xMjMgMCAwIDEgMS45Mi0uOEwyMC4wNSAyNC43bDEyLjM0LTEyLjM0Yy40NC0uNDQgMS4xNS0uNDQgMS41OSAwcy40NCAxLjE1IDAgMS41OUwyMC4wNSAyNy44OCA2LjEzIDEzLjk3Yy0uMjItLjIyLS4zMy0uNTEtLjMzLS44Ii8+PC9zeW1ib2w+PHN5bWJvbCBpZD0iczQ4IiB2aWV3Qm94PSIwIDAgNDggNDgiPjxwYXRoIGQ9Ik03IDE1Ljg3YzAtLjMyLjEyLS42NC4zNy0uODhhMS4yNSAxLjI1IDAgMCAxIDEuNzcgMGwxNC44NyAxNC44NyAxNC44OC0xNC44OGMuNDktLjQ5IDEuMjgtLjQ5IDEuNzcgMHMuNDkgMS4yOCAwIDEuNzdMMjQuMDIgMzMuMzkgNy4zNyAxNi43NWMtLjI0LS4yNC0uMzctLjU2LS4zNy0uODgiLz48L3N5bWJvbD48c3ltYm9sIGlkPSJzNjQiIHZpZXdCb3g9IjAgMCA2NCA2NCI+PHBhdGggZD0iTTkuNjMgMjEuMjRhMS4zOCAxLjM4IDAgMCAxIDIuMzUtLjk3TDMyLjAxIDQwLjNsMjAuMDQtMjAuMDRjLjU0LS41NCAxLjQxLS41NCAxLjk1IDBzLjU0IDEuNDEgMCAxLjk1TDMyLjAxIDQ0LjE5IDEwLjAzIDIyLjIyYy0uMjctLjI3LS40LS42Mi0uNC0uOTdaTTAgLjAzaDY0djY0SDB6Ii8+PC9zeW1ib2w+PHVzZSBzdHlsZT0iZGlzcGxheTogdmFyKC0tczE2LCBub25lKSIgaHJlZj0iI3MxNiIvPjx1c2Ugc3R5bGU9ImRpc3BsYXk6IHZhcigtLXMyNCwgbm9uZSkiIGhyZWY9IiNzMjQiLz48dXNlIHN0eWxlPSJkaXNwbGF5OiB2YXIoLS1zMzIsIG5vbmUpIiBocmVmPSIjczMyIi8+PHVzZSBzdHlsZT0iZGlzcGxheTogdmFyKC0tczQwLCBub25lKSIgaHJlZj0iI3M0MCIvPjx1c2Ugc3R5bGU9ImRpc3BsYXk6IHZhcigtLXM0OCwgbm9uZSkiIGhyZWY9IiNzNDgiLz48dXNlIHN0eWxlPSJkaXNwbGF5OiB2YXIoLS1zNjQsIG5vbmUpIiBocmVmPSIjczY0Ii8+PC9zeW1ib2w+PC9kZWZzPjxzdHlsZT5AbWVkaWEgKG1heC13aWR0aDogMjMuOThweCkge2d7LS1zMTY6YmxvY2s7fX1AbWVkaWEgKG1pbi13aWR0aDogMjRweCkgYW5kIChtYXgtd2lkdGg6IDMxLjk4cHgpIHtney0tczI0OmJsb2NrO319QG1lZGlhIChtaW4td2lkdGg6IDMycHgpIGFuZCAobWF4LXdpZHRoOiAzOS45OHB4KSB7Z3stLXMzMjpibG9jazt9fUBtZWRpYSAobWluLXdpZHRoOiA0MHB4KSBhbmQgKG1heC13aWR0aDogNDcuOThweCkge2d7LS1zNDA6YmxvY2s7fX1AbWVkaWEgKG1pbi13aWR0aDogNDhweCkgYW5kIChtYXgtd2lkdGg6IDYzLjk4cHgpIHtney0tczQ4OmJsb2NrO319QG1lZGlhIChtaW4td2lkdGg6IDY0cHgpIHtney0tczY0OmJsb2NrO319PC9zdHlsZT48Zz48dXNlIGhyZWY9IiNpLWNoZXZyb25kb3duIi8+PC9nPjwvc3ZnPg==\")}post-mainnavigation post-list-item>a{text-decoration:none;border-radius:0}post-mainnavigation post-list-item post-megadropdown-trigger button{padding:0;overflow:visible;border:0;background:none;color:var(--post-scheme-color-interactive-button-secondary-enabled-fg);font:inherit;-webkit-user-select:none;user-select:none;appearance:button;text-align:start}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-mainnavigation post-list-item post-megadropdown-trigger button{background-color:ButtonFace !important}post-mainnavigation post-list-item post-megadropdown-trigger button:hover{background-color:Highlight !important}}post-mainnavigation post-list-item>a,post-mainnavigation post-list-item post-megadropdown-trigger button{flex:0 0 fit-content;white-space:nowrap;display:flex;align-items:center;justify-content:space-between}post-mainnavigation post-list-item>a:hover,post-mainnavigation post-list-item post-megadropdown-trigger button:hover{color:var(--post-scheme-color-interactive-primary-hover-fg1)}post-mainnavigation post-list-item>a:focus-visible,post-mainnavigation post-list-item post-megadropdown-trigger button:focus-visible{border-radius:4px;outline-offset:-2px !important}post-mainnavigation>button::after,post-mainnavigation post-megadropdown-trigger button::after{content:\"\";mask-image:var(--post-icon-chevrondown);background-color:currentColor;color:currentColor;forced-color-adjust:preserve-parent-color;height:24px;width:24px}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-mainnavigation>button,post-mainnavigation post-megadropdown-trigger button{border:1px solid ButtonBorder !important}post-mainnavigation>button:hover::after,post-mainnavigation>button[aria-expanded=true]::after,post-mainnavigation post-megadropdown-trigger button:hover::after,post-mainnavigation post-megadropdown-trigger button[aria-expanded=true]::after{color:HighlightText}}@media screen and (min-width: 1024px){post-mainnavigation{display:flex;overflow:hidden;height:var(--post-main-navigation-height, 0);background:#fff;user-select:none}post-mainnavigation nav{flex:1 1 auto;overflow:hidden;scroll-behavior:smooth}post-mainnavigation .scroll-control{cursor:pointer;z-index:5;padding:1rem;background:#fff;box-shadow:var(--post-device-elevation-500);line-height:1}post-mainnavigation .scroll-control.scroll-left{margin-inline-end:-3rem}post-mainnavigation .scroll-control.scroll-right{margin-inline-start:-3rem}post-mainnavigation .scroll-control.d-none{display:none}post-mainnavigation .scroll-control post-icon{font-size:1rem}post-mainnavigation post-list>[role=list]{flex-direction:row;max-width:100vw}post-mainnavigation post-list-item>a,post-mainnavigation post-list-item>button,post-mainnavigation post-list-item post-megadropdown-trigger button{position:sticky;padding-inline:12px;height:var(--post-main-navigation-height, 0);gap:4px;font-size:16px;z-index:4}}@media screen and (min-width: 1024px)and (max-width: 1023.98px){post-mainnavigation post-list-item>a,post-mainnavigation post-list-item>button,post-mainnavigation post-list-item post-megadropdown-trigger button{z-index:5}}@media screen and (min-width: 1024px){post-mainnavigation post-list-item>a .nav-el-active,post-mainnavigation post-list-item>button .nav-el-active,post-mainnavigation post-list-item post-megadropdown-trigger button .nav-el-active{font-weight:700;text-align:center;opacity:0}}@media screen and (min-width: 1024px){post-mainnavigation post-list-item>a .nav-el-inactive,post-mainnavigation post-list-item>button .nav-el-inactive,post-mainnavigation post-list-item post-megadropdown-trigger button .nav-el-inactive{position:absolute;opacity:1;text-align:center;width:100%;inset-inline-start:0}}@media screen and (min-width: 1024px){post-mainnavigation post-list-item>a.active,post-mainnavigation post-list-item>a[aria-current=page]:not(post-megadropdown *),post-mainnavigation post-list-item>a[aria-expanded=true],post-mainnavigation post-list-item>button.active,post-mainnavigation post-list-item>button[aria-current=page]:not(post-megadropdown *),post-mainnavigation post-list-item>button[aria-expanded=true],post-mainnavigation post-list-item post-megadropdown-trigger button.active,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-current=page]:not(post-megadropdown *),post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true]{background-color:#050400;color:#fff;font-weight:700}post-mainnavigation post-list-item>a.active .nav-el-active,post-mainnavigation post-list-item>a[aria-current=page]:not(post-megadropdown *) .nav-el-active,post-mainnavigation post-list-item>a[aria-expanded=true] .nav-el-active,post-mainnavigation post-list-item>button.active .nav-el-active,post-mainnavigation post-list-item>button[aria-current=page]:not(post-megadropdown *) .nav-el-active,post-mainnavigation post-list-item>button[aria-expanded=true] .nav-el-active,post-mainnavigation post-list-item post-megadropdown-trigger button.active .nav-el-active,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-current=page]:not(post-megadropdown *) .nav-el-active,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true] .nav-el-active{opacity:1}post-mainnavigation post-list-item>a.active .nav-el-inactive,post-mainnavigation post-list-item>a[aria-current=page]:not(post-megadropdown *) .nav-el-inactive,post-mainnavigation post-list-item>a[aria-expanded=true] .nav-el-inactive,post-mainnavigation post-list-item>button.active .nav-el-inactive,post-mainnavigation post-list-item>button[aria-current=page]:not(post-megadropdown *) .nav-el-inactive,post-mainnavigation post-list-item>button[aria-expanded=true] .nav-el-inactive,post-mainnavigation post-list-item post-megadropdown-trigger button.active .nav-el-inactive,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-current=page]:not(post-megadropdown *) .nav-el-inactive,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true] .nav-el-inactive{opacity:0}}@media screen and (min-width: 1024px){post-mainnavigation post-list-item>a:hover,post-mainnavigation post-list-item>button:hover,post-mainnavigation post-list-item post-megadropdown-trigger button:hover{background-color:#504f4b;color:#fff}}@media screen and (min-width: 1024px)and (max-width: 599.98px){post-mainnavigation post-list-item>a,post-mainnavigation post-list-item>button,post-mainnavigation post-list-item post-megadropdown-trigger button{font-size:14px}}@media screen and (min-width: 1024px){post-mainnavigation post-list-item>button,post-mainnavigation post-list-item post-megadropdown-trigger button{padding-inline-end:12px;transition:border-block-end-color 250ms cubic-bezier(0.4, 0, 0.2, 1)}post-mainnavigation post-list-item>button .nav-el-inactive,post-mainnavigation post-list-item post-megadropdown-trigger button .nav-el-inactive{width:calc(100% - 28px)}post-mainnavigation post-list-item>button::after,post-mainnavigation post-list-item post-megadropdown-trigger button::after{transition:transform 250ms cubic-bezier(0.4, 0, 0.2, 1)}post-mainnavigation post-list-item>button[aria-expanded=true]::after,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true]::after{transform:rotate(180deg)}}@media screen and (min-width: 1024px){post-mainnavigation post-megadropdown button:not(:is(post-closebutton *)),post-mainnavigation post-megadropdown a{width:100%;min-width:100%;height:48px;padding-inline:8px 12px;gap:16px;font-weight:400;position:relative}post-mainnavigation post-megadropdown button:not(:is(post-closebutton *))::before,post-mainnavigation post-megadropdown a::before{content:\"\";background-color:#050400;bottom:0;width:100%;height:1px;position:absolute;left:0}post-mainnavigation post-megadropdown button:not(:is(post-closebutton *)).active,post-mainnavigation post-megadropdown button:not(:is(post-closebutton *))[aria-current=page],post-mainnavigation post-megadropdown button:not(:is(post-closebutton *))[aria-expanded=true],post-mainnavigation post-megadropdown a.active,post-mainnavigation post-megadropdown a[aria-current=page],post-mainnavigation post-megadropdown a[aria-expanded=true]{background-color:#050400;color:#fff}post-mainnavigation post-megadropdown button:not(:is(post-closebutton *)):hover,post-mainnavigation post-megadropdown a:hover{background-color:#504f4b;color:#fff}post-mainnavigation post-megadropdown button:not(:is(post-closebutton *)):hover::before,post-mainnavigation post-megadropdown a:hover::before{background-color:#504f4b}}@media screen and (max-width: 1023.98px){post-mainnavigation nav{transform:none !important}post-mainnavigation .scroll-control{display:none}post-mainnavigation post-list-item>a,post-mainnavigation post-list-item>button,post-mainnavigation post-list-item post-megadropdown-trigger button{width:100%;min-width:100%;height:48px;padding-inline:8px 12px;gap:16px;font-weight:400;position:relative}post-mainnavigation post-list-item>a::before,post-mainnavigation post-list-item>button::before,post-mainnavigation post-list-item post-megadropdown-trigger button::before{content:\"\";background-color:#050400;bottom:0;width:100%;height:1px;position:absolute;left:0}post-mainnavigation post-list-item>a.active,post-mainnavigation post-list-item>a[aria-current=page],post-mainnavigation post-list-item>a[aria-expanded=true],post-mainnavigation post-list-item>button.active,post-mainnavigation post-list-item>button[aria-current=page],post-mainnavigation post-list-item>button[aria-expanded=true],post-mainnavigation post-list-item post-megadropdown-trigger button.active,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-current=page],post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true]{background-color:#050400;color:#fff}post-mainnavigation post-list-item>a:hover,post-mainnavigation post-list-item>button:hover,post-mainnavigation post-list-item post-megadropdown-trigger button:hover{background-color:#504f4b;color:#fff}post-mainnavigation post-list-item>a:hover::before,post-mainnavigation post-list-item>button:hover::before,post-mainnavigation post-list-item post-megadropdown-trigger button:hover::before{background-color:#504f4b}post-mainnavigation post-list-item>a .nav-el-inactive,post-mainnavigation post-list-item>button .nav-el-inactive,post-mainnavigation post-list-item post-megadropdown-trigger button .nav-el-inactive{display:none}post-mainnavigation>button::after,post-mainnavigation post-megadropdown-trigger button::after{transform:rotate(-90deg)}}";
730
+ const postMainnavigationCss = ":host{display:flex;user-select:none}@media screen and (min-width: 1024px){:host{overflow:hidden}}nav{flex:1 1 auto}@media screen and (min-width: 1024px){nav{scroll-behavior:smooth;max-width:100vw;overflow:hidden;height:var(--post-main-navigation-height)}}.scroll-control{z-index:1;cursor:pointer;padding:1rem;background:#fff;box-shadow:var(--post-device-elevation-500);line-height:1}.scroll-control.scroll-left{margin-inline-end:-3rem}.scroll-control.scroll-right{margin-inline-start:-3rem}.scroll-control.d-none{display:none}.scroll-control post-icon{font-size:1rem}";
730
731
 
731
732
  const SCROLL_REPEAT_INTERVAL = 100; // Interval for repeated scrolling when holding down scroll button
732
733
  const NAVBAR_DISABLE_DURATION = 400; // Duration to temporarily disable navbar interactions during scrolling
733
734
  const PostMainnavigation = class {
735
+ validateTextMain() {
736
+ breakpoints.checkRequiredAndType(this, 'textMain', 'string');
737
+ }
734
738
  constructor(hostRef) {
735
739
  index.registerInstance(this, hostRef);
736
740
  this.canScrollLeft = false;
737
741
  this.canScrollRight = false;
738
742
  this.scrollRight = this.scrollRight.bind(this);
739
743
  this.scrollLeft = this.scrollLeft.bind(this);
740
- this.handleMutations = this.handleMutations.bind(this);
741
744
  this.checkScrollability = this.checkScrollability.bind(this);
742
745
  this.resizeObserver = new ResizeObserver(this.checkScrollability);
743
- this.mutationObserver = new MutationObserver(this.handleMutations);
746
+ this.mutationObserver = new MutationObserver(this.checkScrollability);
744
747
  }
745
748
  componentDidLoad() {
749
+ this.validateTextMain();
746
750
  setTimeout(() => {
747
- this.fixLayoutShift();
748
751
  this.checkScrollability();
749
752
  });
750
753
  // Observe the navbar for size changes
@@ -769,30 +772,8 @@ const PostMainnavigation = class {
769
772
  if (this.scrollRepeatInterval)
770
773
  clearInterval(this.scrollRepeatInterval);
771
774
  }
772
- async handleMutations(mutations) {
773
- const addedNodes = mutations.flatMap((mutation) => {
774
- return Array.from(mutation.addedNodes);
775
- });
776
- // Wait for all elements to be hydrated
777
- await Promise.all(addedNodes.map((item) => item.componentOnReady ? item.componentOnReady() : Promise.resolve(item)));
778
- this.fixLayoutShift();
779
- this.checkScrollability();
780
- }
781
775
  get navigationItems() {
782
- return Array.from(this.navbar.querySelectorAll(':is(a, button):not(post-megadropdown *)'));
783
- }
784
- /**
785
- * Hack to fix the layout shift due to bold text on active elements
786
- */
787
- fixLayoutShift() {
788
- this.navigationItems
789
- .filter(item => !item.matches(':has(.nav-el-active)'))
790
- .forEach(item => {
791
- item.innerHTML = `
792
- <span class="nav-el-active">${item.innerHTML}</span>
793
- <span class="nav-el-inactive" aria-hidden="true">${item.innerHTML}</span>
794
- `;
795
- });
776
+ return Array.from(this.host.querySelectorAll('a:not(post-megadropdown *), post-megadropdown-trigger'));
796
777
  }
797
778
  /**
798
779
  * Returns whether scrolling is enabled in either the left or right direction.
@@ -831,7 +812,7 @@ const PostMainnavigation = class {
831
812
  }, SCROLL_REPEAT_INTERVAL);
832
813
  }
833
814
  scrollRight() {
834
- const scrollRightLeftEdge = document
815
+ const scrollRightLeftEdge = this.host.shadowRoot
835
816
  .querySelector('.scroll-right')
836
817
  .getBoundingClientRect().left;
837
818
  for (const navigationItem of this.navigationItems) {
@@ -845,7 +826,7 @@ const PostMainnavigation = class {
845
826
  }
846
827
  }
847
828
  scrollLeft() {
848
- const scrollLeftRightEdge = document
829
+ const scrollLeftRightEdge = this.host.shadowRoot
849
830
  .querySelector('.scroll-left')
850
831
  .getBoundingClientRect().right;
851
832
  for (const navigationItem of this.navigationItems.reverse()) {
@@ -871,17 +852,38 @@ const PostMainnavigation = class {
871
852
  }, NAVBAR_DISABLE_DURATION);
872
853
  }
873
854
  render() {
874
- return (index.h(index.Host, { key: '04ae6ffdd6560113431b70c3c27f16057fc9a87d', slot: "post-mainnavigation", version: _package.version }, index.h("div", { key: '2f79728dcbbfe94a343b880e2ba07331f45c9f30', "aria-hidden": "true", class: { 'scroll-control scroll-left': true, 'd-none': !this.canScrollLeft }, onMouseDown: e => this.handleScrollButtonClick(e, 'left') }, index.h("post-icon", { key: '3e762484bbcd03ac0d67b4ab722ffcd862bb073e', "aria-hidden": "true", name: "chevronleft" })), index.h("nav", { key: '1150bfdf724e4d93b45f1fff071fba56d31d15b5', ref: el => (this.navbar = el) }, index.h("slot", { key: '3496b7c6d2d75300b1727148ff9b9965717d9909' })), index.h("div", { key: '1fa6dd50d9650ab6e5047c607f7e5ed0416ed245', "aria-hidden": "true", class: { 'scroll-control scroll-right': true, 'd-none': !this.canScrollRight }, onMouseDown: e => this.handleScrollButtonClick(e, 'right') }, index.h("post-icon", { key: '9487d621e1d7289a0afeb1d0443ec8bc70cd5f3e', "aria-hidden": "true", name: "chevronright" }))));
855
+ return (index.h(index.Host, { key: '14ca9714f09e1dbbe8c976b8947db07906ec2eb8', version: _package.version, class: this.canScroll ? 'scrollable' : '' }, index.h("div", { key: 'e886823d21e52db04afc91ecbd12149c47d69038', "aria-hidden": "true", class: { 'scroll-control scroll-left': true, 'd-none': !this.canScrollLeft }, onMouseDown: e => this.handleScrollButtonClick(e, 'left') }, index.h("post-icon", { key: '3afd56232da3cf120038b68c714c560db16ac30e', "aria-hidden": "true", name: "chevronleft" })), index.h("nav", { key: '69c39d75c1f90f01c12904c98fc6e3f8de2ba09d', ref: el => (this.navbar = el), "aria-label": this.textMain }, index.h("slot", { key: '9251d7cec53c05bf9146d0b2c75533c50f7fe070' })), index.h("div", { key: '649e7ec3c9f65447a2da965bb7fe0c92b3ff8207', "aria-hidden": "true", class: { 'scroll-control scroll-right': true, 'd-none': !this.canScrollRight }, onMouseDown: e => this.handleScrollButtonClick(e, 'right') }, index.h("post-icon", { key: 'ac2823ab5195c59ea2831ffb24a1d8a033f7266a', "aria-hidden": "true", name: "chevronright" }))));
875
856
  }
857
+ get host() { return index.getElement(this); }
858
+ static get watchers() { return {
859
+ "textMain": ["validateTextMain"]
860
+ }; }
876
861
  };
877
862
  PostMainnavigation.style = postMainnavigationCss;
878
863
 
879
- const postMegadropdownCss = "@keyframes slide-in{0%{transform:translateX(100%)}100%{transform:translateX(0%)}}@keyframes slide-out{from{transform:translateX(0%)}to{transform:translateX(100%)}}@keyframes slide-down{from{transform:translateY(-100%)}to{transform:translateY(0%)}}@keyframes slide-up{0%{transform:translateY(0%)}100%{transform:translateY(-100%)}}*,::before,::after{box-sizing:border-box}.megadropdown-container{box-shadow:0 8px 6px rgba(0,0,0,.16);position:absolute;background-color:#fafafa;border:none;z-index:1;width:100%;inset-block-start:100%;inset-inline-start:0;border-radius:0}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.megadropdown-container{border-block-end:1px solid CanvasText}}.megadropdown-container.slide-in{animation:slide-down 350ms forwards}.megadropdown-container.slide-out{animation:slide-up 350ms forwards}@media screen and (max-width: 1023.98px){.megadropdown-container{z-index:5;position:fixed;inset-block-start:var(--post-header-navigation-current-inset);inset-inline:0;height:calc(min(var(--post-header-scroll-parent-height, 100dvh),100dvh) - var(--post-header-height));border-block-start:unset;overflow-y:auto;overscroll-behavior:contain}.megadropdown-container.slide-in{animation:slide-in 350ms forwards}.megadropdown-container.slide-out{animation:slide-out 350ms forwards}}@media screen and (min-width: 1024px){.megadropdown-container{max-height:calc(100vh - var(--post-header-height) - 48px);overflow-y:auto}}.megadropdown{padding:31px 40px 40px;background-color:#fafafa}@media screen and (max-width: 1023.98px){.megadropdown{display:flex;flex-direction:column;width:inherit;padding:16px 32px 24px}}@media screen and (max-width: 599.98px){.megadropdown{padding-inline:16px}}.megadropdown [slot=megadropdown-overview-link]{text-decoration:none;border-radius:0;padding-block:13px 12px;margin-block-end:16px;display:flex;align-items:center;min-height:56px;width:100%;min-width:100%;height:48px;padding-inline:8px 12px;gap:16px;font-weight:400;position:relative;height:unset}.megadropdown [slot=megadropdown-overview-link]::before{content:\"\";background-color:#050400;bottom:0;width:100%;height:1px;position:absolute;left:0}.megadropdown [slot=megadropdown-overview-link].active,.megadropdown [slot=megadropdown-overview-link][aria-current=page],.megadropdown [slot=megadropdown-overview-link][aria-expanded=true]{background-color:#050400;color:#fff}.megadropdown [slot=megadropdown-overview-link]:hover{background-color:#504f4b;color:#fff}.megadropdown [slot=megadropdown-overview-link]:hover::before{background-color:#504f4b}@media screen and (max-width: 1023.98px){.megadropdown [slot=megadropdown-overview-link]{padding-block:12px 11px;min-height:unset}}@media screen and (max-width: 599.98px){.megadropdown [slot=megadropdown-overview-link]{padding-block:10px 9px}}.megadropdown .megadropdown-content{gap:1.5rem;display:grid;grid-template-columns:repeat(auto-fit, minmax(min(15vw, 100%), 1fr));grid-auto-rows:1fr auto;grid-auto-flow:dense}@media screen and (max-width: 1023.98px){.megadropdown .megadropdown-content{grid-template-columns:repeat(auto-fit, minmax(min(35vw, 100%), 1fr))}}@media screen and (max-width: 599.98px){.megadropdown .megadropdown-content{grid-template-columns:1fr}}.megadropdown h2{display:none;margin-block:0 8px;font-weight:900}.megadropdown h2 a{text-decoration:none;display:none;font-weight:inherit;border-block:0}@media screen and (max-width: 1023.98px){.megadropdown h2{display:block;font-size:1.25rem}}@media screen and (max-width: 599.98px){.megadropdown h2{font-size:1.125rem}}.megadropdown post-list{display:grid;grid-row:span 2;grid-template-rows:subgrid;row-gap:0px}.megadropdown post-list>[role=list]{flex-direction:unset;display:unset}.megadropdown post-list>*{width:100%}.megadropdown post-list .list-title{display:flex;flex-direction:column-reverse;height:100%}.megadropdown post-list .list-title h3{font-size:20px;display:block;font-weight:900}.megadropdown post-list .list-title h3:not(:has(a)),.megadropdown post-list .list-title h3 a{padding:16px 12px 14px 8px}.megadropdown post-list .list-title h3:not(:has(a)){position:relative}.megadropdown post-list .list-title h3:not(:has(a))::before{content:\"\";background-color:#050400;inset-block-end:0;inset-inline-start:0;width:100%;height:2px;position:absolute}.megadropdown post-list .list-title h3 a{border-radius:0;text-decoration:none;font-size:inherit;display:flex;align-items:center;justify-content:space-between;min-height:53px;width:100%;min-width:100%;height:48px;padding-inline:8px 12px;gap:16px;font-weight:400;position:relative;height:unset;font-weight:900}.megadropdown post-list .list-title h3 a::before{content:\"\";background-color:#050400;bottom:0;width:100%;height:1px;position:absolute;left:0}.megadropdown post-list .list-title h3 a.active,.megadropdown post-list .list-title h3 a[aria-current=page],.megadropdown post-list .list-title h3 a[aria-expanded=true]{background-color:#050400;color:#fff}.megadropdown post-list .list-title h3 a:hover{background-color:#504f4b;color:#fff}.megadropdown post-list .list-title h3 a:hover::before{background-color:#504f4b}.megadropdown post-list .list-title h3 a::before{height:2px}@media screen and (max-width: 1023.98px){.megadropdown post-list .list-title h3{font-size:1rem}.megadropdown post-list .list-title h3:not(:has(a)),.megadropdown post-list .list-title h3 a{padding:14px 12px 12px 8px}}@media screen and (max-width: 599.98px){.megadropdown post-list .list-title h3{font-size:.875rem}}.megadropdown post-list-item>a{padding-block:13px 12px;padding-inline-start:8px;display:flex;text-decoration:none;width:100%;min-width:100%;height:auto;min-height:48px;white-space:normal;word-break:break-word}.megadropdown post-list-item>a:hover{border-block-width:0}@media screen and (min-width: 1024px){.megadropdown post-list-item>a{font-size:1.25rem}}@media screen and (max-width: 1023.98px){.megadropdown post-list-item>a{padding-block:12px 11px}}@media screen and (max-width: 599.98px){.megadropdown post-list-item>a{font-size:.875rem}}.megadropdown .back-button{display:none;margin-block-end:2rem}.megadropdown .back-button .btn{width:auto}@media screen and (max-width: 1023.98px){.megadropdown .back-button{order:-1;display:block}}.megadropdown .close-button{position:absolute;inset-block-start:1rem;inset-inline-end:1rem}@media screen and (max-width: 1023.98px){.megadropdown .close-button{display:none}}";
864
+ const postMegadropdownCss = "*,::before,::after{box-sizing:border-box}.megadropdown{position:absolute;inset-inline:0;overflow-y:auto;background-color:#fafafa;box-shadow:var(--post-device-elevation-300)}@media screen and (min-width: 1024px){.megadropdown{z-index:-1;inset-block-start:100%;max-height:calc(100vh - var(--post-header-height) - 3rem);padding:2rem 2.5rem 2.5rem}.megadropdown.slide-in{animation:slide-down 350ms forwards}.megadropdown.slide-out{animation:slide-up 350ms forwards}}@media screen and (max-width: 1023.98px){.megadropdown{z-index:1;inset-block-start:var(--post-header-navigation-current-inset);overscroll-behavior:contain;height:calc(min(var(--post-header-scroll-parent-height, 100dvh),100dvh) - var(--post-header-height));padding-inline:var(--post-burger-menu-padding-inline);padding-block:1.5rem;display:flex;flex-direction:column}}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.megadropdown{border-block-end:1px solid CanvasText}}.megadropdown-title{margin-block:0 1rem;font-weight:950}@media screen and (min-width: 600px)and (max-width: 1023.98px){.megadropdown-title{font-size:1.25rem}}@media screen and (min-width: 0)and (max-width: 599.98px){.megadropdown-title{font-size:1.125rem}}.back-button{display:inline-flex;position:relative;align-items:center;justify-content:center;max-width:100%;overflow:hidden;transition:opacity 250ms,border-color 250ms,background-color 250ms,color 250ms;border-width:var(--post-device-border-width-default);border-style:solid;border-radius:var(--post-device-border-radius-round);background-color:rgba(0,0,0,0);box-shadow:none;font-family:inherit;font-weight:var(--post-device-font-weight-bold);text-decoration:none;white-space:nowrap;cursor:pointer;min-height:var(--post-device-sizing-interactive-button-height-4);gap:var(--post-device-spacing-gap-inline-11);padding:0 var(--post-device-spacing-padding-inline-7);border-color:var(--post-scheme-color-interactive-button-tertiary-enabled-stroke);background-color:var(--post-scheme-color-interactive-button-tertiary-enabled-bg);color:var(--post-scheme-color-interactive-button-tertiary-enabled-fg);order:-1;width:fit-content;padding-inline:0}.back-button:hover{text-decoration:none}.back-button:disabled{border-style:var(--post-core-border-style-dash)}.back-button{outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}.back-button:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.back-button:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){.back-button:is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.back-button:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.back-button:is(a){color:LinkText;border:unset}.back-button:is(button){background-color:ButtonFace !important;border:1px solid ButtonBorder !important}.back-button:not(:disabled,.disabled):is(button):hover{background-color:Highlight !important}.back-button:not(:disabled,.disabled):is(button):hover>post-icon{color:HighlightText !important}}.back-button>post-icon{width:var(--post-device-sizing-interactive-button-icon-5);height:var(--post-device-sizing-interactive-button-icon-5)}.back-button:hover{border-color:var(--post-scheme-color-interactive-button-tertiary-hover-stroke);background-color:var(--post-scheme-color-interactive-button-tertiary-hover-bg);color:var(--post-scheme-color-interactive-button-tertiary-hover-fg)}@media screen and (min-width: 600px)and (max-width: 1023.98px){.back-button{margin-block-end:2rem}}@media screen and (min-width: 0)and (max-width: 599.98px){.back-button{margin-block-end:1.5rem}}.close-button{position:absolute;inset-block-start:1rem;inset-inline-end:1rem}@media screen and (max-width: 1023.98px){.close-button{display:none}}";
880
865
 
881
866
  const PostMegadropdown = class {
867
+ validateTextClose() {
868
+ breakpoints.checkRequiredAndType(this, 'textClose', 'string');
869
+ }
870
+ validateTextBack() {
871
+ breakpoints.checkRequiredAndType(this, 'textBack', 'string');
872
+ }
873
+ get megadropdownTrigger() {
874
+ const hostId = this.host.getAttribute('id');
875
+ return hostId ? document.querySelector(`post-megadropdown-trigger[for="${hostId}"]`) : null;
876
+ }
882
877
  constructor(hostRef) {
883
878
  index.registerInstance(this, hostRef);
884
879
  this.postToggleMegadropdown = index.createEvent(this, "postToggleMegadropdown");
880
+ this.currentAnimation = null;
881
+ this.isAnimating = false;
882
+ this.fsAnimationOptions = {
883
+ translate: -10,
884
+ duration: 350,
885
+ easing: 'headerEase',
886
+ };
885
887
  this.device = breakpoints.breakpoint.get('device');
886
888
  /**
887
889
  * Holds the current visibility state of the dropdown.
@@ -892,13 +894,17 @@ const PostMegadropdown = class {
892
894
  this.trigger = false;
893
895
  /** Holds the current animation class. */
894
896
  this.animationClass = null;
895
- this.handleClickOutside = (event) => {
897
+ this.handleClickOutside = async (event) => {
896
898
  if (this.device !== 'desktop')
897
899
  return;
898
900
  const target = event.target;
899
901
  if (this.host.contains(target)) {
900
902
  return;
901
903
  }
904
+ // Ignore clicks on the trigger or its contents to prevent running hide() twice
905
+ if (this.megadropdownTrigger.contains(target)) {
906
+ return;
907
+ }
902
908
  if (target instanceof HTMLElement) {
903
909
  const trigger = target.closest('post-megadropdown-trigger');
904
910
  if (trigger) {
@@ -908,14 +914,11 @@ const PostMegadropdown = class {
908
914
  }
909
915
  }
910
916
  }
911
- this.hide(false);
917
+ await this.hide(false);
912
918
  };
913
- }
914
- get megadropdownTrigger() {
915
- const hostId = this.host.getAttribute('id');
916
- return hostId
917
- ? document.querySelector(`post-megadropdown-trigger[for="${hostId}"] > button`)
918
- : null;
919
+ this.keyboardHandler = this.keyboardHandler.bind(this);
920
+ this.handleTabOutside = this.handleTabOutside.bind(this);
921
+ this.handleClickOutside = this.handleClickOutside.bind(this);
919
922
  }
920
923
  connectedCallback() {
921
924
  window.addEventListener('postBreakpoint:device', this.breakpointChange.bind(this));
@@ -924,16 +927,17 @@ const PostMegadropdown = class {
924
927
  this.getFocusableElements();
925
928
  }
926
929
  componentDidLoad() {
930
+ this.validateTextClose();
931
+ this.validateTextBack();
927
932
  this.checkInitialAriaCurrent();
928
933
  this.setupObserver();
929
934
  this.handleAriaCurrentChange([]);
930
935
  }
931
936
  disconnectedCallback() {
932
- this.removeListeners();
933
937
  window.removeEventListener('postBreakpoint:device', this.breakpointChange.bind(this));
934
- if (PostMegadropdown.activeDropdown === this) {
938
+ if (PostMegadropdown.activeDropdown === this)
935
939
  PostMegadropdown.activeDropdown = null;
936
- }
940
+ this.removeListeners();
937
941
  if (this.defaultSlotObserver) {
938
942
  this.defaultSlotObserver.disconnect();
939
943
  }
@@ -942,41 +946,70 @@ const PostMegadropdown = class {
942
946
  * Toggles the dropdown visibility based on its current state.
943
947
  */
944
948
  async toggle() {
945
- if (this.isVisible) {
946
- this.hide();
947
- }
948
- else {
949
- await this.show();
949
+ if (this.isAnimating) {
950
+ // If this is already animating towards a future state -> reverse intent
951
+ return this.isVisible ? this.show() : this.hide();
950
952
  }
953
+ return this.isVisible ? this.hide() : this.show();
951
954
  }
952
955
  /**
953
956
  * Displays the dropdown.
954
957
  */
955
958
  async show() {
959
+ if (this.device !== 'desktop') {
960
+ const trigger = this.megadropdownTrigger;
961
+ if (trigger)
962
+ this.megadropdownTitle = trigger.innerHTML;
963
+ }
956
964
  if (PostMegadropdown.activeDropdown && PostMegadropdown.activeDropdown !== this) {
957
965
  // Close the previously active dropdown without animation
958
966
  PostMegadropdown.activeDropdown.forceClose();
959
967
  }
960
- this.animationClass = 'slide-in';
968
+ this.cancelAnimation();
969
+ // Set the megadropdown visible and mark it as the active dropdown
961
970
  this.isVisible = true;
962
971
  PostMegadropdown.activeDropdown = this;
963
- this.postToggleMegadropdown.emit({ isVisible: this.isVisible });
964
- if (this.firstFocusableEl &&
965
- window.getComputedStyle(this.firstFocusableEl).display !== 'none') {
966
- this.firstFocusableEl.focus();
972
+ // Update trigger state
973
+ this.postToggleMegadropdown.emit({ isVisible: true });
974
+ try {
975
+ await this.animate('in');
976
+ this.focusFirst();
977
+ // After the megadropdown has finished entry animation
978
+ this.addListeners();
979
+ }
980
+ catch {
981
+ // Open animation was cancelled - reset state
982
+ this.removeListeners();
983
+ this.isVisible = false;
984
+ if (PostMegadropdown.activeDropdown === this)
985
+ PostMegadropdown.activeDropdown = null;
986
+ this.postToggleMegadropdown.emit({ isVisible: false, focusParent: true });
967
987
  }
968
- this.addListeners();
969
988
  }
970
989
  /**
971
990
  * Hides the dropdown with an animation.
972
991
  */
973
992
  async hide(focusParent = true, forceClose = false) {
974
- this.postToggleMegadropdown.emit({ isVisible: false, focusParent: focusParent });
975
993
  if (forceClose) {
976
994
  this.forceClose();
995
+ return;
977
996
  }
978
- else {
979
- this.animationClass = 'slide-out';
997
+ // Update trigger state
998
+ this.postToggleMegadropdown.emit({ isVisible: false, focusParent: focusParent });
999
+ try {
1000
+ await this.animate('out');
1001
+ // After the closing animation finishes set the megadropdown as non visible
1002
+ this.isVisible = false;
1003
+ this.removeListeners();
1004
+ if (PostMegadropdown.activeDropdown === this)
1005
+ PostMegadropdown.activeDropdown = null;
1006
+ }
1007
+ catch {
1008
+ // Closing animation was cancelled - reset state
1009
+ PostMegadropdown.activeDropdown = this;
1010
+ this.addListeners();
1011
+ this.isVisible = true;
1012
+ this.postToggleMegadropdown.emit({ isVisible: true, focusParent: false });
980
1013
  }
981
1014
  }
982
1015
  /**
@@ -985,68 +1018,79 @@ const PostMegadropdown = class {
985
1018
  async focusFirst() {
986
1019
  this.firstFocusableEl?.focus();
987
1020
  }
988
- breakpointChange(e) {
989
- this.device = e.detail;
990
- if (this.device === 'desktop' && this.isVisible) {
991
- this.animationClass = null;
992
- }
993
- }
994
1021
  /**
995
1022
  * Forces the dropdown to close without animation.
996
1023
  */
997
1024
  forceClose() {
998
- this.isVisible = false;
999
- this.animationClass = null;
1000
- this.postToggleMegadropdown.emit({ isVisible: this.isVisible, focusParent: false });
1001
1025
  this.removeListeners();
1026
+ this.postToggleMegadropdown.emit({ isVisible: false, focusParent: false });
1027
+ this.isVisible = false;
1002
1028
  }
1003
- handleAnimationEnd() {
1004
- if (this.animationClass === 'slide-out') {
1005
- this.isVisible = false;
1006
- this.animationClass = null;
1007
- PostMegadropdown.activeDropdown = null;
1008
- this.removeListeners();
1029
+ // Run the respective animation
1030
+ createAnimation(direction) {
1031
+ if (this.device === 'desktop') {
1032
+ return fadeSlide.fadeSlide(this.animatedContainer, direction, this.fsAnimationOptions);
1009
1033
  }
1034
+ return slide(this.animatedContainer, direction, {
1035
+ translate: 100,
1036
+ duration: 350,
1037
+ easing: direction === 'in' ? 'ease-in' : 'ease-out',
1038
+ });
1039
+ }
1040
+ async animate(direction) {
1041
+ this.cancelAnimation();
1042
+ this.currentAnimation = this.createAnimation(direction);
1043
+ // Flag isAnimating used to avoid toggle() de-sync
1044
+ this.isAnimating = true;
1045
+ await this.currentAnimation.finished;
1046
+ this.isAnimating = false;
1047
+ this.currentAnimation = null;
1048
+ }
1049
+ cancelAnimation() {
1050
+ this.currentAnimation?.cancel();
1051
+ this.currentAnimation = null;
1052
+ }
1053
+ breakpointChange(e) {
1054
+ this.device = e.detail;
1055
+ this.cancelAnimation();
1010
1056
  }
1011
1057
  addListeners() {
1012
- this.host.addEventListener('keydown', e => this.keyboardHandler(e));
1013
- document.addEventListener('keyup', e => this.handleTabOutside(e));
1058
+ this.host.addEventListener('keydown', this.keyboardHandler);
1059
+ document.addEventListener('keyup', this.handleTabOutside);
1014
1060
  document.addEventListener('mousedown', this.handleClickOutside);
1015
1061
  }
1016
1062
  removeListeners() {
1017
- this.host.removeEventListener('keydown', e => this.keyboardHandler(e));
1018
- document.removeEventListener('keyup', e => this.handleTabOutside(e));
1063
+ this.host.removeEventListener('keydown', this.keyboardHandler);
1064
+ document.removeEventListener('keyup', this.handleTabOutside);
1019
1065
  document.removeEventListener('mousedown', this.handleClickOutside);
1020
1066
  }
1021
1067
  getFocusableElements() {
1022
- const focusableEls = Array.from(this.host.querySelectorAll('post-list-item, h3, .back-button'));
1023
- const focusableChildren = focusableEls.flatMap(el => Array.from(getFocusableChildren.getFocusableChildren(el)));
1024
- // Check for an overview link
1025
- const overviewLink = this.host.querySelector('a[slot="megadropdown-overview-link"]');
1026
- if (overviewLink) {
1027
- focusableChildren.unshift(overviewLink);
1028
- }
1029
- this.firstFocusableEl = focusableChildren[0];
1030
- this.lastFocusableEl = focusableChildren[focusableChildren.length - 1];
1068
+ const focusableElements = [
1069
+ ...getFocusableChildren.getFocusableChildren(this.host),
1070
+ ...getFocusableChildren.getFocusableChildren(this.host.shadowRoot),
1071
+ ];
1072
+ this.firstFocusableEl = focusableElements[0];
1073
+ this.lastFocusableEl = focusableElements[focusableElements.length - 1];
1031
1074
  }
1032
1075
  // Loop through the focusable children
1033
1076
  keyboardHandler(e) {
1034
- if (e.key === 'Tab' && this.device !== 'desktop') {
1035
- if (e.shiftKey && document.activeElement === this.firstFocusableEl) {
1036
- // If back tab (TAB + Shift) and first element is focused, focus goes to the last element of the megadropdown
1037
- e.preventDefault();
1038
- this.lastFocusableEl.focus();
1039
- }
1040
- else if (!e.shiftKey && document.activeElement === this.lastFocusableEl) {
1041
- // If TAB and last element is focused, focus goes back to the first element of the megadropdown
1042
- e.preventDefault();
1043
- this.firstFocusableEl.focus();
1044
- }
1077
+ if (e.key !== 'Tab' || this.device === 'desktop')
1078
+ return;
1079
+ const activeElement = this.host.shadowRoot.activeElement || document.activeElement;
1080
+ if (e.shiftKey && activeElement === this.firstFocusableEl) {
1081
+ // If back tab (TAB + Shift) and first element is focused, focus goes to the last element of the megadropdown
1082
+ e.preventDefault();
1083
+ this.lastFocusableEl.focus();
1084
+ }
1085
+ else if (!e.shiftKey && activeElement === this.lastFocusableEl) {
1086
+ // If TAB and last element is focused, focus goes back to the first element of the megadropdown
1087
+ e.preventDefault();
1088
+ this.firstFocusableEl.focus();
1045
1089
  }
1046
1090
  }
1047
1091
  handleTabOutside(e) {
1048
1092
  if (e.key === 'Tab' && this.device === 'desktop') {
1049
- if (!this.host.contains(e.target)) {
1093
+ if (this.isVisible && !this.host.contains(e.target)) {
1050
1094
  this.hide(false);
1051
1095
  }
1052
1096
  }
@@ -1072,14 +1116,8 @@ const PostMegadropdown = class {
1072
1116
  */
1073
1117
  setTriggerActive(isActive) {
1074
1118
  const trigger = this.megadropdownTrigger;
1075
- if (!trigger)
1076
- return;
1077
- if (isActive) {
1078
- trigger.classList.add('active');
1079
- }
1080
- else {
1081
- trigger.classList.remove('active');
1082
- }
1119
+ if (trigger)
1120
+ trigger.setAttribute('active', isActive.toString());
1083
1121
  }
1084
1122
  /**
1085
1123
  * Updates the megadropdown trigger state when the megadropdown content changes.
@@ -1103,15 +1141,19 @@ const PostMegadropdown = class {
1103
1141
  }
1104
1142
  render() {
1105
1143
  const containerStyle = this.isVisible ? {} : { display: 'none' };
1106
- return (index.h(index.Host, { key: 'd111d8d93a9b64018f3df88813da8f6d1c65759e', version: _package.version }, index.h("div", { key: 'd7cb2b98624c9241108bc66cc11c15c0a2e7acf3', class: `megadropdown-container ${this.animationClass || ''}`, style: containerStyle, onAnimationEnd: () => this.handleAnimationEnd() }, index.h("div", { key: '9f0280b6f28f19ee7f9ba4707209b64b38759927', class: "megadropdown" }, index.h("slot", { key: '71f2521e1ab13406dd986c18a7c52e171148b0b0', name: "megadropdown-title" }), index.h("slot", { key: '148de1446aade76b074e155d07b70e775fc9612c', name: "megadropdown-overview-link" }), index.h("div", { key: '269c1e1db66acb7c274c720a9f715d29e875ef54', class: "megadropdown-content" }, index.h("slot", { key: '444040337c57e64bcc57f56415c4c40513ef0a5b' })), index.h("div", { key: 'f97d8c578ee19b5ba7d593e5d110e3b283255087', onClick: () => this.hide(true), class: "back-button" }, index.h("slot", { key: 'dc04da3a42714e2e8742ab8ed25bcc288a236294', name: "back-button" })), index.h("div", { key: '354eca51a5aef76d483a30e595bedfa95792d7ce', onClick: () => this.hide(true), class: "close-button" }, index.h("slot", { key: '28693622360c0da91f3051426be545852c5ec337', name: "close-button" }))))));
1144
+ return (index.h(index.Host, { key: 'f099891f24c60ca48ddceeadf754debdf3d8bff1', version: _package.version }, index.h("div", { key: 'd964a72ec31632a6061f8c656fcc171bc584b764', ref: el => (this.animatedContainer = el), class: "megadropdown", style: containerStyle }, this.device !== 'desktop' && this.megadropdownTitle && (index.h("p", { key: 'b04d8fb83e5658365a1d722572d82237a7bf4eba', class: "megadropdown-title" }, this.megadropdownTitle)), index.h("div", { key: 'b7e654a69375c4e8f3af2e8ff65f0a5b7b2ee2cd', class: "megadropdown-content" }, index.h("slot", { key: '9608aa8b0d9458b593917e66e3fd4db9c447cac2' })), this.device === 'desktop' ? (index.h("post-closebutton", { onClick: () => this.hide(true), class: "close-button" }, this.textClose)) : (index.h("button", { onClick: () => this.hide(true), class: "back-button" }, index.h("post-icon", { name: "arrowleft" }), this.textBack)))));
1107
1145
  }
1108
1146
  get host() { return index.getElement(this); }
1147
+ static get watchers() { return {
1148
+ "textClose": ["validateTextClose"],
1149
+ "textBack": ["validateTextBack"]
1150
+ }; }
1109
1151
  };
1110
1152
  /** Tracks the currently active dropdown instance. */
1111
1153
  PostMegadropdown.activeDropdown = null;
1112
1154
  PostMegadropdown.style = postMegadropdownCss;
1113
1155
 
1114
- const postMegadropdownTriggerCss = "post-megadropdown-trigger{width:100%;position:relative;z-index:3}@media screen and (max-width: 1023.98px){post-megadropdown-trigger{z-index:4}}";
1156
+ const postMegadropdownTriggerCss = "button{display:inline-flex;position:relative;align-items:center;justify-content:center;max-width:100%;overflow:hidden;transition:opacity 250ms,border-color 250ms,background-color 250ms,color 250ms;border-width:var(--post-device-border-width-default);border-style:solid;border-radius:var(--post-device-border-radius-round);background-color:rgba(0,0,0,0);box-shadow:none;font-family:inherit;font-weight:var(--post-device-font-weight-bold);text-decoration:none;white-space:nowrap;cursor:pointer;border:unset;font-weight:unset;display:flex;padding:.25rem .625rem;gap:.375rem;font-size:1rem;border-color:var(--post-scheme-color-interactive-button-tertiary-enabled-stroke);background-color:var(--post-scheme-color-interactive-button-tertiary-enabled-bg);color:var(--post-scheme-color-interactive-button-tertiary-enabled-fg)}button:hover{text-decoration:none}button:disabled{border-style:var(--post-core-border-style-dash)}button{outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}button:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){button:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){button:is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){button:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){button:is(a){color:LinkText;border:unset}button:is(button){background-color:ButtonFace !important;border:1px solid ButtonBorder !important}button:not(:disabled,.disabled):is(button):hover{background-color:Highlight !important}button:not(:disabled,.disabled):is(button):hover>post-icon{color:HighlightText !important}}button:hover{border-color:var(--post-scheme-color-interactive-button-tertiary-hover-stroke);background-color:var(--post-scheme-color-interactive-button-tertiary-hover-bg);color:var(--post-scheme-color-interactive-button-tertiary-hover-fg)}button:is([aria-current],[aria-pressed=true],[aria-expanded=true],.active){box-shadow:var(--post-device-elevation-100);border-color:var(--post-scheme-color-interactive-button-primary-enabled-stroke);background-color:var(--post-scheme-color-interactive-button-primary-enabled-bg);color:var(--post-scheme-color-interactive-button-primary-enabled-fg)}button:is([aria-current],[aria-pressed=true],[aria-expanded=true],.active):hover{border-color:var(--post-scheme-color-interactive-button-primary-hover-stroke);background-color:var(--post-scheme-color-interactive-button-primary-hover-bg);color:var(--post-scheme-color-interactive-button-primary-hover-fg)}button{--post-nav-item-border-width:1px;width:100%;justify-content:start;position:relative;padding:.75rem .75rem calc(.75rem - var(--post-nav-item-border-width)) .5rem;gap:1rem;border-radius:0;line-height:1.5;outline-color:currentColor !important;height:100%}button::before{content:\"\";background-color:#050400;position:absolute;inset-inline:0;inset-block-end:0;height:var(--post-nav-item-border-width)}button:hover{border-color:var(--post-scheme-color-interactive-button-primary-hover-stroke);background-color:var(--post-scheme-color-interactive-button-primary-hover-bg);color:var(--post-scheme-color-interactive-button-primary-hover-fg)}button:hover::before{background-color:rgba(0,0,0,0)}button:is([aria-current],[aria-pressed=true],[aria-expanded=true],.active){box-shadow:none}button{outline-offset:calc(\n -2px - var(--post-device-border-width-focus)\n ) !important}button>post-icon:where(:last-child){margin-inline-start:auto}@media screen and (min-width: 0)and (max-width: 599.98px){button{padding:calc(.5rem + 1.5px) .75rem calc(.5rem + 1.5px - var(--post-nav-item-border-width)) .5rem;gap:.5rem;font-size:.875rem}button>post-icon{font-size:1rem}}@media screen and (min-width: 600px)and (max-width: 1023.98px){button>post-icon{font-size:1.5rem}}@media screen and (min-width: 1024px){button{padding:1rem .75rem;gap:.5rem}button::before{content:unset}}:host{position:relative;display:inline-block}button post-icon{transition:transform 250ms cubic-bezier(0.4, 0, 0.2, 1)}button:is([aria-current],[aria-pressed=true],[aria-expanded=true]) post-icon{transform:rotate(180deg)}button>span{position:relative}button>span>span[aria-hidden]{font-weight:700;visibility:hidden}button>span>span:not([aria-hidden]){position:absolute;inset:0}@media screen and (min-width: 1024px){button:is([aria-current],[aria-pressed=true],[aria-expanded=true],.active){font-weight:700}}@media screen and (max-width: 1023.98px){button post-icon{margin-inline-start:auto;transform:rotate(-90deg) !important}}";
1115
1157
 
1116
1158
  var __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1117
1159
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -1124,101 +1166,85 @@ var __decorate$1 = (undefined && undefined.__decorate) || function (decorators,
1124
1166
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1125
1167
  };
1126
1168
  const PostMegadropdownTrigger = class {
1169
+ validateFor() {
1170
+ breakpoints.checkRequiredAndType(this, 'for', 'string');
1171
+ }
1127
1172
  constructor(hostRef) {
1128
1173
  index.registerInstance(this, hostRef);
1174
+ this.mutationObserver = new MutationObserver(this.cloneSlottedButton.bind(this));
1175
+ this.isMegadropdownExpanded = false;
1176
+ this.slottedContent = null;
1129
1177
  /**
1130
- * Manages the accessibility attribute `aria-expanded` to indicate whether the associated mega dropdown is expanded or collapsed.
1131
- */
1132
- this.ariaExpanded = false;
1133
- /**
1134
- * Reference to the slotted button within the trigger, if present.
1135
- * Used to manage click and key events for mega dropdown control.
1136
- */
1137
- this.slottedButton = null;
1138
- /**
1139
- * Tracks whether this trigger's dropdown was expanded before a state change.
1140
- * Used to determine if this trigger should handle focus when its dropdown closes.
1178
+ * Sets the trigger state to be active or inactive.
1141
1179
  */
1142
- this.wasExpanded = false;
1143
- this.handleKeyDown = (event) => {
1144
- if (event.key === 'Enter' || event.key === ' ') {
1145
- event.preventDefault();
1146
- this.handleToggle();
1147
- if (this.megadropdown && !this.ariaExpanded) {
1148
- setTimeout(() => this.megadropdown.focusFirst(), 100);
1149
- }
1150
- }
1151
- };
1152
- this.handleToggleMegadropdown = (event) => {
1153
- if (event.target.id === this.for) {
1154
- this.ariaExpanded = event.detail.isVisible;
1155
- // Focus on the trigger parent of the dropdown after it's closed if the close button had been clicked
1156
- if (this.wasExpanded && !this.ariaExpanded && event.detail.focusParent) {
1157
- setTimeout(() => {
1158
- this.slottedButton?.focus();
1159
- }, 100);
1160
- }
1161
- this.wasExpanded = this.ariaExpanded;
1162
- if (this.slottedButton) {
1163
- this.slottedButton.setAttribute('aria-expanded', this.ariaExpanded.toString());
1164
- }
1165
- }
1166
- };
1180
+ this.active = false;
1181
+ this.onMegadropdownToggled = this.onMegadropdownToggled.bind(this);
1167
1182
  }
1168
- /**
1169
- * Watch for changes to the `for` property to validate its type and ensure it is a string.
1170
- * @param forValue - The new value of the `for` property.
1171
- */
1172
- validateControlFor() {
1173
- index$1.checkRequiredAndType(this, 'for', 'string');
1183
+ connectedCallback() {
1184
+ this.mutationObserver.observe(this.host, { childList: true, subtree: true });
1185
+ }
1186
+ componentWillLoad() {
1187
+ this.cloneSlottedButton();
1188
+ }
1189
+ componentDidLoad() {
1190
+ this.validateFor();
1191
+ // Check if the mega dropdown attached to the trigger is expanded or not
1192
+ if (environment.IS_BROWSER)
1193
+ document.addEventListener('postToggleMegadropdown', this.onMegadropdownToggled);
1194
+ }
1195
+ disconnectedCallback() {
1196
+ document.removeEventListener('postToggleMegadropdown', this.onMegadropdownToggled);
1197
+ }
1198
+ cloneSlottedButton() {
1199
+ this.slottedContent = this.host.innerHTML;
1174
1200
  }
1175
1201
  get megadropdown() {
1176
1202
  const ref = document.getElementById(this.for);
1177
- return ref && ref.localName === 'post-megadropdown'
1178
- ? ref
1179
- : null;
1180
- }
1181
- handleToggle() {
1182
- if (this.megadropdown) {
1183
- this.megadropdown.toggle();
1184
- }
1185
- else {
1203
+ if (ref?.localName !== 'post-megadropdown') {
1186
1204
  console.warn(`No post-megadropdown found with ID: ${this.for}`);
1205
+ return null;
1187
1206
  }
1207
+ return ref;
1188
1208
  }
1189
- componentDidLoad() {
1190
- this.validateControlFor();
1191
- // Check if the mega dropdown attached to the trigger is expanded or not
1192
- document.addEventListener('postToggleMegadropdown', this.handleToggleMegadropdown);
1193
- this.slottedButton = this.host.querySelector('button');
1194
- if (this.slottedButton) {
1195
- this.slottedButton.setAttribute('aria-haspopup', 'menu');
1196
- this.slottedButton.addEventListener('click', () => {
1197
- this.handleToggle();
1198
- });
1199
- this.slottedButton.addEventListener('keydown', this.handleKeyDown);
1200
- }
1201
- else {
1202
- console.warn('No button found within post-megadropdown-trigger');
1203
- }
1209
+ onClick() {
1210
+ this.megadropdown?.toggle();
1204
1211
  }
1205
- disconnectedCallback() {
1206
- document.removeEventListener('postToggleMegadropdown', this.handleToggleMegadropdown);
1212
+ onKeyDown(event) {
1213
+ if (event.key !== 'Enter' && event.key !== ' ')
1214
+ return;
1215
+ const megadropdown = this.megadropdown;
1216
+ if (!megadropdown)
1217
+ return;
1218
+ event.preventDefault();
1219
+ this.megadropdown.toggle();
1220
+ }
1221
+ onMegadropdownToggled(event) {
1222
+ if (event.target.id === this.for) {
1223
+ const wasMegadropdownExpanded = this.isMegadropdownExpanded;
1224
+ this.isMegadropdownExpanded = event.detail.isVisible;
1225
+ const haveBeenClosed = wasMegadropdownExpanded && !this.isMegadropdownExpanded;
1226
+ if (!haveBeenClosed || !event.detail.focusParent)
1227
+ return;
1228
+ // Focus on the trigger parent of the dropdown after it's closed if the close button had been clicked
1229
+ setTimeout(() => {
1230
+ this.interactiveButton.focus();
1231
+ }, 100);
1232
+ }
1207
1233
  }
1208
1234
  render() {
1209
- return (index.h(index.Host, { key: '838bff4fe3feac679b522c2f7a166ac7aa5c2bf9', "data-version": _package.version, "tab-index": "-1" }, index.h("button", { key: 'b5a90298610863e46447198642b5a27b8702aefc' }, index.h("slot", { key: '14c83456eb056f48143edcd2c532bca017c60171' }))));
1235
+ return (index.h(index.Host, { key: '73479c3c80cda63b9f82ec584c962ffa53b7b85c', "data-version": _package.version }, index.h("button", { key: 'e76d5077f1ac2e6c16e365799ea79f6985ec0d14', ref: el => (this.interactiveButton = el), type: "button", "aria-haspopup": "menu", "aria-expanded": this.isMegadropdownExpanded.toString(), onClick: this.onClick.bind(this), onKeyDown: this.onKeyDown.bind(this), class: { active: this.active } }, index.h("span", { key: 'a60b5838443ccd75fc08e07f791cb4ef088343f3' }, index.h("span", { key: 'da180bb66704712c0cba7b575ba260765a0df36f' }, index.h("slot", { key: 'c27dbc706a82fc49acb3414855e0e57d1dac0923' })), index.h("span", { key: '87ebe5fdcba5a160b2698965284fc5ce66d0fa90', "aria-hidden": "true", innerHTML: this.slottedContent })), index.h("post-icon", { key: '76f620188ebc3ad60b04523ea70ee4f3b642a2e8', name: "chevrondown" }))));
1210
1236
  }
1211
1237
  get host() { return index.getElement(this); }
1212
1238
  static get watchers() { return {
1213
- "for": ["validateControlFor"]
1239
+ "for": ["validateFor"]
1214
1240
  }; }
1215
1241
  };
1216
1242
  __decorate$1([
1217
1243
  eventFrom.EventFrom('post-megadropdown', { ignoreNestedComponents: false })
1218
- ], PostMegadropdownTrigger.prototype, "handleToggleMegadropdown", void 0);
1244
+ ], PostMegadropdownTrigger.prototype, "onMegadropdownToggled", null);
1219
1245
  PostMegadropdownTrigger.style = postMegadropdownTriggerCss;
1220
1246
 
1221
- const postMenuCss = ":host{display:block}:where([part=menu]){display:flex;flex-direction:column;padding-block:.5rem}::slotted([slot=header]){margin-top:-0.5rem;padding:1rem;display:flex;align-items:center;gap:.5rem;border-block-end:1px solid #050400;font-weight:700}@media screen and (max-width: 1023.98px){::slotted([slot=header]){padding:.75rem 1rem}}@media screen and (max-width: 779.98px){::slotted([slot=header]){padding:.5rem 1rem}}";
1247
+ const postMenuCss = ":host{display:block}:where([part=post-menu]){display:flex;flex-direction:column;padding-block:.5rem}::slotted([slot=header]){margin-top:-0.5rem;padding:1rem;display:flex;align-items:center;gap:.5rem;border-block-end:1px solid #050400;font-weight:700}@media screen and (max-width: 1023.98px){::slotted([slot=header]){padding:.75rem 1rem}}@media screen and (max-width: 779.98px){::slotted([slot=header]){padding:.5rem 1rem}}";
1222
1248
 
1223
1249
  var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1224
1250
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -1267,35 +1293,6 @@ const PostMenu = class {
1267
1293
  this.controlKeyDownHandler(e);
1268
1294
  }
1269
1295
  };
1270
- this.handlePostShown = (event) => {
1271
- // Only for the first open
1272
- if (event.detail.first) {
1273
- // Add "menu" and "menuitem" aria roles and aria-label
1274
- this.host.setAttribute('role', 'menu');
1275
- const menuItems = this.getSlottedItems();
1276
- for (const item of menuItems) {
1277
- item.setAttribute('role', 'menuitem');
1278
- }
1279
- if (this.label)
1280
- this.host.setAttribute('aria-label', this.label);
1281
- }
1282
- };
1283
- this.handlePostToggled = (event) => {
1284
- this.isVisible = event.detail.isOpen;
1285
- this.toggleMenu.emit(this.isVisible);
1286
- if (this.isVisible) {
1287
- this.lastFocusedElement = this.root?.activeElement;
1288
- requestAnimationFrame(() => {
1289
- const menuItems = this.getSlottedItems();
1290
- if (menuItems.length > 0) {
1291
- menuItems[0].focus();
1292
- }
1293
- });
1294
- }
1295
- else if (this.lastFocusedElement) {
1296
- this.lastFocusedElement.focus();
1297
- }
1298
- };
1299
1296
  this.handleClick = (e) => {
1300
1297
  const target = e.target;
1301
1298
  if (['BUTTON', 'A', 'INPUT', 'SELECT', 'TEXTAREA'].includes(target.tagName)) {
@@ -1304,10 +1301,10 @@ const PostMenu = class {
1304
1301
  };
1305
1302
  }
1306
1303
  validatePlacement() {
1307
- index$1.checkEmptyOrOneOf(this, 'placement', placement.PLACEMENT_TYPES);
1304
+ breakpoints.checkEmptyOrOneOf(this, 'placement', placement.PLACEMENT_TYPES);
1308
1305
  }
1309
1306
  validateLabel() {
1310
- index$1.checkRequiredAndType(this, 'label', 'string');
1307
+ breakpoints.checkRequiredAndType(this, 'label', 'string');
1311
1308
  }
1312
1309
  connectedCallback() {
1313
1310
  this.root = getRoot.getRoot(this.host);
@@ -1357,6 +1354,35 @@ const PostMenu = class {
1357
1354
  console.error('hide: popoverRef is null or undefined');
1358
1355
  }
1359
1356
  }
1357
+ handlePostShown(event) {
1358
+ // Only for the first open
1359
+ if (event.detail.first) {
1360
+ // Add "menu" and "menuitem" aria roles and aria-label
1361
+ this.host.setAttribute('role', 'menu');
1362
+ const menuItems = this.getSlottedItems();
1363
+ for (const item of menuItems) {
1364
+ item.setAttribute('role', 'menuitem');
1365
+ }
1366
+ if (this.label)
1367
+ this.host.setAttribute('aria-label', this.label);
1368
+ }
1369
+ }
1370
+ handlePostToggled(event) {
1371
+ this.isVisible = event.detail.isOpen;
1372
+ this.toggleMenu.emit(this.isVisible);
1373
+ if (this.isVisible) {
1374
+ this.lastFocusedElement = this.root?.activeElement;
1375
+ requestAnimationFrame(() => {
1376
+ const menuItems = this.getSlottedItems();
1377
+ if (menuItems.length > 0) {
1378
+ menuItems[0].focus();
1379
+ }
1380
+ });
1381
+ }
1382
+ else if (this.lastFocusedElement) {
1383
+ this.lastFocusedElement.focus();
1384
+ }
1385
+ }
1360
1386
  controlKeyDownHandler(e) {
1361
1387
  const menuItems = this.getSlottedItems();
1362
1388
  if (!menuItems.length) {
@@ -1404,7 +1430,7 @@ const PostMenu = class {
1404
1430
  .flatMap(el => Array.from(getFocusableChildren.getFocusableChildren(el))));
1405
1431
  }
1406
1432
  render() {
1407
- return (index.h(index.Host, { key: 'eef3d3cdf2553c2627ddf580a95c70f00c02d388', "data-version": _package.version }, index.h("post-popovercontainer", { key: '27c3341bec9d4ee98b59f70e902913f03954c32c', onPostShow: this.handlePostShown, onPostToggle: this.handlePostToggled, placement: this.placement, ref: e => (this.popoverRef = e) }, index.h("div", { key: 'ef6c0ab8b6de380c23f6562a3d0ba34d9eaace98', part: "menu" }, index.h("slot", { key: 'edca1d3e9ab11d016ba18baf9f8d6aa65bb71958', name: "header" }), index.h("slot", { key: '40596847f9bac957a5992364997f0bcd8fd6a704' })))));
1433
+ return (index.h(index.Host, { key: '08285b17608e5bc3133a3da6015a5a0d4de6ec29', "data-version": _package.version }, index.h("post-popovercontainer", { key: '17e45869b5e76cdd9bd43ca77b2f0b3876462014', onPostShow: this.handlePostShown.bind(this), onPostToggle: this.handlePostToggled.bind(this), placement: this.placement, ref: e => (this.popoverRef = e) }, index.h("div", { key: 'e2486aa099ffc8ac59885a0971ebb13649a49a35', part: "post-menu" }, index.h("slot", { key: '9f0e05f211fe18cf5beed8e1b33bde26d4974e24', name: "header" }), index.h("slot", { key: '971ac8ad433467a2ebe2429574cb10dbdadbcf25' })))));
1408
1434
  }
1409
1435
  get host() { return index.getElement(this); }
1410
1436
  static get watchers() { return {
@@ -1414,10 +1440,10 @@ const PostMenu = class {
1414
1440
  };
1415
1441
  __decorate([
1416
1442
  eventFrom.EventFrom('post-popovercontainer')
1417
- ], PostMenu.prototype, "handlePostShown", void 0);
1443
+ ], PostMenu.prototype, "handlePostShown", null);
1418
1444
  __decorate([
1419
1445
  eventFrom.EventFrom('post-popovercontainer')
1420
- ], PostMenu.prototype, "handlePostToggled", void 0);
1446
+ ], PostMenu.prototype, "handlePostToggled", null);
1421
1447
  PostMenu.style = postMenuCss;
1422
1448
 
1423
1449
  const postMenuTriggerCss = ":host{display:inline-block}";
@@ -1446,7 +1472,7 @@ const PostMenuTrigger = class {
1446
1472
  * @param forValue - The new value of the `for` property.
1447
1473
  */
1448
1474
  validateControlFor() {
1449
- index$1.checkRequiredAndType(this, 'for', 'string');
1475
+ breakpoints.checkRequiredAndType(this, 'for', 'string');
1450
1476
  }
1451
1477
  get menu() {
1452
1478
  const ref = this.root.getElementById(this.for);
@@ -1495,7 +1521,7 @@ const PostMenuTrigger = class {
1495
1521
  }
1496
1522
  }
1497
1523
  render() {
1498
- return (index.h(index.Host, { key: 'fc962802089652073c19cc35a511e48b0cab43b7', "data-version": _package.version, "tab-index": "-1" }, index.h("slot", { key: 'd3a8b40c0a88c44092b56ca4aa1c74f880bebb20' })));
1524
+ return (index.h(index.Host, { key: '3ef7e372c9c655bf1da5d5a7d4bca6925a010f65', "data-version": _package.version, "tab-index": "-1" }, index.h("slot", { key: '771db943ad5aa639c325f055ba6f9d763bf4256d' })));
1499
1525
  }
1500
1526
  get host() { return index.getElement(this); }
1501
1527
  static get watchers() { return {
@@ -4225,7 +4251,7 @@ function popIn(el) {
4225
4251
  });
4226
4252
  }
4227
4253
 
4228
- const postPopovercontainerCss = "@layer polyfill{@supports not selector(:popover-open){[popover]:not(.\\:popover-open){display:none}}}:where(post-popovercontainer){background-color:rgba(0,0,0,0);border:rgba(0,0,0,0);position:fixed;margin:0;padding:0;overflow:visible}:where(post-popovercontainer)>div{box-shadow:var(--post-device-elevation-300);width:max-content;max-width:100%;color:var(--post-current-fg);background-color:var(--post-current-bg);border-radius:4px}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:where(post-popovercontainer)>div{border:2px solid rgba(0,0,0,0)}}:where(post-popovercontainer)[tooltip]{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}:where(post-popovercontainer)[safe-space]::after{content:\"\";position:fixed;inset:0;z-index:-1;pointer-events:auto}:where(post-popovercontainer)[safe-space=triangle]::after{clip-path:polygon(var(--post-safe-space-cursor-x, 0) var(--post-safe-space-cursor-y, 0), var(--post-safe-space-popover-x-start, var(--post-safe-space-popover-x, 0)) var(--post-safe-space-popover-y, var(--post-safe-space-popover-y-start, 0)), var(--post-safe-space-popover-x-end, var(--post-safe-space-popover-x, 0)) var(--post-safe-space-popover-y, var(--post-safe-space-popover-y-end, 0)))}:where(post-popovercontainer)[safe-space=trapezoid]::after{clip-path:polygon(var(--post-safe-space-trigger-x-start, var(--post-safe-space-trigger-x, 0)) var(--post-safe-space-trigger-y, var(--post-safe-space-trigger-y-start, 0)), var(--post-safe-space-trigger-x-end, var(--post-safe-space-trigger-x, 0)) var(--post-safe-space-trigger-y, var(--post-safe-space-trigger-y-end, 0)), var(--post-safe-space-popover-x-end, var(--post-safe-space-popover-x, 0)) var(--post-safe-space-popover-y, var(--post-safe-space-popover-y-end, 0)), var(--post-safe-space-popover-x-start, var(--post-safe-space-popover-x, 0)) var(--post-safe-space-popover-y, var(--post-safe-space-popover-y-start, 0)))}:where(post-popovercontainer):not(:has(.arrow))>div{box-shadow:var(--post-device-elevation-300)}:where(post-popovercontainer):has(.arrow)>div{filter:drop-shadow(1px 2px 3px hsla(216, 9%, 11%, 0.15)) drop-shadow(2px 4px 6px hsla(225, 17%, 9%, 0.15)) drop-shadow(4px 8px 12px hsla(225, 7%, 11%, 0.15))}:where(post-popovercontainer):has(.arrow.top)>div{filter:drop-shadow(0px -2px 3px hsla(216, 9%, 11%, 0.15)) drop-shadow(0px -4px 6px hsla(225, 17%, 9%, 0.15)) drop-shadow(0px -8px 12px hsla(225, 7%, 11%, 0.15))}:where(post-popovercontainer):has(.arrow.left)>div{filter:drop-shadow(-2px 0px 3px hsla(216, 9%, 11%, 0.15)) drop-shadow(-4px 0px 6px hsla(225, 17%, 9%, 0.15)) drop-shadow(-8px 0px 12px hsla(225, 7%, 11%, 0.15))}:where(post-popovercontainer):has(.arrow.right)>div{filter:drop-shadow(2px 0px 3px hsla(216, 9%, 11%, 0.15)) drop-shadow(4px 0px 6px hsla(225, 17%, 9%, 0.15)) drop-shadow(8px 0px 12px hsla(225, 7%, 11%, 0.15))}:where(post-popovercontainer) .arrow{position:absolute;width:.5825rem;height:.5825rem;background-color:inherit;rotate:45deg;pointer-events:none;z-index:-1}:where(post-popovercontainer) .arrow.top{border-block-start:2px solid rgba(0,0,0,0);border-inline-start:2px solid rgba(0,0,0,0)}:where(post-popovercontainer) .arrow.right{border-block-start:2px solid rgba(0,0,0,0);border-inline-end:2px solid rgba(0,0,0,0)}:where(post-popovercontainer) .arrow.left{border-block-end:2px solid rgba(0,0,0,0);border-inline-start:2px solid rgba(0,0,0,0)}:where(post-popovercontainer) .arrow.bottom{border-block-end:2px solid rgba(0,0,0,0);border-inline-end:2px solid rgba(0,0,0,0)}";
4254
+ const postPopovercontainerCss = "@layer polyfill{@supports not selector(:popover-open){[popover]:not(.\\:popover-open){display:none}}}:where(post-popovercontainer){background-color:rgba(0,0,0,0);border:rgba(0,0,0,0);position:fixed;margin:0;padding:0;overflow:visible}:where(post-popovercontainer)>div{box-shadow:var(--post-device-elevation-300);width:max-content;max-width:100%;color:var(--post-current-fg);background-color:var(--post-current-bg);border-radius:4px}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:where(post-popovercontainer)>div{border:2px solid rgba(0,0,0,0)}}:where(post-popovercontainer)[tooltip]{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}:where(post-popovercontainer)[safe-space]::after{content:\"\";position:fixed;inset:0;z-index:-1;pointer-events:auto}:where(post-popovercontainer)[safe-space=triangle]::after{clip-path:polygon(var(--post-safe-space-cursor-x, 0) var(--post-safe-space-cursor-y, 0), var(--post-safe-space-popover-x-start, var(--post-safe-space-popover-x, 0)) var(--post-safe-space-popover-y, var(--post-safe-space-popover-y-start, 0)), var(--post-safe-space-popover-x-end, var(--post-safe-space-popover-x, 0)) var(--post-safe-space-popover-y, var(--post-safe-space-popover-y-end, 0)))}:where(post-popovercontainer)[safe-space=trapezoid]::after{clip-path:polygon(var(--post-safe-space-trigger-x-start, var(--post-safe-space-trigger-x, 0)) var(--post-safe-space-trigger-y, var(--post-safe-space-trigger-y-start, 0)), var(--post-safe-space-trigger-x-end, var(--post-safe-space-trigger-x, 0)) var(--post-safe-space-trigger-y, var(--post-safe-space-trigger-y-end, 0)), var(--post-safe-space-popover-x-end, var(--post-safe-space-popover-x, 0)) var(--post-safe-space-popover-y, var(--post-safe-space-popover-y-end, 0)), var(--post-safe-space-popover-x-start, var(--post-safe-space-popover-x, 0)) var(--post-safe-space-popover-y, var(--post-safe-space-popover-y-start, 0)))}:where(post-popovercontainer):not(:has(.arrow))>div{box-shadow:var(--post-device-elevation-300)}:where(post-popovercontainer):has(.arrow)>div{filter:drop-shadow(1px 2px 3px hsla(216, 9%, 11%, 0.15)) drop-shadow(2px 4px 6px hsla(225, 17%, 9%, 0.15)) drop-shadow(4px 8px 12px hsla(225, 7%, 11%, 0.15))}:where(post-popovercontainer):has(.arrow.top)>div{filter:drop-shadow(0px -2px 3px hsla(216, 9%, 11%, 0.15)) drop-shadow(0px -4px 6px hsla(225, 17%, 9%, 0.15)) drop-shadow(0px -8px 12px hsla(225, 7%, 11%, 0.15))}:where(post-popovercontainer):has(.arrow.left)>div{filter:drop-shadow(-2px 0px 3px hsla(216, 9%, 11%, 0.15)) drop-shadow(-4px 0px 6px hsla(225, 17%, 9%, 0.15)) drop-shadow(-8px 0px 12px hsla(225, 7%, 11%, 0.15))}:where(post-popovercontainer):has(.arrow.right)>div{filter:drop-shadow(2px 0px 3px hsla(216, 9%, 11%, 0.15)) drop-shadow(4px 0px 6px hsla(225, 17%, 9%, 0.15)) drop-shadow(8px 0px 12px hsla(225, 7%, 11%, 0.15))}:where(post-popovercontainer) .arrow{--arrow-size: 0.5825rem;position:absolute;width:.5825rem;height:.5825rem;background-color:inherit;rotate:45deg;pointer-events:none;z-index:-1}:where(post-popovercontainer) .arrow[dynamic-placement=top]{border-bottom-right-radius:2px}:where(post-popovercontainer) .arrow[dynamic-placement=right]{border-bottom-left-radius:2px}:where(post-popovercontainer) .arrow[dynamic-placement=bottom]{border-top-left-radius:2px}:where(post-popovercontainer) .arrow[dynamic-placement=left]{border-top-right-radius:2px}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:where(post-popovercontainer) .arrow[dynamic-placement=top]{border-block-end:2px solid rgba(0,0,0,0);border-inline-end:2px solid rgba(0,0,0,0);bottom:-0.3796735336rem !important}:where(post-popovercontainer) .arrow[dynamic-placement=left]{border-block-start:2px solid rgba(0,0,0,0);border-inline-end:2px solid rgba(0,0,0,0);right:-0.3796735336rem !important}:where(post-popovercontainer) .arrow[dynamic-placement=right]{border-block-end:2px solid rgba(0,0,0,0);border-inline-start:2px solid rgba(0,0,0,0);left:-0.3796735336rem !important}:where(post-popovercontainer) .arrow[dynamic-placement=bottom]{border-block-start:2px solid rgba(0,0,0,0);border-inline-start:2px solid rgba(0,0,0,0);top:-0.3796735336rem !important}}";
4229
4255
 
4230
4256
  const PostPopovercontainer = class {
4231
4257
  constructor(hostRef) {
@@ -4254,20 +4280,16 @@ const PostPopovercontainer = class {
4254
4280
  * Whether or not to display a little pointer arrow
4255
4281
  */
4256
4282
  this.arrow = false;
4257
- /**
4258
- * Whether or not the popovercontainer should close when user clicks outside of it
4259
- */
4260
- this.manualClose = false;
4261
4283
  this.currentAnimation = null;
4262
4284
  }
4263
4285
  validatePlacement() {
4264
- index$1.checkEmptyOrOneOf(this, 'placement', placement.PLACEMENT_TYPES);
4286
+ breakpoints.checkEmptyOrOneOf(this, 'placement', placement.PLACEMENT_TYPES);
4265
4287
  }
4266
4288
  validateEdgeGap() {
4267
- index$1.checkEmptyOrType(this, 'edgeGap', 'number');
4289
+ breakpoints.checkEmptyOrType(this, 'edgeGap', 'number');
4268
4290
  }
4269
4291
  validateSafeSpace() {
4270
- index$1.checkEmptyOrOneOf(this, 'safeSpace', ['triangle', 'trapezoid']);
4292
+ breakpoints.checkEmptyOrOneOf(this, 'safeSpace', ['triangle', 'trapezoid']);
4271
4293
  }
4272
4294
  /**
4273
4295
  * Updates cursor position for safe space feature when popover is open.
@@ -4279,7 +4301,7 @@ const PostPopovercontainer = class {
4279
4301
  this.host.style.setProperty('--post-safe-space-cursor-y', `${event.clientY}px`);
4280
4302
  }
4281
4303
  connectedCallback() {
4282
- if (breakpoints.IS_BROWSER && !isSupported()) {
4304
+ if (environment.IS_BROWSER && !isSupported()) {
4283
4305
  apply();
4284
4306
  }
4285
4307
  }
@@ -4303,10 +4325,35 @@ const PostPopovercontainer = class {
4303
4325
  this.calculatePosition();
4304
4326
  this.host.showPopover();
4305
4327
  }
4328
+ /**
4329
+ * Programmatically hide the popovercontainer
4330
+ */
4331
+ async hide() {
4332
+ if (!this.toggleTimeoutId) {
4333
+ this.eventTarget = null;
4334
+ this.host.hidePopover();
4335
+ this.postHide.emit();
4336
+ }
4337
+ }
4338
+ /**
4339
+ * Toggle popovercontainer display
4340
+ * @param target A focusable element inside the <post-popover-trigger> component that controls the popover
4341
+ * @param force Pass true to always show or false to always hide
4342
+ */
4343
+ async toggle(target, force) {
4344
+ this.eventTarget = target;
4345
+ // Prevent instant double toggle
4346
+ if (!this.toggleTimeoutId) {
4347
+ this.calculatePosition();
4348
+ this.host.togglePopover(force);
4349
+ this.toggleTimeoutId = null;
4350
+ }
4351
+ return this.host.matches(':where(:popover-open, .popover-open)');
4352
+ }
4306
4353
  /**
4307
4354
  * Handles the popover opening process and emits related events.
4308
4355
  */
4309
- async open() {
4356
+ open() {
4310
4357
  const content = this.host.querySelector('.popover-content');
4311
4358
  this.startAutoupdates();
4312
4359
  if (content) {
@@ -4331,7 +4378,7 @@ const PostPopovercontainer = class {
4331
4378
  /**
4332
4379
  * Handles the popover closing process and emits related events.
4333
4380
  */
4334
- async close() {
4381
+ close() {
4335
4382
  if (typeof this.clearAutoUpdate === 'function') {
4336
4383
  this.clearAutoUpdate();
4337
4384
  }
@@ -4377,31 +4424,6 @@ const PostPopovercontainer = class {
4377
4424
  }
4378
4425
  }
4379
4426
  }
4380
- /**
4381
- * Programmatically hide the popovercontainer
4382
- */
4383
- async hide() {
4384
- if (!this.toggleTimeoutId) {
4385
- this.eventTarget = null;
4386
- this.host.hidePopover();
4387
- this.postHide.emit();
4388
- }
4389
- }
4390
- /**
4391
- * Toggle popovercontainer display
4392
- * @param target A focusable element inside the <post-popover-trigger> component that controls the popover
4393
- * @param force Pass true to always show or false to always hide
4394
- */
4395
- async toggle(target, force) {
4396
- this.eventTarget = target;
4397
- // Prevent instant double toggle
4398
- if (!this.toggleTimeoutId) {
4399
- this.calculatePosition();
4400
- this.host.togglePopover(force);
4401
- this.toggleTimeoutId = null;
4402
- }
4403
- return this.host.matches(':where(:popover-open, .popover-open)');
4404
- }
4405
4427
  /**
4406
4428
  * Start or stop auto updates based on popovercontainer events.
4407
4429
  * Popovercontainers can be closed or opened with other methods than class members,
@@ -4435,6 +4457,7 @@ const PostPopovercontainer = class {
4435
4457
  async calculatePosition() {
4436
4458
  const { x, y, middlewareData, placement } = await this.computeMainPosition();
4437
4459
  const currentPlacement = placement.split('-')[0];
4460
+ this.dynamicPlacement = currentPlacement;
4438
4461
  // Position popover
4439
4462
  this.host.style.left = `${x}px`;
4440
4463
  this.host.style.top = `${y}px`;
@@ -4442,11 +4465,20 @@ const PostPopovercontainer = class {
4442
4465
  if (this.arrow && middlewareData.arrow) {
4443
4466
  const { x: arrowX, y: arrowY } = middlewareData.arrow;
4444
4467
  const staticSide = PostPopovercontainer.STATIC_SIDES[currentPlacement];
4468
+ const rootFontSize = Number.parseFloat(getComputedStyle(document.documentElement).fontSize);
4469
+ // Calculate dynamically the half side which provides the static side offset
4470
+ const arrowSizeValue = getComputedStyle(this.arrowRef)
4471
+ .getPropertyValue('--arrow-size')
4472
+ .trim();
4473
+ const arrowSizePx = arrowSizeValue.endsWith('rem')
4474
+ ? Number.parseFloat(arrowSizeValue) * rootFontSize
4475
+ : Number.parseFloat(arrowSizeValue);
4476
+ const halfSide = -0.5 * arrowSizePx;
4445
4477
  if (staticSide) {
4446
4478
  Object.assign(this.arrowRef.style, {
4447
4479
  left: arrowX ? `${arrowX}px` : '',
4448
4480
  top: arrowY ? `${arrowY}px` : '',
4449
- [staticSide]: '-5px',
4481
+ [staticSide]: `${halfSide}px`,
4450
4482
  });
4451
4483
  }
4452
4484
  }
@@ -4547,9 +4579,9 @@ const PostPopovercontainer = class {
4547
4579
  }
4548
4580
  }
4549
4581
  render() {
4550
- return (index.h(index.Host, { key: 'ec57bb478a7fe7d6449ef1ed4d91db4d0835ea4e', "data-version": _package.version, popover: this.manualClose ? 'manual' : 'auto' }, index.h("div", { key: '2969b3c6ef9441d06b9c913f47bb64e84006dbe4', class: "popover-content" }, this.arrow && (index.h("span", { key: '03b8addd0bee91d9358e9554f2d507b9a349e0db', class: "arrow", ref: el => {
4582
+ return (index.h(index.Host, { key: '0aaf70cb284e7227149f2e500aa7c72cab69d90a', "data-version": _package.version, popover: "auto" }, index.h("div", { key: '9762887bdddca93acc6dfda715f2f41f4f6c98d6', class: "popover-content" }, this.arrow && (index.h("span", { key: 'e77f16be0b3b0cdb02886ea928aa6986d3f477e3', "dynamic-placement": this.dynamicPlacement, class: "arrow", ref: el => {
4551
4583
  this.arrowRef = el;
4552
- } })), index.h("slot", { key: '2fb25dce5ea9e5f1044cde4839df61af34c8b667' }))));
4584
+ } })), index.h("slot", { key: 'e8737e5acec3a20d258d462a7d82278d303ba353' }))));
4553
4585
  }
4554
4586
  get host() { return index.getElement(this); }
4555
4587
  static get watchers() { return {
@@ -4606,7 +4638,7 @@ const PostTogglebutton = class {
4606
4638
  this.host.addEventListener('keydown', (e) => this.handleKeydown(e));
4607
4639
  }
4608
4640
  render() {
4609
- return (index.h(index.Host, { key: 'f56832bfbfacc23923ac06d8455fffcdafa8a7ec', "data-version": _package.version, role: "button", tabindex: "0", "aria-pressed": this.toggled.toString() }, index.h("slot", { key: '7adc9ed579b6badeb08c7599ceb95892d68f027f' })));
4641
+ return (index.h(index.Host, { key: 'a526ab3b0ae14c93bb4e1a8dc6d3ded4ff1bf014', "data-version": _package.version, role: "button", tabindex: "0", "aria-pressed": this.toggled.toString() }, index.h("slot", { key: 'e8a5bdd99d9270cfcf014306a8d7fe8a2b6b79ba' })));
4610
4642
  }
4611
4643
  get host() { return index.getElement(this); }
4612
4644
  };
@@ -4615,10 +4647,8 @@ PostTogglebutton.style = postTogglebuttonCss;
4615
4647
  exports.post_closebutton = PostClosebutton;
4616
4648
  exports.post_header = PostHeader;
4617
4649
  exports.post_icon = PostIcon;
4618
- exports.post_language_option = PostLanguageOption;
4619
- exports.post_language_switch = PostLanguageSwitch;
4620
- exports.post_list = PostList;
4621
- exports.post_list_item = PostListItem;
4650
+ exports.post_language_menu = PostLanguageMenu;
4651
+ exports.post_language_menu_item = PostLanguageMenuItem;
4622
4652
  exports.post_logo = PostLogo;
4623
4653
  exports.post_mainnavigation = PostMainnavigation;
4624
4654
  exports.post_megadropdown = PostMegadropdown;