@swisspost/design-system-components 10.0.0-next.55 → 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 (400) hide show
  1. package/dist/{esm/breakpoints-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-B4gYpuJF.js → index-CKNxhb0S.js} +21 -13
  10. package/dist/cjs/loader.cjs.js +2 -2
  11. package/dist/cjs/{package-DkJrv93P.js → package-CY7IOoiw.js} +1 -1
  12. package/dist/cjs/post-accordion_2.cjs.entry.js +11 -11
  13. package/dist/cjs/post-avatar.cjs.entry.js +10 -10
  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} +481 -484
  20. package/dist/cjs/post-collapsible_2.cjs.entry.js +33 -33
  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 +11 -11
  28. package/dist/cjs/post-rating.cjs.entry.js +13 -13
  29. package/dist/cjs/post-stepper-item.cjs.entry.js +4 -4
  30. package/dist/cjs/post-stepper.cjs.entry.js +29 -26
  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 +6 -6
  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 +6 -6
  45. package/dist/collection/components/post-accordion/post-accordion.css +1 -1
  46. package/dist/collection/components/post-accordion-item/post-accordion-item.css +1 -1
  47. package/dist/collection/components/post-accordion-item/post-accordion-item.js +4 -4
  48. package/dist/collection/components/post-avatar/post-avatar.js +1 -1
  49. package/dist/collection/components/post-back-to-top/post-back-to-top.js +14 -14
  50. package/dist/collection/components/post-banner/post-banner.css +4 -1
  51. package/dist/collection/components/post-banner/post-banner.js +3 -3
  52. package/dist/collection/components/post-breadcrumb-item/post-breadcrumb-item.js +1 -1
  53. package/dist/collection/components/post-breadcrumbs/post-breadcrumbs.js +24 -24
  54. package/dist/collection/components/post-card-control/post-card-control.js +2 -2
  55. package/dist/collection/components/post-closebutton/post-closebutton.css +1 -1
  56. package/dist/collection/components/post-closebutton/post-closebutton.js +1 -1
  57. package/dist/collection/components/post-collapsible/post-collapsible.js +27 -27
  58. package/dist/collection/components/post-collapsible-trigger/post-collapsible-trigger.js +1 -1
  59. package/dist/collection/components/post-footer/post-footer.css +1 -1
  60. package/dist/collection/components/post-footer/post-footer.js +17 -15
  61. package/dist/collection/components/post-header/post-header.css +1 -1
  62. package/dist/collection/components/post-header/post-header.js +113 -82
  63. package/dist/collection/components/post-icon/post-icon.js +6 -4
  64. package/dist/collection/components/post-language-menu/post-language-menu.css +1 -0
  65. package/dist/collection/components/{post-language-switch/post-language-switch.js → post-language-menu/post-language-menu.js} +23 -23
  66. package/dist/collection/components/post-language-menu-item/post-language-menu-item.css +1 -0
  67. package/dist/collection/components/{post-language-option/post-language-option.js → post-language-menu-item/post-language-menu-item.js} +13 -13
  68. package/dist/collection/components/post-linkarea/post-linkarea.js +1 -1
  69. package/dist/collection/components/post-logo/post-logo.css +3 -1
  70. package/dist/collection/components/post-logo/post-logo.js +1 -1
  71. package/dist/collection/components/post-mainnavigation/post-mainnavigation.css +1 -1
  72. package/dist/collection/components/post-mainnavigation/post-mainnavigation.js +41 -29
  73. package/dist/collection/components/post-megadropdown/post-megadropdown.css +1 -1
  74. package/dist/collection/components/post-megadropdown/post-megadropdown.js +183 -74
  75. package/dist/collection/components/post-megadropdown-trigger/post-megadropdown-trigger.css +3 -1
  76. package/dist/collection/components/post-megadropdown-trigger/post-megadropdown-trigger.js +79 -73
  77. package/dist/collection/components/post-menu/post-menu.css +1 -1
  78. package/dist/collection/components/post-menu/post-menu.js +34 -34
  79. package/dist/collection/components/post-menu-item/post-menu-item.js +1 -1
  80. package/dist/collection/components/post-menu-trigger/post-menu-trigger.js +1 -1
  81. package/dist/collection/components/post-pagination/post-pagination.css +1 -0
  82. package/dist/collection/components/post-pagination/post-pagination.js +838 -0
  83. package/dist/collection/components/post-popover/post-popover.js +9 -9
  84. package/dist/collection/components/post-popover-trigger/post-popover-trigger.js +43 -27
  85. package/dist/collection/components/post-popovercontainer/post-popovercontainer.css +1 -1
  86. package/dist/collection/components/post-popovercontainer/post-popovercontainer.js +45 -92
  87. package/dist/collection/components/post-rating/post-rating.js +2 -2
  88. package/dist/collection/components/post-stepper/post-stepper.js +34 -31
  89. package/dist/collection/components/post-stepper-item/post-stepper-item.css +2 -2
  90. package/dist/collection/components/post-stepper-item/post-stepper-item.js +1 -1
  91. package/dist/collection/components/post-tab-item/post-tab-item.css +1 -0
  92. package/dist/collection/components/post-tab-item/post-tab-item.js +86 -0
  93. package/dist/collection/components/post-tab-panel/post-tab-panel.js +9 -9
  94. package/dist/collection/components/post-tabs/post-tabs.js +230 -57
  95. package/dist/collection/components/post-togglebutton/post-togglebutton.js +1 -1
  96. package/dist/collection/components/post-tooltip/post-tooltip.js +1 -1
  97. package/dist/collection/components/post-tooltip-trigger/post-tooltip-trigger.js +1 -1
  98. package/dist/collection/utils/environment.js +47 -2
  99. package/dist/collection/utils/event-from.js +2 -2
  100. package/dist/collection/utils/get-focusable-children.js +29 -21
  101. package/dist/collection/utils/is-motion-reduced.js +1 -1
  102. package/dist/collection/utils/tests/environment/hydrate-app-helper.js +16 -0
  103. package/dist/collection/utils/tests/environment/post-env-test.js +9 -0
  104. package/dist/component-names.json +4 -5
  105. package/dist/components/breakpoints.js +90 -3
  106. package/dist/components/debounce.js +11 -0
  107. package/dist/components/environment.js +49 -0
  108. package/dist/components/event-from.js +2 -2
  109. package/dist/components/fade-slide.js +36 -0
  110. package/dist/components/fade.js +21 -8
  111. package/dist/components/get-focusable-children.js +29 -21
  112. package/dist/components/get-root.js +1 -1
  113. package/dist/components/index.d.ts +10 -10
  114. package/dist/components/index.js +5 -5
  115. package/dist/components/package.js +1 -1
  116. package/dist/components/post-accordion-item2.js +4 -5
  117. package/dist/components/post-accordion2.js +2 -3
  118. package/dist/components/post-avatar.js +2 -3
  119. package/dist/components/post-back-to-top.js +14 -40
  120. package/dist/components/post-banner.js +5 -6
  121. package/dist/components/post-breadcrumb-item2.js +2 -3
  122. package/dist/components/post-breadcrumbs.js +23 -33
  123. package/dist/components/post-card-control.js +3 -4
  124. package/dist/components/post-closebutton2.js +3 -4
  125. package/dist/components/post-collapsible-trigger2.js +2 -3
  126. package/dist/components/post-collapsible2.js +25 -25
  127. package/dist/components/{post-list.d.ts → post-env-test.d.ts} +4 -4
  128. package/dist/components/post-env-test.js +31 -0
  129. package/dist/components/post-footer.js +17 -16
  130. package/dist/components/post-header.js +97 -95
  131. package/dist/components/post-icon2.js +8 -6
  132. package/dist/components/post-language-menu-item.d.ts +11 -0
  133. package/dist/components/post-language-menu-item.js +98 -0
  134. package/dist/components/{post-language-switch.d.ts → post-language-menu.d.ts} +4 -4
  135. package/dist/components/post-language-menu.js +156 -0
  136. package/dist/components/post-linkarea.js +1 -1
  137. package/dist/components/post-logo.js +3 -4
  138. package/dist/components/post-mainnavigation.js +21 -32
  139. package/dist/components/post-megadropdown-trigger.js +71 -78
  140. package/dist/components/post-megadropdown.js +182 -77
  141. package/dist/components/post-menu-item2.js +1 -1
  142. package/dist/components/post-menu-trigger2.js +2 -3
  143. package/dist/components/post-menu2.js +34 -35
  144. package/dist/components/{post-tab-header.d.ts → post-pagination.d.ts} +4 -4
  145. package/dist/components/post-pagination.js +635 -0
  146. package/dist/components/post-popover-trigger.js +41 -26
  147. package/dist/components/post-popover.js +8 -9
  148. package/dist/components/post-popovercontainer2.js +44 -40
  149. package/dist/components/post-rating.js +2 -3
  150. package/dist/components/post-stepper-item.js +2 -2
  151. package/dist/components/post-stepper.js +31 -29
  152. package/dist/components/{post-list-item.d.ts → post-tab-item.d.ts} +4 -4
  153. package/dist/components/post-tab-item.js +70 -0
  154. package/dist/components/post-tab-panel.js +8 -9
  155. package/dist/components/post-tabs.js +192 -37
  156. package/dist/components/post-togglebutton.js +1 -51
  157. package/dist/components/post-togglebutton2.js +53 -0
  158. package/dist/components/post-tooltip-trigger.js +3 -3
  159. package/dist/components/post-tooltip.js +2 -3
  160. package/dist/components/react/index.js +1 -1
  161. package/dist/{cjs/breakpoints-CEkeixld.js → components/react/p-B8YiQ3mz.js} +89 -6
  162. package/dist/components/react/{p-DBPOV12C.js → p-BOLlAY91.js} +9 -7
  163. package/dist/components/react/p-BVCjnh6Q.js +36 -0
  164. package/dist/components/react/{p-CBFgkSgY.js → p-BVGcVycs.js} +1 -1
  165. package/dist/components/react/{p-LtiDhYis.js → p-BYCGzO-t.js} +5 -6
  166. package/dist/components/react/p-C9hMpmsD.js +11 -0
  167. package/dist/components/react/{p-BVXiQdHq.js → p-CJ13r5fi.js} +29 -21
  168. package/dist/components/react/{p-CSAMO7iJ.js → p-CnZWXrbA.js} +39 -40
  169. package/dist/components/react/p-CoDiS_Ik.js +24 -0
  170. package/dist/components/react/p-CyniMNY-.js +54 -0
  171. package/dist/components/react/p-D5knoiyy.js +24 -0
  172. package/dist/components/react/{p-Djvj8fd2.js → p-DBO6FfHt.js} +4 -5
  173. package/dist/components/react/{p-Ccrl2AQn.js → p-DRfa3MOV.js} +26 -26
  174. package/dist/components/react/{p-Cwiv86_f.js → p-DYImHx0e.js} +4 -5
  175. package/dist/components/react/p-DZ5m2Ttg.js +3 -0
  176. package/dist/components/react/p-FxUVQ4Tx.js +49 -0
  177. package/dist/components/react/{p-D2waO0Zc.js → p-L36-yvgK.js} +2 -2
  178. package/dist/components/react/{p-CewRvBtg.js → p-NCAcc7ZZ.js} +4 -5
  179. package/dist/components/react/{p-DVGEExot.js → p-QNPIvxLq.js} +45 -41
  180. package/dist/components/react/{p-XrZzCOKT.js → p-_pLhqTys.js} +5 -6
  181. package/dist/components/react/p-c6yNOQwn.js +113 -0
  182. package/dist/components/react/{p-CzIKqBrS.js → p-rEfV4v4a.js} +2 -2
  183. package/dist/components/react/post-accordion-item.js +1 -1
  184. package/dist/components/react/post-accordion.js +1 -1
  185. package/dist/components/react/post-avatar.js +3 -4
  186. package/dist/components/react/post-back-to-top.js +16 -42
  187. package/dist/components/react/post-banner.js +7 -8
  188. package/dist/components/react/post-breadcrumb-item.js +1 -1
  189. package/dist/components/react/post-breadcrumbs.js +30 -40
  190. package/dist/components/react/post-card-control.js +5 -6
  191. package/dist/components/react/post-closebutton.js +1 -1
  192. package/dist/components/react/post-collapsible-trigger.js +1 -1
  193. package/dist/components/react/post-collapsible.js +1 -1
  194. package/dist/components/react/{post-list.d.ts → post-env-test.d.ts} +4 -4
  195. package/dist/components/react/post-env-test.js +32 -0
  196. package/dist/components/react/post-footer.js +23 -22
  197. package/dist/components/react/post-header.js +99 -97
  198. package/dist/components/react/post-icon.js +1 -1
  199. package/dist/components/react/post-language-menu-item.d.ts +11 -0
  200. package/dist/components/react/post-language-menu-item.js +99 -0
  201. package/dist/components/react/{post-language-option.d.ts → post-language-menu.d.ts} +4 -4
  202. package/dist/components/react/post-language-menu.js +157 -0
  203. package/dist/components/react/post-linkarea.js +2 -2
  204. package/dist/components/react/post-logo.js +4 -5
  205. package/dist/components/react/post-mainnavigation.js +23 -34
  206. package/dist/components/react/post-megadropdown-trigger.js +73 -80
  207. package/dist/components/react/post-megadropdown.js +184 -79
  208. package/dist/components/react/post-menu-item.js +1 -1
  209. package/dist/components/react/post-menu-trigger.js +1 -1
  210. package/dist/components/react/post-menu.js +1 -1
  211. package/dist/components/react/{post-tab-header.d.ts → post-pagination.d.ts} +4 -4
  212. package/dist/components/react/post-pagination.js +636 -0
  213. package/dist/components/react/post-popover-trigger.js +42 -27
  214. package/dist/components/react/post-popover.js +13 -14
  215. package/dist/components/react/post-popovercontainer.js +1 -1
  216. package/dist/components/react/post-rating.js +4 -5
  217. package/dist/components/react/post-stepper-item.js +3 -3
  218. package/dist/components/react/post-stepper.js +32 -30
  219. package/dist/components/react/{post-list-item.d.ts → post-tab-item.d.ts} +4 -4
  220. package/dist/components/react/post-tab-item.js +71 -0
  221. package/dist/components/react/post-tab-panel.js +9 -10
  222. package/dist/components/react/post-tabs.js +193 -38
  223. package/dist/components/react/post-togglebutton.js +1 -52
  224. package/dist/components/react/post-tooltip-trigger.js +4 -4
  225. package/dist/components/react/post-tooltip.js +4 -5
  226. package/dist/components/utils.js +24 -0
  227. package/dist/docs.json +854 -597
  228. package/dist/{components/react/p-CJ80BZ06.js → esm/breakpoints-DYoSKGHO.js} +90 -3
  229. package/dist/esm/debounce-C9hMpmsD.js +11 -0
  230. package/dist/esm/environment-CEmnRoA6.js +49 -0
  231. package/dist/esm/{event-from-CzIKqBrS.js → event-from-rEfV4v4a.js} +2 -2
  232. package/dist/esm/fade-DsgPYmAa.js +24 -0
  233. package/dist/esm/fade-slide-CvOvauo9.js +36 -0
  234. package/dist/esm/{get-focusable-children-D9ZHp2FP.js → get-focusable-children-BXNs2_sw.js} +29 -21
  235. package/dist/esm/{get-root-BkQ3CrLq.js → get-root-CXfAA093.js} +1 -1
  236. package/dist/esm/{index-wEFJ-c34.js → index-1ReqxAnI.js} +21 -13
  237. package/dist/esm/loader.js +3 -3
  238. package/dist/esm/package-DZ5m2Ttg.js +3 -0
  239. package/dist/esm/post-accordion_2.entry.js +9 -9
  240. package/dist/esm/post-avatar.entry.js +5 -5
  241. package/dist/esm/post-back-to-top.entry.js +16 -40
  242. package/dist/esm/post-banner.entry.js +10 -9
  243. package/dist/esm/post-breadcrumb-item_2.entry.js +6 -6
  244. package/dist/esm/post-breadcrumbs.entry.js +20 -29
  245. package/dist/esm/post-card-control.entry.js +6 -6
  246. package/dist/esm/{post-closebutton_15.entry.js → post-closebutton_13.entry.js} +462 -463
  247. package/dist/esm/post-collapsible_2.entry.js +30 -30
  248. package/dist/esm/post-components.js +3 -3
  249. package/dist/esm/post-env-test.entry.js +13 -0
  250. package/dist/esm/post-footer.entry.js +18 -16
  251. package/dist/esm/post-linkarea.entry.js +3 -3
  252. package/dist/esm/post-pagination.entry.js +587 -0
  253. package/dist/esm/post-popover-trigger.entry.js +44 -28
  254. package/dist/esm/post-popover.entry.js +10 -10
  255. package/dist/esm/post-rating.entry.js +5 -5
  256. package/dist/esm/post-stepper-item.entry.js +4 -4
  257. package/dist/esm/post-stepper.entry.js +28 -25
  258. package/dist/esm/post-tab-item.entry.js +47 -0
  259. package/dist/esm/post-tab-panel.entry.js +9 -9
  260. package/dist/esm/post-tabs.entry.js +191 -38
  261. package/dist/esm/post-tooltip-trigger.entry.js +5 -5
  262. package/dist/esm/post-tooltip.entry.js +5 -5
  263. package/dist/esm/utils-CoDiS_Ik.js +24 -0
  264. package/dist/post-components/{p-7f635728.entry.js → p-130eb074.entry.js} +1 -1
  265. package/dist/post-components/p-13d018fe.entry.js +1 -0
  266. package/dist/post-components/p-143e5a84.entry.js +1 -0
  267. package/dist/post-components/p-1ReqxAnI.js +2 -0
  268. package/dist/post-components/p-2b220851.entry.js +1 -0
  269. package/dist/post-components/{p-a9644e54.entry.js → p-390f111f.entry.js} +1 -1
  270. package/dist/post-components/p-3cf09fbd.entry.js +1 -0
  271. package/dist/post-components/p-52e584ca.entry.js +1 -0
  272. package/dist/post-components/p-56a4040c.entry.js +1 -0
  273. package/dist/post-components/p-675dab57.entry.js +1 -0
  274. package/dist/post-components/p-6857fd9d.entry.js +1 -0
  275. package/dist/post-components/p-7cd00e3e.entry.js +1 -0
  276. package/dist/post-components/p-7f5d2487.entry.js +1 -0
  277. package/dist/post-components/{p-cd03e6f2.entry.js → p-88201353.entry.js} +1 -1
  278. package/dist/post-components/p-89360cd1.entry.js +1 -0
  279. package/dist/post-components/p-B7ebLhHc.js +1 -0
  280. package/dist/post-components/p-BVCjnh6Q.js +1 -0
  281. package/dist/post-components/p-BXNs2_sw.js +1 -0
  282. package/dist/post-components/p-C9hMpmsD.js +1 -0
  283. package/dist/post-components/p-CEmnRoA6.js +1 -0
  284. package/dist/post-components/p-CoDiS_Ik.js +1 -0
  285. package/dist/post-components/p-D5knoiyy.js +1 -0
  286. package/dist/post-components/p-DI-h_mEL.js +1 -0
  287. package/dist/post-components/p-DZ5m2Ttg.js +1 -0
  288. package/dist/post-components/p-a740eaed.entry.js +1 -0
  289. package/dist/post-components/{p-57288cb2.entry.js → p-a79590f5.entry.js} +1 -1
  290. package/dist/post-components/p-b708d96a.entry.js +1 -0
  291. package/dist/post-components/p-bcf5786f.entry.js +1 -0
  292. package/dist/post-components/p-c92512f5.entry.js +1 -0
  293. package/dist/post-components/{p-af030a3a.entry.js → p-d7cb3a61.entry.js} +1 -1
  294. package/dist/post-components/p-d7f33813.entry.js +1 -0
  295. package/dist/post-components/p-da97ee21.entry.js +1 -0
  296. package/dist/post-components/{p-e62e1f57.entry.js → p-ed4db774.entry.js} +1 -1
  297. package/dist/post-components/post-components.css +1 -1
  298. package/dist/post-components/post-components.esm.js +1 -1
  299. package/dist/prebuild.js +46 -0
  300. package/dist/types/animations/collapse.d.ts +1 -0
  301. package/dist/types/animations/fade-slide.d.ts +11 -0
  302. package/dist/types/animations/fade.d.ts +2 -2
  303. package/dist/types/animations/index.d.ts +2 -0
  304. package/dist/types/animations/slide.d.ts +9 -2
  305. package/dist/types/animations/types.d.ts +13 -0
  306. package/dist/types/animations/utils.d.ts +2 -0
  307. package/dist/types/components/post-accordion-item/heading-levels.d.ts +1 -1
  308. package/dist/types/components/post-accordion-item/post-accordion-item.d.ts +2 -2
  309. package/dist/types/components/post-back-to-top/post-back-to-top.d.ts +2 -2
  310. package/dist/types/components/post-breadcrumbs/post-breadcrumbs.d.ts +6 -6
  311. package/dist/types/components/post-collapsible/post-collapsible.d.ts +4 -5
  312. package/dist/types/components/post-footer/post-footer.d.ts +4 -4
  313. package/dist/types/components/post-header/post-header.d.ts +18 -13
  314. package/dist/types/components/{post-language-switch/post-language-switch.d.ts → post-language-menu/post-language-menu.d.ts} +6 -6
  315. package/dist/types/components/{post-language-option/post-language-option.d.ts → post-language-menu-item/post-language-menu-item.d.ts} +5 -5
  316. package/dist/types/components/post-mainnavigation/post-mainnavigation.d.ts +6 -5
  317. package/dist/types/components/post-megadropdown/post-megadropdown.d.ts +20 -2
  318. package/dist/types/components/post-megadropdown-trigger/post-megadropdown-trigger.d.ts +17 -23
  319. package/dist/types/components/post-menu/post-menu.d.ts +4 -4
  320. package/dist/types/components/post-pagination/post-pagination.d.ts +224 -0
  321. package/dist/types/components/post-popover/post-popover.d.ts +3 -3
  322. package/dist/types/components/post-popover-trigger/post-popover-trigger.d.ts +2 -1
  323. package/dist/types/components/post-popovercontainer/post-popovercontainer.d.ts +13 -16
  324. package/dist/types/components/post-rating/post-rating.d.ts +1 -1
  325. package/dist/types/components/post-stepper/post-stepper.d.ts +9 -8
  326. package/dist/types/components/post-tab-item/post-tab-item.d.ts +19 -0
  327. package/dist/types/components/post-tab-panel/post-tab-panel.d.ts +3 -3
  328. package/dist/types/components/post-tabs/post-tabs.d.ts +33 -12
  329. package/dist/types/components.d.ts +311 -200
  330. package/dist/types/home/runner/work/design-system/design-system/packages/components/.stencil/prebuild.d.ts +9 -0
  331. package/dist/types/types/heading-levels.d.ts +1 -1
  332. package/dist/types/utils/environment.d.ts +25 -1
  333. package/dist/types/utils/get-focusable-children.d.ts +2 -2
  334. package/dist/types/utils/tests/environment/hydrate-app-helper.d.ts +5 -0
  335. package/dist/types/utils/tests/environment/post-env-test.d.ts +3 -0
  336. package/hydrate/index.js +1740 -863
  337. package/hydrate/index.mjs +1740 -863
  338. package/package.json +6 -7
  339. package/dist/cjs/fade-nS5zzDQS.js +0 -14
  340. package/dist/cjs/index-UFKR6Ok0.js +0 -98
  341. package/dist/cjs/post-tab-header.cjs.entry.js +0 -31
  342. package/dist/collection/animations/slide-and-fade.js +0 -25
  343. package/dist/collection/components/post-language-option/post-language-option.css +0 -1
  344. package/dist/collection/components/post-language-switch/post-language-switch.css +0 -1
  345. package/dist/collection/components/post-list/post-list.css +0 -1
  346. package/dist/collection/components/post-list/post-list.js +0 -97
  347. package/dist/collection/components/post-list-item/post-list-item.css +0 -1
  348. package/dist/collection/components/post-list-item/post-list-item.js +0 -26
  349. package/dist/collection/components/post-tab-header/post-tab-header.css +0 -1
  350. package/dist/collection/components/post-tab-header/post-tab-header.js +0 -65
  351. package/dist/components/index2.js +0 -89
  352. package/dist/components/post-language-option.d.ts +0 -11
  353. package/dist/components/post-language-option.js +0 -99
  354. package/dist/components/post-language-switch.js +0 -157
  355. package/dist/components/post-list-item.js +0 -38
  356. package/dist/components/post-list.js +0 -61
  357. package/dist/components/post-tab-header.js +0 -52
  358. package/dist/components/react/p-BhxZzOEC.js +0 -3
  359. package/dist/components/react/p-CYkf_7Y5.js +0 -89
  360. package/dist/components/react/p-SbIC4aZX.js +0 -11
  361. package/dist/components/react/p-v3pOrMNQ.js +0 -114
  362. package/dist/components/react/post-language-option.js +0 -100
  363. package/dist/components/react/post-language-switch.d.ts +0 -11
  364. package/dist/components/react/post-language-switch.js +0 -158
  365. package/dist/components/react/post-list-item.js +0 -39
  366. package/dist/components/react/post-list.js +0 -62
  367. package/dist/components/react/post-tab-header.js +0 -53
  368. package/dist/esm/fade-SbIC4aZX.js +0 -11
  369. package/dist/esm/index-Beaz8wEe.js +0 -89
  370. package/dist/esm/package-BhxZzOEC.js +0 -3
  371. package/dist/esm/post-tab-header.entry.js +0 -29
  372. package/dist/post-components/p-01e678c9.entry.js +0 -1
  373. package/dist/post-components/p-034a453f.entry.js +0 -1
  374. package/dist/post-components/p-15a4cdbf.entry.js +0 -1
  375. package/dist/post-components/p-24dc54d1.entry.js +0 -1
  376. package/dist/post-components/p-2a2030bf.entry.js +0 -1
  377. package/dist/post-components/p-2ed84cc3.entry.js +0 -1
  378. package/dist/post-components/p-3228968f.entry.js +0 -1
  379. package/dist/post-components/p-3c01ddfe.entry.js +0 -1
  380. package/dist/post-components/p-748b1f01.entry.js +0 -1
  381. package/dist/post-components/p-7745e46e.entry.js +0 -1
  382. package/dist/post-components/p-82c178a3.entry.js +0 -1
  383. package/dist/post-components/p-9b5f8319.entry.js +0 -1
  384. package/dist/post-components/p-Beaz8wEe.js +0 -1
  385. package/dist/post-components/p-BhxZzOEC.js +0 -1
  386. package/dist/post-components/p-CBFgkSgY.js +0 -1
  387. package/dist/post-components/p-CJ80BZ06.js +0 -1
  388. package/dist/post-components/p-D9ZHp2FP.js +0 -1
  389. package/dist/post-components/p-SbIC4aZX.js +0 -1
  390. package/dist/post-components/p-b8ba8139.entry.js +0 -1
  391. package/dist/post-components/p-db935e8e.entry.js +0 -1
  392. package/dist/post-components/p-fb4b1641.entry.js +0 -1
  393. package/dist/post-components/p-wEFJ-c34.js +0 -2
  394. package/dist/types/animations/slide-and-fade.d.ts +0 -2
  395. package/dist/types/components/post-list/post-list.d.ts +0 -24
  396. package/dist/types/components/post-list-item/post-list-item.d.ts +0 -8
  397. package/dist/types/components/post-tab-header/post-tab-header.d.ts +0 -14
  398. /package/dist/collection/components/{post-language-switch → post-language-menu}/switch-variants.js +0 -0
  399. /package/dist/post-components/{p-CzIKqBrS.js → p-rEfV4v4a.js} +0 -0
  400. /package/dist/types/components/{post-language-switch → post-language-menu}/switch-variants.d.ts +0 -0
