@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,16 +1,19 @@
1
- import { r as registerInstance, h, H as Host, a as getElement, c as createEvent } from './index-CFNKgUjL.js';
2
- import { v as version } from './package-BXRsHuTS.js';
3
- import { d as checkEmptyOrOneOf, a as checkEmptyOrType, c as checkRequiredAndType, g as checkEmptyOrUrl } from './index-VmK3ABCB.js';
4
- import { t as throttle, b as breakpoint, I as IS_BROWSER } from './breakpoints-CJ80BZ06.js';
5
- import { a as getFocusableChildren } from './get-focusable-children-D9ZHp2FP.js';
6
- import { E as EventFrom } from './event-from-CzIKqBrS.js';
1
+ import { r as registerInstance, h, H as Host, a as getElement, c as createEvent } from './index-1ReqxAnI.js';
2
+ import { v as version } from './package-DZ5m2Ttg.js';
3
+ import { f as checkEmptyOrOneOf, c as checkRequiredAndType, t as throttle, e as breakpoint, b as checkEmptyOrType, i as checkEmptyOrUrl } from './breakpoints-DYoSKGHO.js';
4
+ import { f as fade } from './fade-DsgPYmAa.js';
5
+ import { g as getDeepFocusableChildren, a as getFocusableChildren } from './get-focusable-children-BXNs2_sw.js';
6
+ import { E as EventFrom } from './event-from-rEfV4v4a.js';
7
+ import { a as IS_BROWSER } from './environment-CEmnRoA6.js';
7
8
  import { n as nanoid } from './index.browser-BLchVpF6.js';
9
+ import { r as resolveEasing } from './utils-CoDiS_Ik.js';
10
+ import { f as fadeSlide } from './fade-slide-CvOvauo9.js';
8
11
  import { P as PLACEMENT_TYPES } from './placement-DRiVosES.js';
9
- import { g as getRoot } from './get-root-BkQ3CrLq.js';
12
+ import { g as getRoot } from './get-root-CXfAA093.js';
10
13
 
11
14
  const BUTTON_TYPES = ['button', 'submit', 'reset'];
12
15
 
13
- 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}}";
16
+ 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}}";
14
17
 