@@ -1,18 +1,21 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-B4gYpuJF.js');
4
- var _package = require('./package-DkJrv93P.js');
5
- var index$1 = require('./index-UFKR6Ok0.js');
6
- var breakpoints = require('./breakpoints-CEkeixld.js');
7
- var getFocusableChildren = require('./get-focusable-children-Bx63XUQg.js');
8
- var eventFrom = require('./event-from-CLvtSUKf.js');
3
+ var index = require('./index-CKNxhb0S.js');
4
+ var _package = require('./package-CY7IOoiw.js');
5
+ var breakpoints = require('./breakpoints-Df03Ct7n.js');
6
+ var fade = require('./fade-CPQhl1fP.js');
7
+ var getFocusableChildren = require('./get-focusable-children-ChETM1wK.js');
8
+ var eventFrom = require('./event-from-CwMw19f8.js');
9
+ var environment = require('./environment-BQE9Unf_.js');
9
10
  var index_browser = require('./index.browser-Doj636JV.js');
11
+ var utils = require('./utils-s05L2ulk.js');
12
+ var fadeSlide = require('./fade-slide-dPhQa-I1.js');
10
13
  var placement = require('./placement-qEFR9hmI.js');
11
- var getRoot = require('./get-root-CyMf3Vsd.js');
14
+ var getRoot = require('./get-root-CUAv4k4C.js');
12
15
 
13
16
  const BUTTON_TYPES = ['button', 'submit', 'reset'];
14
17
 
15
- const postClosebuttonCss = ".visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}post-closebutton .btn{padding:0;border:unset;min-height:unset;min-width:unset;width:var(--post-device-sizing-notification-1);height:var(--post-device-sizing-notification-1);border-radius:var(--post-device-border-radius-round);background-color:var(--post-scheme-color-interactive-button-tertiary-enabled-bg);color:var(--post-scheme-color-interactive-button-tertiary-enabled-fg);display:flex;align-items:center;justify-content:center}post-closebutton .btn>post-icon{min-width:var(--post-device-sizing-interactive-icon-size4);width:var(--post-device-sizing-interactive-icon-size4);height:var(--post-device-sizing-interactive-icon-size4)}post-closebutton .btn:not(:disabled):hover,post-closebutton .btn.pretend-hover{cursor:pointer;background-color:var(--post-scheme-color-interactive-button-tertiary-hover-bg);color:var(--post-scheme-color-interactive-button-tertiary-hover-fg)}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-closebutton .btn:not(:disabled):hover,post-closebutton .btn.pretend-hover{color:HighlightText !important}}";
18
+ const postClosebuttonCss = ".visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}post-closebutton .btn{padding:0;border:unset;min-height:unset;min-width:unset;width:var(--post-device-sizing-notification-1);height:var(--post-device-sizing-notification-1);border-radius:var(--post-device-border-radius-round);background-color:var(--post-scheme-color-interactive-button-tertiary-enabled-bg);color:var(--post-scheme-color-interactive-button-tertiary-enabled-fg);display:flex;align-items:center;justify-content:center}post-closebutton .btn>post-icon{min-width:var(--post-device-sizing-interactive-icon-size4);width:var(--post-device-sizing-interactive-icon-size4);height:var(--post-device-sizing-interactive-icon-size4)}post-closebutton .btn{outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}post-closebutton .btn:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-closebutton .btn:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){post-closebutton .btn:is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-closebutton .btn:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}post-closebutton .btn:not(:disabled):hover,post-closebutton .btn.pretend-hover{cursor:pointer;background-color:var(--post-scheme-color-interactive-button-tertiary-hover-bg);color:var(--post-scheme-color-interactive-button-tertiary-hover-fg)}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-closebutton .btn:not(:disabled):hover,post-closebutton .btn.pretend-hover{color:HighlightText !important}}";
16
19
 
17
20
  const PostClosebutton = class {
18
21
  constructor(hostRef) {
@@ -24,7 +27,7 @@ const PostClosebutton = class {
24
27
  this.buttonType = 'button';
25
28
  }
26
29
  validateButtonType() {
27
- index$1.checkEmptyOrOneOf(this, 'buttonType', BUTTON_TYPES);
30
+ breakpoints.checkEmptyOrOneOf(this, 'buttonType', BUTTON_TYPES);
28
31
  }
29
32
  componentDidLoad() {
30
33
  this.checkContent();
@@ -48,7 +51,7 @@ const PostClosebutton = class {
48
51
  }
49
52
  }
50
53
  render() {
51
- return (index.h(index.Host, { key: '9b5bb7e95c6cf3039119ce485e963ac672834bc3', "data-version": _package.version }, index.h("button", { key: '084709a7c632a8c665905a667fa6498cae1972a6', class: "btn", type: this.buttonType }, index.h("post-icon", { key: 'e19209e0c8de59d3e187531e0185d8f2d5c85408', "aria-hidden": "true", name: "closex" }), index.h("span", { key: '233184a45391e5a9b89635345f2324a87f5e9558', class: "visually-hidden" }, index.h("slot", { key: 'c213ac1dbdd98d83a8b2dc1b74c85926404ad1c1' })))));
54
+ return (index.h(index.Host, { key: '6965a8cb5fb765b4fcec0439ceeafe19d34970c2', "data-version": _package.version }, index.h("button", { key: '7e718f70b0a4ac79e9439784dac46bd1ffd60fd1', class: "btn", type: this.buttonType }, index.h("post-icon", { key: '70acda3fbe6c9420f0be708fde6b29a7d5337d13', "aria-hidden": "true", name: "closex" }), index.h("span", { key: '899b3814c0898b521e4166e1cd951af628558e78', class: "visually-hidden" }, index.h("slot", { key: 'b13d0e95fd567c86e93e5185389909c7c0e7107d' })))));
52
55
  }
53
56
  get host() { return index.getElement(this); }
54
57
  static get watchers() { return {
@@ -57,31 +60,34 @@ const PostClosebutton = class {
57
60
  };
58
61
  PostClosebutton.style = postClosebuttonCss;
59
62
 
60
- const easing$1 = 'ease';
61
- const duration$1 = 500;
62
- const fill = 'forwards';
63
- function slideUp(el, translateSize = '-100%') {
64
- return el.animate([
65
- { transform: 'translateY(0)' }, // Starting position (no translation)
66
- { transform: `translateY(${translateSize})` }, // End position
67
- ], {
68
- duration: duration$1,
69
- easing: easing$1,
70
- fill,
71
- });
63
+ /**
64
+ * Used by PostMegadropdown (burger menu)
65
+ */
66
+ const defaultOptions = {
67
+ translate: 100,
68
+ duration: 500,
69
+ easing: 'ease',
70
+ fill: 'none',
71
+ };
72
+ function animateSlide(el, keyframes, options) {
73
+ const { duration, easing, fill } = { ...defaultOptions, ...options };
74
+ return el.animate(keyframes, { duration, easing: utils.resolveEasing(easing), fill });
72
75
  }
73
- function slideDown(el, translateSize = '-100%') {
74
- return el.animate([
75
- { transform: `translateY(${translateSize})` }, // Starting position (no translation)
76
- { transform: 'translateY(0)' }, // End position
77
- ], {
78
- duration: duration$1,
79
- easing: easing$1,
80
- fill,
81
- });
76
+ function slide(el, direction, options = {}) {
77
+ const mergedOptions = {
78
+ ...defaultOptions,
79
+ ...options,
80
+ };
81
+ const { translate } = mergedOptions;
82
+ const baseKeyframes = [
83
+ { transform: `translateX(${translate}%)` },
84
+ { transform: 'translateX(0)' },
85
+ ];
86
+ const keyframes = direction === 'in' ? baseKeyframes : [...baseKeyframes].reverse();
87
+ return animateSlide(el, keyframes, options);
82
88
  }
83
89
 
84
- const postHeaderCss = ":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]){--post-header-top:0;--post-global-header-top:0;--post-global-controls-top:0;--post-logo-height:var(--post-global-header-expanded-height)}*,::before,::after{box-sizing:border-box}:host,.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}.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:1.25rem}.global-header .sliding-controls{flex-grow:1;justify-content:flex-end;position:relative;inset-block-start:var(--post-global-controls-top)}.global-header .target-group{margin-inline-end:auto}.global-header.no-target-group .target-group{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 .navigation-controls{flex:0 0 auto}.local-header.no-navigation-controls .navigation{margin-inline-end:calc(-1*var(--post-local-header-padding-inline-end))}.local-header.no-navigation-controls .navigation-controls{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:not(.extended){transform:translateY(-100%)}.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 .navigation-controls{height:3.5rem;display:flex;align-items:center;justify-content:flex-end;padding-inline:.25rem}.burger-menu.no-navigation-controls .navigation-controls{display:none}";
90
+ const postHeaderCss = ":host{--post-global-header-top:calc( var(--post-global-header-reduced-height) - var(--post-global-header-expanded-height) );--post-header-top:calc(var(--post-header-reduced-height) - var(--post-header-expanded-height));--post-logo-height:calc( var(--post-global-header-expanded-height) - var(--post-header-scroll-top, 0px) );--post-global-controls-top:clamp( 1000 * (var(--post-global-header-reduced-height) - var(--post-global-header-expanded-height)), calc( -1 * min(var(--post-header-scroll-top, 0px) / 4, var(--post-global-header-reduced-height)) ), 0px )}@media screen and (min-width: 1024px){:host{--post-header-gap:0.25rem;--post-global-header-padding-inline-start:0.25rem;--post-global-header-padding-inline-end:0.5rem;--post-local-header-padding-inline-start:0.75rem;--post-local-header-padding-inline-end:0.5rem}}@media screen and (min-width: 600px)and (max-width: 1023.98px){:host{--post-header-gap:0.75rem 0.25rem;--post-global-header-padding-inline-start:0.25rem;--post-global-header-padding-inline-end:0.25rem;--post-local-header-padding-inline-start:0.75rem;--post-local-header-padding-inline-end:0.25rem;--post-local-header-padding-block:0rem;--post-burger-menu-padding-inline:2.5rem;--post-burger-menu-body-gap:2rem;--post-burger-menu-footer-gap:1.5rem}}@media screen and (min-width: 600px)and (max-width: 779.98px){:host{--post-burger-menu-padding-inline:1rem}}@media screen and (min-width: 0)and (max-width: 599.98px){:host{--post-header-gap:0.75rem 0.25rem;--post-global-header-padding-inline-start:0rem;--post-global-header-padding-inline-end:0.5rem;--post-local-header-padding-inline-start:0.5rem;--post-local-header-padding-inline-end:0.5rem;--post-local-header-padding-block:0rem;--post-burger-menu-padding-inline:1rem;--post-burger-menu-body-gap:1.5rem;--post-burger-menu-footer-gap:1rem}}:host([data-expanded]),:host([data-menu-extended]){--post-header-top:0;--post-global-header-top:-0.001px;--post-global-controls-top:0;--post-logo-height:var(--post-global-header-expanded-height)}*,::before,::after{box-sizing:border-box}:host,header,.global-header,.local-header{transition:inset-block-start 150ms cubic-bezier(0.4, 0, 0.2, 1)}.global-header,.local-header,.burger-menu{box-shadow:var(--post-device-elevation-300)}.global-header,.sliding-controls,.local-header,.navigation{display:flex;align-items:center;justify-content:space-between;gap:var(--post-header-gap)}:host{container-type:inline-size;display:block;position:sticky;inset-block-start:var(--post-header-top);z-index:1020}:host post-togglebutton{display:inline-flex;position:relative;align-items:center;justify-content:center;max-width:100%;overflow:hidden;transition:opacity 250ms,border-color 250ms,background-color 250ms,color 250ms;border-width:var(--post-device-border-width-default);border-style:solid;border-radius:var(--post-device-border-radius-round);background-color:rgba(0,0,0,0);box-shadow:none;font-family:inherit;font-weight:var(--post-device-font-weight-bold);text-decoration:none;white-space:nowrap;cursor:pointer;border:unset;font-weight:unset;display:flex;padding:.25rem .625rem;gap:.375rem;font-size:1rem;border-color:var(--post-scheme-color-interactive-button-tertiary-enabled-stroke);background-color:var(--post-scheme-color-interactive-button-tertiary-enabled-bg);color:var(--post-scheme-color-interactive-button-tertiary-enabled-fg)}:host post-togglebutton:hover{text-decoration:none}:host post-togglebutton:disabled{border-style:var(--post-core-border-style-dash)}:host post-togglebutton{outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}:host post-togglebutton:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host post-togglebutton:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){:host post-togglebutton:is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host post-togglebutton:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host post-togglebutton:is(a){color:LinkText;border:unset}:host post-togglebutton:is(button){background-color:ButtonFace !important;border:1px solid ButtonBorder !important}:host post-togglebutton:not(:disabled,.disabled):is(button):hover{background-color:Highlight !important}:host post-togglebutton:not(:disabled,.disabled):is(button):hover>post-icon{color:HighlightText !important}}:host post-togglebutton:hover{border-color:var(--post-scheme-color-interactive-button-tertiary-hover-stroke);background-color:var(--post-scheme-color-interactive-button-tertiary-hover-bg);color:var(--post-scheme-color-interactive-button-tertiary-hover-fg)}:host post-togglebutton:is([aria-current],[aria-pressed=true],[aria-expanded=true],.active){box-shadow:var(--post-device-elevation-100);border-color:var(--post-scheme-color-interactive-button-primary-enabled-stroke);background-color:var(--post-scheme-color-interactive-button-primary-enabled-bg);color:var(--post-scheme-color-interactive-button-primary-enabled-fg)}:host post-togglebutton:is([aria-current],[aria-pressed=true],[aria-expanded=true],.active):hover{border-color:var(--post-scheme-color-interactive-button-primary-hover-stroke);background-color:var(--post-scheme-color-interactive-button-primary-hover-bg);color:var(--post-scheme-color-interactive-button-primary-hover-fg)}@media screen and (min-width: 0)and (max-width: 599.98px){:host post-togglebutton{padding:.625rem}:host post-togglebutton>:not(post-icon){display:none}:host post-togglebutton>post-icon{font-size:1.5rem}}.global-header{z-index:2;position:sticky;inset-block-start:var(--post-global-header-top);background-color:#fc0;height:var(--post-global-header-expanded-height);padding-inline-start:var(--post-global-header-padding-inline-start);padding-inline-end:var(--post-global-header-padding-inline-end)}.global-header:has(~.local-header:not(.no-title.no-navigation)),.global-header:has(~.burger-menu.extended){box-shadow:none}.global-header .logo{align-self:flex-end;width:var(--post-global-header-expanded-height);height:var(--post-logo-height);min-height:var(--post-global-header-reduced-height);max-height:100%;margin-inline-end:calc(1.25rem - var(--post-header-gap))}.global-header .sliding-controls{flex-grow:1;justify-content:flex-end;position:relative;inset-block-start:var(--post-global-controls-top)}.global-header .audience{margin-inline-end:auto}.global-header.no-audience .audience{display:none}.local-header{position:relative;flex-wrap:wrap;background-color:#fff;min-height:var(--post-local-header-expanded-min-height);padding-inline-start:var(--post-local-header-padding-inline-start);padding-inline-end:var(--post-local-header-padding-inline-end);padding-block:var(--post-local-header-padding-block)}.local-header:not(.no-title,.no-navigation){padding-block-start:1.125rem}.local-header.no-title.no-navigation{display:none}.local-header:has(.navigation.megadropdown-open),.local-header:has(~.burger-menu.extended){box-shadow:none}.local-header:has(.navigation.megadropdown-open)::after,.local-header:has(~.burger-menu.extended)::after{content:\"\";display:block;position:absolute;inset-inline:0;inset-block-end:0;height:1px;background-color:#e1e0dc}.local-header .navigation{flex:1 0 100%;height:var(--post-main-navigation-height);margin-inline-start:calc(-1*var(--post-local-header-padding-inline-start));max-width:100cqw}.local-header.no-navigation .navigation{display:none}.local-header .local-nav{flex:0 0 auto}.local-header.no-local-nav .navigation{margin-inline-end:calc(-1*var(--post-local-header-padding-inline-end))}.local-header.no-local-nav .local-nav{display:none}.burger-menu{z-index:-1;position:absolute;inset-inline:0;inset-block-start:100%;height:calc(min(var(--post-header-scroll-parent-height, 100dvh),100dvh) - var(--post-header-height));overflow:hidden auto;display:flex;flex-direction:column;background-color:#fafafa}.burger-menu.extended.megadropdown-open{overflow:hidden}.burger-menu:not(.extended){transform:translateY(-100%);display:none}.burger-menu:not(.extended)>*{display:none}.burger-menu .burger-menu-body,.burger-menu .burger-menu-footer{display:flex;flex-direction:column;padding-inline:var(--post-burger-menu-padding-inline)}.burger-menu .burger-menu-body{flex-grow:1;padding-block:1.5rem;gap:var(--post-burger-menu-body-gap)}.burger-menu .burger-menu-footer{background-color:#f0efed;padding-block:1rem 1.5rem;gap:var(--post-burger-menu-footer-gap)}.burger-menu .local-nav{min-height:3.5rem;display:flex;align-items:center;justify-content:flex-end;padding-inline:.25rem}.burger-menu.no-local-nav .local-nav{display:none}";
85
91
 
86
92
  var __decorate$3 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
87
93
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -111,6 +117,9 @@ const PostHeader = class {
111
117
  }
112
118
  return document.body;
113
119
  }
120
+ validateTextMenu() {
121
+ breakpoints.checkRequiredAndType(this, 'textMenu', 'string');
122
+ }
114
123
  lockBody(newValue, _oldValue, propName) {
115
124
  const scrollParent = this.scrollParent;
116
125
  const burgerMenuExtended = propName === 'burgerMenuExtended' ? newValue : this.burgerMenuExtended;
@@ -126,10 +135,14 @@ const PostHeader = class {
126
135
  constructor(hostRef) {
127
136
  index.registerInstance(this, hostRef);
128
137
  this.throttledResize = breakpoints.throttle(50, () => this.updateLocalHeaderHeight());
138
+ this.animationOptions = {
139
+ duration: 350,
140
+ easing: 'headerEase',
141
+ };
129
142
  this.device = breakpoints.breakpoint.get('device');
130
143
  this.hasNavigation = false;
131
- this.hasNavigationControls = false;
132
- this.hasTargetGroup = false;
144
+ this.hasLocalNav = false;
145
+ this.hasAudience = false;
133
146
  this.hasTitle = false;
134
147
  this.burgerMenuExtended = false;
135
148
  this.megadropdownOpen = false;
@@ -146,15 +159,14 @@ const PostHeader = class {
146
159
  this.megadropdownOpen = false;
147
160
  }
148
161
  };
149
- this.megadropdownStateHandler = (event) => {
150
- this.megadropdownOpen = event.detail.isVisible;
151
- };
152
162
  this.handleScrollEvent = this.handleScrollEvent.bind(this);
153
163
  this.updateScrollParentHeight = this.updateScrollParentHeight.bind(this);
154
164
  this.updateLocalHeaderHeight = this.updateLocalHeaderHeight.bind(this);
155
165
  this.keyboardHandler = this.keyboardHandler.bind(this);
156
166
  this.handleLinkClick = this.handleLinkClick.bind(this);
167
+ this.megadropdownStateHandler = this.megadropdownStateHandler.bind(this);
157
168
  this.checkSlottedContent = this.checkSlottedContent.bind(this);
169
+ this.megadropdownStateHandler = this.megadropdownStateHandler.bind(this);
158
170
  }
159
171
  connectedCallback() {
160
172
  window.addEventListener('resize', this.throttledResize, { passive: true });
@@ -165,7 +177,6 @@ const PostHeader = class {
165
177
  passive: true,
166
178
  });
167
179
  document.addEventListener('postToggleMegadropdown', this.megadropdownStateHandler);
168
- this.host.addEventListener('click', this.handleLinkClick);
169
180
  window.addEventListener('postBreakpoint:device', this.breakpointChange);
170
181
  this.handleScrollParentResize();
171
182
  this.lockBody(false, this.burgerMenuExtended, 'burgerMenuExtended');
@@ -176,11 +187,13 @@ const PostHeader = class {
176
187
  this.switchLanguageSwitchMode();
177
188
  }
178
189
  componentDidRender() {
190
+ this.validateTextMenu();
179
191
  this.getFocusableElements();
180
192
  this.handleLocalHeaderResize();
181
193
  }
182
194
  componentDidLoad() {
183
195
  this.updateLocalHeaderHeight();
196
+ this.host.shadowRoot.addEventListener('click', this.handleLinkClick);
184
197
  }
185
198
  // Clean up possible side effects when post-header is disconnected
186
199
  disconnectedCallback() {
@@ -192,7 +205,9 @@ const PostHeader = class {
192
205
  scrollParent.removeEventListener('scroll', this.handleScrollEvent);
193
206
  document.removeEventListener('postToggleMegadropdown', this.megadropdownStateHandler);
194
207
  this.host.removeEventListener('keydown', this.keyboardHandler);
195
- this.host.removeEventListener('click', this.handleLinkClick);
208
+ if (this.host.shadowRoot) {
209
+ this.host.shadowRoot.removeEventListener('click', this.handleLinkClick);
210
+ }
196
211
  if (this.scrollParentResizeObserver) {
197
212
  this.scrollParentResizeObserver.disconnect();
198
213
  this.scrollParentResizeObserver = null;
@@ -208,11 +223,9 @@ const PostHeader = class {
208
223
  this.burgerMenuExtended = false;
209
224
  }
210
225
  async closeBurgerMenu() {
211
- this.burgerMenuAnimation.finish();
212
- const menuButton = this.getMenuButton();
213
- if (menuButton) {
214
- menuButton.toggled = false;
215
- }
226
+ this.burgerMenuAnimation?.finish();
227
+ if (this.burgerMenuButton)
228
+ this.burgerMenuButton.toggled = false;
216
229
  this.burgerMenuExtended = false;
217
230
  }
218
231
  /**
@@ -222,18 +235,18 @@ const PostHeader = class {
222
235
  if (this.device === 'desktop')
223
236
  return;
224
237
  this.burgerMenuAnimation = this.burgerMenuExtended
225
- ? slideUp(this.burgerMenu)
226
- : slideDown(this.burgerMenu);
238
+ ? fade.fade(this.burgerMenu, 'out', this.animationOptions)
239
+ : fade.fade(this.burgerMenu, 'in', this.animationOptions);
227
240
  // Update the state of the toggle button
228
- const menuButton = this.host.querySelector('post-togglebutton');
229
- if (menuButton)
230
- menuButton.toggled = force ?? !this.burgerMenuExtended;
241
+ if (this.burgerMenuButton)
242
+ this.burgerMenuButton.toggled = force ?? !this.burgerMenuExtended;
231
243
  if (this.burgerMenuExtended) {
232
244
  // Wait for the close animation to finish before hiding megadropdowns
233
245
  await this.burgerMenuAnimation.finished;
234
246
  this.burgerMenuExtended = force ?? !this.burgerMenuExtended;
235
247
  if (this.burgerMenuExtended === false) {
236
248
  this.closeAllMegadropdowns();
249
+ this.burgerMenu.scrollTop = 0;
237
250
  }
238
251
  }
239
252
  else {
@@ -244,37 +257,31 @@ const PostHeader = class {
244
257
  }
245
258
  }
246
259
  }
260
+ megadropdownStateHandler(event) {
261
+ this.megadropdownOpen = event.detail.isVisible;
262
+ }
247
263
  // Get all the focusable elements in the post-header burger menu
248
264
  getFocusableElements() {
249
- // Get elements in the correct order (different as the DOM order)
250
- const focusableEls = [
251
- ...Array.from(this.host.querySelectorAll('.list-inline:not([slot="meta-navigation"]) > li')),
252
- ...Array.from(this.host.querySelectorAll('nav > post-list > div > post-list-item, post-megadropdown-trigger')),
253
- ...Array.from(this.host.querySelectorAll('.list-inline[slot="meta-navigation"] > li, post-language-option')),
254
- ];
255
- // Add the main toggle menu button to the list of focusable children
256
- const focusableChildren = [
257
- this.host.querySelector('post-togglebutton'),
258
- ...focusableEls.flatMap(el => Array.from(getFocusableChildren.getFocusableChildren(el))),
259
- ];
260
- this.firstFocusableEl = focusableChildren[0];
261
- this.lastFocusableEl = focusableChildren[focusableChildren.length - 1];
262
- }
263
- getMenuButton() {
264
- return this.host.querySelector('post-togglebutton');
265
+ if (!this.burgerMenu)
266
+ return;
267
+ const focusableElements = [this.burgerMenuButton];
268
+ focusableElements.push(...getFocusableChildren.getDeepFocusableChildren(this.localHeader, el => !el.matches('post-megadropdown')), ...getFocusableChildren.getDeepFocusableChildren(this.burgerMenu, el => !el.matches('post-megadropdown')));
269
+ this.firstFocusableEl = focusableElements[0];
270
+ this.lastFocusableEl = focusableElements[focusableElements.length - 1];
265
271
  }
266
272
  keyboardHandler(e) {
267
- if (e.key === 'Tab' && this.burgerMenuExtended) {
268
- if (e.shiftKey && document.activeElement === this.firstFocusableEl) {
269
- // If back tab (Tab + Shift) and first element is focused, focus goes to the last element of the megadropdown
270
- e.preventDefault();
271
- this.lastFocusableEl.focus();
272
- }
273
- else if (!e.shiftKey && document.activeElement === this.lastFocusableEl) {
274
- // If Tab and last element is focused, focus goes back to the first element of the megadropdown
275
- e.preventDefault();
276
- this.firstFocusableEl.focus();
277
- }
273
+ if (e.key !== 'Tab' || !this.burgerMenuExtended)
274
+ return;
275
+ const activeElement = this.host.shadowRoot.activeElement || document.activeElement;
276
+ if (e.shiftKey && activeElement === this.firstFocusableEl) {
277
+ // If back tab (Tab + Shift) and first element is focused, focus goes to the last element of the megadropdown
278
+ e.preventDefault();
279
+ this.lastFocusableEl.focus();
280
+ }
281
+ else if (!e.shiftKey && activeElement === this.lastFocusableEl) {
282
+ // If Tab and last element is focused, focus goes back to the first element of the megadropdown
283
+ e.preventDefault();
284
+ this.firstFocusableEl.focus();
278
285
  }
279
286
  }
280
287
  closeAllMegadropdowns() {
@@ -334,21 +341,28 @@ const PostHeader = class {
334
341
  }
335
342
  }
336
343
  checkSlottedContent() {
337
- this.hasNavigation = !!this.host.querySelector('[slot="post-mainnavigation"]');
338
- this.hasNavigationControls = !!this.host.querySelector('[slot="navigation-controls"]');
339
- this.hasTargetGroup = !!this.host.querySelector('[slot="target-group"]');
344
+ this.hasNavigation = !!this.host.querySelector('[slot="main-nav"]');
345
+ this.hasLocalNav = !!this.host.querySelector('[slot="local-nav"]');
346
+ this.hasAudience = !!this.host.querySelector('[slot="audience"]');
340
347
  this.hasTitle = !!this.host.querySelector('[slot="title"]');
341
348
  }
342
349
  switchLanguageSwitchMode() {
343
350
  const variant = this.hasBurgerMenu ? 'list' : 'menu';
344
- Array.from(this.host.querySelectorAll('post-language-switch')).forEach(languageSwitch => {
351
+ Array.from(this.host.querySelectorAll('post-language-menu')).forEach(languageSwitch => {
345
352
  languageSwitch?.setAttribute('variant', variant);
346
353
  });
347
354
  }
348
- onFocusChange() {
349
- const fixedElements = this.device === 'desktop' ? '.logo, .navigation' : '.global-header, .burger-menu';
350
- const isHeaderExpanded = this.host.matches(':focus-within') &&
351
- !this.host.shadowRoot.querySelector(`:where(${fixedElements}):focus-within`);
355
+ onFocusChange(e) {
356
+ const alwaysVisibleElements = this.device === 'desktop'
357
+ ? '.navigation' // logo isn’t included since it would be too small to focus on effectively.
358
+ : '.global-header, .burger-menu';
359
+ const isHeaderExpanded =
360
+ // ensure the expanded state stays accurate during focus changes,
361
+ // e.g., when the focused element is removed from the DOM
362
+ // during a window resize
363
+ e.target === document.activeElement &&
364
+ this.host.matches(':focus-within') &&
365
+ !this.host.shadowRoot.querySelector(`:where(${alwaysVisibleElements}):focus-within`);
352
366
  if (isHeaderExpanded) {
353
367
  this.host.setAttribute('data-expanded', '');
354
368
  }
@@ -357,39 +371,42 @@ const PostHeader = class {
357
371
  }
358
372
  }
359
373
  renderNavigation() {
374
+ const localNav = !this.hasTitle && (index.h("div", { class: "local-nav" }, index.h("slot", { name: "local-nav" })));
360
375
  if (this.device === 'desktop') {
361
- return (index.h("div", { class: { 'navigation': true, 'megadropdown-open': this.megadropdownOpen } }, index.h("slot", { name: "post-mainnavigation" }), index.h("div", { class: "navigation-controls" }, index.h("slot", { name: "navigation-controls" }))));
376
+ return (index.h("div", { class: { 'navigation': true, 'megadropdown-open': this.megadropdownOpen } }, index.h("slot", { name: "main-nav" }), localNav));
362
377
  }
363
378
  return (index.h("div", { class: {
364
379
  'burger-menu': true,
365
380
  'extended': this.burgerMenuExtended,
366
- 'no-navigation-controls': !this.hasNavigationControls,
367
- }, style: { '--post-header-navigation-current-inset': `${this.burgerMenu?.scrollTop ?? 0}px` }, ref: el => (this.burgerMenu = el) }, index.h("div", { class: "navigation-controls" }, index.h("slot", { name: "navigation-controls" })), index.h("div", { class: "burger-menu-body" }, index.h("slot", { name: "target-group" }), index.h("slot", { name: "post-mainnavigation" })), index.h("div", { class: "burger-menu-footer" }, index.h("slot", { name: "meta-navigation" }), index.h("slot", { name: "post-language-switch" }))));
381
+ 'no-local-nav': !this.hasLocalNav,
382
+ 'megadropdown-open': this.megadropdownOpen,
383
+ }, style: { '--post-header-navigation-current-inset': `${this.burgerMenu?.scrollTop ?? 0}px` }, ref: el => (this.burgerMenu = el) }, localNav, index.h("div", { class: "burger-menu-body" }, index.h("slot", { name: "audience" }), index.h("slot", { name: "main-nav" })), index.h("div", { class: "burger-menu-footer" }, index.h("slot", { name: "global-nav-secondary" }), index.h("slot", { name: "language-menu" }))));
368
384
  }
369
385
  render() {
370
- return (index.h(index.Host, { key: 'c9b1c1a946800f728a7a90a91dff3abf23b5100f', "data-version": _package.version, "data-color-scheme": "light", "data-burger-menu": this.hasBurgerMenu }, index.h("div", { key: '21d2b9bd39946df7e42d3d5c763d40cd1dabee69', class: {
386
+ return (index.h(index.Host, { key: '15de1ff6ccac94813df10fc0b41a518de68dee94', "data-version": _package.version, "data-color-scheme": "light", "data-burger-menu": this.hasBurgerMenu, "data-menu-extended": this.burgerMenuExtended }, index.h("header", { key: '0af40c8b8944c7ffcf2bf0fe704671f4012ae8c8' }, index.h("div", { key: 'cd4564c5c375c015c673df195ba04fe4d89ff1c2', class: {
371
387
  'global-header': true,
372
- 'no-target-group': !this.hasTargetGroup,
373
- } }, index.h("div", { key: '50cf30a8febea656eb3349e6c06dc5b609b13a6d', class: "logo" }, index.h("slot", { key: 'df1ecaca7b39316ef4d4bb56e33c3214b2648e68', name: "post-logo" })), index.h("div", { key: '9c4319dce10d9e98291a6cbdb0effb854a8b6dac', class: "sliding-controls" }, this.device === 'desktop' && (index.h("div", { key: 'ce916d4bdb65c641e58725f70b7689704847593c', class: "target-group" }, index.h("slot", { key: '810e4164ae17b8571011799307f3688cf64b5c30', name: "target-group" }))), index.h("slot", { key: 'abe6f2e08e87295e88e4cf33db0e72021d622aaf', name: "global-controls" }), !this.hasBurgerMenu && [
374
- index.h("slot", { key: '4ef5603837d0f26c25dd50bf17bb0011dc927de0', name: "meta-navigation" }),
375
- index.h("slot", { key: 'b1bc83f1bd5004af89e444a9bdf487225ac882d7', name: "post-language-switch" }),
376
- ], index.h("slot", { key: '11dfd54337cf457bc25ec680c8d4e11a6712dc63', name: "global-login" }), this.hasNavigation && this.device !== 'desktop' && (index.h("div", { key: '67658d80ce90f4446ea8d1078937101a299536b8', onClick: () => this.toggleBurgerMenu(), class: "burger-menu-toggle" }, index.h("slot", { key: '2fdba487922c63db152ec08e3382640c9cdf1c12', name: "post-togglebutton" }))))), index.h("div", { key: '1516e38c9628d8cfb75d6f9bd55912071da5e94e', class: {
388
+ 'no-audience': !this.hasAudience,
389
+ } }, index.h("div", { key: 'c4ad8a22fed57e54266c6584548f5203a499b63c', class: "logo" }, index.h("slot", { key: 'bf86f7ccf2e46263365023f287f18305160cede6', name: "post-logo" })), index.h("div", { key: 'e89c405cf97ddb08850d3b15ab8977e7e484ba73', class: "sliding-controls" }, this.device === 'desktop' && (index.h("div", { key: 'c3e9f49a105894d0df44a3d2654065b452292154', class: "audience" }, index.h("slot", { key: '20effc0592ca8665de464cc5d45d11ef02894acb', name: "audience" }))), index.h("slot", { key: 'f0ca8a59134520ccbb38907e32bedd4c05800d36', name: "global-nav-primary" }), !this.hasBurgerMenu && [
390
+ index.h("slot", { key: '7e2b2982403f491f083fc9f32cee46cbaeca7c50', name: "global-nav-secondary" }),
391
+ index.h("slot", { key: '3e7b5f6cb16b2cf2bc64b9b11c70f8b363e80134', name: "language-menu" }),
392
+ ], index.h("slot", { key: 'd91059cc4dd4529040aa6436db46f66f2db84e71', name: "post-login" }), this.hasNavigation && this.device !== 'desktop' && (index.h("div", { key: 'f97161e09b27c11c6f85d112e85a59ddf2925aec', onClick: () => this.toggleBurgerMenu(), class: "burger-menu-toggle" }, index.h("slot", { key: '18304b858fa2173b63e842ba4d0512bd438a89b0', name: "post-togglebutton" }))), this.hasNavigation && this.device !== 'desktop' && (index.h("post-togglebutton", { key: '0599e4d106262b7be6557b476becacaf9f5656ba', ref: el => (this.burgerMenuButton = el), onClick: () => this.toggleBurgerMenu() }, index.h("span", { key: '3f3578f6172a9d87c531b5bef6a201b255042511' }, this.textMenu), index.h("post-icon", { key: '7a92cec5793716225cf9dc4646ccff585e02723b', "aria-hidden": "true", name: "burger", "data-showwhen": "untoggled" }), index.h("post-icon", { key: '9170844d117e8f0bf7f35049debe973ff391158e', "aria-hidden": "true", name: "closex", "data-showwhen": "toggled" }))))), index.h("div", { key: 'db13d084905b4633595bb1d4d83cc88c82c3c679', ref: el => (this.localHeader = el), class: {
377
393
  'local-header': true,
378
394
  'no-title': !this.hasTitle,
379
- 'no-target-group': !this.hasTargetGroup,
395
+ 'no-audience': !this.hasAudience,
380
396
  'no-navigation': this.device !== 'desktop' || !this.hasNavigation,
381
- 'no-navigation-controls': !this.hasNavigationControls,
382
- } }, index.h("slot", { key: '839b34249ece8af5cc53231271e739a6a664a977', name: "title" }), this.hasTitle && index.h("slot", { key: 'aa281968b58ecad425beb1b4ffbd1273cc167ea4', name: "local-controls" }), this.device === 'desktop' && this.renderNavigation()), this.device !== 'desktop' && this.renderNavigation()));
397
+ 'no-local-nav': !this.hasLocalNav,
398
+ } }, index.h("slot", { key: 'f6fb25aef128bf1712995427014c5ff62c3710d0', name: "title" }), this.hasTitle && index.h("slot", { key: '8cba1c7b544d950140d59336baaf7398a4fb23d8', name: "local-nav" }), this.device === 'desktop' && this.renderNavigation()), this.device !== 'desktop' && this.renderNavigation())));
383
399
  }
384
400
  get host() { return index.getElement(this); }
385
401
  static get watchers() { return {
402
+ "textMenu": ["validateTextMenu"],
386
403
  "device": ["lockBody"],
387
404
  "burgerMenuExtended": ["lockBody"]
388
405
  }; }
389
406
  };
390
407
  __decorate$3([
391
408
  eventFrom.EventFrom('post-megadropdown')
392
- ], PostHeader.prototype, "megadropdownStateHandler", void 0);
409
+ ], PostHeader.prototype, "megadropdownStateHandler", null);
393
410
  PostHeader.style = postHeaderCss;
394
411
 
395
412
  const postIconCss = ":host{display:inline-block;width:1em;height:1em;vertical-align:-0.15em}span{display:block;width:100%;height:100%;fill:currentColor;forced-color-adjust:preserve-parent-color;background-color:currentColor;-webkit-mask-position:center center;mask-position:center center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100%;mask-size:100%}:host([flip-h]:not([flip-h=false])){scale:-1 1}:host([flip-v]:not([flip-v=false])){scale:1 -1}:host([flip-h][flip-v]:not([flip-h=false],[flip-v=false])){scale:-1}:host([animation]){transform-origin:center}:host([animation=cylon]){animation:icon-animation-cylon .75s ease-in-out infinite alternate}:host([animation=cylon-vertical]){animation:icon-animation-cylon-vertical .75s ease-in-out infinite alternate}:host([animation=spin]){animation:icon-animation-spin 2s linear infinite normal}:host([animation=spin-reverse]){animation:icon-animation-spin 2s linear infinite reverse}:host([animation=fade]){animation:icon-animation-fade .75s ease-in-out infinite alternate}:host([animation=throb]){animation:icon-animation-throb .75s ease-in-out infinite alternate}@keyframes icon-animation-cylon{from{transform:translateX(-25%)}to{transform:translateX(25%)}}@keyframes icon-animation-cylon-vertical{from{transform:translateY(25%)}to{transform:translateY(-25%)}}@keyframes icon-animation-fade{from{opacity:.1}to{opacity:1}}@keyframes icon-animation-spin{from{transform:rotate(0deg)}to{transform:rotate(359deg)}}@keyframes icon-animation-throb{from{opacity:.5;transform:scale(0.5)}to{opacity:1;transform:scale(1)}}";
@@ -417,19 +434,19 @@ const PostIcon = class {
417
434
  this.flipV = false;
418
435
  }
419
436
  validateAnimation() {
420
- index$1.checkEmptyOrOneOf(this, 'animation', ANIMATION_KEYS);
437
+ breakpoints.checkEmptyOrOneOf(this, 'animation', ANIMATION_KEYS);
421
438
  }
422
439
  validateBase() {
423
- index$1.checkEmptyOrType(this, 'base', 'string');
440
+ breakpoints.checkEmptyOrType(this, 'base', 'string');
424
441
  }
425
442
  validateName() {
426
- index$1.checkRequiredAndType(this, 'name', 'string');
443
+ breakpoints.checkRequiredAndType(this, 'name', 'string');
427
444
  }
428
445
  validateRotate() {
429
- index$1.checkEmptyOrType(this, 'rotate', 'number');
446
+ breakpoints.checkEmptyOrType(this, 'rotate', 'number');
430
447
  }
431
448
  validateScale() {
432
- index$1.checkEmptyOrType(this, 'scale', 'number');
449
+ breakpoints.checkEmptyOrType(this, 'scale', 'number');
433
450
  }
434
451
  /**
435
452
  * Construct the icon URL according to the following rules:
@@ -444,19 +461,21 @@ const PostIcon = class {
444
461
  **/
445
462
  getUrl() {
446
463
  const fileName = `${this.name}.svg`;
447
- if (!breakpoints.IS_BROWSER && !this.base) {
464
+ if (!environment.IS_BROWSER && !this.base) {
448
465
  return `${CDN_URL}${fileName}`;
449
466
  }
450
467
  const isAbsolute = (url) => /^https?:\/\//.test(url);
451
468
  const normalizeUrl = (url) => (url && !url.endsWith('/') ? `${url}/` : url);
452
469
  const cleanUrl = (url) => url.replace(/([^:])\/\//g, '$1/');
453
- const currentDomain = breakpoints.IS_BROWSER ? window.location.origin : '';
454
- const baseHref = breakpoints.IS_BROWSER
470
+ const currentDomain = environment.IS_BROWSER ? window.location.origin : '';
471
+ const baseHref = environment.IS_BROWSER
455
472
  ? document.querySelector('base[href]')?.getAttribute('href') || ''
456
473
  : '';
457
- const metaIconBase = breakpoints.IS_BROWSER
458
- ? document.querySelector('meta[name="design-system-settings"]')?.getAttribute('data-post-icon-base') || ''
459
- : '';
474
+ let metaIconBase = '';
475
+ if (environment.IS_BROWSER) {
476
+ const metaTag = document.querySelector('meta[name="design-system-settings"]');
477
+ metaIconBase = metaTag?.getAttribute('data-post-icon-base') || '';
478
+ }
460
479
  // Function to build the first part of the URL when 'this.base' or 'metaIconBase' are relative
461
480
  const buildUrlWithBase = (relativeUrl) => {
462
481
  const normalizedHref = normalizeUrl(baseHref);
@@ -503,7 +522,7 @@ const PostIcon = class {
503
522
  this.validateAnimation();
504
523
  }
505
524
  render() {
506
- return (index.h(index.Host, { key: '7ce1f627f621201c0f4d6e90ee3d8d6d3c32798a', "data-version": _package.version }, index.h("span", { key: '987ecd266b8bd68bdbb06cdb500a746b913e79b1', style: this.getStyles() })));
525
+ return (index.h(index.Host, { key: '6469b748f2792c383593dacd1d9f1f17daf9cde0', "data-version": _package.version }, index.h("span", { key: '9f4d9766dc97a07a2562dbc3bb0931de29fe9757', style: this.getStyles() })));
507
526
  }
508
527
  get host() { return index.getElement(this); }
509
528
  static get watchers() { return {
@@ -518,70 +537,7 @@ PostIcon.style = postIconCss;
518
537
 
519
538
  const SWITCH_VARIANTS = ['list', 'menu'];
520
539
 
521
- 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;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;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}";
522
-
523
- const PostLanguageOption = class {
524
- constructor(hostRef) {
525
- index.registerInstance(this, hostRef);
526
- this.postChange = index.createEvent(this, "postChange");
527
- this.postLanguageOptionInitiallyActive = index.createEvent(this, "postLanguageOptionInitiallyActive");
528
- }
529
- validateCode() {
530
- index$1.checkRequiredAndType(this, 'code', 'string');
531
- }
532
- validateVariant() {
533
- index$1.checkEmptyOrOneOf(this, 'variant', SWITCH_VARIANTS);
534
- }
535
- validateName() {
536
- index$1.checkEmptyOrType(this, 'name', 'string');
537
- }
538
- validateUrl() {
539
- index$1.checkEmptyOrUrl(this, 'url');
540
- }
541
- componentDidLoad() {
542
- this.validateCode();
543
- this.validateName();
544
- this.validateUrl();
545
- if (!this.name && this.isNameRequired()) {
546
- throw new Error('The "name" property of the post-language-option component is required when the full language name is not displayed.');
547
- }
548
- if (this.active) {
549
- this.postLanguageOptionInitiallyActive.emit(this.code);
550
- }
551
- }
552
- /**
553
- * Selects the language option programmatically.
554
- */
555
- async select() {
556
- this.active = true;
557
- this.emitChange();
558
- }
559
- emitChange() {
560
- this.postChange.emit(this.code);
561
- }
562
- isNameRequired() {
563
- return this.host.textContent.toLowerCase() === this.code.toLowerCase();
564
- }
565
- render() {
566
- const lang = this.code.toLowerCase();
567
- const emitOnKeyDown = (e) => {
568
- if (e.key === 'Enter' || e.key === ' ') {
569
- this.emitChange();
570
- }
571
- };
572
- return (index.h(index.Host, { key: '06ba54de702d5014b34f1b0cb6396cb947ac3ca6', "data-version": _package.version, role: this.variant === 'list' ? 'listitem' : undefined }, this.url ? (index.h("a", { "aria-current": this.active ? 'page' : undefined, href: this.url, hrefLang: lang, lang: lang, onClick: () => this.emitChange(), onKeyDown: emitOnKeyDown }, index.h("slot", null), index.h("span", { class: "visually-hidden" }, this.name))) : (index.h("button", { "aria-current": this.active ? 'true' : undefined, lang: lang, onClick: () => this.emitChange(), onKeyDown: emitOnKeyDown }, index.h("slot", null), index.h("span", { class: "visually-hidden" }, this.name)))));
573
- }
574
- get host() { return index.getElement(this); }
575
- static get watchers() { return {
576
- "code": ["validateCode"],
577
- "variant": ["validateVariant"],
578
- "name": ["validateName"],
579
- "url": ["validateUrl"]
580
- }; }
581
- };
582
- PostLanguageOption.style = postLanguageOptionCss;
583
-
584
- 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}.post-language-switch-list{margin-top:1rem}";
540
+ const postLanguageMenuCss = ":host{display:flex !important}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}.post-language-menu-dropdown-container{display:flex;flex-direction:column}.post-language-menu-trigger{display:inline-flex;position:relative;align-items:center;justify-content:center;max-width:100%;overflow:hidden;transition:opacity 250ms,border-color 250ms,background-color 250ms,color 250ms;border-width:var(--post-device-border-width-default);border-style:solid;border-radius:var(--post-device-border-radius-round);background-color:rgba(0,0,0,0);box-shadow:none;font-family:inherit;font-weight:var(--post-device-font-weight-bold);text-decoration:none;white-space:nowrap;cursor:pointer;border:unset;font-weight:unset;display:flex;padding:.25rem .625rem;gap:.375rem;font-size:1rem;border-color:var(--post-scheme-color-interactive-button-tertiary-enabled-stroke);background-color:var(--post-scheme-color-interactive-button-tertiary-enabled-bg);color:var(--post-scheme-color-interactive-button-tertiary-enabled-fg);text-transform:uppercase;cursor:pointer}.post-language-menu-trigger:hover{text-decoration:none}.post-language-menu-trigger:disabled{border-style:var(--post-core-border-style-dash)}.post-language-menu-trigger{outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}.post-language-menu-trigger:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.post-language-menu-trigger:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){.post-language-menu-trigger:is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.post-language-menu-trigger:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.post-language-menu-trigger:is(a){color:LinkText;border:unset}.post-language-menu-trigger:is(button){background-color:ButtonFace !important;border:1px solid ButtonBorder !important}.post-language-menu-trigger:not(:disabled,.disabled):is(button):hover{background-color:Highlight !important}.post-language-menu-trigger:not(:disabled,.disabled):is(button):hover>post-icon{color:HighlightText !important}}.post-language-menu-trigger:hover{border-color:var(--post-scheme-color-interactive-button-tertiary-hover-stroke);background-color:var(--post-scheme-color-interactive-button-tertiary-hover-bg);color:var(--post-scheme-color-interactive-button-tertiary-hover-fg)}.post-language-menu-trigger:is([aria-current],[aria-pressed=true],[aria-expanded=true],.active){box-shadow:var(--post-device-elevation-100);border-color:var(--post-scheme-color-interactive-button-primary-enabled-stroke);background-color:var(--post-scheme-color-interactive-button-primary-enabled-bg);color:var(--post-scheme-color-interactive-button-primary-enabled-fg)}.post-language-menu-trigger:is([aria-current],[aria-pressed=true],[aria-expanded=true],.active):hover{border-color:var(--post-scheme-color-interactive-button-primary-hover-stroke);background-color:var(--post-scheme-color-interactive-button-primary-hover-bg);color:var(--post-scheme-color-interactive-button-primary-hover-fg)}.post-language-menu-trigger post-icon{transition:transform 250ms cubic-bezier(0.4, 0, 0.2, 1)}.post-language-menu-trigger:is([aria-current],[aria-pressed=true],[aria-expanded=true]) post-icon{transform:rotate(180deg)}post-menu::part(post-menu){padding-block:0}.post-language-menu-list{margin-top:1rem}";
585
541
 
586
542
  var __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
587
543
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -593,7 +549,7 @@ var __decorate$2 = (undefined && undefined.__decorate) || function (decorators,
593
549
  r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
594
550
  return c > 3 && r && Object.defineProperty(target, key, r), r;
595
551
  };
596
- const PostLanguageSwitch = class {
552
+ const PostLanguageMenu = class {
597
553
  constructor(hostRef) {
598
554
  index.registerInstance(this, hostRef);
599
555
  this.menuId = `p${index_browser.nanoid(11)}`;
@@ -604,16 +560,16 @@ const PostLanguageSwitch = class {
604
560
  this.variant = 'list';
605
561
  }
606
562
  get languageOptions() {
607
- return Array.from(this.host.querySelectorAll('post-language-option'));
563
+ return Array.from(this.host.querySelectorAll('post-language-menu-item'));
608
564
  }
609
565
  validateCaption() {
610
- index$1.checkRequiredAndType(this, 'caption', 'string');
566
+ breakpoints.checkRequiredAndType(this, 'textChangeLanguage', 'string');
611
567
  }
612
568
  validateDescription() {
613
- index$1.checkRequiredAndType(this, 'description', 'string');
569
+ breakpoints.checkRequiredAndType(this, 'textCurrentLanguage', 'string');
614
570
  }
615
571
  validateVariant() {
616
- index$1.checkEmptyOrOneOf(this, 'variant', SWITCH_VARIANTS);
572
+ breakpoints.checkEmptyOrOneOf(this, 'variant', SWITCH_VARIANTS);
617
573
  this.updateChildrenVariant();
618
574
  }
619
575
  componentDidLoad() {
@@ -625,11 +581,11 @@ const PostLanguageSwitch = class {
625
581
  this.updateChildrenVariant();
626
582
  }
627
583
  /**
628
- * Listen for the postChange event and guard it to run only for events originating from a <post-language-option> element.
584
+ * Listen for the postChange event and guard it to run only for events originating from a <post-language-menu-item> element.
629
585
  */
630
586
  handlePostChange(event) {
631
587
  this.activeLang = event.detail;
632
- // Update the active state in the children post-language-option components
588
+ // Update the active state in the children post-language-menu-item components
633
589
  this.languageOptions.forEach(lang => {
634
590
  if (lang.code && lang.code === this.activeLang) {
635
591
  lang.setAttribute('active', '');
@@ -646,97 +602,109 @@ const PostLanguageSwitch = class {
646
602
  }
647
603
  /**
648
604
  * Handles cases where the language switch is being rendered before options are available
649
- * @param event Initially emitted by <post-langauge-option>
605
+ * @param event Initially emitted by <post-language-menu-item>
650
606
  */
651
607
  handleInitiallyActive(event) {
652
608
  this.activeLang = event.detail;
653
609
  }
654
- // Update post-language-option variant to have the correct style
610
+ // Update post-language-menu-item variant to have the correct style
655
611
  updateChildrenVariant() {
656
612
  this.languageOptions.forEach(el => {
657
613
  el.setAttribute('variant', this.variant);
658
614
  });
659
615
  }
660
616
  renderList() {
661
- return (index.h(index.Host, { "data-version": _package.version }, index.h("div", { class: "post-language-switch-list", role: "list", "aria-label": this.caption, "aria-describedby": this.listSpanId }, index.h("span", { id: this.listSpanId, class: "visually-hidden" }, this.description), index.h("slot", null))));
617
+ return (index.h(index.Host, { "data-version": _package.version }, index.h("div", { class: "post-language-menu-list", role: "list", "aria-label": this.textChangeLanguage, "aria-describedby": this.listSpanId }, index.h("span", { id: this.listSpanId, class: "visually-hidden" }, this.textCurrentLanguage), index.h("slot", null))));
662
618
  }
663
619
  renderDropdown() {
664
- return (index.h(index.Host, { "data-version": _package.version }, index.h("post-menu-trigger", { for: this.menuId }, index.h("button", { class: "post-language-switch-trigger" }, this.activeLang, index.h("span", { class: "visually-hidden" }, this.caption), index.h("span", { class: "visually-hidden" }, this.description), index.h("post-icon", { "aria-hidden": "true", name: "chevrondown" }))), index.h("post-menu", { id: this.menuId, class: "post-language-switch-dropdown-container", label: this.caption }, index.h("slot", null))));
620
+ return (index.h(index.Host, { "data-version": _package.version }, index.h("post-menu-trigger", { for: this.menuId }, index.h("button", { class: "post-language-menu-trigger" }, this.activeLang, index.h("span", { class: "visually-hidden" }, this.textChangeLanguage), index.h("span", { class: "visually-hidden" }, this.textCurrentLanguage), index.h("post-icon", { "aria-hidden": "true", name: "chevrondown" }))), index.h("post-menu", { id: this.menuId, class: "post-language-menu-dropdown-container", label: this.textChangeLanguage, placement: "bottom-end" }, index.h("slot", null))));
665
621
  }
666
622
  render() {
667
623
  return this.variant === 'list' ? this.renderList() : this.renderDropdown();
668
624
  }
669
625
  get host() { return index.getElement(this); }
670
626
  static get watchers() { return {
671
- "caption": ["validateCaption"],
672
- "description": ["validateDescription"],
627
+ "textChangeLanguage": ["validateCaption"],
628
+ "textCurrentLanguage": ["validateDescription"],
673
629
  "variant": ["validateVariant"]
674
630
  }; }
675
631
  };
676
632
  __decorate$2([
677
- eventFrom.EventFrom('post-language-option')
678
- ], PostLanguageSwitch.prototype, "handlePostChange", null);
679
- PostLanguageSwitch.style = postLanguageSwitchCss;
633
+ eventFrom.EventFrom('post-language-menu-item')
634
+ ], PostLanguageMenu.prototype, "handlePostChange", null);
635
+ PostLanguageMenu.style = postLanguageMenuCss;
680
636
 
681
- const postListCss = "post-list{display:flex;flex-direction:column;gap:var(--post-list-title-gap, 0)}post-list>[role=list]{display:flex;flex-direction:column;gap:var(--post-list-item-gap, 0)}post-list:where([horizontal]:not([horizontal=false])){flex-direction:row;align-items:center}post-list:where([horizontal]:not([horizontal=false]))>[role=list]{flex-direction:row;align-items:center}post-list>.list-title.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}";
637
+ const postLanguageMenuItemCss = "post-language-menu-item{display:inline-block}post-language-menu-item button{padding:0;overflow:visible;border:0;background:none;color:var(--post-scheme-color-interactive-button-secondary-enabled-fg);font:inherit;-webkit-user-select:none;user-select:none;appearance:button}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-language-menu-item button{background-color:ButtonFace !important}post-language-menu-item button:hover{background-color:Highlight !important}}post-language-menu-item button .visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}post-language-menu-item a{color:var(--post-current-fg);text-decoration:none}post-language-menu-item :is(a,button){cursor:pointer;display:flex;align-items:center;justify-content:center;width:100%;height:100%;text-transform:uppercase}post-language-menu-item :is(a,button){outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}post-language-menu-item :is(a,button):is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important;border-radius:4px}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-language-menu-item :is(a,button):is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){post-language-menu-item :is(a,button):is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important;border-radius:4px}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-language-menu-item :is(a,button):is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}post-language-menu-item:where([variant=list]) :is(a,button){padding-inline:0;width:40px;height:40px;border-radius:2px}post-language-menu-item:where([variant=list]) :is(a,button):hover{color:#504f4b}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-language-menu-item:where([variant=list]) :is(a,button){border:1px solid ButtonBorder;color:ButtonText}}post-language-menu-item:where([variant=list])[active]:not([active=false]) :is(a,button){background-color:#050400 !important;color:#fff;pointer-events:none}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-language-menu-item:where([variant=list])[active]:not([active=false]) :is(a,button){background-color:Highlight !important;color:HighlightText}}post-language-menu-item:where([variant=menu]){min-width:72px}post-language-menu-item:where([variant=menu])[active]:not([active=false]){display:none}post-language-menu-item:where([variant=menu]) :is(a,button){padding-block:13px;padding-inline:16px;box-sizing:border-box;justify-content:flex-start;position:relative;border-radius:0}post-language-menu-item:where([variant=menu]) :is(a,button):hover{color:#fff;background-color:#504f4b}post-language-menu-item:where([variant=menu]):first-child :is(a,button){border-start-start-radius:4px;border-start-end-radius:4px}post-language-menu-item:where([variant=menu]):last-child :is(a,button){border-end-start-radius:4px;border-end-end-radius:4px}";
682
638
 
683
- const PostList = class {
639
+ const PostLanguageMenuItem = class {
684
640
  constructor(hostRef) {
685
641
  index.registerInstance(this, hostRef);
686
- /**
687
- * If `true`, the list title will be hidden. Otherwise, it will be displayed.`
688
- */
689
- this.titleHidden = false;
690
- /**
691
- * The list can become horizontal by setting `horizontal="true"` or just `horizontal`
692
- */
693
- this.horizontal = false;
642
+ this.postChange = index.createEvent(this, "postChange");
643
+ this.postLanguageMenuItemInitiallyActive = index.createEvent(this, "postLanguageMenuItemInitiallyActive");
694
644
  }
695
- componentWillLoad() {
696
- /**
697
- * Get the id set on the host element or use a random id by default
698
- */
699
- this.titleId = `title-${this.host.id || index_browser.nanoid(6)}`;
645
+ validateCode() {
646
+ breakpoints.checkRequiredAndType(this, 'code', 'string');
700
647
  }
701
- componentDidLoad() {
702
- this.checkTitle();
648
+ validateVariant() {
649
+ breakpoints.checkEmptyOrOneOf(this, 'variant', SWITCH_VARIANTS);
650
+ }
651
+ validateName() {
652
+ breakpoints.checkEmptyOrType(this, 'name', 'string');
653
+ }
654
+ validateUrl() {
655
+ breakpoints.checkEmptyOrUrl(this, 'url');
703
656
  }
704
- checkTitle() {
705
- if (!this.titleEl.textContent.trim()) {
706
- console.error('Please provide a title to the list component. Title is mandatory for accessibility purposes.');
657
+ componentDidLoad() {
658
+ this.validateCode();
659
+ this.validateName();
660
+ this.validateUrl();
661
+ if (!this.name && this.isNameRequired()) {
662
+ throw new Error('The "name" property of the post-language-menu-item component is required when the full language name is not displayed.');
663
+ }
664
+ if (this.active) {
665
+ this.postLanguageMenuItemInitiallyActive.emit(this.code);
707
666
  }
708
667
  }
709
- render() {
710
- return (index.h(index.Host, { key: '85193bec2b2ff22ed76c93a4037f353b091192bc', "data-version": _package.version }, index.h("div", { key: '32cdc5ccb95b48e3f81e90ac93f0207d935c9d3b', ref: el => (this.titleEl = el), id: this.titleId, class: `list-title${this.titleHidden ? ' visually-hidden' : ''}` }, index.h("slot", { key: '890dd411e370a7829354dcaa00fae75e8f538f01' })), index.h("div", { key: '72867a1d81f2e186ed3d68f5185a46c7c96fdd3b', role: "list", "aria-labelledby": this.titleId }, index.h("slot", { key: '2cd5a5e9ca717c675f9db3a19fbf13ff49a7312c', name: "post-list-item" }))));
668
+ /**
669
+ * Selects the language option programmatically.
670
+ */
671
+ async select() {
672
+ this.active = true;
673
+ this.emitChange();
711
674
  }
712
- get host() { return index.getElement(this); }
713
- };
714
- PostList.style = postListCss;
715
-
716
- const postListItemCss = ":host{display:flex}";
717
-
718
- const PostListItem = class {
719
- constructor(hostRef) {
720
- index.registerInstance(this, hostRef);
675
+ emitChange() {
676
+ this.postChange.emit(this.code);
721
677
  }
722
- connectedCallback() {
723
- this.host.setAttribute('slot', 'post-list-item');
678
+ isNameRequired() {
679
+ return this.host.textContent.toLowerCase() === this.code.toLowerCase();
724
680
  }
725
681
  render() {
726
- return (index.h(index.Host, { key: '98f83a8ef6ff73461bfc7b67d8113543e94d66cb', role: "listitem", slot: "post-list-item", version: _package.version }, index.h("slot", { key: '1ee5c021183b30ba7b560a58042a196aa9c1127e' })));
682
+ const lang = this.code.toLowerCase();
683
+ const emitOnKeyDown = (e) => {
684
+ if (e.key === 'Enter' || e.key === ' ') {
685
+ this.emitChange();
686
+ }
687
+ };
688
+ return (index.h(index.Host, { key: '0a0f6a2e04d61991696e86fa9a20b34d154e89ac', "data-version": _package.version, role: this.variant === 'list' ? 'listitem' : undefined }, this.url ? (index.h("a", { "aria-current": this.active ? 'page' : undefined, href: this.url, hrefLang: lang, lang: lang, onClick: () => this.emitChange(), onKeyDown: emitOnKeyDown }, index.h("slot", null), index.h("span", { class: "visually-hidden" }, this.name))) : (index.h("button", { "aria-current": this.active ? 'true' : undefined, lang: lang, onClick: () => this.emitChange(), onKeyDown: emitOnKeyDown }, index.h("slot", null), index.h("span", { class: "visually-hidden" }, this.name)))));
727
689
  }
728
690
  get host() { return index.getElement(this); }
691
+ static get watchers() { return {
692
+ "code": ["validateCode"],
693
+ "variant": ["validateVariant"],
694
+ "name": ["validateName"],
695
+ "url": ["validateUrl"]
696
+ }; }
729
697
  };
730
- PostListItem.style = postListItemCss;
698
+ PostLanguageMenuItem.style = postLanguageMenuItemCss;
731
699
 
732
- const postLogoCss = ":host,.logo{display:inline-block}:host,:host .logo>svg,.logo,.logo .logo>svg{height:100%}.description{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}.logo-link{outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}.logo-link:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.logo-link:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){.logo-link:is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.logo-link:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}.logo-link :focus,:focus-visible{border-radius:2px}";
700
+ const postLogoCss = ":host,.logo{display:inline-block}:host,:host .logo>svg,.logo,.logo .logo>svg{height:100%}.description{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}.logo-link{outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}.logo-link:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.logo-link:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){.logo-link:is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.logo-link:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}.logo-link{outline-offset:calc(\n -2px - var(--post-device-border-width-focus)\n ) !important}.logo-link :focus,:focus-visible{border-radius:.5rem}";
733
701
 
734
702
  const PostLogo = class {
735
703
  constructor(hostRef) {
736
704
  index.registerInstance(this, hostRef);
737
705
  }
738
706
  validateUrl() {
739
- index$1.checkEmptyOrUrl(this, 'url');
707
+ breakpoints.checkEmptyOrUrl(this, 'url');
740
708
  }
741
709
  componentDidLoad() {
742
710
  this.validateUrl();
@@ -750,7 +718,7 @@ const PostLogo = class {
750
718
  render() {
751
719
  const logoLink = this.url && (typeof this.url === 'string' ? this.url : this.url.href);
752
720
  const LogoTag = logoLink ? 'a' : 'span';
753
- return (index.h(index.Host, { key: 'e236c1154e8fbf7b9832f1e5f0be25336d4f0388', "data-version": _package.version }, index.h(LogoTag, { key: '545da59433be40065075b5cd8f9e8791f8b4ffa8', class: `logo ${logoLink ? 'logo-link' : ''}`, ...(logoLink ? { href: logoLink } : {}) }, index.h("span", { key: 'b0c493e8d000d33000a3988e3a336f9b6e2a4101', class: "description" }, index.h("slot", { key: 'b4efe8c1755ae5579fa6663ef69c605abdb385c4', onSlotchange: () => this.checkDescription() })), index.h("svg", { key: '7619acaca48988233913e2aa487262b96504be03', xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 72 72", "aria-hidden": "true" }, index.h("g", { key: '5c15491d631cdfc0a2afbd245c536ab6de07f212', id: "Logo" }, index.h("rect", { key: '02f3652d1f1eb1406c5c71d159d0812a3b4cf460', fill: "#ffcc00", x: "0", y: "0", width: "72", height: "72" }), index.h("polygon", { key: 'f956a38b75c3302ab00a2d3af4615038a48b7692', fill: "#ff0000", points: "34,32.3 34,19 19.7,19 19.7,29.1 10,29.1 10,42.9 19.7,42.9 19.7,53 34,53 34,39.7 30.6,39.7 30.6,49.8 23.1,49.8 23.1,39.7 13.4,39.7 13.4,32.3 23.1,32.3 23.1,22.2 30.6,22.2 30.6,32.3" }), index.h("path", { key: 'b4d00a33b8948d99d8edea5aec25baf50dfdc171', d: "M53.56234,31.10526c0,2.41272-1.99154,4.29475-4.51723,4.29475H45.2v-8.3h3.84511C51.66802,27.1,53.56234,28.78889,53.56234,31.10526z M50.69666,19H36v34h9.2V42.9h5.49666c6.75131,0,11.9971-5.15137,11.9971-11.8057C62.69376,24.39136,57.35099,19,50.69666,19z" }))))));
721
+ return (index.h(index.Host, { key: '39444d3dd1a87425c7134de5af6ad623a68197c0', "data-version": _package.version }, index.h(LogoTag, { key: '8f41d8c85212f7fde23c11fa0a0fb506deb5e0c9', class: `logo ${logoLink ? 'logo-link' : ''}`, ...(logoLink ? { href: logoLink } : {}) }, index.h("span", { key: '06b777726f42914b941a980bce9dd4ba3dc3637e', class: "description" }, index.h("slot", { key: 'd95f99a2d3b09ffab6d0e7c11b99178d6c1fb7ef', onSlotchange: () => this.checkDescription() })), index.h("svg", { key: '57fa969750327b0907cd3f5abefd14b52d176dd8', xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 72 72", "aria-hidden": "true" }, index.h("g", { key: '61172060743d8d155bcde7d636da3c5569ec1951', id: "Logo" }, index.h("rect", { key: 'ef042aea64e01c52d241ff599290646af309f868', fill: "#ffcc00", x: "0", y: "0", width: "72", height: "72" }), index.h("polygon", { key: 'ef5b2d4666dc676157fddacfe9b3f15c017e2e02', fill: "#ff0000", points: "34,32.3 34,19 19.7,19 19.7,29.1 10,29.1 10,42.9 19.7,42.9 19.7,53 34,53 34,39.7 30.6,39.7 30.6,49.8 23.1,49.8 23.1,39.7 13.4,39.7 13.4,32.3 23.1,32.3 23.1,22.2 30.6,22.2 30.6,32.3" }), index.h("path", { key: '816fd96b39a89ba22571e7e3257758e39b2599b0', d: "M53.56234,31.10526c0,2.41272-1.99154,4.29475-4.51723,4.29475H45.2v-8.3h3.84511C51.66802,27.1,53.56234,28.78889,53.56234,31.10526z M50.69666,19H36v34h9.2V42.9h5.49666c6.75131,0,11.9971-5.15137,11.9971-11.8057C62.69376,24.39136,57.35099,19,50.69666,19z" }))))));
754
722
  }
755
723
  get host() { return index.getElement(this); }
756
724
  static get watchers() { return {
@@ -759,25 +727,27 @@ const PostLogo = class {
759
727
  };
760
728
  PostLogo.style = postLogoCss;
761
729
 
762
- 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;z-index:2}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}}post-header:not([data-burger-menu])>post-mainnavigation{display:flex;height:var(--post-main-navigation-height, 0);background:#fff;user-select:none}post-header:not([data-burger-menu])>post-mainnavigation nav{flex:1 1 auto;scroll-behavior:smooth}post-header:not([data-burger-menu])>post-mainnavigation.scrollable,post-header:not([data-burger-menu])>post-mainnavigation.scrollable nav{overflow:hidden}post-header:not([data-burger-menu])>post-mainnavigation .scroll-control{z-index:2;cursor:pointer;padding:1rem;background:#fff;box-shadow:var(--post-device-elevation-500);line-height:1}post-header:not([data-burger-menu])>post-mainnavigation .scroll-control.scroll-left{margin-inline-end:-3rem}post-header:not([data-burger-menu])>post-mainnavigation .scroll-control.scroll-right{margin-inline-start:-3rem}post-header:not([data-burger-menu])>post-mainnavigation .scroll-control.d-none{display:none}post-header:not([data-burger-menu])>post-mainnavigation .scroll-control post-icon{font-size:1rem}post-header:not([data-burger-menu])>post-mainnavigation post-list>[role=list]{flex-direction:row;max-width:100vw}post-header:not([data-burger-menu])>post-mainnavigation post-list-item>a,post-header:not([data-burger-menu])>post-mainnavigation post-list-item>button,post-header:not([data-burger-menu])>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}post-header:not([data-burger-menu])>post-mainnavigation post-list-item>a .nav-el-active,post-header:not([data-burger-menu])>post-mainnavigation post-list-item>button .nav-el-active,post-header:not([data-burger-menu])>post-mainnavigation post-list-item post-megadropdown-trigger button .nav-el-active{font-weight:700;text-align:center;opacity:0}post-header:not([data-burger-menu])>post-mainnavigation post-list-item>a .nav-el-inactive,post-header:not([data-burger-menu])>post-mainnavigation post-list-item>button .nav-el-inactive,post-header:not([data-burger-menu])>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}post-header:not([data-burger-menu])>post-mainnavigation post-list-item>a.active,post-header:not([data-burger-menu])>post-mainnavigation post-list-item>a[aria-current=page]:not(post-megadropdown *),post-header:not([data-burger-menu])>post-mainnavigation post-list-item>a[aria-expanded=true],post-header:not([data-burger-menu])>post-mainnavigation post-list-item>button.active,post-header:not([data-burger-menu])>post-mainnavigation post-list-item>button[aria-current=page]:not(post-megadropdown *),post-header:not([data-burger-menu])>post-mainnavigation post-list-item>button[aria-expanded=true],post-header:not([data-burger-menu])>post-mainnavigation post-list-item post-megadropdown-trigger button.active,post-header:not([data-burger-menu])>post-mainnavigation post-list-item post-megadropdown-trigger button[aria-current=page]:not(post-megadropdown *),post-header:not([data-burger-menu])>post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true]{background-color:#050400;color:#fff;font-weight:700}post-header:not([data-burger-menu])>post-mainnavigation post-list-item>a.active .nav-el-active,post-header:not([data-burger-menu])>post-mainnavigation post-list-item>a[aria-current=page]:not(post-megadropdown *) .nav-el-active,post-header:not([data-burger-menu])>post-mainnavigation post-list-item>a[aria-expanded=true] .nav-el-active,post-header:not([data-burger-menu])>post-mainnavigation post-list-item>button.active .nav-el-active,post-header:not([data-burger-menu])>post-mainnavigation post-list-item>button[aria-current=page]:not(post-megadropdown *) .nav-el-active,post-header:not([data-burger-menu])>post-mainnavigation post-list-item>button[aria-expanded=true] .nav-el-active,post-header:not([data-burger-menu])>post-mainnavigation post-list-item post-megadropdown-trigger button.active .nav-el-active,post-header:not([data-burger-menu])>post-mainnavigation post-list-item post-megadropdown-trigger button[aria-current=page]:not(post-megadropdown *) .nav-el-active,post-header:not([data-burger-menu])>post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true] .nav-el-active{opacity:1}post-header:not([data-burger-menu])>post-mainnavigation post-list-item>a.active .nav-el-inactive,post-header:not([data-burger-menu])>post-mainnavigation post-list-item>a[aria-current=page]:not(post-megadropdown *) .nav-el-inactive,post-header:not([data-burger-menu])>post-mainnavigation post-list-item>a[aria-expanded=true] .nav-el-inactive,post-header:not([data-burger-menu])>post-mainnavigation post-list-item>button.active .nav-el-inactive,post-header:not([data-burger-menu])>post-mainnavigation post-list-item>button[aria-current=page]:not(post-megadropdown *) .nav-el-inactive,post-header:not([data-burger-menu])>post-mainnavigation post-list-item>button[aria-expanded=true] .nav-el-inactive,post-header:not([data-burger-menu])>post-mainnavigation post-list-item post-megadropdown-trigger button.active .nav-el-inactive,post-header:not([data-burger-menu])>post-mainnavigation post-list-item post-megadropdown-trigger button[aria-current=page]:not(post-megadropdown *) .nav-el-inactive,post-header:not([data-burger-menu])>post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true] .nav-el-inactive{opacity:0}post-header:not([data-burger-menu])>post-mainnavigation post-list-item>a:hover,post-header:not([data-burger-menu])>post-mainnavigation post-list-item>button:hover,post-header:not([data-burger-menu])>post-mainnavigation post-list-item post-megadropdown-trigger button:hover{background-color:#504f4b;color:#fff}@media screen and (max-width: 599.98px){post-header:not([data-burger-menu])>post-mainnavigation post-list-item>a,post-header:not([data-burger-menu])>post-mainnavigation post-list-item>button,post-header:not([data-burger-menu])>post-mainnavigation post-list-item post-megadropdown-trigger button{font-size:14px}}post-header:not([data-burger-menu])>post-mainnavigation post-list-item>button,post-header:not([data-burger-menu])>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-header:not([data-burger-menu])>post-mainnavigation post-list-item>button .nav-el-inactive,post-header:not([data-burger-menu])>post-mainnavigation post-list-item post-megadropdown-trigger button .nav-el-inactive{width:calc(100% - 28px)}post-header:not([data-burger-menu])>post-mainnavigation post-list-item>button::after,post-header:not([data-burger-menu])>post-mainnavigation post-list-item post-megadropdown-trigger button::after{transition:transform 250ms cubic-bezier(0.4, 0, 0.2, 1)}post-header:not([data-burger-menu])>post-mainnavigation post-list-item>button[aria-expanded=true]::after,post-header:not([data-burger-menu])>post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true]::after{transform:rotate(180deg)}post-header:not([data-burger-menu])>post-mainnavigation post-megadropdown button:not(:is(post-closebutton *)),post-header:not([data-burger-menu])>post-mainnavigation post-megadropdown a{width:100%;min-width:100%;height:48px;padding-inline:8px 12px;gap:16px;font-weight:400;position:relative}post-header:not([data-burger-menu])>post-mainnavigation post-megadropdown button:not(:is(post-closebutton *))::before,post-header:not([data-burger-menu])>post-mainnavigation post-megadropdown a::before{content:\"\";background-color:#050400;bottom:0;width:100%;height:1px;position:absolute;left:0}post-header:not([data-burger-menu])>post-mainnavigation post-megadropdown button:not(:is(post-closebutton *)).active,post-header:not([data-burger-menu])>post-mainnavigation post-megadropdown button:not(:is(post-closebutton *))[aria-current=page],post-header:not([data-burger-menu])>post-mainnavigation post-megadropdown button:not(:is(post-closebutton *))[aria-expanded=true],post-header:not([data-burger-menu])>post-mainnavigation post-megadropdown a.active,post-header:not([data-burger-menu])>post-mainnavigation post-megadropdown a[aria-current=page],post-header:not([data-burger-menu])>post-mainnavigation post-megadropdown a[aria-expanded=true]{background-color:#050400;color:#fff}post-header:not([data-burger-menu])>post-mainnavigation post-megadropdown button:not(:is(post-closebutton *)):hover,post-header:not([data-burger-menu])>post-mainnavigation post-megadropdown a:hover{background-color:#504f4b;color:#fff}post-header:not([data-burger-menu])>post-mainnavigation post-megadropdown button:not(:is(post-closebutton *)):hover::before,post-header:not([data-burger-menu])>post-mainnavigation post-megadropdown a:hover::before{background-color:#504f4b}post-header[data-burger-menu]>post-mainnavigation nav{transform:none !important}post-header[data-burger-menu]>post-mainnavigation .scroll-control{display:none}post-header[data-burger-menu]>post-mainnavigation post-list-item>a,post-header[data-burger-menu]>post-mainnavigation post-list-item>button,post-header[data-burger-menu]>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-header[data-burger-menu]>post-mainnavigation post-list-item>a::before,post-header[data-burger-menu]>post-mainnavigation post-list-item>button::before,post-header[data-burger-menu]>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-header[data-burger-menu]>post-mainnavigation post-list-item>a.active,post-header[data-burger-menu]>post-mainnavigation post-list-item>a[aria-current=page],post-header[data-burger-menu]>post-mainnavigation post-list-item>a[aria-expanded=true],post-header[data-burger-menu]>post-mainnavigation post-list-item>button.active,post-header[data-burger-menu]>post-mainnavigation post-list-item>button[aria-current=page],post-header[data-burger-menu]>post-mainnavigation post-list-item>button[aria-expanded=true],post-header[data-burger-menu]>post-mainnavigation post-list-item post-megadropdown-trigger button.active,post-header[data-burger-menu]>post-mainnavigation post-list-item post-megadropdown-trigger button[aria-current=page],post-header[data-burger-menu]>post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true]{background-color:#050400;color:#fff}post-header[data-burger-menu]>post-mainnavigation post-list-item>a:hover,post-header[data-burger-menu]>post-mainnavigation post-list-item>button:hover,post-header[data-burger-menu]>post-mainnavigation post-list-item post-megadropdown-trigger button:hover{background-color:#504f4b;color:#fff}post-header[data-burger-menu]>post-mainnavigation post-list-item>a:hover::before,post-header[data-burger-menu]>post-mainnavigation post-list-item>button:hover::before,post-header[data-burger-menu]>post-mainnavigation post-list-item post-megadropdown-trigger button:hover::before{background-color:#504f4b}post-header[data-burger-menu]>post-mainnavigation post-list-item>a .nav-el-inactive,post-header[data-burger-menu]>post-mainnavigation post-list-item>button .nav-el-inactive,post-header[data-burger-menu]>post-mainnavigation post-list-item post-megadropdown-trigger button .nav-el-inactive{display:none}post-header[data-burger-menu]>post-mainnavigation>button::after,post-header[data-burger-menu]>post-mainnavigation post-megadropdown-trigger button::after{transform:rotate(-90deg)}";
730
+ const postMainnavigationCss = ":host{display:flex;user-select:none}@media screen and (min-width: 1024px){:host{overflow:hidden}}nav{flex:1 1 auto}@media screen and (min-width: 1024px){nav{scroll-behavior:smooth;max-width:100vw;overflow:hidden;height:var(--post-main-navigation-height)}}.scroll-control{z-index:1;cursor:pointer;padding:1rem;background:#fff;box-shadow:var(--post-device-elevation-500);line-height:1}.scroll-control.scroll-left{margin-inline-end:-3rem}.scroll-control.scroll-right{margin-inline-start:-3rem}.scroll-control.d-none{display:none}.scroll-control post-icon{font-size:1rem}";
763
731
 
764
732
  const SCROLL_REPEAT_INTERVAL = 100; // Interval for repeated scrolling when holding down scroll button
765
733
  const NAVBAR_DISABLE_DURATION = 400; // Duration to temporarily disable navbar interactions during scrolling
766
734
  const PostMainnavigation = class {
735
+ validateTextMain() {
736
+ breakpoints.checkRequiredAndType(this, 'textMain', 'string');
737
+ }
767
738
  constructor(hostRef) {
768
739
  index.registerInstance(this, hostRef);
769
740
  this.canScrollLeft = false;
770
741
  this.canScrollRight = false;
771
742
  this.scrollRight = this.scrollRight.bind(this);
772
743
  this.scrollLeft = this.scrollLeft.bind(this);
773
- this.handleMutations = this.handleMutations.bind(this);
774
744
  this.checkScrollability = this.checkScrollability.bind(this);
775
745
  this.resizeObserver = new ResizeObserver(this.checkScrollability);
776
- this.mutationObserver = new MutationObserver(this.handleMutations);
746
+ this.mutationObserver = new MutationObserver(this.checkScrollability);
777
747
  }
778
748
  componentDidLoad() {
749
+ this.validateTextMain();
779
750
  setTimeout(() => {
780
- this.fixLayoutShift();
781
751
  this.checkScrollability();
782
752
  });
783
753
  // Observe the navbar for size changes
@@ -802,30 +772,8 @@ const PostMainnavigation = class {
802
772
  if (this.scrollRepeatInterval)
803
773
  clearInterval(this.scrollRepeatInterval);
804
774
  }
805
- async handleMutations(mutations) {
806
- const addedNodes = mutations.flatMap((mutation) => {
807
- return Array.from(mutation.addedNodes);
808
- });
809
- // Wait for all elements to be hydrated
810
- await Promise.all(addedNodes.map((item) => item.componentOnReady ? item.componentOnReady() : Promise.resolve(item)));
811
- this.fixLayoutShift();
812
- this.checkScrollability();
813
- }
814
775
  get navigationItems() {
815
- return Array.from(this.navbar.querySelectorAll(':is(a, button):not(post-megadropdown *)'));
816
- }
817
- /**
818
- * Hack to fix the layout shift due to bold text on active elements
819
- */
820
- fixLayoutShift() {
821
- this.navigationItems
822
- .filter(item => !item.matches(':has(.nav-el-active)'))
823
- .forEach(item => {
824
- item.innerHTML = `
825
- <span class="nav-el-active">${item.innerHTML}</span>
826
- <span class="nav-el-inactive" aria-hidden="true">${item.innerHTML}</span>
827
- `;
828
- });
776
+ return Array.from(this.host.querySelectorAll('a:not(post-megadropdown *), post-megadropdown-trigger'));
829
777
  }
830
778
  /**
831
779
  * Returns whether scrolling is enabled in either the left or right direction.
@@ -864,7 +812,7 @@ const PostMainnavigation = class {
864
812
  }, SCROLL_REPEAT_INTERVAL);
865
813
  }
866
814
  scrollRight() {
867
- const scrollRightLeftEdge = document
815
+ const scrollRightLeftEdge = this.host.shadowRoot
868
816
  .querySelector('.scroll-right')
869
817
  .getBoundingClientRect().left;
870
818
  for (const navigationItem of this.navigationItems) {
@@ -878,7 +826,7 @@ const PostMainnavigation = class {
878
826
  }
879
827
  }
880
828
  scrollLeft() {
881
- const scrollLeftRightEdge = document
829
+ const scrollLeftRightEdge = this.host.shadowRoot
882
830
  .querySelector('.scroll-left')
883
831
  .getBoundingClientRect().right;
884
832
  for (const navigationItem of this.navigationItems.reverse()) {
@@ -904,17 +852,38 @@ const PostMainnavigation = class {
904
852
  }, NAVBAR_DISABLE_DURATION);
905
853
  }
906
854
  render() {
907
- return (index.h(index.Host, { key: 'e3d265f18bb6e2e5f215ad2a6ceb2df8bf97be2c', version: _package.version, class: this.canScroll ? 'scrollable' : '' }, index.h("div", { key: '116f078bcba3ca3ebb09c4a3c2fe616b84522661', "aria-hidden": "true", class: { 'scroll-control scroll-left': true, 'd-none': !this.canScrollLeft }, onMouseDown: e => this.handleScrollButtonClick(e, 'left') }, index.h("post-icon", { key: '5ba3151d7c9f75eb4d8e3eac7a38cf2f6ae53852', "aria-hidden": "true", name: "chevronleft" })), index.h("nav", { key: '205d09fc7ab8dccd46cd6aa5cdbd23ba8be0cf0f', ref: el => (this.navbar = el) }, index.h("slot", { key: '7951f73623b9873b9e3ca76dcda2a34922fbe0e7' })), index.h("div", { key: '56821d40e1f7e771aaa302c640df4003bd3523bc', "aria-hidden": "true", class: { 'scroll-control scroll-right': true, 'd-none': !this.canScrollRight }, onMouseDown: e => this.handleScrollButtonClick(e, 'right') }, index.h("post-icon", { key: '5ee8ea319aada9a12c3983d12f57014db4281d1d', "aria-hidden": "true", name: "chevronright" }))));
855
+ return (index.h(index.Host, { key: '14ca9714f09e1dbbe8c976b8947db07906ec2eb8', version: _package.version, class: this.canScroll ? 'scrollable' : '' }, index.h("div", { key: 'e886823d21e52db04afc91ecbd12149c47d69038', "aria-hidden": "true", class: { 'scroll-control scroll-left': true, 'd-none': !this.canScrollLeft }, onMouseDown: e => this.handleScrollButtonClick(e, 'left') }, index.h("post-icon", { key: '3afd56232da3cf120038b68c714c560db16ac30e', "aria-hidden": "true", name: "chevronleft" })), index.h("nav", { key: '69c39d75c1f90f01c12904c98fc6e3f8de2ba09d', ref: el => (this.navbar = el), "aria-label": this.textMain }, index.h("slot", { key: '9251d7cec53c05bf9146d0b2c75533c50f7fe070' })), index.h("div", { key: '649e7ec3c9f65447a2da965bb7fe0c92b3ff8207', "aria-hidden": "true", class: { 'scroll-control scroll-right': true, 'd-none': !this.canScrollRight }, onMouseDown: e => this.handleScrollButtonClick(e, 'right') }, index.h("post-icon", { key: 'ac2823ab5195c59ea2831ffb24a1d8a033f7266a', "aria-hidden": "true", name: "chevronright" }))));
908
856
  }
857
+ get host() { return index.getElement(this); }
858
+ static get watchers() { return {
859
+ "textMain": ["validateTextMain"]
860
+ }; }
909
861
  };
910
862
  PostMainnavigation.style = postMainnavigationCss;
911
863
 
912
- 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;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:1;position:absolute;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{z-index:-1;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]:focus-visible{border-radius:4px}.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:4px;text-decoration:none;font-size:inherit;display:flex;align-items:center;justify-content:space-between;min-height:53px;width:100%;min-width:100%;height:48px;padding-inline:8px 12px;gap:16px;font-weight:400;position:relative;height:unset;font-weight:900}.megadropdown post-list .list-title h3 a::before{content:\"\";background-color:#050400;bottom:0;width:100%;height:1px;position:absolute;left:0}.megadropdown post-list .list-title h3 a.active,.megadropdown post-list .list-title h3 a[aria-current=page],.megadropdown post-list .list-title h3 a[aria-expanded=true]{background-color:#050400;color:#fff}.megadropdown post-list .list-title h3 a:hover{background-color:#504f4b;color:#fff}.megadropdown post-list .list-title h3 a:hover::before{background-color:#504f4b}.megadropdown post-list .list-title h3 a::before{height:2px}@media screen and (max-width: 1023.98px){.megadropdown post-list .list-title h3{font-size:1rem}.megadropdown post-list .list-title h3:not(:has(a)),.megadropdown post-list .list-title h3 a{padding:14px 12px 12px 8px}}@media screen and (max-width: 599.98px){.megadropdown post-list .list-title h3{font-size:.875rem}}.megadropdown post-list-item>a{padding-block:13px 12px;padding-inline-start:8px;display:flex;text-decoration:none;width:100%;min-width:100%;height:auto;min-height:48px;white-space:normal;word-break:break-word}.megadropdown post-list-item>a:hover{border-block-width:0}@media screen and (min-width: 1024px){.megadropdown post-list-item>a{font-size:1.25rem}}@media screen and (max-width: 1023.98px){.megadropdown post-list-item>a{padding-block:12px 11px}}@media screen and (max-width: 599.98px){.megadropdown post-list-item>a{font-size:.875rem}}.megadropdown .back-button{display:none;margin-block-end:2rem}.megadropdown .back-button .btn{width:auto}@media screen and (max-width: 1023.98px){.megadropdown .back-button{order:-1;display:block}}.megadropdown .close-button{position:absolute;inset-block-start:1rem;inset-inline-end:1rem}@media screen and (max-width: 1023.98px){.megadropdown .close-button{display:none}}";
864
+ const postMegadropdownCss = "*,::before,::after{box-sizing:border-box}.megadropdown{position:absolute;inset-inline:0;overflow-y:auto;background-color:#fafafa;box-shadow:var(--post-device-elevation-300)}@media screen and (min-width: 1024px){.megadropdown{z-index:-1;inset-block-start:100%;max-height:calc(100vh - var(--post-header-height) - 3rem);padding:2rem 2.5rem 2.5rem}.megadropdown.slide-in{animation:slide-down 350ms forwards}.megadropdown.slide-out{animation:slide-up 350ms forwards}}@media screen and (max-width: 1023.98px){.megadropdown{z-index:1;inset-block-start:var(--post-header-navigation-current-inset);overscroll-behavior:contain;height:calc(min(var(--post-header-scroll-parent-height, 100dvh),100dvh) - var(--post-header-height));padding-inline:var(--post-burger-menu-padding-inline);padding-block:1.5rem;display:flex;flex-direction:column}}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.megadropdown{border-block-end:1px solid CanvasText}}.megadropdown-title{margin-block:0 1rem;font-weight:950}@media screen and (min-width: 600px)and (max-width: 1023.98px){.megadropdown-title{font-size:1.25rem}}@media screen and (min-width: 0)and (max-width: 599.98px){.megadropdown-title{font-size:1.125rem}}.back-button{display:inline-flex;position:relative;align-items:center;justify-content:center;max-width:100%;overflow:hidden;transition:opacity 250ms,border-color 250ms,background-color 250ms,color 250ms;border-width:var(--post-device-border-width-default);border-style:solid;border-radius:var(--post-device-border-radius-round);background-color:rgba(0,0,0,0);box-shadow:none;font-family:inherit;font-weight:var(--post-device-font-weight-bold);text-decoration:none;white-space:nowrap;cursor:pointer;min-height:var(--post-device-sizing-interactive-button-height-4);gap:var(--post-device-spacing-gap-inline-11);padding:0 var(--post-device-spacing-padding-inline-7);border-color:var(--post-scheme-color-interactive-button-tertiary-enabled-stroke);background-color:var(--post-scheme-color-interactive-button-tertiary-enabled-bg);color:var(--post-scheme-color-interactive-button-tertiary-enabled-fg);order:-1;width:fit-content;padding-inline:0}.back-button:hover{text-decoration:none}.back-button:disabled{border-style:var(--post-core-border-style-dash)}.back-button{outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}.back-button:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.back-button:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){.back-button:is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.back-button:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.back-button:is(a){color:LinkText;border:unset}.back-button:is(button){background-color:ButtonFace !important;border:1px solid ButtonBorder !important}.back-button:not(:disabled,.disabled):is(button):hover{background-color:Highlight !important}.back-button:not(:disabled,.disabled):is(button):hover>post-icon{color:HighlightText !important}}.back-button>post-icon{width:var(--post-device-sizing-interactive-button-icon-5);height:var(--post-device-sizing-interactive-button-icon-5)}.back-button:hover{border-color:var(--post-scheme-color-interactive-button-tertiary-hover-stroke);background-color:var(--post-scheme-color-interactive-button-tertiary-hover-bg);color:var(--post-scheme-color-interactive-button-tertiary-hover-fg)}@media screen and (min-width: 600px)and (max-width: 1023.98px){.back-button{margin-block-end:2rem}}@media screen and (min-width: 0)and (max-width: 599.98px){.back-button{margin-block-end:1.5rem}}.close-button{position:absolute;inset-block-start:1rem;inset-inline-end:1rem}@media screen and (max-width: 1023.98px){.close-button{display:none}}";
913
865
 
914
866
  const PostMegadropdown = class {
867
+ validateTextClose() {
868
+ breakpoints.checkRequiredAndType(this, 'textClose', 'string');
869
+ }
870
+ validateTextBack() {
871
+ breakpoints.checkRequiredAndType(this, 'textBack', 'string');
872
+ }
873
+ get megadropdownTrigger() {
874
+ const hostId = this.host.getAttribute('id');
875
+ return hostId ? document.querySelector(`post-megadropdown-trigger[for="${hostId}"]`) : null;
876
+ }
915
877
  constructor(hostRef) {
916
878
  index.registerInstance(this, hostRef);
917
879
  this.postToggleMegadropdown = index.createEvent(this, "postToggleMegadropdown");
880
+ this.currentAnimation = null;
881
+ this.isAnimating = false;
882
+ this.fsAnimationOptions = {
883
+ translate: -10,
884
+ duration: 350,
885
+ easing: 'headerEase',
886
+ };
918
887
  this.device = breakpoints.breakpoint.get('device');
919
888
  /**
920
889
  * Holds the current visibility state of the dropdown.
@@ -925,13 +894,17 @@ const PostMegadropdown = class {
925
894
  this.trigger = false;
926
895
  /** Holds the current animation class. */
927
896
  this.animationClass = null;
928
- this.handleClickOutside = (event) => {
897
+ this.handleClickOutside = async (event) => {
929
898
  if (this.device !== 'desktop')
930
899
  return;
931
900
  const target = event.target;
932
901
  if (this.host.contains(target)) {
933
902
  return;
934
903
  }
904
+ // Ignore clicks on the trigger or its contents to prevent running hide() twice
905
+ if (this.megadropdownTrigger.contains(target)) {
906
+ return;
907
+ }
935
908
  if (target instanceof HTMLElement) {
936
909
  const trigger = target.closest('post-megadropdown-trigger');
937
910
  if (trigger) {
@@ -941,14 +914,11 @@ const PostMegadropdown = class {
941
914
  }
942
915
  }
943
916
  }
944
- this.hide(false);
917
+ await this.hide(false);
945
918
  };
946
- }
947
- get megadropdownTrigger() {
948
- const hostId = this.host.getAttribute('id');
949
- return hostId
950
- ? document.querySelector(`post-megadropdown-trigger[for="${hostId}"] > button`)
951
- : null;
919
+ this.keyboardHandler = this.keyboardHandler.bind(this);
920
+ this.handleTabOutside = this.handleTabOutside.bind(this);
921
+ this.handleClickOutside = this.handleClickOutside.bind(this);
952
922
  }
953
923
  connectedCallback() {
954
924
  window.addEventListener('postBreakpoint:device', this.breakpointChange.bind(this));
@@ -957,16 +927,17 @@ const PostMegadropdown = class {
957
927
  this.getFocusableElements();
958
928
  }
959
929
  componentDidLoad() {
930
+ this.validateTextClose();
931
+ this.validateTextBack();
960
932
  this.checkInitialAriaCurrent();
961
933
  this.setupObserver();
962
934
  this.handleAriaCurrentChange([]);
963
935
  }
964
936
  disconnectedCallback() {
965
- this.removeListeners();
966
937
  window.removeEventListener('postBreakpoint:device', this.breakpointChange.bind(this));
967
- if (PostMegadropdown.activeDropdown === this) {
938
+ if (PostMegadropdown.activeDropdown === this)
968
939
  PostMegadropdown.activeDropdown = null;
969
- }
940
+ this.removeListeners();
970
941
  if (this.defaultSlotObserver) {
971
942
  this.defaultSlotObserver.disconnect();
972
943
  }
@@ -975,41 +946,70 @@ const PostMegadropdown = class {
975
946
  * Toggles the dropdown visibility based on its current state.
976
947
  */
977
948
  async toggle() {
978
- if (this.isVisible) {
979
- this.hide();
980
- }
981
- else {
982
- await this.show();
949
+ if (this.isAnimating) {
950
+ // If this is already animating towards a future state -> reverse intent
951
+ return this.isVisible ? this.show() : this.hide();
983
952
  }
953
+ return this.isVisible ? this.hide() : this.show();
984
954
  }
985
955
  /**
986
956
  * Displays the dropdown.
987
957
  */
988
958
  async show() {
959
+ if (this.device !== 'desktop') {
960
+ const trigger = this.megadropdownTrigger;
961
+ if (trigger)
962
+ this.megadropdownTitle = trigger.innerHTML;
963
+ }
989
964
  if (PostMegadropdown.activeDropdown && PostMegadropdown.activeDropdown !== this) {
990
965
  // Close the previously active dropdown without animation
991
966
  PostMegadropdown.activeDropdown.forceClose();
992
967
  }
993
- this.animationClass = 'slide-in';
968
+ this.cancelAnimation();
969
+ // Set the megadropdown visible and mark it as the active dropdown
994
970
  this.isVisible = true;
995
971
  PostMegadropdown.activeDropdown = this;
996
- this.postToggleMegadropdown.emit({ isVisible: this.isVisible });
997
- if (this.firstFocusableEl &&
998
- window.getComputedStyle(this.firstFocusableEl).display !== 'none') {
999
- this.firstFocusableEl.focus();
972
+ // Update trigger state
973
+ this.postToggleMegadropdown.emit({ isVisible: true });
974
+ try {
975
+ await this.animate('in');
976
+ this.focusFirst();
977
+ // After the megadropdown has finished entry animation
978
+ this.addListeners();
979
+ }
980
+ catch {
981
+ // Open animation was cancelled - reset state
982
+ this.removeListeners();
983
+ this.isVisible = false;
984
+ if (PostMegadropdown.activeDropdown === this)
985
+ PostMegadropdown.activeDropdown = null;
986
+ this.postToggleMegadropdown.emit({ isVisible: false, focusParent: true });
1000
987
  }
1001
- this.addListeners();
1002
988
  }
1003
989
  /**
1004
990
  * Hides the dropdown with an animation.
1005
991
  */
1006
992
  async hide(focusParent = true, forceClose = false) {
1007
- this.postToggleMegadropdown.emit({ isVisible: false, focusParent: focusParent });
1008
993
  if (forceClose) {
1009
994
  this.forceClose();
995
+ return;
1010
996
  }
1011
- else {
1012
- this.animationClass = 'slide-out';
997
+ // Update trigger state
998
+ this.postToggleMegadropdown.emit({ isVisible: false, focusParent: focusParent });
999
+ try {
1000
+ await this.animate('out');
1001
+ // After the closing animation finishes set the megadropdown as non visible
1002
+ this.isVisible = false;
1003
+ this.removeListeners();
1004
+ if (PostMegadropdown.activeDropdown === this)
1005
+ PostMegadropdown.activeDropdown = null;
1006
+ }
1007
+ catch {
1008
+ // Closing animation was cancelled - reset state
1009
+ PostMegadropdown.activeDropdown = this;
1010
+ this.addListeners();
1011
+ this.isVisible = true;
1012
+ this.postToggleMegadropdown.emit({ isVisible: true, focusParent: false });
1013
1013
  }
1014
1014
  }
1015
1015
  /**
@@ -1018,63 +1018,74 @@ const PostMegadropdown = class {
1018
1018
  async focusFirst() {
1019
1019
  this.firstFocusableEl?.focus();
1020
1020
  }
1021
- breakpointChange(e) {
1022
- this.device = e.detail;
1023
- if (this.device === 'desktop' && this.isVisible) {
1024
- this.animationClass = null;
1025
- }
1026
- }
1027
1021
  /**
1028
1022
  * Forces the dropdown to close without animation.
1029
1023
  */
1030
1024
  forceClose() {
1031
- this.isVisible = false;
1032
- this.animationClass = null;
1033
- this.postToggleMegadropdown.emit({ isVisible: this.isVisible, focusParent: false });
1034
1025
  this.removeListeners();
1026
+ this.postToggleMegadropdown.emit({ isVisible: false, focusParent: false });
1027
+ this.isVisible = false;
1035
1028
  }
1036
- handleAnimationEnd() {
1037
- if (this.animationClass === 'slide-out') {
1038
- this.isVisible = false;
1039
- this.animationClass = null;
1040
- PostMegadropdown.activeDropdown = null;
1041
- this.removeListeners();
1029
+ // Run the respective animation
1030
+ createAnimation(direction) {
1031
+ if (this.device === 'desktop') {
1032
+ return fadeSlide.fadeSlide(this.animatedContainer, direction, this.fsAnimationOptions);
1042
1033
  }
1034
+ return slide(this.animatedContainer, direction, {
1035
+ translate: 100,
1036
+ duration: 350,
1037
+ easing: direction === 'in' ? 'ease-in' : 'ease-out',
1038
+ });
1039
+ }
1040
+ async animate(direction) {
1041
+ this.cancelAnimation();
1042
+ this.currentAnimation = this.createAnimation(direction);
1043
+ // Flag isAnimating used to avoid toggle() de-sync
1044
+ this.isAnimating = true;
1045
+ await this.currentAnimation.finished;
1046
+ this.isAnimating = false;
1047
+ this.currentAnimation = null;
1048
+ }
1049
+ cancelAnimation() {
1050
+ this.currentAnimation?.cancel();
1051
+ this.currentAnimation = null;
1052
+ }
1053
+ breakpointChange(e) {
1054
+ this.device = e.detail;
1055
+ this.cancelAnimation();
1043
1056
  }
1044
1057
  addListeners() {
1045
- this.host.addEventListener('keydown', e => this.keyboardHandler(e));
1046
- document.addEventListener('keyup', e => this.handleTabOutside(e));
1058
+ this.host.addEventListener('keydown', this.keyboardHandler);
1059
+ document.addEventListener('keyup', this.handleTabOutside);
1047
1060
  document.addEventListener('mousedown', this.handleClickOutside);
1048
1061
  }
1049
1062
  removeListeners() {
1050
- this.host.removeEventListener('keydown', e => this.keyboardHandler(e));
1051
- document.removeEventListener('keyup', e => this.handleTabOutside(e));
1063
+ this.host.removeEventListener('keydown', this.keyboardHandler);
1064
+ document.removeEventListener('keyup', this.handleTabOutside);
1052
1065
  document.removeEventListener('mousedown', this.handleClickOutside);
1053
1066
  }
1054
1067
  getFocusableElements() {
1055
- const focusableEls = Array.from(this.host.querySelectorAll('post-list-item, h3, .back-button'));
1056
- const focusableChildren = focusableEls.flatMap(el => Array.from(getFocusableChildren.getFocusableChildren(el)));
1057
- // Check for an overview link
1058
- const overviewLink = this.host.querySelector('a[slot="megadropdown-overview-link"]');
1059
- if (overviewLink) {
1060
- focusableChildren.unshift(overviewLink);
1061
- }
1062
- this.firstFocusableEl = focusableChildren[0];
1063
- this.lastFocusableEl = focusableChildren[focusableChildren.length - 1];
1068
+ const focusableElements = [
1069
+ ...getFocusableChildren.getFocusableChildren(this.host),
1070
+ ...getFocusableChildren.getFocusableChildren(this.host.shadowRoot),
1071
+ ];
1072
+ this.firstFocusableEl = focusableElements[0];
1073
+ this.lastFocusableEl = focusableElements[focusableElements.length - 1];
1064
1074
  }
1065
1075
  // Loop through the focusable children
1066
1076
  keyboardHandler(e) {
1067
- if (e.key === 'Tab' && this.device !== 'desktop') {
1068
- if (e.shiftKey && document.activeElement === this.firstFocusableEl) {
1069
- // If back tab (TAB + Shift) and first element is focused, focus goes to the last element of the megadropdown
1070
- e.preventDefault();
1071
- this.lastFocusableEl.focus();
1072
- }
1073
- else if (!e.shiftKey && document.activeElement === this.lastFocusableEl) {
1074
- // If TAB and last element is focused, focus goes back to the first element of the megadropdown
1075
- e.preventDefault();
1076
- this.firstFocusableEl.focus();
1077
- }
1077
+ if (e.key !== 'Tab' || this.device === 'desktop')
1078
+ return;
1079
+ const activeElement = this.host.shadowRoot.activeElement || document.activeElement;
1080
+ if (e.shiftKey && activeElement === this.firstFocusableEl) {
1081
+ // If back tab (TAB + Shift) and first element is focused, focus goes to the last element of the megadropdown
1082
+ e.preventDefault();
1083
+ this.lastFocusableEl.focus();
1084
+ }
1085
+ else if (!e.shiftKey && activeElement === this.lastFocusableEl) {
1086
+ // If TAB and last element is focused, focus goes back to the first element of the megadropdown
1087
+ e.preventDefault();
1088
+ this.firstFocusableEl.focus();
1078
1089
  }
1079
1090
  }
1080
1091
  handleTabOutside(e) {
@@ -1105,14 +1116,8 @@ const PostMegadropdown = class {
1105
1116
  */
1106
1117
  setTriggerActive(isActive) {
1107
1118
  const trigger = this.megadropdownTrigger;
1108
- if (!trigger)
1109
- return;
1110
- if (isActive) {
1111
- trigger.classList.add('active');
1112
- }
1113
- else {
1114
- trigger.classList.remove('active');
1115
- }
1119
+ if (trigger)
1120
+ trigger.setAttribute('active', isActive.toString());
1116
1121
  }
1117
1122
  /**
1118
1123
  * Updates the megadropdown trigger state when the megadropdown content changes.
@@ -1136,15 +1141,19 @@ const PostMegadropdown = class {
1136
1141
  }
1137
1142
  render() {
1138
1143
  const containerStyle = this.isVisible ? {} : { display: 'none' };
1139
- return (index.h(index.Host, { key: 'd189f35bb1b66459d6f50bd3326495fe79429be2', version: _package.version }, index.h("div", { key: 'a9d7d8e25af433b18548a40be4e724c1a3a57374', class: `megadropdown-container ${this.animationClass || ''}`, style: containerStyle, onAnimationEnd: () => this.handleAnimationEnd() }, index.h("div", { key: 'a9886e9c1797eb11c6988e2b17bb73097ca9fb24', class: "megadropdown" }, index.h("slot", { key: 'e93c659a3ba85dbecebfaa2b2ed435d05cfc4ecc', name: "megadropdown-title" }), index.h("slot", { key: 'c6d4952fd218d2c31399b31ebea905a19892461d', name: "megadropdown-overview-link" }), index.h("div", { key: '82a157f8c6225ccec231d660d55b49abf456ba60', class: "megadropdown-content" }, index.h("slot", { key: '0c2ad616e2e999bb30cc9e9593fcfa4e4b8d71f0' })), index.h("div", { key: 'b501280cb3c05bb0210e5fe2380d5c338416df90', onClick: () => this.hide(true), class: "back-button" }, index.h("slot", { key: '2b60695fac34563724f09b1e6c51b4b386606f17', name: "back-button" })), index.h("div", { key: '1554073e2476baf7416937f54203e2e404805360', onClick: () => this.hide(true), class: "close-button" }, index.h("slot", { key: '29e8f43ddadfa66c405c6ad0ffbf43237fae97ec', name: "close-button" }))))));
1144
+ return (index.h(index.Host, { key: 'f099891f24c60ca48ddceeadf754debdf3d8bff1', version: _package.version }, index.h("div", { key: 'd964a72ec31632a6061f8c656fcc171bc584b764', ref: el => (this.animatedContainer = el), class: "megadropdown", style: containerStyle }, this.device !== 'desktop' && this.megadropdownTitle && (index.h("p", { key: 'b04d8fb83e5658365a1d722572d82237a7bf4eba', class: "megadropdown-title" }, this.megadropdownTitle)), index.h("div", { key: 'b7e654a69375c4e8f3af2e8ff65f0a5b7b2ee2cd', class: "megadropdown-content" }, index.h("slot", { key: '9608aa8b0d9458b593917e66e3fd4db9c447cac2' })), this.device === 'desktop' ? (index.h("post-closebutton", { onClick: () => this.hide(true), class: "close-button" }, this.textClose)) : (index.h("button", { onClick: () => this.hide(true), class: "back-button" }, index.h("post-icon", { name: "arrowleft" }), this.textBack)))));
1140
1145
  }
1141
1146
  get host() { return index.getElement(this); }
1147
+ static get watchers() { return {
1148
+ "textClose": ["validateTextClose"],
1149
+ "textBack": ["validateTextBack"]
1150
+ }; }
1142
1151
  };
1143
1152
  /** Tracks the currently active dropdown instance. */
1144
1153
  PostMegadropdown.activeDropdown = null;
1145
1154
  PostMegadropdown.style = postMegadropdownCss;
1146
1155
 
1147
- const postMegadropdownTriggerCss = "post-megadropdown-trigger{width:100%;position:relative}";
1156
+ const postMegadropdownTriggerCss = "button{display:inline-flex;position:relative;align-items:center;justify-content:center;max-width:100%;overflow:hidden;transition:opacity 250ms,border-color 250ms,background-color 250ms,color 250ms;border-width:var(--post-device-border-width-default);border-style:solid;border-radius:var(--post-device-border-radius-round);background-color:rgba(0,0,0,0);box-shadow:none;font-family:inherit;font-weight:var(--post-device-font-weight-bold);text-decoration:none;white-space:nowrap;cursor:pointer;border:unset;font-weight:unset;display:flex;padding:.25rem .625rem;gap:.375rem;font-size:1rem;border-color:var(--post-scheme-color-interactive-button-tertiary-enabled-stroke);background-color:var(--post-scheme-color-interactive-button-tertiary-enabled-bg);color:var(--post-scheme-color-interactive-button-tertiary-enabled-fg)}button:hover{text-decoration:none}button:disabled{border-style:var(--post-core-border-style-dash)}button{outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}button:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){button:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){button:is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){button:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){button:is(a){color:LinkText;border:unset}button:is(button){background-color:ButtonFace !important;border:1px solid ButtonBorder !important}button:not(:disabled,.disabled):is(button):hover{background-color:Highlight !important}button:not(:disabled,.disabled):is(button):hover>post-icon{color:HighlightText !important}}button:hover{border-color:var(--post-scheme-color-interactive-button-tertiary-hover-stroke);background-color:var(--post-scheme-color-interactive-button-tertiary-hover-bg);color:var(--post-scheme-color-interactive-button-tertiary-hover-fg)}button:is([aria-current],[aria-pressed=true],[aria-expanded=true],.active){box-shadow:var(--post-device-elevation-100);border-color:var(--post-scheme-color-interactive-button-primary-enabled-stroke);background-color:var(--post-scheme-color-interactive-button-primary-enabled-bg);color:var(--post-scheme-color-interactive-button-primary-enabled-fg)}button:is([aria-current],[aria-pressed=true],[aria-expanded=true],.active):hover{border-color:var(--post-scheme-color-interactive-button-primary-hover-stroke);background-color:var(--post-scheme-color-interactive-button-primary-hover-bg);color:var(--post-scheme-color-interactive-button-primary-hover-fg)}button{--post-nav-item-border-width:1px;width:100%;justify-content:start;position:relative;padding:.75rem .75rem calc(.75rem - var(--post-nav-item-border-width)) .5rem;gap:1rem;border-radius:0;line-height:1.5;outline-color:currentColor !important;height:100%}button::before{content:\"\";background-color:#050400;position:absolute;inset-inline:0;inset-block-end:0;height:var(--post-nav-item-border-width)}button:hover{border-color:var(--post-scheme-color-interactive-button-primary-hover-stroke);background-color:var(--post-scheme-color-interactive-button-primary-hover-bg);color:var(--post-scheme-color-interactive-button-primary-hover-fg)}button:hover::before{background-color:rgba(0,0,0,0)}button:is([aria-current],[aria-pressed=true],[aria-expanded=true],.active){box-shadow:none}button{outline-offset:calc(\n -2px - var(--post-device-border-width-focus)\n ) !important}button>post-icon:where(:last-child){margin-inline-start:auto}@media screen and (min-width: 0)and (max-width: 599.98px){button{padding:calc(.5rem + 1.5px) .75rem calc(.5rem + 1.5px - var(--post-nav-item-border-width)) .5rem;gap:.5rem;font-size:.875rem}button>post-icon{font-size:1rem}}@media screen and (min-width: 600px)and (max-width: 1023.98px){button>post-icon{font-size:1.5rem}}@media screen and (min-width: 1024px){button{padding:1rem .75rem;gap:.5rem}button::before{content:unset}}:host{position:relative;display:inline-block}button post-icon{transition:transform 250ms cubic-bezier(0.4, 0, 0.2, 1)}button:is([aria-current],[aria-pressed=true],[aria-expanded=true]) post-icon{transform:rotate(180deg)}button>span{position:relative}button>span>span[aria-hidden]{font-weight:700;visibility:hidden}button>span>span:not([aria-hidden]){position:absolute;inset:0}@media screen and (min-width: 1024px){button:is([aria-current],[aria-pressed=true],[aria-expanded=true],.active){font-weight:700}}@media screen and (max-width: 1023.98px){button post-icon{margin-inline-start:auto;transform:rotate(-90deg) !important}}";
1148
1157
 
1149
1158
  var __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1150
1159
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -1157,101 +1166,85 @@ var __decorate$1 = (undefined && undefined.__decorate) || function (decorators,
1157
1166
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1158
1167
  };
1159
1168
  const PostMegadropdownTrigger = class {
1169
+ validateFor() {
1170
+ breakpoints.checkRequiredAndType(this, 'for', 'string');
1171
+ }
1160
1172
  constructor(hostRef) {
1161
1173
  index.registerInstance(this, hostRef);
1174
+ this.mutationObserver = new MutationObserver(this.cloneSlottedButton.bind(this));
1175
+ this.isMegadropdownExpanded = false;
1176
+ this.slottedContent = null;
1162
1177
  /**
1163
- * Manages the accessibility attribute `aria-expanded` to indicate whether the associated mega dropdown is expanded or collapsed.
1178
+ * Sets the trigger state to be active or inactive.
1164
1179
  */
1165
- this.ariaExpanded = false;
1166
- /**
1167
- * Reference to the slotted button within the trigger, if present.
1168
- * Used to manage click and key events for mega dropdown control.
1169
- */
1170
- this.slottedButton = null;
1171
- /**
1172
- * Tracks whether this trigger's dropdown was expanded before a state change.
1173
- * Used to determine if this trigger should handle focus when its dropdown closes.
1174
- */
1175
- this.wasExpanded = false;
1176
- this.handleKeyDown = (event) => {
1177
- if (event.key === 'Enter' || event.key === ' ') {
1178
- event.preventDefault();
1179
- this.handleToggle();
1180
- if (this.megadropdown && !this.ariaExpanded) {
1181
- setTimeout(() => this.megadropdown.focusFirst(), 100);
1182
- }
1183
- }
1184
- };
1185
- this.handleToggleMegadropdown = (event) => {
1186
- if (event.target.id === this.for) {
1187
- this.ariaExpanded = event.detail.isVisible;
1188
- // Focus on the trigger parent of the dropdown after it's closed if the close button had been clicked
1189
- if (this.wasExpanded && !this.ariaExpanded && event.detail.focusParent) {
1190
- setTimeout(() => {
1191
- this.slottedButton?.focus();
1192
- }, 100);
1193
- }
1194
- this.wasExpanded = this.ariaExpanded;
1195
- if (this.slottedButton) {
1196
- this.slottedButton.setAttribute('aria-expanded', this.ariaExpanded.toString());
1197
- }
1198
- }
1199
- };
1180
+ this.active = false;
1181
+ this.onMegadropdownToggled = this.onMegadropdownToggled.bind(this);
1200
1182
  }
1201
- /**
1202
- * Watch for changes to the `for` property to validate its type and ensure it is a string.
1203
- * @param forValue - The new value of the `for` property.
1204
- */
1205
- validateControlFor() {
1206
- index$1.checkRequiredAndType(this, 'for', 'string');
1183
+ connectedCallback() {
1184
+ this.mutationObserver.observe(this.host, { childList: true, subtree: true });
1185
+ }
1186
+ componentWillLoad() {
1187
+ this.cloneSlottedButton();
1188
+ }
1189
+ componentDidLoad() {
1190
+ this.validateFor();
1191
+ // Check if the mega dropdown attached to the trigger is expanded or not
1192
+ if (environment.IS_BROWSER)
1193
+ document.addEventListener('postToggleMegadropdown', this.onMegadropdownToggled);
1194
+ }
1195
+ disconnectedCallback() {
1196
+ document.removeEventListener('postToggleMegadropdown', this.onMegadropdownToggled);
1197
+ }
1198
+ cloneSlottedButton() {
1199
+ this.slottedContent = this.host.innerHTML;
1207
1200
  }
1208
1201
  get megadropdown() {
1209
1202
  const ref = document.getElementById(this.for);
1210
- return ref && ref.localName === 'post-megadropdown'
1211
- ? ref
1212
- : null;
1213
- }
1214
- handleToggle() {
1215
- if (this.megadropdown) {
1216
- this.megadropdown.toggle();
1217
- }
1218
- else {
1203
+ if (ref?.localName !== 'post-megadropdown') {
1219
1204
  console.warn(`No post-megadropdown found with ID: ${this.for}`);
1205
+ return null;
1220
1206
  }
1207
+ return ref;
1221
1208
  }
1222
- componentDidLoad() {
1223
- this.validateControlFor();
1224
- // Check if the mega dropdown attached to the trigger is expanded or not
1225
- document.addEventListener('postToggleMegadropdown', this.handleToggleMegadropdown);
1226
- this.slottedButton = this.host.querySelector('button');
1227
- if (this.slottedButton) {
1228
- this.slottedButton.setAttribute('aria-haspopup', 'menu');
1229
- this.slottedButton.addEventListener('click', () => {
1230
- this.handleToggle();
1231
- });
1232
- this.slottedButton.addEventListener('keydown', this.handleKeyDown);
1233
- }
1234
- else {
1235
- console.warn('No button found within post-megadropdown-trigger');
1236
- }
1209
+ onClick() {
1210
+ this.megadropdown?.toggle();
1237
1211
  }
1238
- disconnectedCallback() {
1239
- document.removeEventListener('postToggleMegadropdown', this.handleToggleMegadropdown);
1212
+ onKeyDown(event) {
1213
+ if (event.key !== 'Enter' && event.key !== ' ')
1214
+ return;
1215
+ const megadropdown = this.megadropdown;
1216
+ if (!megadropdown)
1217
+ return;
1218
+ event.preventDefault();
1219
+ this.megadropdown.toggle();
1220
+ }
1221
+ onMegadropdownToggled(event) {
1222
+ if (event.target.id === this.for) {
1223
+ const wasMegadropdownExpanded = this.isMegadropdownExpanded;
1224
+ this.isMegadropdownExpanded = event.detail.isVisible;
1225
+ const haveBeenClosed = wasMegadropdownExpanded && !this.isMegadropdownExpanded;
1226
+ if (!haveBeenClosed || !event.detail.focusParent)
1227
+ return;
1228
+ // Focus on the trigger parent of the dropdown after it's closed if the close button had been clicked
1229
+ setTimeout(() => {
1230
+ this.interactiveButton.focus();
1231
+ }, 100);
1232
+ }
1240
1233
  }
1241
1234
  render() {
1242
- return (index.h(index.Host, { key: 'b5d3eb64df71ac025f1ca882811b4c6f20ccf8b7', "data-version": _package.version, "tab-index": "-1" }, index.h("button", { key: '2ba6ec332db1ffbac84dd134b144e33115bac31e' }, index.h("slot", { key: '39b36a16250897f243b8039342c7ff294f83df4d' }))));
1235
+ return (index.h(index.Host, { key: '73479c3c80cda63b9f82ec584c962ffa53b7b85c', "data-version": _package.version }, index.h("button", { key: 'e76d5077f1ac2e6c16e365799ea79f6985ec0d14', ref: el => (this.interactiveButton = el), type: "button", "aria-haspopup": "menu", "aria-expanded": this.isMegadropdownExpanded.toString(), onClick: this.onClick.bind(this), onKeyDown: this.onKeyDown.bind(this), class: { active: this.active } }, index.h("span", { key: 'a60b5838443ccd75fc08e07f791cb4ef088343f3' }, index.h("span", { key: 'da180bb66704712c0cba7b575ba260765a0df36f' }, index.h("slot", { key: 'c27dbc706a82fc49acb3414855e0e57d1dac0923' })), index.h("span", { key: '87ebe5fdcba5a160b2698965284fc5ce66d0fa90', "aria-hidden": "true", innerHTML: this.slottedContent })), index.h("post-icon", { key: '76f620188ebc3ad60b04523ea70ee4f3b642a2e8', name: "chevrondown" }))));
1243
1236
  }
1244
1237
  get host() { return index.getElement(this); }
1245
1238
  static get watchers() { return {
1246
- "for": ["validateControlFor"]
1239
+ "for": ["validateFor"]
1247
1240
  }; }
1248
1241
  };
1249
1242
  __decorate$1([
1250
1243
  eventFrom.EventFrom('post-megadropdown', { ignoreNestedComponents: false })
1251
- ], PostMegadropdownTrigger.prototype, "handleToggleMegadropdown", void 0);
1244
+ ], PostMegadropdownTrigger.prototype, "onMegadropdownToggled", null);
1252
1245
  PostMegadropdownTrigger.style = postMegadropdownTriggerCss;
1253
1246
 
1254
- const postMenuCss = ":host{display:block}:where([part=menu]){display:flex;flex-direction:column;padding-block:.5rem}::slotted([slot=header]){margin-top:-0.5rem;padding:1rem;display:flex;align-items:center;gap:.5rem;border-block-end:1px solid #050400;font-weight:700}@media screen and (max-width: 1023.98px){::slotted([slot=header]){padding:.75rem 1rem}}@media screen and (max-width: 779.98px){::slotted([slot=header]){padding:.5rem 1rem}}";
1247
+ const postMenuCss = ":host{display:block}:where([part=post-menu]){display:flex;flex-direction:column;padding-block:.5rem}::slotted([slot=header]){margin-top:-0.5rem;padding:1rem;display:flex;align-items:center;gap:.5rem;border-block-end:1px solid #050400;font-weight:700}@media screen and (max-width: 1023.98px){::slotted([slot=header]){padding:.75rem 1rem}}@media screen and (max-width: 779.98px){::slotted([slot=header]){padding:.5rem 1rem}}";
1255
1248
 
1256
1249
  var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1257
1250
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -1300,35 +1293,6 @@ const PostMenu = class {
1300
1293
  this.controlKeyDownHandler(e);
1301
1294
  }
1302
1295
  };
1303
- this.handlePostShown = (event) => {
1304
- // Only for the first open
1305
- if (event.detail.first) {
1306
- // Add "menu" and "menuitem" aria roles and aria-label
1307
- this.host.setAttribute('role', 'menu');
1308
- const menuItems = this.getSlottedItems();
1309
- for (const item of menuItems) {
1310
- item.setAttribute('role', 'menuitem');
1311
- }
1312
- if (this.label)
1313
- this.host.setAttribute('aria-label', this.label);
1314
- }
1315
- };
1316
- this.handlePostToggled = (event) => {
1317
- this.isVisible = event.detail.isOpen;
1318
- this.toggleMenu.emit(this.isVisible);
1319
- if (this.isVisible) {
1320
- this.lastFocusedElement = this.root?.activeElement;
1321
- requestAnimationFrame(() => {
1322
- const menuItems = this.getSlottedItems();
1323
- if (menuItems.length > 0) {
1324
- menuItems[0].focus();
1325
- }
1326
- });
1327
- }
1328
- else if (this.lastFocusedElement) {
1329
- this.lastFocusedElement.focus();
1330
- }
1331
- };
1332
1296
  this.handleClick = (e) => {
1333
1297
  const target = e.target;
1334
1298
  if (['BUTTON', 'A', 'INPUT', 'SELECT', 'TEXTAREA'].includes(target.tagName)) {
@@ -1337,10 +1301,10 @@ const PostMenu = class {
1337
1301
  };
1338
1302
  }
1339
1303
  validatePlacement() {
1340
- index$1.checkEmptyOrOneOf(this, 'placement', placement.PLACEMENT_TYPES);
1304
+ breakpoints.checkEmptyOrOneOf(this, 'placement', placement.PLACEMENT_TYPES);
1341
1305
  }
1342
1306
  validateLabel() {
1343
- index$1.checkRequiredAndType(this, 'label', 'string');
1307
+ breakpoints.checkRequiredAndType(this, 'label', 'string');
1344
1308
  }
1345
1309
  connectedCallback() {
1346
1310
  this.root = getRoot.getRoot(this.host);
@@ -1390,6 +1354,35 @@ const PostMenu = class {
1390
1354
  console.error('hide: popoverRef is null or undefined');
1391
1355
  }
1392
1356
  }
1357
+ handlePostShown(event) {
1358
+ // Only for the first open
1359
+ if (event.detail.first) {
1360
+ // Add "menu" and "menuitem" aria roles and aria-label
1361
+ this.host.setAttribute('role', 'menu');
1362
+ const menuItems = this.getSlottedItems();
1363
+ for (const item of menuItems) {
1364
+ item.setAttribute('role', 'menuitem');
1365
+ }
1366
+ if (this.label)
1367
+ this.host.setAttribute('aria-label', this.label);
1368
+ }
1369
+ }
1370
+ handlePostToggled(event) {
1371
+ this.isVisible = event.detail.isOpen;
1372
+ this.toggleMenu.emit(this.isVisible);
1373
+ if (this.isVisible) {
1374
+ this.lastFocusedElement = this.root?.activeElement;
1375
+ requestAnimationFrame(() => {
1376
+ const menuItems = this.getSlottedItems();
1377
+ if (menuItems.length > 0) {
1378
+ menuItems[0].focus();
1379
+ }
1380
+ });
1381
+ }
1382
+ else if (this.lastFocusedElement) {
1383
+ this.lastFocusedElement.focus();
1384
+ }
1385
+ }
1393
1386
  controlKeyDownHandler(e) {
1394
1387
  const menuItems = this.getSlottedItems();
1395
1388
  if (!menuItems.length) {
@@ -1437,7 +1430,7 @@ const PostMenu = class {
1437
1430
  .flatMap(el => Array.from(getFocusableChildren.getFocusableChildren(el))));
1438
1431
  }
1439
1432
  render() {
1440
- return (index.h(index.Host, { key: 'ab27eeef6ddcca57eb65ca9f7471809d9f78d7d1', "data-version": _package.version }, index.h("post-popovercontainer", { key: 'c8053a6cbae6d22751e81107099180b95829b8c4', onPostShow: this.handlePostShown, onPostToggle: this.handlePostToggled, placement: this.placement, ref: e => (this.popoverRef = e) }, index.h("div", { key: 'c60d336220b331cd7f3d5b896788f3fdcee090cf', part: "menu" }, index.h("slot", { key: '629b1f5dbe4074df6459bdfe64e1c0f836314e85', name: "header" }), index.h("slot", { key: 'c918bba494424db857e7e99fd80d24224bdeb9ed' })))));
1433
+ return (index.h(index.Host, { key: '08285b17608e5bc3133a3da6015a5a0d4de6ec29', "data-version": _package.version }, index.h("post-popovercontainer", { key: '17e45869b5e76cdd9bd43ca77b2f0b3876462014', onPostShow: this.handlePostShown.bind(this), onPostToggle: this.handlePostToggled.bind(this), placement: this.placement, ref: e => (this.popoverRef = e) }, index.h("div", { key: 'e2486aa099ffc8ac59885a0971ebb13649a49a35', part: "post-menu" }, index.h("slot", { key: '9f0e05f211fe18cf5beed8e1b33bde26d4974e24', name: "header" }), index.h("slot", { key: '971ac8ad433467a2ebe2429574cb10dbdadbcf25' })))));
1441
1434
  }
1442
1435
  get host() { return index.getElement(this); }
1443
1436
  static get watchers() { return {
@@ -1447,10 +1440,10 @@ const PostMenu = class {
1447
1440
  };
1448
1441
  __decorate([
1449
1442
  eventFrom.EventFrom('post-popovercontainer')
1450
- ], PostMenu.prototype, "handlePostShown", void 0);
1443
+ ], PostMenu.prototype, "handlePostShown", null);
1451
1444
  __decorate([
1452
1445
  eventFrom.EventFrom('post-popovercontainer')
1453
- ], PostMenu.prototype, "handlePostToggled", void 0);
1446
+ ], PostMenu.prototype, "handlePostToggled", null);
1454
1447
  PostMenu.style = postMenuCss;
1455
1448
 
1456
1449
  const postMenuTriggerCss = ":host{display:inline-block}";
@@ -1479,7 +1472,7 @@ const PostMenuTrigger = class {
1479
1472
  * @param forValue - The new value of the `for` property.
1480
1473
  */
1481
1474
  validateControlFor() {
1482
- index$1.checkRequiredAndType(this, 'for', 'string');
1475
+ breakpoints.checkRequiredAndType(this, 'for', 'string');
1483
1476
  }
1484
1477
  get menu() {
1485
1478
  const ref = this.root.getElementById(this.for);
@@ -1528,7 +1521,7 @@ const PostMenuTrigger = class {
1528
1521
  }
1529
1522
  }
1530
1523
  render() {
1531
- return (index.h(index.Host, { key: '14592f9564fdb09b2e809374d5794bf71f576dbb', "data-version": _package.version, "tab-index": "-1" }, index.h("slot", { key: 'a0f463000420df39035cc5a48369d230394b5e04' })));
1524
+ return (index.h(index.Host, { key: '3ef7e372c9c655bf1da5d5a7d4bca6925a010f65', "data-version": _package.version, "tab-index": "-1" }, index.h("slot", { key: '771db943ad5aa639c325f055ba6f9d763bf4256d' })));
1532
1525
  }
1533
1526
  get host() { return index.getElement(this); }
1534
1527
  static get watchers() { return {
@@ -4258,7 +4251,7 @@ function popIn(el) {
4258
4251
  });
4259
4252
  }
4260
4253
 
4261
- const postPopovercontainerCss = "@layer polyfill{@supports not selector(:popover-open){[popover]:not(.\\:popover-open){display:none}}}:where(post-popovercontainer){background-color:rgba(0,0,0,0);border:rgba(0,0,0,0);position:fixed;margin:0;padding:0;overflow:visible}:where(post-popovercontainer)>div{box-shadow:var(--post-device-elevation-300);width:max-content;max-width:100%;color:var(--post-current-fg);background-color:var(--post-current-bg);border-radius:4px}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:where(post-popovercontainer)>div{border:2px solid rgba(0,0,0,0)}}:where(post-popovercontainer)[tooltip]{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}:where(post-popovercontainer)[safe-space]::after{content:\"\";position:fixed;inset:0;z-index:-1;pointer-events:auto}:where(post-popovercontainer)[safe-space=triangle]::after{clip-path:polygon(var(--post-safe-space-cursor-x, 0) var(--post-safe-space-cursor-y, 0), var(--post-safe-space-popover-x-start, var(--post-safe-space-popover-x, 0)) var(--post-safe-space-popover-y, var(--post-safe-space-popover-y-start, 0)), var(--post-safe-space-popover-x-end, var(--post-safe-space-popover-x, 0)) var(--post-safe-space-popover-y, var(--post-safe-space-popover-y-end, 0)))}:where(post-popovercontainer)[safe-space=trapezoid]::after{clip-path:polygon(var(--post-safe-space-trigger-x-start, var(--post-safe-space-trigger-x, 0)) var(--post-safe-space-trigger-y, var(--post-safe-space-trigger-y-start, 0)), var(--post-safe-space-trigger-x-end, var(--post-safe-space-trigger-x, 0)) var(--post-safe-space-trigger-y, var(--post-safe-space-trigger-y-end, 0)), var(--post-safe-space-popover-x-end, var(--post-safe-space-popover-x, 0)) var(--post-safe-space-popover-y, var(--post-safe-space-popover-y-end, 0)), var(--post-safe-space-popover-x-start, var(--post-safe-space-popover-x, 0)) var(--post-safe-space-popover-y, var(--post-safe-space-popover-y-start, 0)))}:where(post-popovercontainer):not(:has(.arrow))>div{box-shadow:var(--post-device-elevation-300)}:where(post-popovercontainer):has(.arrow)>div{filter:drop-shadow(1px 2px 3px hsla(216, 9%, 11%, 0.15)) drop-shadow(2px 4px 6px hsla(225, 17%, 9%, 0.15)) drop-shadow(4px 8px 12px hsla(225, 7%, 11%, 0.15))}:where(post-popovercontainer):has(.arrow.top)>div{filter:drop-shadow(0px -2px 3px hsla(216, 9%, 11%, 0.15)) drop-shadow(0px -4px 6px hsla(225, 17%, 9%, 0.15)) drop-shadow(0px -8px 12px hsla(225, 7%, 11%, 0.15))}:where(post-popovercontainer):has(.arrow.left)>div{filter:drop-shadow(-2px 0px 3px hsla(216, 9%, 11%, 0.15)) drop-shadow(-4px 0px 6px hsla(225, 17%, 9%, 0.15)) drop-shadow(-8px 0px 12px hsla(225, 7%, 11%, 0.15))}:where(post-popovercontainer):has(.arrow.right)>div{filter:drop-shadow(2px 0px 3px hsla(216, 9%, 11%, 0.15)) drop-shadow(4px 0px 6px hsla(225, 17%, 9%, 0.15)) drop-shadow(8px 0px 12px hsla(225, 7%, 11%, 0.15))}:where(post-popovercontainer) .arrow{position:absolute;width:.5825rem;height:.5825rem;background-color:inherit;rotate:45deg;pointer-events:none;z-index:-1}:where(post-popovercontainer) .arrow.top{border-block-start:2px solid rgba(0,0,0,0);border-inline-start:2px solid rgba(0,0,0,0)}:where(post-popovercontainer) .arrow.right{border-block-start:2px solid rgba(0,0,0,0);border-inline-end:2px solid rgba(0,0,0,0)}:where(post-popovercontainer) .arrow.left{border-block-end:2px solid rgba(0,0,0,0);border-inline-start:2px solid rgba(0,0,0,0)}:where(post-popovercontainer) .arrow.bottom{border-block-end:2px solid rgba(0,0,0,0);border-inline-end:2px solid rgba(0,0,0,0)}";
4254
+ const postPopovercontainerCss = "@layer polyfill{@supports not selector(:popover-open){[popover]:not(.\\:popover-open){display:none}}}:where(post-popovercontainer){background-color:rgba(0,0,0,0);border:rgba(0,0,0,0);position:fixed;margin:0;padding:0;overflow:visible}:where(post-popovercontainer)>div{box-shadow:var(--post-device-elevation-300);width:max-content;max-width:100%;color:var(--post-current-fg);background-color:var(--post-current-bg);border-radius:4px}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:where(post-popovercontainer)>div{border:2px solid rgba(0,0,0,0)}}:where(post-popovercontainer)[tooltip]{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}:where(post-popovercontainer)[safe-space]::after{content:\"\";position:fixed;inset:0;z-index:-1;pointer-events:auto}:where(post-popovercontainer)[safe-space=triangle]::after{clip-path:polygon(var(--post-safe-space-cursor-x, 0) var(--post-safe-space-cursor-y, 0), var(--post-safe-space-popover-x-start, var(--post-safe-space-popover-x, 0)) var(--post-safe-space-popover-y, var(--post-safe-space-popover-y-start, 0)), var(--post-safe-space-popover-x-end, var(--post-safe-space-popover-x, 0)) var(--post-safe-space-popover-y, var(--post-safe-space-popover-y-end, 0)))}:where(post-popovercontainer)[safe-space=trapezoid]::after{clip-path:polygon(var(--post-safe-space-trigger-x-start, var(--post-safe-space-trigger-x, 0)) var(--post-safe-space-trigger-y, var(--post-safe-space-trigger-y-start, 0)), var(--post-safe-space-trigger-x-end, var(--post-safe-space-trigger-x, 0)) var(--post-safe-space-trigger-y, var(--post-safe-space-trigger-y-end, 0)), var(--post-safe-space-popover-x-end, var(--post-safe-space-popover-x, 0)) var(--post-safe-space-popover-y, var(--post-safe-space-popover-y-end, 0)), var(--post-safe-space-popover-x-start, var(--post-safe-space-popover-x, 0)) var(--post-safe-space-popover-y, var(--post-safe-space-popover-y-start, 0)))}:where(post-popovercontainer):not(:has(.arrow))>div{box-shadow:var(--post-device-elevation-300)}:where(post-popovercontainer):has(.arrow)>div{filter:drop-shadow(1px 2px 3px hsla(216, 9%, 11%, 0.15)) drop-shadow(2px 4px 6px hsla(225, 17%, 9%, 0.15)) drop-shadow(4px 8px 12px hsla(225, 7%, 11%, 0.15))}:where(post-popovercontainer):has(.arrow.top)>div{filter:drop-shadow(0px -2px 3px hsla(216, 9%, 11%, 0.15)) drop-shadow(0px -4px 6px hsla(225, 17%, 9%, 0.15)) drop-shadow(0px -8px 12px hsla(225, 7%, 11%, 0.15))}:where(post-popovercontainer):has(.arrow.left)>div{filter:drop-shadow(-2px 0px 3px hsla(216, 9%, 11%, 0.15)) drop-shadow(-4px 0px 6px hsla(225, 17%, 9%, 0.15)) drop-shadow(-8px 0px 12px hsla(225, 7%, 11%, 0.15))}:where(post-popovercontainer):has(.arrow.right)>div{filter:drop-shadow(2px 0px 3px hsla(216, 9%, 11%, 0.15)) drop-shadow(4px 0px 6px hsla(225, 17%, 9%, 0.15)) drop-shadow(8px 0px 12px hsla(225, 7%, 11%, 0.15))}:where(post-popovercontainer) .arrow{--arrow-size: 0.5825rem;position:absolute;width:.5825rem;height:.5825rem;background-color:inherit;rotate:45deg;pointer-events:none;z-index:-1}:where(post-popovercontainer) .arrow[dynamic-placement=top]{border-bottom-right-radius:2px}:where(post-popovercontainer) .arrow[dynamic-placement=right]{border-bottom-left-radius:2px}:where(post-popovercontainer) .arrow[dynamic-placement=bottom]{border-top-left-radius:2px}:where(post-popovercontainer) .arrow[dynamic-placement=left]{border-top-right-radius:2px}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:where(post-popovercontainer) .arrow[dynamic-placement=top]{border-block-end:2px solid rgba(0,0,0,0);border-inline-end:2px solid rgba(0,0,0,0);bottom:-0.3796735336rem !important}:where(post-popovercontainer) .arrow[dynamic-placement=left]{border-block-start:2px solid rgba(0,0,0,0);border-inline-end:2px solid rgba(0,0,0,0);right:-0.3796735336rem !important}:where(post-popovercontainer) .arrow[dynamic-placement=right]{border-block-end:2px solid rgba(0,0,0,0);border-inline-start:2px solid rgba(0,0,0,0);left:-0.3796735336rem !important}:where(post-popovercontainer) .arrow[dynamic-placement=bottom]{border-block-start:2px solid rgba(0,0,0,0);border-inline-start:2px solid rgba(0,0,0,0);top:-0.3796735336rem !important}}";
4262
4255
 
4263
4256
  const PostPopovercontainer = class {
4264
4257
  constructor(hostRef) {
@@ -4287,20 +4280,16 @@ const PostPopovercontainer = class {
4287
4280
  * Whether or not to display a little pointer arrow
4288
4281
  */
4289
4282
  this.arrow = false;
4290
- /**
4291
- * Whether or not the popovercontainer should close when user clicks outside of it
4292
- */
4293
- this.manualClose = false;
4294
4283
  this.currentAnimation = null;
4295
4284
  }
4296
4285
  validatePlacement() {
4297
- index$1.checkEmptyOrOneOf(this, 'placement', placement.PLACEMENT_TYPES);
4286
+ breakpoints.checkEmptyOrOneOf(this, 'placement', placement.PLACEMENT_TYPES);
4298
4287
  }
4299
4288
  validateEdgeGap() {
4300
- index$1.checkEmptyOrType(this, 'edgeGap', 'number');
4289
+ breakpoints.checkEmptyOrType(this, 'edgeGap', 'number');
4301
4290
  }
4302
4291
  validateSafeSpace() {
4303
- index$1.checkEmptyOrOneOf(this, 'safeSpace', ['triangle', 'trapezoid']);
4292
+ breakpoints.checkEmptyOrOneOf(this, 'safeSpace', ['triangle', 'trapezoid']);
4304
4293
  }
4305
4294
  /**
4306
4295
  * Updates cursor position for safe space feature when popover is open.
@@ -4312,7 +4301,7 @@ const PostPopovercontainer = class {
4312
4301
  this.host.style.setProperty('--post-safe-space-cursor-y', `${event.clientY}px`);
4313
4302
  }
4314
4303
  connectedCallback() {
4315
- if (breakpoints.IS_BROWSER && !isSupported()) {
4304
+ if (environment.IS_BROWSER && !isSupported()) {
4316
4305
  apply();
4317
4306
  }
4318
4307
  }
@@ -4336,10 +4325,35 @@ const PostPopovercontainer = class {
4336
4325
  this.calculatePosition();
4337
4326
  this.host.showPopover();
4338
4327
  }
4328
+ /**
4329
+ * Programmatically hide the popovercontainer
4330
+ */
4331
+ async hide() {
4332
+ if (!this.toggleTimeoutId) {
4333
+ this.eventTarget = null;
4334
+ this.host.hidePopover();
4335
+ this.postHide.emit();
4336
+ }
4337
+ }
4338
+ /**
4339
+ * Toggle popovercontainer display
4340
+ * @param target A focusable element inside the <post-popover-trigger> component that controls the popover
4341
+ * @param force Pass true to always show or false to always hide
4342
+ */
4343
+ async toggle(target, force) {
4344
+ this.eventTarget = target;
4345
+ // Prevent instant double toggle
4346
+ if (!this.toggleTimeoutId) {
4347
+ this.calculatePosition();
4348
+ this.host.togglePopover(force);
4349
+ this.toggleTimeoutId = null;
4350
+ }
4351
+ return this.host.matches(':where(:popover-open, .popover-open)');
4352
+ }
4339
4353
  /**
4340
4354
  * Handles the popover opening process and emits related events.
4341
4355
  */
4342
- async open() {
4356
+ open() {
4343
4357
  const content = this.host.querySelector('.popover-content');
4344
4358
  this.startAutoupdates();
4345
4359
  if (content) {
@@ -4364,7 +4378,7 @@ const PostPopovercontainer = class {
4364
4378
  /**
4365
4379
  * Handles the popover closing process and emits related events.
4366
4380
  */
4367
- async close() {
4381
+ close() {
4368
4382
  if (typeof this.clearAutoUpdate === 'function') {
4369
4383
  this.clearAutoUpdate();
4370
4384
  }
@@ -4410,31 +4424,6 @@ const PostPopovercontainer = class {
4410
4424
  }
4411
4425
  }
4412
4426
  }
4413
- /**
4414
- * Programmatically hide the popovercontainer
4415
- */
4416
- async hide() {
4417
- if (!this.toggleTimeoutId) {
4418
- this.eventTarget = null;
4419
- this.host.hidePopover();
4420
- this.postHide.emit();
4421
- }
4422
- }
4423
- /**
4424
- * Toggle popovercontainer display
4425
- * @param target A focusable element inside the <post-popover-trigger> component that controls the popover
4426
- * @param force Pass true to always show or false to always hide
4427
- */
4428
- async toggle(target, force) {
4429
- this.eventTarget = target;
4430
- // Prevent instant double toggle
4431
- if (!this.toggleTimeoutId) {
4432
- this.calculatePosition();
4433
- this.host.togglePopover(force);
4434
- this.toggleTimeoutId = null;
4435
- }
4436
- return this.host.matches(':where(:popover-open, .popover-open)');
4437
- }
4438
4427
  /**
4439
4428
  * Start or stop auto updates based on popovercontainer events.
4440
4429
  * Popovercontainers can be closed or opened with other methods than class members,
@@ -4468,6 +4457,7 @@ const PostPopovercontainer = class {
4468
4457
  async calculatePosition() {
4469
4458
  const { x, y, middlewareData, placement } = await this.computeMainPosition();
4470
4459
  const currentPlacement = placement.split('-')[0];
4460
+ this.dynamicPlacement = currentPlacement;
4471
4461
  // Position popover
4472
4462
  this.host.style.left = `${x}px`;
4473
4463
  this.host.style.top = `${y}px`;
@@ -4475,11 +4465,20 @@ const PostPopovercontainer = class {
4475
4465
  if (this.arrow && middlewareData.arrow) {
4476
4466
  const { x: arrowX, y: arrowY } = middlewareData.arrow;
4477
4467
  const staticSide = PostPopovercontainer.STATIC_SIDES[currentPlacement];
4468
+ const rootFontSize = Number.parseFloat(getComputedStyle(document.documentElement).fontSize);
4469
+ // Calculate dynamically the half side which provides the static side offset
4470
+ const arrowSizeValue = getComputedStyle(this.arrowRef)
4471
+ .getPropertyValue('--arrow-size')
4472
+ .trim();
4473
+ const arrowSizePx = arrowSizeValue.endsWith('rem')
4474
+ ? Number.parseFloat(arrowSizeValue) * rootFontSize
4475
+ : Number.parseFloat(arrowSizeValue);
4476
+ const halfSide = -0.5 * arrowSizePx;
4478
4477
  if (staticSide) {
4479
4478
  Object.assign(this.arrowRef.style, {
4480
4479
  left: arrowX ? `${arrowX}px` : '',
4481
4480
  top: arrowY ? `${arrowY}px` : '',
4482
- [staticSide]: '-5px',
4481
+ [staticSide]: `${halfSide}px`,
4483
4482
  });
4484
4483
  }
4485
4484
  }
@@ -4580,9 +4579,9 @@ const PostPopovercontainer = class {
4580
4579
  }
4581
4580
  }
4582
4581
  render() {
4583
- return (index.h(index.Host, { key: '9ec775608a6bfab69c50e9cefb1a42235deaa451', "data-version": _package.version, popover: this.manualClose ? 'manual' : 'auto' }, index.h("div", { key: 'b659d1ce9cf9d3b661e3712c689cf1ffb0816f6e', class: "popover-content" }, this.arrow && (index.h("span", { key: '504e007d07d6b38018d93f5dca5a074b881cd50b', class: "arrow", ref: el => {
4582
+ return (index.h(index.Host, { key: '0aaf70cb284e7227149f2e500aa7c72cab69d90a', "data-version": _package.version, popover: "auto" }, index.h("div", { key: '9762887bdddca93acc6dfda715f2f41f4f6c98d6', class: "popover-content" }, this.arrow && (index.h("span", { key: 'e77f16be0b3b0cdb02886ea928aa6986d3f477e3', "dynamic-placement": this.dynamicPlacement, class: "arrow", ref: el => {
4584
4583
  this.arrowRef = el;
4585
- } })), index.h("slot", { key: '207062f4582b4aad7b570a7453711fd61654d5e3' }))));
4584
+ } })), index.h("slot", { key: 'e8737e5acec3a20d258d462a7d82278d303ba353' }))));
4586
4585
  }
4587
4586
  get host() { return index.getElement(this); }
4588
4587
  static get watchers() { return {
@@ -4639,7 +4638,7 @@ const PostTogglebutton = class {
4639
4638
  this.host.addEventListener('keydown', (e) => this.handleKeydown(e));
4640
4639
  }
4641
4640
  render() {
4642
- return (index.h(index.Host, { key: 'ecd5772b09be8842e5c6fc3bf34932b27d90c533', "data-version": _package.version, role: "button", tabindex: "0", "aria-pressed": this.toggled.toString() }, index.h("slot", { key: '3bb32b33155e71ced9375afb5a26d1d4e63a83c8' })));
4641
+ return (index.h(index.Host, { key: 'a526ab3b0ae14c93bb4e1a8dc6d3ded4ff1bf014', "data-version": _package.version, role: "button", tabindex: "0", "aria-pressed": this.toggled.toString() }, index.h("slot", { key: 'e8a5bdd99d9270cfcf014306a8d7fe8a2b6b79ba' })));
4643
4642
  }
4644
4643
  get host() { return index.getElement(this); }
4645
4644
  };
@@ -4648,10 +4647,8 @@ PostTogglebutton.style = postTogglebuttonCss;
4648
4647
  exports.post_closebutton = PostClosebutton;
4649
4648
  exports.post_header = PostHeader;
4650
4649
  exports.post_icon = PostIcon;
4651
- exports.post_language_option = PostLanguageOption;
4652
- exports.post_language_switch = PostLanguageSwitch;
4653
- exports.post_list = PostList;
4654
- exports.post_list_item = PostListItem;
4650
+ exports.post_language_menu = PostLanguageMenu;
4651
+ exports.post_language_menu_item = PostLanguageMenuItem;
4655
4652
  exports.post_logo = PostLogo;
4656
4653
  exports.post_mainnavigation = PostMainnavigation;
4657
4654
  exports.post_megadropdown = PostMegadropdown;