15
18
  const PostClosebutton = class {
16
19
  constructor(hostRef) {
@@ -46,7 +49,7 @@ const PostClosebutton = class {
46
49
  }
47
50
  }
48
51
  render() {
49
- return (h(Host, { key: '9b5bb7e95c6cf3039119ce485e963ac672834bc3', "data-version": version }, h("button", { key: '084709a7c632a8c665905a667fa6498cae1972a6', class: "btn", type: this.buttonType }, h("post-icon", { key: 'e19209e0c8de59d3e187531e0185d8f2d5c85408', "aria-hidden": "true", name: "closex" }), h("span", { key: '233184a45391e5a9b89635345f2324a87f5e9558', class: "visually-hidden" }, h("slot", { key: 'c213ac1dbdd98d83a8b2dc1b74c85926404ad1c1' })))));
52
+ return (h(Host, { key: '6965a8cb5fb765b4fcec0439ceeafe19d34970c2', "data-version": version }, h("button", { key: '7e718f70b0a4ac79e9439784dac46bd1ffd60fd1', class: "btn", type: this.buttonType }, h("post-icon", { key: '70acda3fbe6c9420f0be708fde6b29a7d5337d13', "aria-hidden": "true", name: "closex" }), h("span", { key: '899b3814c0898b521e4166e1cd951af628558e78', class: "visually-hidden" }, h("slot", { key: 'b13d0e95fd567c86e93e5185389909c7c0e7107d' })))));
50
53
  }
51
54
  get host() { return getElement(this); }
52
55
  static get watchers() { return {
@@ -55,31 +58,34 @@ const PostClosebutton = class {
55
58
  };
56
59
  PostClosebutton.style = postClosebuttonCss;
57
60
 
58
- const easing$1 = 'ease';
59
- const duration$1 = 500;
60
- const fill = 'forwards';
61
- function slideUp(el, translateSize = '-100%') {
62
- return el.animate([
63
- { transform: 'translateY(0)' }, // Starting position (no translation)
64
- { transform: `translateY(${translateSize})` }, // End position
65
- ], {
66
- duration: duration$1,
67
- easing: easing$1,
68
- fill,
69
- });
61
+ /**
62
+ * Used by PostMegadropdown (burger menu)
63
+ */
64
+ const defaultOptions = {
65
+ translate: 100,
66
+ duration: 500,
67
+ easing: 'ease',
68
+ fill: 'none',
69
+ };
70
+ function animateSlide(el, keyframes, options) {
71
+ const { duration, easing, fill } = { ...defaultOptions, ...options };
72
+ return el.animate(keyframes, { duration, easing: resolveEasing(easing), fill });
70
73
  }
71
- function slideDown(el, translateSize = '-100%') {
72
- return el.animate([
73
- { transform: `translateY(${translateSize})` }, // Starting position (no translation)
74
- { transform: 'translateY(0)' }, // End position
75
- ], {
76
- duration: duration$1,
77
- easing: easing$1,
78
- fill,
79
- });
74
+ function slide(el, direction, options = {}) {
75
+ const mergedOptions = {
76
+ ...defaultOptions,
77
+ ...options,
78
+ };
79
+ const { translate } = mergedOptions;
80
+ const baseKeyframes = [
81
+ { transform: `translateX(${translate}%)` },
82
+ { transform: 'translateX(0)' },
83
+ ];
84
+ const keyframes = direction === 'in' ? baseKeyframes : [...baseKeyframes].reverse();
85
+ return animateSlide(el, keyframes, options);
80
86
  }
81
87
 
82
- 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}}";
88
+ 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}";
83
89
 
84
90
  var __decorate$3 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
85
91
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -92,7 +98,7 @@ var __decorate$3 = (undefined && undefined.__decorate) || function (decorators,
92
98
  return c > 3 && r && Object.defineProperty(target, key, r), r;
93
99
  };
94
100
  const PostHeader = class {
95
- get hasMobileMenu() {
101
+ get hasBurgerMenu() {
96
102
  return this.device !== 'desktop' && this.hasNavigation;
97
103
  }
98
104
  get scrollParent() {
@@ -109,10 +115,13 @@ const PostHeader = class {
109
115
  }
110
116
  return document.body;
111
117
  }
118
+ validateTextMenu() {
119
+ checkRequiredAndType(this, 'textMenu', 'string');
120
+ }
112
121
  lockBody(newValue, _oldValue, propName) {
113
122
  const scrollParent = this.scrollParent;
114
- const mobileMenuExtended = propName === 'mobileMenuExtended' ? newValue : this.mobileMenuExtended;
115
- if (this.device !== 'desktop' && mobileMenuExtended) {
123
+ const burgerMenuExtended = propName === 'burgerMenuExtended' ? newValue : this.burgerMenuExtended;
124
+ if (this.device !== 'desktop' && burgerMenuExtended) {
116
125
  scrollParent.setAttribute('data-post-scroll-locked', '');
117
126
  this.host.addEventListener('keydown', this.keyboardHandler);
118
127
  }
@@ -124,16 +133,22 @@ const PostHeader = class {
124
133
  constructor(hostRef) {
125
134
  registerInstance(this, hostRef);
126
135
  this.throttledResize = throttle(50, () => this.updateLocalHeaderHeight());
136
+ this.animationOptions = {
137
+ duration: 350,
138
+ easing: 'headerEase',
139
+ };
127
140
  this.device = breakpoint.get('device');
128
141
  this.hasNavigation = false;
142
+ this.hasLocalNav = false;
143
+ this.hasAudience = false;
129
144
  this.hasTitle = false;
130
- this.mobileMenuExtended = false;
145
+ this.burgerMenuExtended = false;
131
146
  this.megadropdownOpen = false;
132
147
  this.breakpointChange = (e) => {
133
148
  this.device = e.detail;
134
149
  this.switchLanguageSwitchMode();
135
- if (this.device === 'desktop' && this.mobileMenuExtended) {
136
- this.closeMobileMenu();
150
+ if (this.device === 'desktop' && this.burgerMenuExtended) {
151
+ this.closeBurgerMenu();
137
152
  }
138
153
  if (this.device !== 'desktop') {
139
154
  Array.from(this.host.querySelectorAll('post-megadropdown')).forEach(dropdown => {
@@ -142,14 +157,14 @@ const PostHeader = class {
142
157
  this.megadropdownOpen = false;
143
158
  }
144
159
  };
145
- this.megadropdownStateHandler = (event) => {
146
- this.megadropdownOpen = event.detail.isVisible;
147
- };
148
160
  this.handleScrollEvent = this.handleScrollEvent.bind(this);
149
161
  this.updateScrollParentHeight = this.updateScrollParentHeight.bind(this);
150
162
  this.updateLocalHeaderHeight = this.updateLocalHeaderHeight.bind(this);
151
163
  this.keyboardHandler = this.keyboardHandler.bind(this);
152
164
  this.handleLinkClick = this.handleLinkClick.bind(this);
165
+ this.megadropdownStateHandler = this.megadropdownStateHandler.bind(this);
166
+ this.checkSlottedContent = this.checkSlottedContent.bind(this);
167
+ this.megadropdownStateHandler = this.megadropdownStateHandler.bind(this);
153
168
  }
154
169
  connectedCallback() {
155
170
  window.addEventListener('resize', this.throttledResize, { passive: true });
@@ -160,23 +175,23 @@ const PostHeader = class {
160
175
  passive: true,
161
176
  });
162
177
  document.addEventListener('postToggleMegadropdown', this.megadropdownStateHandler);
163
- this.host.addEventListener('click', this.handleLinkClick);
164
178
  window.addEventListener('postBreakpoint:device', this.breakpointChange);
165
- this.checkNavigationExistence();
166
- this.checkTitleExistence();
167
- this.switchLanguageSwitchMode();
168
179
  this.handleScrollParentResize();
169
- this.lockBody(false, this.mobileMenuExtended, 'mobileMenuExtended');
180
+ this.lockBody(false, this.burgerMenuExtended, 'burgerMenuExtended');
170
181
  }
171
182
  componentWillRender() {
172
183
  this.handleScrollEvent();
184
+ this.handleSlottedContentChanges();
185
+ this.switchLanguageSwitchMode();
173
186
  }
174
187
  componentDidRender() {
188
+ this.validateTextMenu();
175
189
  this.getFocusableElements();
176
190
  this.handleLocalHeaderResize();
177
191
  }
178
192
  componentDidLoad() {
179
193
  this.updateLocalHeaderHeight();
194
+ this.host.shadowRoot.addEventListener('click', this.handleLinkClick);
180
195
  }
181
196
  // Clean up possible side effects when post-header is disconnected
182
197
  disconnectedCallback() {
@@ -188,7 +203,9 @@ const PostHeader = class {
188
203
  scrollParent.removeEventListener('scroll', this.handleScrollEvent);
189
204
  document.removeEventListener('postToggleMegadropdown', this.megadropdownStateHandler);
190
205
  this.host.removeEventListener('keydown', this.keyboardHandler);
191
- this.host.removeEventListener('click', this.handleLinkClick);
206
+ if (this.host.shadowRoot) {
207
+ this.host.shadowRoot.removeEventListener('click', this.handleLinkClick);
208
+ }
192
209
  if (this.scrollParentResizeObserver) {
193
210
  this.scrollParentResizeObserver.disconnect();
194
211
  this.scrollParentResizeObserver = null;
@@ -197,81 +214,72 @@ const PostHeader = class {
197
214
  this.localHeaderResizeObserver.disconnect();
198
215
  this.localHeaderResizeObserver = null;
199
216
  }
200
- this.mobileMenuExtended = false;
201
- }
202
- checkNavigationExistence() {
203
- this.hasNavigation = this.host.querySelectorAll('post-mainnavigation').length > 0;
204
- }
205
- checkTitleExistence() {
206
- this.hasTitle = this.host.querySelectorAll('[slot="title"]').length > 0;
207
- }
208
- async closeMobileMenu() {
209
- this.mobileMenuAnimation.finish();
210
- const menuButton = this.getMenuButton();
211
- if (menuButton) {
212
- menuButton.toggled = false;
217
+ if (this.slottedContentObserver) {
218
+ this.slottedContentObserver.disconnect();
219
+ this.slottedContentObserver = null;
213
220
  }
214
- this.mobileMenuExtended = false;
221
+ this.burgerMenuExtended = false;
222
+ }
223
+ async closeBurgerMenu() {
224
+ this.burgerMenuAnimation?.finish();
225
+ if (this.burgerMenuButton)
226
+ this.burgerMenuButton.toggled = false;
227
+ this.burgerMenuExtended = false;
215
228
  }
216
229
  /**
217
- * Toggles the mobile navigation.
230
+ * Toggles the burger navigation menu.
218
231
  */
219
- async toggleMobileMenu(force) {
232
+ async toggleBurgerMenu(force) {
220
233
  if (this.device === 'desktop')
221
234
  return;
222
- this.mobileMenuAnimation = this.mobileMenuExtended
223
- ? slideUp(this.mobileMenu)
224
- : slideDown(this.mobileMenu);
235
+ this.burgerMenuAnimation = this.burgerMenuExtended
236
+ ? fade(this.burgerMenu, 'out', this.animationOptions)
237
+ : fade(this.burgerMenu, 'in', this.animationOptions);
225
238
  // Update the state of the toggle button
226
- const menuButton = this.host.querySelector('post-togglebutton');
227
- menuButton.toggled = force ?? !this.mobileMenuExtended;
228
- if (this.mobileMenuExtended) {
239
+ if (this.burgerMenuButton)
240
+ this.burgerMenuButton.toggled = force ?? !this.burgerMenuExtended;
241
+ if (this.burgerMenuExtended) {
229
242
  // Wait for the close animation to finish before hiding megadropdowns
230
- await this.mobileMenuAnimation.finished;
231
- this.mobileMenuExtended = force ?? !this.mobileMenuExtended;
232
- if (this.mobileMenuExtended === false) {
243
+ await this.burgerMenuAnimation.finished;
244
+ this.burgerMenuExtended = force ?? !this.burgerMenuExtended;
245
+ if (this.burgerMenuExtended === false) {
233
246
  this.closeAllMegadropdowns();
247
+ this.burgerMenu.scrollTop = 0;
234
248
  }
235
249
  }
236
250
  else {
237
- this.mobileMenuExtended = force ?? !this.mobileMenuExtended;
251
+ this.burgerMenuExtended = force ?? !this.burgerMenuExtended;
238
252
  // If opening, close any open megadropdowns immediately
239
253
  if (this.megadropdownOpen) {
240
254
  this.closeAllMegadropdowns();
241
255
  }
242
256
  }
243
257
  }
244
- // Get all the focusable elements in the post-header mobile menu
245
- getFocusableElements() {
246
- // Get elements in the correct order (different as the DOM order)
247
- const focusableEls = [
248
- ...Array.from(this.host.querySelectorAll('.list-inline:not([slot="meta-navigation"]) > li')),
249
- ...Array.from(this.host.querySelectorAll('nav > post-list > div > post-list-item, post-megadropdown-trigger')),
250
- ...Array.from(this.host.querySelectorAll('.list-inline[slot="meta-navigation"] > li, post-language-option')),
251
- ];
252
- // Add the main toggle menu button to the list of focusable children
253
- const focusableChildren = [
254
- this.host.querySelector('post-togglebutton'),
255
- ...focusableEls.flatMap(el => Array.from(getFocusableChildren(el))),
256
- ];
257
- this.firstFocusableEl = focusableChildren[0];
258
- this.lastFocusableEl = focusableChildren[focusableChildren.length - 1];
258
+ megadropdownStateHandler(event) {
259
+ this.megadropdownOpen = event.detail.isVisible;
259
260
  }
260
- getMenuButton() {
261
- return this.host.querySelector('post-togglebutton');
261
+ // Get all the focusable elements in the post-header burger menu
262
+ getFocusableElements() {
263
+ if (!this.burgerMenu)
264
+ return;
265
+ const focusableElements = [this.burgerMenuButton];
266
+ focusableElements.push(...getDeepFocusableChildren(this.localHeader, el => !el.matches('post-megadropdown')), ...getDeepFocusableChildren(this.burgerMenu, el => !el.matches('post-megadropdown')));
267
+ this.firstFocusableEl = focusableElements[0];
268
+ this.lastFocusableEl = focusableElements[focusableElements.length - 1];
262
269
  }
263
270
  keyboardHandler(e) {
264
- if (e.key === 'Tab' && this.mobileMenuExtended) {
265
- if (e.shiftKey && document.activeElement === this.firstFocusableEl) {
266
- // If back tab (Tab + Shift) and first element is focused, focus goes to the last element of the megadropdown
267
- e.preventDefault();
268
- this.lastFocusableEl.focus();
269
- }
270
- else if (!e.shiftKey && document.activeElement === this.lastFocusableEl) {
271
- // If Tab and last element is focused, focus goes back to the first element of the megadropdown
272
- e.preventDefault();
273
- this.firstFocusableEl.focus();
274
- }
271
+ if (e.key !== 'Tab' || !this.burgerMenuExtended)
272
+ return;
273
+ const activeElement = this.host.shadowRoot.activeElement || document.activeElement;
274
+ if (e.shiftKey && activeElement === this.firstFocusableEl) {
275
+ // If back tab (Tab + Shift) and first element is focused, focus goes to the last element of the megadropdown
276
+ e.preventDefault();
277
+ this.lastFocusableEl.focus();
278
+ }
279
+ else if (!e.shiftKey && activeElement === this.lastFocusableEl) {
280
+ // If Tab and last element is focused, focus goes back to the first element of the megadropdown
281
+ e.preventDefault();
282
+ this.firstFocusableEl.focus();
275
283
  }
276
284
  }
277
285
  closeAllMegadropdowns() {
@@ -282,7 +290,7 @@ const PostHeader = class {
282
290
  }
283
291
  handleScrollEvent() {
284
292
  const scrollTop = this.scrollParent === document.body ? window.scrollY : this.scrollParent.scrollTop;
285
- document.documentElement.style.setProperty('--post-header-scroll-top', `${scrollTop}px`);
293
+ document.documentElement.style.setProperty('--post-header-scroll-top', `${Math.max(scrollTop, 0)}px`);
286
294
  }
287
295
  updateLocalHeaderHeight() {
288
296
  const localHeaderElement = this.host.shadowRoot.querySelector('.local-header');
@@ -300,8 +308,8 @@ const PostHeader = class {
300
308
  if (!isLinkInMainNav && !isLinkInMegadropdown) {
301
309
  return;
302
310
  }
303
- if (this.mobileMenuExtended && (isLinkInMainNav || isLinkInMegadropdown)) {
304
- this.toggleMobileMenu(false);
311
+ if (this.burgerMenuExtended && (isLinkInMainNav || isLinkInMegadropdown)) {
312
+ this.toggleBurgerMenu(false);
305
313
  }
306
314
  if (this.device === 'desktop' && isLinkInMegadropdown) {
307
315
  const megadropdownLink = target.closest('post-megadropdown a');
@@ -323,38 +331,80 @@ const PostHeader = class {
323
331
  this.localHeaderResizeObserver.observe(localHeader);
324
332
  }
325
333
  }
334
+ handleSlottedContentChanges() {
335
+ if (!this.slottedContentObserver) {
336
+ this.checkSlottedContent();
337
+ this.slottedContentObserver = new MutationObserver(this.checkSlottedContent);
338
+ this.slottedContentObserver.observe(this.host, { childList: true });
339
+ }
340
+ }
341
+ checkSlottedContent() {
342
+ this.hasNavigation = !!this.host.querySelector('[slot="main-nav"]');
343
+ this.hasLocalNav = !!this.host.querySelector('[slot="local-nav"]');
344
+ this.hasAudience = !!this.host.querySelector('[slot="audience"]');
345
+ this.hasTitle = !!this.host.querySelector('[slot="title"]');
346
+ }
326
347
  switchLanguageSwitchMode() {
327
- const variant = this.hasMobileMenu ? 'list' : 'menu';
328
- Array.from(this.host.querySelectorAll('post-language-switch')).forEach(languageSwitch => {
348
+ const variant = this.hasBurgerMenu ? 'list' : 'menu';
349
+ Array.from(this.host.querySelectorAll('post-language-menu')).forEach(languageSwitch => {
329
350
  languageSwitch?.setAttribute('variant', variant);
330
351
  });
331
352
  }
353
+ onFocusChange(e) {
354
+ const alwaysVisibleElements = this.device === 'desktop'
355
+ ? '.navigation' // logo isn’t included since it would be too small to focus on effectively.
356
+ : '.global-header, .burger-menu';
357
+ const isHeaderExpanded =
358
+ // ensure the expanded state stays accurate during focus changes,
359
+ // e.g., when the focused element is removed from the DOM
360
+ // during a window resize
361
+ e.target === document.activeElement &&
362
+ this.host.matches(':focus-within') &&
363
+ !this.host.shadowRoot.querySelector(`:where(${alwaysVisibleElements}):focus-within`);
364
+ if (isHeaderExpanded) {
365
+ this.host.setAttribute('data-expanded', '');
366
+ }
367
+ else {
368
+ this.host.removeAttribute('data-expanded');
369
+ }
370
+ }
332
371
  renderNavigation() {
333
- const mainNavigation = (h("slot", { name: "post-mainnavigation", onSlotchange: () => this.checkNavigationExistence() }));
372
+ const localNav = !this.hasTitle && (h("div", { class: "local-nav" }, h("slot", { name: "local-nav" })));
334
373
  if (this.device === 'desktop') {
335
- return (h("div", { class: { 'navigation': true, 'megadropdown-open': this.megadropdownOpen } }, mainNavigation, h("slot", { name: "navigation-controls" })));
374
+ return (h("div", { class: { 'navigation': true, 'megadropdown-open': this.megadropdownOpen } }, h("slot", { name: "main-nav" }), localNav));
336
375
  }
337
- return (h("div", { class: { navigation: true, extended: this.mobileMenuExtended }, style: { '--post-header-navigation-current-inset': `${this.mobileMenu?.scrollTop ?? 0}px` } }, h("div", { class: "mobile-menu", ref: el => (this.mobileMenu = el) }, h("div", { class: "navigation-header" }, h("slot", { name: "navigation-controls" }), h("slot", { name: "target-group" })), mainNavigation, h("div", { class: "navigation-footer" }, h("slot", { name: "meta-navigation" }), h("slot", { name: "post-language-switch" })))));
376
+ return (h("div", { class: {
377
+ 'burger-menu': true,
378
+ 'extended': this.burgerMenuExtended,
379
+ 'no-local-nav': !this.hasLocalNav,
380
+ 'megadropdown-open': this.megadropdownOpen,
381
+ }, style: { '--post-header-navigation-current-inset': `${this.burgerMenu?.scrollTop ?? 0}px` }, ref: el => (this.burgerMenu = el) }, localNav, h("div", { class: "burger-menu-body" }, h("slot", { name: "audience" }), h("slot", { name: "main-nav" })), h("div", { class: "burger-menu-footer" }, h("slot", { name: "global-nav-secondary" }), h("slot", { name: "language-menu" }))));
338
382
  }
339
383
  render() {
340
- const localHeaderClasses = ['local-header'];
341
- if (this.mobileMenuExtended)
342
- localHeaderClasses.push('local-header-mobile-extended');
343
- if (this.device !== 'desktop' || !this.hasNavigation)
344
- localHeaderClasses.push('no-navigation');
345
- if (!this.hasTitle)
346
- localHeaderClasses.push('no-title');
347
- return (h(Host, { key: 'fd3c4a534af28b2e35f4a02502283e04be0d9683', "data-version": version, "data-color-scheme": "light" }, h("div", { key: '61c70adea7525d3daa7690ac9243c7697df5c8bc', class: "global-header" }, h("div", { key: '1fdb106a9624a07d3ad3fd1cb4eade9b05282ab5', class: "global-sub" }, h("div", { key: '2c62bccfa8d5fa9642528db265e76aac0d13022c', class: "logo" }, h("slot", { key: '75b87c2428b7ccad6940976e46156b807257cbc5', name: "post-logo" }))), h("div", { key: 'c1950198cbac96132ca5b1c886bb94238c53b903', class: "global-sub" }, this.device === 'desktop' && h("slot", { key: '2e695987df3da854db3ec18cc4b1283d0f06dfd1', name: "target-group" })), h("div", { key: '50366842180e3aae87d4e4da68a8f73c2f62c347', class: "global-sub" }, h("slot", { key: '7eba07e3dddbc26843a50b39a69953a01d9e2a5e', name: "global-controls" }), !this.hasMobileMenu && h("slot", { key: 'aa9fc50e2eb8eee4e3d9de76ccbf564ac30a8d03', name: "meta-navigation" }), !this.hasMobileMenu && h("slot", { key: '7742f0d0e30d5b0d90ca9352fec72e49a97ec3cb', name: "post-language-switch" }), h("slot", { key: 'a3545c4bb2a61c00105763059f3bd66ddd829681', name: "global-login" }), this.hasNavigation && (h("div", { key: 'bb8df618571ea8cadb89b0cd8d50bba7c0dec038', onClick: () => this.toggleMobileMenu(), class: "mobile-toggle" }, h("slot", { key: '83b9542127213e39644c280cf9f4e19aaf3f071a', name: "post-togglebutton" }))))), h("div", { key: '2ab719d2610d46050fc99345237b7b9cc54fd467', class: localHeaderClasses.join(' ') }, h("slot", { key: '0e02b3f7421a1c67e99fdc92aadcf61153665820', name: "title", onSlotchange: () => this.checkTitleExistence() }), this.hasTitle && (h("div", { key: '94b091a29727bd556a4907ac4bdb2f8757483135', class: "local-sub" }, h("slot", { key: '7647015350e21278b104ff4538525abeaea98442', name: "local-controls" }), h("slot", { key: '4e42d3fe5c4f676b7bb836c976c1d7e59a1052ae' }))), this.device === 'desktop' && this.renderNavigation()), this.device !== 'desktop' && this.renderNavigation()));
384
+ return (h(Host, { key: '15de1ff6ccac94813df10fc0b41a518de68dee94', "data-version": version, "data-color-scheme": "light", "data-burger-menu": this.hasBurgerMenu, "data-menu-extended": this.burgerMenuExtended }, h("header", { key: '0af40c8b8944c7ffcf2bf0fe704671f4012ae8c8' }, h("div", { key: 'cd4564c5c375c015c673df195ba04fe4d89ff1c2', class: {
385
+ 'global-header': true,
386
+ 'no-audience': !this.hasAudience,
387
+ } }, h("div", { key: 'c4ad8a22fed57e54266c6584548f5203a499b63c', class: "logo" }, h("slot", { key: 'bf86f7ccf2e46263365023f287f18305160cede6', name: "post-logo" })), h("div", { key: 'e89c405cf97ddb08850d3b15ab8977e7e484ba73', class: "sliding-controls" }, this.device === 'desktop' && (h("div", { key: 'c3e9f49a105894d0df44a3d2654065b452292154', class: "audience" }, h("slot", { key: '20effc0592ca8665de464cc5d45d11ef02894acb', name: "audience" }))), h("slot", { key: 'f0ca8a59134520ccbb38907e32bedd4c05800d36', name: "global-nav-primary" }), !this.hasBurgerMenu && [
388
+ h("slot", { key: '7e2b2982403f491f083fc9f32cee46cbaeca7c50', name: "global-nav-secondary" }),
389
+ h("slot", { key: '3e7b5f6cb16b2cf2bc64b9b11c70f8b363e80134', name: "language-menu" }),
390
+ ], h("slot", { key: 'd91059cc4dd4529040aa6436db46f66f2db84e71', name: "post-login" }), this.hasNavigation && this.device !== 'desktop' && (h("div", { key: 'f97161e09b27c11c6f85d112e85a59ddf2925aec', onClick: () => this.toggleBurgerMenu(), class: "burger-menu-toggle" }, h("slot", { key: '18304b858fa2173b63e842ba4d0512bd438a89b0', name: "post-togglebutton" }))), this.hasNavigation && this.device !== 'desktop' && (h("post-togglebutton", { key: '0599e4d106262b7be6557b476becacaf9f5656ba', ref: el => (this.burgerMenuButton = el), onClick: () => this.toggleBurgerMenu() }, h("span", { key: '3f3578f6172a9d87c531b5bef6a201b255042511' }, this.textMenu), h("post-icon", { key: '7a92cec5793716225cf9dc4646ccff585e02723b', "aria-hidden": "true", name: "burger", "data-showwhen": "untoggled" }), h("post-icon", { key: '9170844d117e8f0bf7f35049debe973ff391158e', "aria-hidden": "true", name: "closex", "data-showwhen": "toggled" }))))), h("div", { key: 'db13d084905b4633595bb1d4d83cc88c82c3c679', ref: el => (this.localHeader = el), class: {
391
+ 'local-header': true,
392
+ 'no-title': !this.hasTitle,
393
+ 'no-audience': !this.hasAudience,
394
+ 'no-navigation': this.device !== 'desktop' || !this.hasNavigation,
395
+ 'no-local-nav': !this.hasLocalNav,
396
+ } }, h("slot", { key: 'f6fb25aef128bf1712995427014c5ff62c3710d0', name: "title" }), this.hasTitle && h("slot", { key: '8cba1c7b544d950140d59336baaf7398a4fb23d8', name: "local-nav" }), this.device === 'desktop' && this.renderNavigation()), this.device !== 'desktop' && this.renderNavigation())));
348
397
  }
349
398
  get host() { return getElement(this); }
350
399
  static get watchers() { return {
400
+ "textMenu": ["validateTextMenu"],
351
401
  "device": ["lockBody"],
352
- "mobileMenuExtended": ["lockBody"]
402
+ "burgerMenuExtended": ["lockBody"]
353
403
  }; }
354
404
  };
355
405
  __decorate$3([
356
406
  EventFrom('post-megadropdown')
357
- ], PostHeader.prototype, "megadropdownStateHandler", void 0);
407
+ ], PostHeader.prototype, "megadropdownStateHandler", null);
358
408
  PostHeader.style = postHeaderCss;
359
409
 
360
410
  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)}}";
@@ -419,9 +469,11 @@ const PostIcon = class {
419
469
  const baseHref = IS_BROWSER
420
470
  ? document.querySelector('base[href]')?.getAttribute('href') || ''
421
471
  : '';
422
- const metaIconBase = IS_BROWSER
423
- ? document.querySelector('meta[name="design-system-settings"]')?.getAttribute('data-post-icon-base') || ''
424
- : '';
472
+ let metaIconBase = '';
473
+ if (IS_BROWSER) {
474
+ const metaTag = document.querySelector('meta[name="design-system-settings"]');
475
+ metaIconBase = metaTag?.getAttribute('data-post-icon-base') || '';
476
+ }
425
477
  // Function to build the first part of the URL when 'this.base' or 'metaIconBase' are relative
426
478
  const buildUrlWithBase = (relativeUrl) => {
427
479
  const normalizedHref = normalizeUrl(baseHref);
@@ -468,7 +520,7 @@ const PostIcon = class {
468
520
  this.validateAnimation();
469
521
  }
470
522
  render() {
471
- return (h(Host, { key: '0031b3e2e4016f9b28cade66fa435741940946a7', "data-version": version }, h("span", { key: '0efbcdd5f1dd737640238a0ab81b67ca8218adec', style: this.getStyles() })));
523
+ return (h(Host, { key: '6469b748f2792c383593dacd1d9f1f17daf9cde0', "data-version": version }, h("span", { key: '9f4d9766dc97a07a2562dbc3bb0931de29fe9757', style: this.getStyles() })));
472
524
  }
473
525
  get host() { return getElement(this); }
474
526
  static get watchers() { return {
@@ -483,70 +535,7 @@ PostIcon.style = postIconCss;
483
535
 
484
536
  const SWITCH_VARIANTS = ['list', 'menu'];
485
537
 
486
- 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}";
487
-
488
- const PostLanguageOption = class {
489
- constructor(hostRef) {
490
- registerInstance(this, hostRef);
491
- this.postChange = createEvent(this, "postChange");
492
- this.postLanguageOptionInitiallyActive = createEvent(this, "postLanguageOptionInitiallyActive");
493
- }
494
- validateCode() {
495
- checkRequiredAndType(this, 'code', 'string');
496
- }
497
- validateVariant() {
498
- checkEmptyOrOneOf(this, 'variant', SWITCH_VARIANTS);
499
- }
500
- validateName() {
501
- checkEmptyOrType(this, 'name', 'string');
502
- }
503
- validateUrl() {
504
- checkEmptyOrUrl(this, 'url');
505
- }
506
- componentDidLoad() {
507
- this.validateCode();
508
- this.validateName();
509
- this.validateUrl();
510
- if (!this.name && this.isNameRequired()) {
511
- throw new Error('The "name" property of the post-language-option component is required when the full language name is not displayed.');
512
- }
513
- if (this.active) {
514
- this.postLanguageOptionInitiallyActive.emit(this.code);
515
- }
516
- }
517
- /**
518
- * Selects the language option programmatically.
519
- */
520
- async select() {
521
- this.active = true;
522
- this.emitChange();
523
- }
524
- emitChange() {
525
- this.postChange.emit(this.code);
526
- }
527
- isNameRequired() {
528
- return this.host.textContent.toLowerCase() === this.code.toLowerCase();
529
- }
530
- render() {
531
- const lang = this.code.toLowerCase();
532
- const emitOnKeyDown = (e) => {
533
- if (e.key === 'Enter' || e.key === ' ') {
534
- this.emitChange();
535
- }
536
- };
537
- return (h(Host, { key: 'b86bf33feb890e5dfbfae16f45ce2e56fdfaf16a', "data-version": version, role: this.variant === 'list' ? 'listitem' : undefined }, this.url ? (h("a", { "aria-current": this.active ? 'page' : undefined, href: this.url, hrefLang: lang, lang: lang, onClick: () => this.emitChange(), onKeyDown: emitOnKeyDown }, h("slot", null), h("span", { class: "visually-hidden" }, this.name))) : (h("button", { "aria-current": this.active ? 'true' : undefined, lang: lang, onClick: () => this.emitChange(), onKeyDown: emitOnKeyDown }, h("slot", null), h("span", { class: "visually-hidden" }, this.name)))));
538
- }
539
- get host() { return getElement(this); }
540
- static get watchers() { return {
541
- "code": ["validateCode"],
542
- "variant": ["validateVariant"],
543
- "name": ["validateName"],
544
- "url": ["validateUrl"]
545
- }; }
546
- };
547
- PostLanguageOption.style = postLanguageOptionCss;
548
-
549
- 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}";
538
+ 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}";
550
539
 
551
540
  var __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
552
541
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -558,7 +547,7 @@ var __decorate$2 = (undefined && undefined.__decorate) || function (decorators,
558
547
  r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
559
548
  return c > 3 && r && Object.defineProperty(target, key, r), r;
560
549
  };
561
- const PostLanguageSwitch = class {
550
+ const PostLanguageMenu = class {
562
551
  constructor(hostRef) {
563
552
  registerInstance(this, hostRef);
564
553
  this.menuId = `p${nanoid(11)}`;
@@ -569,13 +558,13 @@ const PostLanguageSwitch = class {
569
558
  this.variant = 'list';
570
559
  }
571
560
  get languageOptions() {
572
- return Array.from(this.host.querySelectorAll('post-language-option'));
561
+ return Array.from(this.host.querySelectorAll('post-language-menu-item'));
573
562
  }
574
563
  validateCaption() {
575
- checkRequiredAndType(this, 'caption', 'string');
564
+ checkRequiredAndType(this, 'textChangeLanguage', 'string');
576
565
  }
577
566
  validateDescription() {
578
- checkRequiredAndType(this, 'description', 'string');
567
+ checkRequiredAndType(this, 'textCurrentLanguage', 'string');
579
568
  }
580
569
  validateVariant() {
581
570
  checkEmptyOrOneOf(this, 'variant', SWITCH_VARIANTS);
@@ -590,11 +579,11 @@ const PostLanguageSwitch = class {
590
579
  this.updateChildrenVariant();
591
580
  }
592
581
  /**
593
- * Listen for the postChange event and guard it to run only for events originating from a <post-language-option> element.
582
+ * Listen for the postChange event and guard it to run only for events originating from a <post-language-menu-item> element.
594
583
  */
595
584
  handlePostChange(event) {
596
585
  this.activeLang = event.detail;
597
- // Update the active state in the children post-language-option components
586
+ // Update the active state in the children post-language-menu-item components
598
587
  this.languageOptions.forEach(lang => {
599
588
  if (lang.code && lang.code === this.activeLang) {
600
589
  lang.setAttribute('active', '');
@@ -611,90 +600,102 @@ const PostLanguageSwitch = class {
611
600
  }
612
601
  /**
613
602
  * Handles cases where the language switch is being rendered before options are available
614
- * @param event Initially emitted by <post-langauge-option>
603
+ * @param event Initially emitted by <post-language-menu-item>
615
604
  */
616
605
  handleInitiallyActive(event) {
617
606
  this.activeLang = event.detail;
618
607
  }
619
- // Update post-language-option variant to have the correct style
608
+ // Update post-language-menu-item variant to have the correct style
620
609
  updateChildrenVariant() {
621
610
  this.languageOptions.forEach(el => {
622
611
  el.setAttribute('variant', this.variant);
623
612
  });
624
613
  }
625
614
  renderList() {
626
- return (h(Host, { "data-version": version }, h("div", { class: "post-language-switch-list", role: "list", "aria-label": this.caption, "aria-describedby": this.listSpanId }, h("span", { id: this.listSpanId, class: "visually-hidden" }, this.description), h("slot", null))));
615
+ return (h(Host, { "data-version": version }, h("div", { class: "post-language-menu-list", role: "list", "aria-label": this.textChangeLanguage, "aria-describedby": this.listSpanId }, h("span", { id: this.listSpanId, class: "visually-hidden" }, this.textCurrentLanguage), h("slot", null))));
627
616
  }
628
617
  renderDropdown() {
629
- return (h(Host, { "data-version": version }, h("post-menu-trigger", { for: this.menuId }, h("button", { class: "post-language-switch-trigger" }, this.activeLang, h("span", { class: "visually-hidden" }, this.caption), h("span", { class: "visually-hidden" }, this.description), h("post-icon", { "aria-hidden": "true", name: "chevrondown" }))), h("post-menu", { id: this.menuId, class: "post-language-switch-dropdown-container", label: this.caption }, h("slot", null))));
618
+ return (h(Host, { "data-version": version }, h("post-menu-trigger", { for: this.menuId }, h("button", { class: "post-language-menu-trigger" }, this.activeLang, h("span", { class: "visually-hidden" }, this.textChangeLanguage), h("span", { class: "visually-hidden" }, this.textCurrentLanguage), h("post-icon", { "aria-hidden": "true", name: "chevrondown" }))), h("post-menu", { id: this.menuId, class: "post-language-menu-dropdown-container", label: this.textChangeLanguage, placement: "bottom-end" }, h("slot", null))));
630
619
  }
631
620
  render() {
632
621
  return this.variant === 'list' ? this.renderList() : this.renderDropdown();
633
622
  }
634
623
  get host() { return getElement(this); }
635
624
  static get watchers() { return {
636
- "caption": ["validateCaption"],
637
- "description": ["validateDescription"],
625
+ "textChangeLanguage": ["validateCaption"],
626
+ "textCurrentLanguage": ["validateDescription"],
638
627
  "variant": ["validateVariant"]
639
628
  }; }
640
629
  };
641
630
  __decorate$2([
642
- EventFrom('post-language-option')
643
- ], PostLanguageSwitch.prototype, "handlePostChange", null);
644
- PostLanguageSwitch.style = postLanguageSwitchCss;
631
+ EventFrom('post-language-menu-item')
632
+ ], PostLanguageMenu.prototype, "handlePostChange", null);
633
+ PostLanguageMenu.style = postLanguageMenuCss;
645
634
 
646
- 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}";
635
+ 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}";
647
636
 
648
- const PostList = class {
637
+ const PostLanguageMenuItem = class {
649
638
  constructor(hostRef) {
650
639
  registerInstance(this, hostRef);
651
- /**
652
- * If `true`, the list title will be hidden. Otherwise, it will be displayed.`
653
- */
654
- this.titleHidden = false;
655
- /**
656
- * The list can become horizontal by setting `horizontal="true"` or just `horizontal`
657
- */
658
- this.horizontal = false;
640
+ this.postChange = createEvent(this, "postChange");
641
+ this.postLanguageMenuItemInitiallyActive = createEvent(this, "postLanguageMenuItemInitiallyActive");
659
642
  }
660
- componentWillLoad() {
661
- /**
662
- * Get the id set on the host element or use a random id by default
663
- */
664
- this.titleId = `title-${this.host.id || nanoid(6)}`;
643
+ validateCode() {
644
+ checkRequiredAndType(this, 'code', 'string');
665
645
  }
666
- componentDidLoad() {
667
- this.checkTitle();
646
+ validateVariant() {
647
+ checkEmptyOrOneOf(this, 'variant', SWITCH_VARIANTS);
648
+ }
649
+ validateName() {
650
+ checkEmptyOrType(this, 'name', 'string');
668
651
  }
669
- checkTitle() {
670
- if (!this.titleEl.textContent.trim()) {
671
- console.error('Please provide a title to the list component. Title is mandatory for accessibility purposes.');
652
+ validateUrl() {
653
+ checkEmptyOrUrl(this, 'url');
654
+ }
655
+ componentDidLoad() {
656
+ this.validateCode();
657
+ this.validateName();
658
+ this.validateUrl();
659
+ if (!this.name && this.isNameRequired()) {
660
+ throw new Error('The "name" property of the post-language-menu-item component is required when the full language name is not displayed.');
661
+ }
662
+ if (this.active) {
663
+ this.postLanguageMenuItemInitiallyActive.emit(this.code);
672
664
  }
673
665
  }
674
- render() {
675
- return (h(Host, { key: '908588a3f1261efbb85dbefade9f85f8ec6f16f8', "data-version": version }, h("div", { key: '44b224379be814dab98e16ad12a3ca0f10e61ac0', ref: el => (this.titleEl = el), id: this.titleId, class: `list-title${this.titleHidden ? ' visually-hidden' : ''}` }, h("slot", { key: '1aed36b7c286796a4d617643e7606e63bc2dd95a' })), h("div", { key: '3e1d137712b3e7616bab450426964f6c9334198e', role: "list", "aria-labelledby": this.titleId }, h("slot", { key: 'fd5abb2fca95d32295fbfa158795413264200ae8', name: "post-list-item" }))));
666
+ /**
667
+ * Selects the language option programmatically.
668
+ */
669
+ async select() {
670
+ this.active = true;
671
+ this.emitChange();
676
672
  }
677
- get host() { return getElement(this); }
678
- };
679
- PostList.style = postListCss;
680
-
681
- const postListItemCss = ":host{display:flex}";
682
-
683
- const PostListItem = class {
684
- constructor(hostRef) {
685
- registerInstance(this, hostRef);
673
+ emitChange() {
674
+ this.postChange.emit(this.code);
686
675
  }
687
- connectedCallback() {
688
- this.host.setAttribute('slot', 'post-list-item');
676
+ isNameRequired() {
677
+ return this.host.textContent.toLowerCase() === this.code.toLowerCase();
689
678
  }
690
679
  render() {
691
- return (h(Host, { key: '67204f0c31a6bc4cad3359030a8da57a045de7c5', role: "listitem", slot: "post-list-item", version: version }, h("slot", { key: '0c68073c601a3792880fc0e68af24a4a204548ed' })));
680
+ const lang = this.code.toLowerCase();
681
+ const emitOnKeyDown = (e) => {
682
+ if (e.key === 'Enter' || e.key === ' ') {
683
+ this.emitChange();
684
+ }
685
+ };
686
+ return (h(Host, { key: '0a0f6a2e04d61991696e86fa9a20b34d154e89ac', "data-version": version, role: this.variant === 'list' ? 'listitem' : undefined }, this.url ? (h("a", { "aria-current": this.active ? 'page' : undefined, href: this.url, hrefLang: lang, lang: lang, onClick: () => this.emitChange(), onKeyDown: emitOnKeyDown }, h("slot", null), h("span", { class: "visually-hidden" }, this.name))) : (h("button", { "aria-current": this.active ? 'true' : undefined, lang: lang, onClick: () => this.emitChange(), onKeyDown: emitOnKeyDown }, h("slot", null), h("span", { class: "visually-hidden" }, this.name)))));
692
687
  }
693
688
  get host() { return getElement(this); }
689
+ static get watchers() { return {
690
+ "code": ["validateCode"],
691
+ "variant": ["validateVariant"],
692
+ "name": ["validateName"],
693
+ "url": ["validateUrl"]
694
+ }; }
694
695
  };
695
- PostListItem.style = postListItemCss;
696
+ PostLanguageMenuItem.style = postLanguageMenuItemCss;
696
697
 
697
- 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}";
698
+ 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}";
698
699
 
699
700
  const PostLogo = class {
700
701
  constructor(hostRef) {
@@ -715,7 +716,7 @@ const PostLogo = class {
715
716
  render() {
716
717
  const logoLink = this.url && (typeof this.url === 'string' ? this.url : this.url.href);
717
718
  const LogoTag = logoLink ? 'a' : 'span';
718
- return (h(Host, { key: 'acd3bfab8d395cde2d79066580a8e53e65c426f4', "data-version": version }, h(LogoTag, { key: 'c5c2f8a2be6204bb693d5d53fd95e75133518a1d', class: `logo ${logoLink ? 'logo-link' : ''}`, ...(logoLink ? { href: logoLink } : {}) }, h("span", { key: '675b756441237173c1046b74c2dfe2dfc08bfd7f', class: "description" }, h("slot", { key: '710fd3483f56ad353e1a99f4fff2acc78ee53b46', onSlotchange: () => this.checkDescription() })), h("svg", { key: 'e72b70e26da0fefd52a7e9aec41772dd5c9f0258', xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 72 72", "aria-hidden": "true" }, h("g", { key: 'b67d56c9319bb576a56c76c5299f4a81c93d6c3c', id: "Logo" }, h("rect", { key: '8c073060a51c5e6942c1b33fc5c2a3a7eb422f07', fill: "#ffcc00", x: "0", y: "0", width: "72", height: "72" }), 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" }), 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" }))))));
719
+ return (h(Host, { key: '39444d3dd1a87425c7134de5af6ad623a68197c0', "data-version": version }, h(LogoTag, { key: '8f41d8c85212f7fde23c11fa0a0fb506deb5e0c9', class: `logo ${logoLink ? 'logo-link' : ''}`, ...(logoLink ? { href: logoLink } : {}) }, h("span", { key: '06b777726f42914b941a980bce9dd4ba3dc3637e', class: "description" }, h("slot", { key: 'd95f99a2d3b09ffab6d0e7c11b99178d6c1fb7ef', onSlotchange: () => this.checkDescription() })), h("svg", { key: '57fa969750327b0907cd3f5abefd14b52d176dd8', xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 72 72", "aria-hidden": "true" }, h("g", { key: '61172060743d8d155bcde7d636da3c5569ec1951', id: "Logo" }, h("rect", { key: 'ef042aea64e01c52d241ff599290646af309f868', fill: "#ffcc00", x: "0", y: "0", width: "72", height: "72" }), 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" }), 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" }))))));
719
720
  }
720
721
  get host() { return getElement(this); }
721
722
  static get watchers() { return {
@@ -724,25 +725,27 @@ const PostLogo = class {
724
725
  };
725
726
  PostLogo.style = postLogoCss;
726
727
 
727
- 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)}}";
728
+ 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}";
728
729
 
729
730
  const SCROLL_REPEAT_INTERVAL = 100; // Interval for repeated scrolling when holding down scroll button
730
731
  const NAVBAR_DISABLE_DURATION = 400; // Duration to temporarily disable navbar interactions during scrolling
731
732
  const PostMainnavigation = class {
733
+ validateTextMain() {
734
+ checkRequiredAndType(this, 'textMain', 'string');
735
+ }
732
736
  constructor(hostRef) {
733
737
  registerInstance(this, hostRef);
734
738
  this.canScrollLeft = false;
735
739
  this.canScrollRight = false;
736
740
  this.scrollRight = this.scrollRight.bind(this);
737
741
  this.scrollLeft = this.scrollLeft.bind(this);
738
- this.handleMutations = this.handleMutations.bind(this);
739
742
  this.checkScrollability = this.checkScrollability.bind(this);
740
743
  this.resizeObserver = new ResizeObserver(this.checkScrollability);
741
- this.mutationObserver = new MutationObserver(this.handleMutations);
744
+ this.mutationObserver = new MutationObserver(this.checkScrollability);
742
745
  }
743
746
  componentDidLoad() {
747
+ this.validateTextMain();
744
748
  setTimeout(() => {
745
- this.fixLayoutShift();
746
749
  this.checkScrollability();
747
750
  });
748
751
  // Observe the navbar for size changes
@@ -767,30 +770,8 @@ const PostMainnavigation = class {
767
770
  if (this.scrollRepeatInterval)
768
771
  clearInterval(this.scrollRepeatInterval);
769
772
  }
770
- async handleMutations(mutations) {
771
- const addedNodes = mutations.flatMap((mutation) => {
772
- return Array.from(mutation.addedNodes);
773
- });
774
- // Wait for all elements to be hydrated
775
- await Promise.all(addedNodes.map((item) => item.componentOnReady ? item.componentOnReady() : Promise.resolve(item)));
776
- this.fixLayoutShift();
777
- this.checkScrollability();
778
- }
779
773
  get navigationItems() {
780
- return Array.from(this.navbar.querySelectorAll(':is(a, button):not(post-megadropdown *)'));
781
- }
782
- /**
783
- * Hack to fix the layout shift due to bold text on active elements
784
- */
785
- fixLayoutShift() {
786
- this.navigationItems
787
- .filter(item => !item.matches(':has(.nav-el-active)'))
788
- .forEach(item => {
789
- item.innerHTML = `
790
- <span class="nav-el-active">${item.innerHTML}</span>
791
- <span class="nav-el-inactive" aria-hidden="true">${item.innerHTML}</span>
792
- `;
793
- });
774
+ return Array.from(this.host.querySelectorAll('a:not(post-megadropdown *), post-megadropdown-trigger'));
794
775
  }
795
776
  /**
796
777
  * Returns whether scrolling is enabled in either the left or right direction.
@@ -829,7 +810,7 @@ const PostMainnavigation = class {
829
810
  }, SCROLL_REPEAT_INTERVAL);
830
811
  }
831
812
  scrollRight() {
832
- const scrollRightLeftEdge = document
813
+ const scrollRightLeftEdge = this.host.shadowRoot
833
814
  .querySelector('.scroll-right')
834
815
  .getBoundingClientRect().left;
835
816
  for (const navigationItem of this.navigationItems) {
@@ -843,7 +824,7 @@ const PostMainnavigation = class {
843
824
  }
844
825
  }
845
826
  scrollLeft() {
846
- const scrollLeftRightEdge = document
827
+ const scrollLeftRightEdge = this.host.shadowRoot
847
828
  .querySelector('.scroll-left')
848
829
  .getBoundingClientRect().right;
849
830
  for (const navigationItem of this.navigationItems.reverse()) {
@@ -869,17 +850,38 @@ const PostMainnavigation = class {
869
850
  }, NAVBAR_DISABLE_DURATION);
870
851
  }
871
852
  render() {
872
- return (h(Host, { key: '04ae6ffdd6560113431b70c3c27f16057fc9a87d', slot: "post-mainnavigation", version: version }, h("div", { key: '2f79728dcbbfe94a343b880e2ba07331f45c9f30', "aria-hidden": "true", class: { 'scroll-control scroll-left': true, 'd-none': !this.canScrollLeft }, onMouseDown: e => this.handleScrollButtonClick(e, 'left') }, h("post-icon", { key: '3e762484bbcd03ac0d67b4ab722ffcd862bb073e', "aria-hidden": "true", name: "chevronleft" })), h("nav", { key: '1150bfdf724e4d93b45f1fff071fba56d31d15b5', ref: el => (this.navbar = el) }, h("slot", { key: '3496b7c6d2d75300b1727148ff9b9965717d9909' })), h("div", { key: '1fa6dd50d9650ab6e5047c607f7e5ed0416ed245', "aria-hidden": "true", class: { 'scroll-control scroll-right': true, 'd-none': !this.canScrollRight }, onMouseDown: e => this.handleScrollButtonClick(e, 'right') }, h("post-icon", { key: '9487d621e1d7289a0afeb1d0443ec8bc70cd5f3e', "aria-hidden": "true", name: "chevronright" }))));
853
+ return (h(Host, { key: '14ca9714f09e1dbbe8c976b8947db07906ec2eb8', version: version, class: this.canScroll ? 'scrollable' : '' }, h("div", { key: 'e886823d21e52db04afc91ecbd12149c47d69038', "aria-hidden": "true", class: { 'scroll-control scroll-left': true, 'd-none': !this.canScrollLeft }, onMouseDown: e => this.handleScrollButtonClick(e, 'left') }, h("post-icon", { key: '3afd56232da3cf120038b68c714c560db16ac30e', "aria-hidden": "true", name: "chevronleft" })), h("nav", { key: '69c39d75c1f90f01c12904c98fc6e3f8de2ba09d', ref: el => (this.navbar = el), "aria-label": this.textMain }, h("slot", { key: '9251d7cec53c05bf9146d0b2c75533c50f7fe070' })), h("div", { key: '649e7ec3c9f65447a2da965bb7fe0c92b3ff8207', "aria-hidden": "true", class: { 'scroll-control scroll-right': true, 'd-none': !this.canScrollRight }, onMouseDown: e => this.handleScrollButtonClick(e, 'right') }, h("post-icon", { key: 'ac2823ab5195c59ea2831ffb24a1d8a033f7266a', "aria-hidden": "true", name: "chevronright" }))));
873
854
  }
855
+ get host() { return getElement(this); }
856
+ static get watchers() { return {
857
+ "textMain": ["validateTextMain"]
858
+ }; }
874
859
  };
875
860
  PostMainnavigation.style = postMainnavigationCss;
876
861
 
877
- 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}}";
862
+ 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}}";
878
863
 
879
864
  const PostMegadropdown = class {
865
+ validateTextClose() {
866
+ checkRequiredAndType(this, 'textClose', 'string');
867
+ }
868
+ validateTextBack() {
869
+ checkRequiredAndType(this, 'textBack', 'string');
870
+ }
871
+ get megadropdownTrigger() {
872
+ const hostId = this.host.getAttribute('id');
873
+ return hostId ? document.querySelector(`post-megadropdown-trigger[for="${hostId}"]`) : null;
874
+ }
880
875
  constructor(hostRef) {
881
876
  registerInstance(this, hostRef);
882
877
  this.postToggleMegadropdown = createEvent(this, "postToggleMegadropdown");
878
+ this.currentAnimation = null;
879
+ this.isAnimating = false;
880
+ this.fsAnimationOptions = {
881
+ translate: -10,
882
+ duration: 350,
883
+ easing: 'headerEase',
884
+ };
883
885
  this.device = breakpoint.get('device');
884
886
  /**
885
887
  * Holds the current visibility state of the dropdown.
@@ -890,13 +892,17 @@ const PostMegadropdown = class {
890
892
  this.trigger = false;
891
893
  /** Holds the current animation class. */
892
894
  this.animationClass = null;
893
- this.handleClickOutside = (event) => {
895
+ this.handleClickOutside = async (event) => {
894
896
  if (this.device !== 'desktop')
895
897
  return;
896
898
  const target = event.target;
897
899
  if (this.host.contains(target)) {
898
900
  return;
899
901
  }
902
+ // Ignore clicks on the trigger or its contents to prevent running hide() twice
903
+ if (this.megadropdownTrigger.contains(target)) {
904
+ return;
905
+ }
900
906
  if (target instanceof HTMLElement) {
901
907
  const trigger = target.closest('post-megadropdown-trigger');
902
908
  if (trigger) {
@@ -906,14 +912,11 @@ const PostMegadropdown = class {
906
912
  }
907
913
  }
908
914
  }
909
- this.hide(false);
915
+ await this.hide(false);
910
916
  };
911
- }
912
- get megadropdownTrigger() {
913
- const hostId = this.host.getAttribute('id');
914
- return hostId
915
- ? document.querySelector(`post-megadropdown-trigger[for="${hostId}"] > button`)
916
- : null;
917
+ this.keyboardHandler = this.keyboardHandler.bind(this);
918
+ this.handleTabOutside = this.handleTabOutside.bind(this);
919
+ this.handleClickOutside = this.handleClickOutside.bind(this);
917
920
  }
918
921
  connectedCallback() {
919
922
  window.addEventListener('postBreakpoint:device', this.breakpointChange.bind(this));
@@ -922,16 +925,17 @@ const PostMegadropdown = class {
922
925
  this.getFocusableElements();
923
926
  }
924
927
  componentDidLoad() {
928
+ this.validateTextClose();
929
+ this.validateTextBack();
925
930
  this.checkInitialAriaCurrent();
926
931
  this.setupObserver();
927
932
  this.handleAriaCurrentChange([]);
928
933
  }
929
934
  disconnectedCallback() {
930
- this.removeListeners();
931
935
  window.removeEventListener('postBreakpoint:device', this.breakpointChange.bind(this));
932
- if (PostMegadropdown.activeDropdown === this) {
936
+ if (PostMegadropdown.activeDropdown === this)
933
937
  PostMegadropdown.activeDropdown = null;
934
- }
938
+ this.removeListeners();
935
939
  if (this.defaultSlotObserver) {
936
940
  this.defaultSlotObserver.disconnect();
937
941
  }
@@ -940,41 +944,70 @@ const PostMegadropdown = class {
940
944
  * Toggles the dropdown visibility based on its current state.
941
945
  */
942
946
  async toggle() {
943
- if (this.isVisible) {
944
- this.hide();
945
- }
946
- else {
947
- await this.show();
947
+ if (this.isAnimating) {
948
+ // If this is already animating towards a future state -> reverse intent
949
+ return this.isVisible ? this.show() : this.hide();
948
950
  }
951
+ return this.isVisible ? this.hide() : this.show();
949
952
  }
950
953
  /**
951
954
  * Displays the dropdown.
952
955
  */
953
956
  async show() {
957
+ if (this.device !== 'desktop') {
958
+ const trigger = this.megadropdownTrigger;
959
+ if (trigger)
960
+ this.megadropdownTitle = trigger.innerHTML;
961
+ }
954
962
  if (PostMegadropdown.activeDropdown && PostMegadropdown.activeDropdown !== this) {
955
963
  // Close the previously active dropdown without animation
956
964
  PostMegadropdown.activeDropdown.forceClose();
957
965
  }
958
- this.animationClass = 'slide-in';
966
+ this.cancelAnimation();
967
+ // Set the megadropdown visible and mark it as the active dropdown
959
968
  this.isVisible = true;
960
969
  PostMegadropdown.activeDropdown = this;
961
- this.postToggleMegadropdown.emit({ isVisible: this.isVisible });
962
- if (this.firstFocusableEl &&
963
- window.getComputedStyle(this.firstFocusableEl).display !== 'none') {
964
- this.firstFocusableEl.focus();
970
+ // Update trigger state
971
+ this.postToggleMegadropdown.emit({ isVisible: true });
972
+ try {
973
+ await this.animate('in');
974
+ this.focusFirst();
975
+ // After the megadropdown has finished entry animation
976
+ this.addListeners();
977
+ }
978
+ catch {
979
+ // Open animation was cancelled - reset state
980
+ this.removeListeners();
981
+ this.isVisible = false;
982
+ if (PostMegadropdown.activeDropdown === this)
983
+ PostMegadropdown.activeDropdown = null;
984
+ this.postToggleMegadropdown.emit({ isVisible: false, focusParent: true });
965
985
  }
966
- this.addListeners();
967
986
  }
968
987
  /**
969
988
  * Hides the dropdown with an animation.
970
989
  */
971
990
  async hide(focusParent = true, forceClose = false) {
972
- this.postToggleMegadropdown.emit({ isVisible: false, focusParent: focusParent });
973
991
  if (forceClose) {
974
992
  this.forceClose();
993
+ return;
975
994
  }
976
- else {
977
- this.animationClass = 'slide-out';
995
+ // Update trigger state
996
+ this.postToggleMegadropdown.emit({ isVisible: false, focusParent: focusParent });
997
+ try {
998
+ await this.animate('out');
999
+ // After the closing animation finishes set the megadropdown as non visible
1000
+ this.isVisible = false;
1001
+ this.removeListeners();
1002
+ if (PostMegadropdown.activeDropdown === this)
1003
+ PostMegadropdown.activeDropdown = null;
1004
+ }
1005
+ catch {
1006
+ // Closing animation was cancelled - reset state
1007
+ PostMegadropdown.activeDropdown = this;
1008
+ this.addListeners();
1009
+ this.isVisible = true;
1010
+ this.postToggleMegadropdown.emit({ isVisible: true, focusParent: false });
978
1011
  }
979
1012
  }
980
1013
  /**
@@ -983,68 +1016,79 @@ const PostMegadropdown = class {
983
1016
  async focusFirst() {
984
1017
  this.firstFocusableEl?.focus();
985
1018
  }
986
- breakpointChange(e) {
987
- this.device = e.detail;
988
- if (this.device === 'desktop' && this.isVisible) {
989
- this.animationClass = null;
990
- }
991
- }
992
1019
  /**
993
1020
  * Forces the dropdown to close without animation.
994
1021
  */
995
1022
  forceClose() {
996
- this.isVisible = false;
997
- this.animationClass = null;
998
- this.postToggleMegadropdown.emit({ isVisible: this.isVisible, focusParent: false });
999
1023
  this.removeListeners();
1024
+ this.postToggleMegadropdown.emit({ isVisible: false, focusParent: false });
1025
+ this.isVisible = false;
1000
1026
  }
1001
- handleAnimationEnd() {
1002
- if (this.animationClass === 'slide-out') {
1003
- this.isVisible = false;
1004
- this.animationClass = null;
1005
- PostMegadropdown.activeDropdown = null;
1006
- this.removeListeners();
1027
+ // Run the respective animation
1028
+ createAnimation(direction) {
1029
+ if (this.device === 'desktop') {
1030
+ return fadeSlide(this.animatedContainer, direction, this.fsAnimationOptions);
1007
1031
  }
1032
+ return slide(this.animatedContainer, direction, {
1033
+ translate: 100,
1034
+ duration: 350,
1035
+ easing: direction === 'in' ? 'ease-in' : 'ease-out',
1036
+ });
1037
+ }
1038
+ async animate(direction) {
1039
+ this.cancelAnimation();
1040
+ this.currentAnimation = this.createAnimation(direction);
1041
+ // Flag isAnimating used to avoid toggle() de-sync
1042
+ this.isAnimating = true;
1043
+ await this.currentAnimation.finished;
1044
+ this.isAnimating = false;
1045
+ this.currentAnimation = null;
1046
+ }
1047
+ cancelAnimation() {
1048
+ this.currentAnimation?.cancel();
1049
+ this.currentAnimation = null;
1050
+ }
1051
+ breakpointChange(e) {
1052
+ this.device = e.detail;
1053
+ this.cancelAnimation();
1008
1054
  }
1009
1055
  addListeners() {
1010
- this.host.addEventListener('keydown', e => this.keyboardHandler(e));
1011
- document.addEventListener('keyup', e => this.handleTabOutside(e));
1056
+ this.host.addEventListener('keydown', this.keyboardHandler);
1057
+ document.addEventListener('keyup', this.handleTabOutside);
1012
1058
  document.addEventListener('mousedown', this.handleClickOutside);
1013
1059
  }
1014
1060
  removeListeners() {
1015
- this.host.removeEventListener('keydown', e => this.keyboardHandler(e));
1016
- document.removeEventListener('keyup', e => this.handleTabOutside(e));
1061
+ this.host.removeEventListener('keydown', this.keyboardHandler);
1062
+ document.removeEventListener('keyup', this.handleTabOutside);
1017
1063
  document.removeEventListener('mousedown', this.handleClickOutside);
1018
1064
  }
1019
1065
  getFocusableElements() {
1020
- const focusableEls = Array.from(this.host.querySelectorAll('post-list-item, h3, .back-button'));
1021
- const focusableChildren = focusableEls.flatMap(el => Array.from(getFocusableChildren(el)));
1022
- // Check for an overview link
1023
- const overviewLink = this.host.querySelector('a[slot="megadropdown-overview-link"]');
1024
- if (overviewLink) {
1025
- focusableChildren.unshift(overviewLink);
1026
- }
1027
- this.firstFocusableEl = focusableChildren[0];
1028
- this.lastFocusableEl = focusableChildren[focusableChildren.length - 1];
1066
+ const focusableElements = [
1067
+ ...getFocusableChildren(this.host),
1068
+ ...getFocusableChildren(this.host.shadowRoot),
1069
+ ];
1070
+ this.firstFocusableEl = focusableElements[0];
1071
+ this.lastFocusableEl = focusableElements[focusableElements.length - 1];
1029
1072
  }
1030
1073
  // Loop through the focusable children
1031
1074
  keyboardHandler(e) {
1032
- if (e.key === 'Tab' && this.device !== 'desktop') {
1033
- if (e.shiftKey && document.activeElement === this.firstFocusableEl) {
1034
- // If back tab (TAB + Shift) and first element is focused, focus goes to the last element of the megadropdown
1035
- e.preventDefault();
1036
- this.lastFocusableEl.focus();
1037
- }
1038
- else if (!e.shiftKey && document.activeElement === this.lastFocusableEl) {
1039
- // If TAB and last element is focused, focus goes back to the first element of the megadropdown
1040
- e.preventDefault();
1041
- this.firstFocusableEl.focus();
1042
- }
1075
+ if (e.key !== 'Tab' || this.device === 'desktop')
1076
+ return;
1077
+ const activeElement = this.host.shadowRoot.activeElement || document.activeElement;
1078
+ if (e.shiftKey && activeElement === this.firstFocusableEl) {
1079
+ // If back tab (TAB + Shift) and first element is focused, focus goes to the last element of the megadropdown
1080
+ e.preventDefault();
1081
+ this.lastFocusableEl.focus();
1082
+ }
1083
+ else if (!e.shiftKey && activeElement === this.lastFocusableEl) {
1084
+ // If TAB and last element is focused, focus goes back to the first element of the megadropdown
1085
+ e.preventDefault();
1086
+ this.firstFocusableEl.focus();
1043
1087
  }
1044
1088
  }
1045
1089
  handleTabOutside(e) {
1046
1090
  if (e.key === 'Tab' && this.device === 'desktop') {
1047
- if (!this.host.contains(e.target)) {
1091
+ if (this.isVisible && !this.host.contains(e.target)) {
1048
1092
  this.hide(false);
1049
1093
  }
1050
1094
  }
@@ -1070,14 +1114,8 @@ const PostMegadropdown = class {
1070
1114
  */
1071
1115
  setTriggerActive(isActive) {
1072
1116
  const trigger = this.megadropdownTrigger;
1073
- if (!trigger)
1074
- return;
1075
- if (isActive) {
1076
- trigger.classList.add('active');
1077
- }
1078
- else {
1079
- trigger.classList.remove('active');
1080
- }
1117
+ if (trigger)
1118
+ trigger.setAttribute('active', isActive.toString());
1081
1119
  }
1082
1120
  /**
1083
1121
  * Updates the megadropdown trigger state when the megadropdown content changes.
@@ -1101,15 +1139,19 @@ const PostMegadropdown = class {
1101
1139
  }
1102
1140
  render() {
1103
1141
  const containerStyle = this.isVisible ? {} : { display: 'none' };
1104
- return (h(Host, { key: 'd111d8d93a9b64018f3df88813da8f6d1c65759e', version: version }, h("div", { key: 'd7cb2b98624c9241108bc66cc11c15c0a2e7acf3', class: `megadropdown-container ${this.animationClass || ''}`, style: containerStyle, onAnimationEnd: () => this.handleAnimationEnd() }, h("div", { key: '9f0280b6f28f19ee7f9ba4707209b64b38759927', class: "megadropdown" }, h("slot", { key: '71f2521e1ab13406dd986c18a7c52e171148b0b0', name: "megadropdown-title" }), h("slot", { key: '148de1446aade76b074e155d07b70e775fc9612c', name: "megadropdown-overview-link" }), h("div", { key: '269c1e1db66acb7c274c720a9f715d29e875ef54', class: "megadropdown-content" }, h("slot", { key: '444040337c57e64bcc57f56415c4c40513ef0a5b' })), h("div", { key: 'f97d8c578ee19b5ba7d593e5d110e3b283255087', onClick: () => this.hide(true), class: "back-button" }, h("slot", { key: 'dc04da3a42714e2e8742ab8ed25bcc288a236294', name: "back-button" })), h("div", { key: '354eca51a5aef76d483a30e595bedfa95792d7ce', onClick: () => this.hide(true), class: "close-button" }, h("slot", { key: '28693622360c0da91f3051426be545852c5ec337', name: "close-button" }))))));
1142
+ return (h(Host, { key: 'f099891f24c60ca48ddceeadf754debdf3d8bff1', version: version }, h("div", { key: 'd964a72ec31632a6061f8c656fcc171bc584b764', ref: el => (this.animatedContainer = el), class: "megadropdown", style: containerStyle }, this.device !== 'desktop' && this.megadropdownTitle && (h("p", { key: 'b04d8fb83e5658365a1d722572d82237a7bf4eba', class: "megadropdown-title" }, this.megadropdownTitle)), h("div", { key: 'b7e654a69375c4e8f3af2e8ff65f0a5b7b2ee2cd', class: "megadropdown-content" }, h("slot", { key: '9608aa8b0d9458b593917e66e3fd4db9c447cac2' })), this.device === 'desktop' ? (h("post-closebutton", { onClick: () => this.hide(true), class: "close-button" }, this.textClose)) : (h("button", { onClick: () => this.hide(true), class: "back-button" }, h("post-icon", { name: "arrowleft" }), this.textBack)))));
1105
1143
  }
1106
1144
  get host() { return getElement(this); }
1145
+ static get watchers() { return {
1146
+ "textClose": ["validateTextClose"],
1147
+ "textBack": ["validateTextBack"]
1148
+ }; }
1107
1149
  };
1108
1150
  /** Tracks the currently active dropdown instance. */
1109
1151
  PostMegadropdown.activeDropdown = null;
1110
1152
  PostMegadropdown.style = postMegadropdownCss;
1111
1153
 
1112
- 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}}";
1154
+ 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}}";
1113
1155
 
1114
1156
  var __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1115
1157
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -1122,101 +1164,85 @@ var __decorate$1 = (undefined && undefined.__decorate) || function (decorators,
1122
1164
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1123
1165
  };
1124
1166
  const PostMegadropdownTrigger = class {
1167
+ validateFor() {
1168
+ checkRequiredAndType(this, 'for', 'string');
1169
+ }
1125
1170
  constructor(hostRef) {
1126
1171
  registerInstance(this, hostRef);
1172
+ this.mutationObserver = new MutationObserver(this.cloneSlottedButton.bind(this));
1173
+ this.isMegadropdownExpanded = false;
1174
+ this.slottedContent = null;
1127
1175
  /**
1128
- * Manages the accessibility attribute `aria-expanded` to indicate whether the associated mega dropdown is expanded or collapsed.
1129
- */
1130
- this.ariaExpanded = false;
1131
- /**
1132
- * Reference to the slotted button within the trigger, if present.
1133
- * Used to manage click and key events for mega dropdown control.
1176
+ * Sets the trigger state to be active or inactive.
1134
1177
  */
1135
- this.slottedButton = null;
1136
- /**
1137
- * Tracks whether this trigger's dropdown was expanded before a state change.
1138
- * Used to determine if this trigger should handle focus when its dropdown closes.
1139
- */
1140
- this.wasExpanded = false;
1141
- this.handleKeyDown = (event) => {
1142
- if (event.key === 'Enter' || event.key === ' ') {
1143
- event.preventDefault();
1144
- this.handleToggle();
1145
- if (this.megadropdown && !this.ariaExpanded) {
1146
- setTimeout(() => this.megadropdown.focusFirst(), 100);
1147
- }
1148
- }
1149
- };
1150
- this.handleToggleMegadropdown = (event) => {
1151
- if (event.target.id === this.for) {
1152
- this.ariaExpanded = event.detail.isVisible;
1153
- // Focus on the trigger parent of the dropdown after it's closed if the close button had been clicked
1154
- if (this.wasExpanded && !this.ariaExpanded && event.detail.focusParent) {
1155
- setTimeout(() => {
1156
- this.slottedButton?.focus();
1157
- }, 100);
1158
- }
1159
- this.wasExpanded = this.ariaExpanded;
1160
- if (this.slottedButton) {
1161
- this.slottedButton.setAttribute('aria-expanded', this.ariaExpanded.toString());
1162
- }
1163
- }
1164
- };
1178
+ this.active = false;
1179
+ this.onMegadropdownToggled = this.onMegadropdownToggled.bind(this);
1165
1180
  }
1166
- /**
1167
- * Watch for changes to the `for` property to validate its type and ensure it is a string.
1168
- * @param forValue - The new value of the `for` property.
1169
- */
1170
- validateControlFor() {
1171
- checkRequiredAndType(this, 'for', 'string');
1181
+ connectedCallback() {
1182
+ this.mutationObserver.observe(this.host, { childList: true, subtree: true });
1183
+ }
1184
+ componentWillLoad() {
1185
+ this.cloneSlottedButton();
1186
+ }
1187
+ componentDidLoad() {
1188
+ this.validateFor();
1189
+ // Check if the mega dropdown attached to the trigger is expanded or not
1190
+ if (IS_BROWSER)
1191
+ document.addEventListener('postToggleMegadropdown', this.onMegadropdownToggled);
1192
+ }
1193
+ disconnectedCallback() {
1194
+ document.removeEventListener('postToggleMegadropdown', this.onMegadropdownToggled);
1195
+ }
1196
+ cloneSlottedButton() {
1197
+ this.slottedContent = this.host.innerHTML;
1172
1198
  }
1173
1199
  get megadropdown() {
1174
1200
  const ref = document.getElementById(this.for);
1175
- return ref && ref.localName === 'post-megadropdown'
1176
- ? ref
1177
- : null;
1178
- }
1179
- handleToggle() {
1180
- if (this.megadropdown) {
1181
- this.megadropdown.toggle();
1182
- }
1183
- else {
1201
+ if (ref?.localName !== 'post-megadropdown') {
1184
1202
  console.warn(`No post-megadropdown found with ID: ${this.for}`);
1203
+ return null;
1185
1204
  }
1205
+ return ref;
1186
1206
  }
1187
- componentDidLoad() {
1188
- this.validateControlFor();
1189
- // Check if the mega dropdown attached to the trigger is expanded or not
1190
- document.addEventListener('postToggleMegadropdown', this.handleToggleMegadropdown);
1191
- this.slottedButton = this.host.querySelector('button');
1192
- if (this.slottedButton) {
1193
- this.slottedButton.setAttribute('aria-haspopup', 'menu');
1194
- this.slottedButton.addEventListener('click', () => {
1195
- this.handleToggle();
1196
- });
1197
- this.slottedButton.addEventListener('keydown', this.handleKeyDown);
1198
- }
1199
- else {
1200
- console.warn('No button found within post-megadropdown-trigger');
1201
- }
1207
+ onClick() {
1208
+ this.megadropdown?.toggle();
1202
1209
  }
1203
- disconnectedCallback() {
1204
- document.removeEventListener('postToggleMegadropdown', this.handleToggleMegadropdown);
1210
+ onKeyDown(event) {
1211
+ if (event.key !== 'Enter' && event.key !== ' ')
1212
+ return;
1213
+ const megadropdown = this.megadropdown;
1214
+ if (!megadropdown)
1215
+ return;
1216
+ event.preventDefault();
1217
+ this.megadropdown.toggle();
1218
+ }
1219
+ onMegadropdownToggled(event) {
1220
+ if (event.target.id === this.for) {
1221
+ const wasMegadropdownExpanded = this.isMegadropdownExpanded;
1222
+ this.isMegadropdownExpanded = event.detail.isVisible;
1223
+ const haveBeenClosed = wasMegadropdownExpanded && !this.isMegadropdownExpanded;
1224
+ if (!haveBeenClosed || !event.detail.focusParent)
1225
+ return;
1226
+ // Focus on the trigger parent of the dropdown after it's closed if the close button had been clicked
1227
+ setTimeout(() => {
1228
+ this.interactiveButton.focus();
1229
+ }, 100);
1230
+ }
1205
1231
  }
1206
1232
  render() {
1207
- return (h(Host, { key: '838bff4fe3feac679b522c2f7a166ac7aa5c2bf9', "data-version": version, "tab-index": "-1" }, h("button", { key: 'b5a90298610863e46447198642b5a27b8702aefc' }, h("slot", { key: '14c83456eb056f48143edcd2c532bca017c60171' }))));
1233
+ return (h(Host, { key: '73479c3c80cda63b9f82ec584c962ffa53b7b85c', "data-version": version }, 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 } }, h("span", { key: 'a60b5838443ccd75fc08e07f791cb4ef088343f3' }, h("span", { key: 'da180bb66704712c0cba7b575ba260765a0df36f' }, h("slot", { key: 'c27dbc706a82fc49acb3414855e0e57d1dac0923' })), h("span", { key: '87ebe5fdcba5a160b2698965284fc5ce66d0fa90', "aria-hidden": "true", innerHTML: this.slottedContent })), h("post-icon", { key: '76f620188ebc3ad60b04523ea70ee4f3b642a2e8', name: "chevrondown" }))));
1208
1234
  }
1209
1235
  get host() { return getElement(this); }
1210
1236
  static get watchers() { return {
1211
- "for": ["validateControlFor"]
1237
+ "for": ["validateFor"]
1212
1238
  }; }
1213
1239
  };
1214
1240
  __decorate$1([
1215
1241
  EventFrom('post-megadropdown', { ignoreNestedComponents: false })
1216
- ], PostMegadropdownTrigger.prototype, "handleToggleMegadropdown", void 0);
1242
+ ], PostMegadropdownTrigger.prototype, "onMegadropdownToggled", null);
1217
1243
  PostMegadropdownTrigger.style = postMegadropdownTriggerCss;
1218
1244
 
1219
- 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}}";
1245
+ 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}}";
1220
1246
 
1221
1247
  var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1222
1248
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -1265,35 +1291,6 @@ const PostMenu = class {
1265
1291
  this.controlKeyDownHandler(e);
1266
1292
  }
1267
1293
  };
1268
- this.handlePostShown = (event) => {
1269
- // Only for the first open
1270
- if (event.detail.first) {
1271
- // Add "menu" and "menuitem" aria roles and aria-label
1272
- this.host.setAttribute('role', 'menu');
1273
- const menuItems = this.getSlottedItems();
1274
- for (const item of menuItems) {
1275
- item.setAttribute('role', 'menuitem');
1276
- }
1277
- if (this.label)
1278
- this.host.setAttribute('aria-label', this.label);
1279
- }
1280
- };
1281
- this.handlePostToggled = (event) => {
1282
- this.isVisible = event.detail.isOpen;
1283
- this.toggleMenu.emit(this.isVisible);
1284
- if (this.isVisible) {
1285
- this.lastFocusedElement = this.root?.activeElement;
1286
- requestAnimationFrame(() => {
1287
- const menuItems = this.getSlottedItems();
1288
- if (menuItems.length > 0) {
1289
- menuItems[0].focus();
1290
- }
1291
- });
1292
- }
1293
- else if (this.lastFocusedElement) {
1294
- this.lastFocusedElement.focus();
1295
- }
1296
- };
1297
1294
  this.handleClick = (e) => {
1298
1295
  const target = e.target;
1299
1296
  if (['BUTTON', 'A', 'INPUT', 'SELECT', 'TEXTAREA'].includes(target.tagName)) {
@@ -1355,6 +1352,35 @@ const PostMenu = class {
1355
1352
  console.error('hide: popoverRef is null or undefined');
1356
1353
  }
1357
1354
  }
1355
+ handlePostShown(event) {
1356
+ // Only for the first open
1357
+ if (event.detail.first) {
1358
+ // Add "menu" and "menuitem" aria roles and aria-label
1359
+ this.host.setAttribute('role', 'menu');
1360
+ const menuItems = this.getSlottedItems();
1361
+ for (const item of menuItems) {
1362
+ item.setAttribute('role', 'menuitem');
1363
+ }
1364
+ if (this.label)
1365
+ this.host.setAttribute('aria-label', this.label);
1366
+ }
1367
+ }
1368
+ handlePostToggled(event) {
1369
+ this.isVisible = event.detail.isOpen;
1370
+ this.toggleMenu.emit(this.isVisible);
1371
+ if (this.isVisible) {
1372
+ this.lastFocusedElement = this.root?.activeElement;
1373
+ requestAnimationFrame(() => {
1374
+ const menuItems = this.getSlottedItems();
1375
+ if (menuItems.length > 0) {
1376
+ menuItems[0].focus();
1377
+ }
1378
+ });
1379
+ }
1380
+ else if (this.lastFocusedElement) {
1381
+ this.lastFocusedElement.focus();
1382
+ }
1383
+ }
1358
1384
  controlKeyDownHandler(e) {
1359
1385
  const menuItems = this.getSlottedItems();
1360
1386
  if (!menuItems.length) {
@@ -1402,7 +1428,7 @@ const PostMenu = class {
1402
1428
  .flatMap(el => Array.from(getFocusableChildren(el))));
1403
1429
  }
1404
1430
  render() {
1405
- return (h(Host, { key: 'eef3d3cdf2553c2627ddf580a95c70f00c02d388', "data-version": version }, h("post-popovercontainer", { key: '27c3341bec9d4ee98b59f70e902913f03954c32c', onPostShow: this.handlePostShown, onPostToggle: this.handlePostToggled, placement: this.placement, ref: e => (this.popoverRef = e) }, h("div", { key: 'ef6c0ab8b6de380c23f6562a3d0ba34d9eaace98', part: "menu" }, h("slot", { key: 'edca1d3e9ab11d016ba18baf9f8d6aa65bb71958', name: "header" }), h("slot", { key: '40596847f9bac957a5992364997f0bcd8fd6a704' })))));
1431
+ return (h(Host, { key: '08285b17608e5bc3133a3da6015a5a0d4de6ec29', "data-version": version }, h("post-popovercontainer", { key: '17e45869b5e76cdd9bd43ca77b2f0b3876462014', onPostShow: this.handlePostShown.bind(this), onPostToggle: this.handlePostToggled.bind(this), placement: this.placement, ref: e => (this.popoverRef = e) }, h("div", { key: 'e2486aa099ffc8ac59885a0971ebb13649a49a35', part: "post-menu" }, h("slot", { key: '9f0e05f211fe18cf5beed8e1b33bde26d4974e24', name: "header" }), h("slot", { key: '971ac8ad433467a2ebe2429574cb10dbdadbcf25' })))));
1406
1432
  }
1407
1433
  get host() { return getElement(this); }
1408
1434
  static get watchers() { return {
@@ -1412,10 +1438,10 @@ const PostMenu = class {
1412
1438
  };
1413
1439
  __decorate([
1414
1440
  EventFrom('post-popovercontainer')
1415
- ], PostMenu.prototype, "handlePostShown", void 0);
1441
+ ], PostMenu.prototype, "handlePostShown", null);
1416
1442
  __decorate([
1417
1443
  EventFrom('post-popovercontainer')
1418
- ], PostMenu.prototype, "handlePostToggled", void 0);
1444
+ ], PostMenu.prototype, "handlePostToggled", null);
1419
1445
  PostMenu.style = postMenuCss;
1420
1446
 
1421
1447
  const postMenuTriggerCss = ":host{display:inline-block}";
@@ -1493,7 +1519,7 @@ const PostMenuTrigger = class {
1493
1519
  }
1494
1520
  }
1495
1521
  render() {
1496
- return (h(Host, { key: 'fc962802089652073c19cc35a511e48b0cab43b7', "data-version": version, "tab-index": "-1" }, h("slot", { key: 'd3a8b40c0a88c44092b56ca4aa1c74f880bebb20' })));
1522
+ return (h(Host, { key: '3ef7e372c9c655bf1da5d5a7d4bca6925a010f65', "data-version": version, "tab-index": "-1" }, h("slot", { key: '771db943ad5aa639c325f055ba6f9d763bf4256d' })));
1497
1523
  }
1498
1524
  get host() { return getElement(this); }
1499
1525
  static get watchers() { return {
@@ -4223,7 +4249,7 @@ function popIn(el) {
4223
4249
  });
4224
4250
  }
4225
4251
 
4226
- 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)}";
4252
+ 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}}";
4227
4253
 
4228
4254
  const PostPopovercontainer = class {
4229
4255
  constructor(hostRef) {
@@ -4252,10 +4278,6 @@ const PostPopovercontainer = class {
4252
4278
  * Whether or not to display a little pointer arrow
4253
4279
  */
4254
4280
  this.arrow = false;
4255
- /**
4256
- * Whether or not the popovercontainer should close when user clicks outside of it
4257
- */
4258
- this.manualClose = false;
4259
4281
  this.currentAnimation = null;
4260
4282
  }
4261
4283
  validatePlacement() {
@@ -4301,10 +4323,35 @@ const PostPopovercontainer = class {
4301
4323
  this.calculatePosition();
4302
4324
  this.host.showPopover();
4303
4325
  }
4326
+ /**
4327
+ * Programmatically hide the popovercontainer
4328
+ */
4329
+ async hide() {
4330
+ if (!this.toggleTimeoutId) {
4331
+ this.eventTarget = null;
4332
+ this.host.hidePopover();
4333
+ this.postHide.emit();
4334
+ }
4335
+ }
4336
+ /**
4337
+ * Toggle popovercontainer display
4338
+ * @param target A focusable element inside the <post-popover-trigger> component that controls the popover
4339
+ * @param force Pass true to always show or false to always hide
4340
+ */
4341
+ async toggle(target, force) {
4342
+ this.eventTarget = target;
4343
+ // Prevent instant double toggle
4344
+ if (!this.toggleTimeoutId) {
4345
+ this.calculatePosition();
4346
+ this.host.togglePopover(force);
4347
+ this.toggleTimeoutId = null;
4348
+ }
4349
+ return this.host.matches(':where(:popover-open, .popover-open)');
4350
+ }
4304
4351
  /**
4305
4352
  * Handles the popover opening process and emits related events.
4306
4353
  */
4307
- async open() {
4354
+ open() {
4308
4355
  const content = this.host.querySelector('.popover-content');
4309
4356
  this.startAutoupdates();
4310
4357
  if (content) {
@@ -4329,7 +4376,7 @@ const PostPopovercontainer = class {
4329
4376
  /**
4330
4377
  * Handles the popover closing process and emits related events.
4331
4378
  */
4332
- async close() {
4379
+ close() {
4333
4380
  if (typeof this.clearAutoUpdate === 'function') {
4334
4381
  this.clearAutoUpdate();
4335
4382
  }
@@ -4375,31 +4422,6 @@ const PostPopovercontainer = class {
4375
4422
  }
4376
4423
  }
4377
4424
  }
4378
- /**
4379
- * Programmatically hide the popovercontainer
4380
- */
4381
- async hide() {
4382
- if (!this.toggleTimeoutId) {
4383
- this.eventTarget = null;
4384
- this.host.hidePopover();
4385
- this.postHide.emit();
4386
- }
4387
- }
4388
- /**
4389
- * Toggle popovercontainer display
4390
- * @param target A focusable element inside the <post-popover-trigger> component that controls the popover
4391
- * @param force Pass true to always show or false to always hide
4392
- */
4393
- async toggle(target, force) {
4394
- this.eventTarget = target;
4395
- // Prevent instant double toggle
4396
- if (!this.toggleTimeoutId) {
4397
- this.calculatePosition();
4398
- this.host.togglePopover(force);
4399
- this.toggleTimeoutId = null;
4400
- }
4401
- return this.host.matches(':where(:popover-open, .popover-open)');
4402
- }
4403
4425
  /**
4404
4426
  * Start or stop auto updates based on popovercontainer events.
4405
4427
  * Popovercontainers can be closed or opened with other methods than class members,
@@ -4433,6 +4455,7 @@ const PostPopovercontainer = class {
4433
4455
  async calculatePosition() {
4434
4456
  const { x, y, middlewareData, placement } = await this.computeMainPosition();
4435
4457
  const currentPlacement = placement.split('-')[0];
4458
+ this.dynamicPlacement = currentPlacement;
4436
4459
  // Position popover
4437
4460
  this.host.style.left = `${x}px`;
4438
4461
  this.host.style.top = `${y}px`;
@@ -4440,11 +4463,20 @@ const PostPopovercontainer = class {
4440
4463
  if (this.arrow && middlewareData.arrow) {
4441
4464
  const { x: arrowX, y: arrowY } = middlewareData.arrow;
4442
4465
  const staticSide = PostPopovercontainer.STATIC_SIDES[currentPlacement];
4466
+ const rootFontSize = Number.parseFloat(getComputedStyle(document.documentElement).fontSize);
4467
+ // Calculate dynamically the half side which provides the static side offset
4468
+ const arrowSizeValue = getComputedStyle(this.arrowRef)
4469
+ .getPropertyValue('--arrow-size')
4470
+ .trim();
4471
+ const arrowSizePx = arrowSizeValue.endsWith('rem')
4472
+ ? Number.parseFloat(arrowSizeValue) * rootFontSize
4473
+ : Number.parseFloat(arrowSizeValue);
4474
+ const halfSide = -0.5 * arrowSizePx;
4443
4475
  if (staticSide) {
4444
4476
  Object.assign(this.arrowRef.style, {
4445
4477
  left: arrowX ? `${arrowX}px` : '',
4446
4478
  top: arrowY ? `${arrowY}px` : '',
4447
- [staticSide]: '-5px',
4479
+ [staticSide]: `${halfSide}px`,
4448
4480
  });
4449
4481
  }
4450
4482
  }
@@ -4545,9 +4577,9 @@ const PostPopovercontainer = class {
4545
4577
  }
4546
4578
  }
4547
4579
  render() {
4548
- return (h(Host, { key: 'ec57bb478a7fe7d6449ef1ed4d91db4d0835ea4e', "data-version": version, popover: this.manualClose ? 'manual' : 'auto' }, h("div", { key: '2969b3c6ef9441d06b9c913f47bb64e84006dbe4', class: "popover-content" }, this.arrow && (h("span", { key: '03b8addd0bee91d9358e9554f2d507b9a349e0db', class: "arrow", ref: el => {
4580
+ return (h(Host, { key: '0aaf70cb284e7227149f2e500aa7c72cab69d90a', "data-version": version, popover: "auto" }, h("div", { key: '9762887bdddca93acc6dfda715f2f41f4f6c98d6', class: "popover-content" }, this.arrow && (h("span", { key: 'e77f16be0b3b0cdb02886ea928aa6986d3f477e3', "dynamic-placement": this.dynamicPlacement, class: "arrow", ref: el => {
4549
4581
  this.arrowRef = el;
4550
- } })), h("slot", { key: '2fb25dce5ea9e5f1044cde4839df61af34c8b667' }))));
4582
+ } })), h("slot", { key: 'e8737e5acec3a20d258d462a7d82278d303ba353' }))));
4551
4583
  }
4552
4584
  get host() { return getElement(this); }
4553
4585
  static get watchers() { return {
@@ -4604,10 +4636,10 @@ const PostTogglebutton = class {
4604
4636
  this.host.addEventListener('keydown', (e) => this.handleKeydown(e));
4605
4637
  }
4606
4638
  render() {
4607
- return (h(Host, { key: 'f56832bfbfacc23923ac06d8455fffcdafa8a7ec', "data-version": version, role: "button", tabindex: "0", "aria-pressed": this.toggled.toString() }, h("slot", { key: '7adc9ed579b6badeb08c7599ceb95892d68f027f' })));
4639
+ return (h(Host, { key: 'a526ab3b0ae14c93bb4e1a8dc6d3ded4ff1bf014', "data-version": version, role: "button", tabindex: "0", "aria-pressed": this.toggled.toString() }, h("slot", { key: 'e8a5bdd99d9270cfcf014306a8d7fe8a2b6b79ba' })));
4608
4640
  }
4609
4641
  get host() { return getElement(this); }
4610
4642
  };
4611
4643
  PostTogglebutton.style = postTogglebuttonCss;
4612
4644
 
4613
- export { PostClosebutton as post_closebutton, PostHeader as post_header, PostIcon as post_icon, PostLanguageOption as post_language_option, PostLanguageSwitch as post_language_switch, PostList as post_list, PostListItem as post_list_item, PostLogo as post_logo, PostMainnavigation as post_mainnavigation, PostMegadropdown as post_megadropdown, PostMegadropdownTrigger as post_megadropdown_trigger, PostMenu as post_menu, PostMenuTrigger as post_menu_trigger, PostPopovercontainer as post_popovercontainer, PostTogglebutton as post_togglebutton };
4645
+ export { PostClosebutton as post_closebutton, PostHeader as post_header, PostIcon as post_icon, PostLanguageMenu as post_language_menu, PostLanguageMenuItem as post_language_menu_item, PostLogo as post_logo, PostMainnavigation as post_mainnavigation, PostMegadropdown as post_megadropdown, PostMegadropdownTrigger as post_megadropdown_trigger, PostMenu as post_menu, PostMenuTrigger as post_menu_trigger, PostPopovercontainer as post_popovercontainer, PostTogglebutton as post_togglebutton };