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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (409) hide show
  1. package/dist/{components/react/p-CJ80BZ06.js → cjs/breakpoints-Df03Ct7n.js} +103 -5
  2. package/dist/cjs/debounce-BsIBi_-2.js +13 -0
  3. package/dist/cjs/environment-BQE9Unf_.js +52 -0
  4. package/dist/cjs/{event-from-CLvtSUKf.js → event-from-CwMw19f8.js} +2 -2
  5. package/dist/cjs/fade-CPQhl1fP.js +26 -0
  6. package/dist/cjs/fade-slide-dPhQa-I1.js +38 -0
  7. package/dist/cjs/{get-focusable-children-Bx63XUQg.js → get-focusable-children-ChETM1wK.js} +29 -21
  8. package/dist/cjs/{get-root-CyMf3Vsd.js → get-root-CUAv4k4C.js} +2 -2
  9. package/dist/cjs/{index-Cb8CTrOz.js → index-CKNxhb0S.js} +29 -13
  10. package/dist/cjs/loader.cjs.js +2 -2
  11. package/dist/cjs/{package-CvZxvdTJ.js → package-CY7IOoiw.js} +1 -1
  12. package/dist/cjs/post-accordion_2.cjs.entry.js +12 -12
  13. package/dist/cjs/post-avatar.cjs.entry.js +11 -11
  14. package/dist/cjs/post-back-to-top.cjs.entry.js +16 -40
  15. package/dist/cjs/post-banner.cjs.entry.js +11 -10
  16. package/dist/cjs/post-breadcrumb-item_2.cjs.entry.js +7 -7
  17. package/dist/cjs/post-breadcrumbs.cjs.entry.js +22 -31
  18. package/dist/cjs/post-card-control.cjs.entry.js +16 -16
  19. package/dist/cjs/{post-closebutton_15.cjs.entry.js → post-closebutton_13.cjs.entry.js} +537 -507
  20. package/dist/cjs/post-collapsible_2.cjs.entry.js +39 -38
  21. package/dist/cjs/post-components.cjs.js +2 -2
  22. package/dist/cjs/post-env-test.cjs.entry.js +15 -0
  23. package/dist/cjs/post-footer.cjs.entry.js +21 -19
  24. package/dist/cjs/post-linkarea.cjs.entry.js +3 -3
  25. package/dist/cjs/post-pagination.cjs.entry.js +589 -0
  26. package/dist/cjs/post-popover-trigger.cjs.entry.js +46 -30
  27. package/dist/cjs/post-popover.cjs.entry.js +12 -12
  28. package/dist/cjs/post-rating.cjs.entry.js +13 -13
  29. package/dist/cjs/post-stepper-item.cjs.entry.js +18 -0
  30. package/dist/cjs/post-stepper.cjs.entry.js +109 -0
  31. package/dist/cjs/post-tab-item.cjs.entry.js +49 -0
  32. package/dist/cjs/post-tab-panel.cjs.entry.js +9 -9
  33. package/dist/cjs/post-tabs.cjs.entry.js +191 -38
  34. package/dist/cjs/post-tooltip-trigger.cjs.entry.js +8 -8
  35. package/dist/cjs/post-tooltip.cjs.entry.js +7 -7
  36. package/dist/cjs/utils-s05L2ulk.js +26 -0
  37. package/dist/collection/animations/collapse.js +3 -3
  38. package/dist/collection/animations/fade-slide.js +33 -0
  39. package/dist/collection/animations/fade.js +19 -7
  40. package/dist/collection/animations/index.js +2 -0
  41. package/dist/collection/animations/slide.js +25 -21
  42. package/dist/collection/animations/types.js +14 -0
  43. package/dist/collection/animations/utils.js +8 -0
  44. package/dist/collection/collection-manifest.json +8 -6
  45. package/dist/collection/components/post-accordion/post-accordion.css +1 -1
  46. package/dist/collection/components/post-accordion/post-accordion.js +2 -2
  47. package/dist/collection/components/post-accordion-item/post-accordion-item.css +1 -1
  48. package/dist/collection/components/post-accordion-item/post-accordion-item.js +4 -4
  49. package/dist/collection/components/post-avatar/post-avatar.css +1 -1
  50. package/dist/collection/components/post-avatar/post-avatar.js +1 -1
  51. package/dist/collection/components/post-back-to-top/post-back-to-top.js +14 -14
  52. package/dist/collection/components/post-banner/post-banner.css +4 -1
  53. package/dist/collection/components/post-banner/post-banner.js +3 -3
  54. package/dist/collection/components/post-breadcrumb-item/post-breadcrumb-item.js +1 -1
  55. package/dist/collection/components/post-breadcrumbs/post-breadcrumbs.js +28 -28
  56. package/dist/collection/components/post-card-control/post-card-control.js +3 -3
  57. package/dist/collection/components/post-closebutton/post-closebutton.css +1 -1
  58. package/dist/collection/components/post-closebutton/post-closebutton.js +1 -1
  59. package/dist/collection/components/post-collapsible/post-collapsible.js +27 -27
  60. package/dist/collection/components/post-collapsible-trigger/post-collapsible-trigger.js +6 -5
  61. package/dist/collection/components/post-footer/post-footer.css +1 -1
  62. package/dist/collection/components/post-footer/post-footer.js +18 -16
  63. package/dist/collection/components/post-header/post-header.css +1 -1
  64. package/dist/collection/components/post-header/post-header.js +186 -105
  65. package/dist/collection/components/post-icon/post-icon.js +6 -4
  66. package/dist/collection/components/post-language-menu/post-language-menu.css +1 -0
  67. package/dist/collection/components/{post-language-switch/post-language-switch.js → post-language-menu/post-language-menu.js} +25 -25
  68. package/dist/collection/components/post-language-menu-item/post-language-menu-item.css +1 -0
  69. package/dist/collection/components/{post-language-option/post-language-option.js → post-language-menu-item/post-language-menu-item.js} +14 -14
  70. package/dist/collection/components/post-linkarea/post-linkarea.js +1 -1
  71. package/dist/collection/components/post-logo/post-logo.css +3 -1
  72. package/dist/collection/components/post-logo/post-logo.js +1 -1
  73. package/dist/collection/components/post-mainnavigation/post-mainnavigation.css +1 -1
  74. package/dist/collection/components/post-mainnavigation/post-mainnavigation.js +41 -29
  75. package/dist/collection/components/post-megadropdown/post-megadropdown.css +1 -1
  76. package/dist/collection/components/post-megadropdown/post-megadropdown.js +184 -75
  77. package/dist/collection/components/post-megadropdown-trigger/post-megadropdown-trigger.css +3 -1
  78. package/dist/collection/components/post-megadropdown-trigger/post-megadropdown-trigger.js +80 -74
  79. package/dist/collection/components/post-menu/post-menu.css +1 -1
  80. package/dist/collection/components/post-menu/post-menu.js +35 -35
  81. package/dist/collection/components/post-menu-item/post-menu-item.js +1 -1
  82. package/dist/collection/components/post-menu-trigger/post-menu-trigger.js +1 -1
  83. package/dist/collection/components/post-pagination/post-pagination.css +1 -0
  84. package/dist/collection/components/post-pagination/post-pagination.js +838 -0
  85. package/dist/collection/components/post-popover/post-popover.css +1 -1
  86. package/dist/collection/components/post-popover/post-popover.js +10 -10
  87. package/dist/collection/components/post-popover-trigger/post-popover-trigger.js +43 -27
  88. package/dist/collection/components/post-popovercontainer/post-popovercontainer.css +1 -1
  89. package/dist/collection/components/post-popovercontainer/post-popovercontainer.js +45 -92
  90. package/dist/collection/components/post-rating/post-rating.js +3 -3
  91. package/dist/collection/components/post-stepper/post-stepper.css +1 -0
  92. package/dist/collection/components/post-stepper/post-stepper.js +207 -0
  93. package/dist/collection/components/post-stepper-item/post-stepper-item.css +7 -0
  94. package/dist/collection/components/post-stepper-item/post-stepper-item.js +18 -0
  95. package/dist/collection/components/post-tab-item/post-tab-item.css +1 -0
  96. package/dist/collection/components/post-tab-item/post-tab-item.js +86 -0
  97. package/dist/collection/components/post-tab-panel/post-tab-panel.js +9 -9
  98. package/dist/collection/components/post-tabs/post-tabs.js +230 -57
  99. package/dist/collection/components/post-togglebutton/post-togglebutton.js +1 -1
  100. package/dist/collection/components/post-tooltip/post-tooltip.css +1 -1
  101. package/dist/collection/components/post-tooltip/post-tooltip.js +1 -1
  102. package/dist/collection/components/post-tooltip-trigger/post-tooltip-trigger.js +1 -1
  103. package/dist/collection/utils/environment.js +47 -2
  104. package/dist/collection/utils/event-from.js +2 -2
  105. package/dist/collection/utils/get-focusable-children.js +29 -21
  106. package/dist/collection/utils/is-motion-reduced.js +1 -1
  107. package/dist/collection/utils/tests/environment/hydrate-app-helper.js +16 -0
  108. package/dist/collection/utils/tests/environment/post-env-test.js +9 -0
  109. package/dist/component-names.json +6 -5
  110. package/dist/components/breakpoints.js +90 -3
  111. package/dist/components/debounce.js +11 -0
  112. package/dist/components/environment.js +49 -0
  113. package/dist/components/event-from.js +2 -2
  114. package/dist/components/fade-slide.js +36 -0
  115. package/dist/components/fade.js +21 -8
  116. package/dist/components/get-focusable-children.js +29 -21
  117. package/dist/components/get-root.js +1 -1
  118. package/dist/components/index.d.ts +14 -10
  119. package/dist/components/index.js +7 -5
  120. package/dist/components/package.js +1 -1
  121. package/dist/components/post-accordion-item2.js +4 -5
  122. package/dist/components/post-accordion2.js +4 -5
  123. package/dist/components/post-avatar.js +3 -4
  124. package/dist/components/post-back-to-top.js +14 -40
  125. package/dist/components/post-banner.js +5 -6
  126. package/dist/components/post-breadcrumb-item2.js +2 -3
  127. package/dist/components/post-breadcrumbs.js +24 -34
  128. package/dist/components/post-card-control.js +4 -5
  129. package/dist/components/post-closebutton2.js +3 -4
  130. package/dist/components/post-collapsible-trigger2.js +10 -10
  131. package/dist/components/post-collapsible2.js +25 -25
  132. package/dist/components/{post-list.d.ts → post-env-test.d.ts} +4 -4
  133. package/dist/components/post-env-test.js +31 -0
  134. package/dist/components/post-footer.js +17 -16
  135. package/dist/components/post-header.js +156 -119
  136. package/dist/components/post-icon2.js +8 -6
  137. package/dist/components/post-language-menu-item.d.ts +11 -0
  138. package/dist/components/post-language-menu-item.js +98 -0
  139. package/dist/components/{post-language-switch.d.ts → post-language-menu.d.ts} +4 -4
  140. package/dist/components/post-language-menu.js +156 -0
  141. package/dist/components/post-linkarea.js +1 -1
  142. package/dist/components/post-logo.js +3 -4
  143. package/dist/components/post-mainnavigation.js +21 -32
  144. package/dist/components/post-megadropdown-trigger.js +72 -79
  145. package/dist/components/post-megadropdown.js +183 -78
  146. package/dist/components/post-menu-item2.js +1 -1
  147. package/dist/components/post-menu-trigger2.js +2 -3
  148. package/dist/components/post-menu2.js +35 -36
  149. package/dist/components/post-pagination.d.ts +11 -0
  150. package/dist/components/post-pagination.js +635 -0
  151. package/dist/components/post-popover-trigger.js +41 -26
  152. package/dist/components/post-popover.js +9 -10
  153. package/dist/components/post-popovercontainer2.js +44 -40
  154. package/dist/components/post-rating.js +3 -4
  155. package/dist/components/post-stepper-item.d.ts +11 -0
  156. package/dist/components/post-stepper-item.js +33 -0
  157. package/dist/components/{post-list-item.d.ts → post-stepper.d.ts} +4 -4
  158. package/dist/components/post-stepper.js +136 -0
  159. package/dist/components/{post-tab-header.d.ts → post-tab-item.d.ts} +4 -4
  160. package/dist/components/post-tab-item.js +70 -0
  161. package/dist/components/post-tab-panel.js +8 -9
  162. package/dist/components/post-tabs.js +192 -37
  163. package/dist/components/post-togglebutton.js +1 -51
  164. package/dist/components/post-togglebutton2.js +53 -0
  165. package/dist/components/post-tooltip-trigger.js +3 -3
  166. package/dist/components/post-tooltip.js +3 -4
  167. package/dist/components/react/index.js +1 -1
  168. package/dist/{cjs/breakpoints-CEkeixld.js → components/react/p-B8YiQ3mz.js} +89 -6
  169. package/dist/components/react/{p-2U_BGLjc.js → p-BOLlAY91.js} +9 -7
  170. package/dist/components/react/p-BVCjnh6Q.js +36 -0
  171. package/dist/components/react/{p-CBFgkSgY.js → p-BVGcVycs.js} +1 -1
  172. package/dist/components/react/{p-D4NSCxrX.js → p-BYCGzO-t.js} +13 -13
  173. package/dist/components/react/p-C9hMpmsD.js +11 -0
  174. package/dist/components/react/{p-BVXiQdHq.js → p-CJ13r5fi.js} +29 -21
  175. package/dist/components/react/{p-nSFSgY-P.js → p-CnZWXrbA.js} +40 -41
  176. package/dist/components/react/p-CoDiS_Ik.js +24 -0
  177. package/dist/components/react/p-CyniMNY-.js +54 -0
  178. package/dist/components/react/p-D5knoiyy.js +24 -0
  179. package/dist/components/react/{p-Ccgu_WOx.js → p-DBO6FfHt.js} +4 -5
  180. package/dist/components/react/{p-BfLuYwf7.js → p-DRfa3MOV.js} +26 -26
  181. package/dist/components/react/{p-BUxAs8N5.js → p-DYImHx0e.js} +4 -5
  182. package/dist/components/react/p-DZ5m2Ttg.js +3 -0
  183. package/dist/components/react/p-FxUVQ4Tx.js +49 -0
  184. package/dist/components/react/{p-BK474oMI.js → p-L36-yvgK.js} +2 -2
  185. package/dist/components/react/{p-DVxZMuPW.js → p-NCAcc7ZZ.js} +6 -7
  186. package/dist/components/react/{p-mENtrn2l.js → p-QNPIvxLq.js} +45 -41
  187. package/dist/components/react/{p-D3CFjhAf.js → p-_pLhqTys.js} +5 -6
  188. package/dist/components/react/p-c6yNOQwn.js +113 -0
  189. package/dist/components/react/{p-CzIKqBrS.js → p-rEfV4v4a.js} +2 -2
  190. package/dist/components/react/post-accordion-item.js +1 -1
  191. package/dist/components/react/post-accordion.js +1 -1
  192. package/dist/components/react/post-avatar.js +4 -5
  193. package/dist/components/react/post-back-to-top.js +16 -42
  194. package/dist/components/react/post-banner.js +7 -8
  195. package/dist/components/react/post-breadcrumb-item.js +1 -1
  196. package/dist/components/react/post-breadcrumbs.js +31 -41
  197. package/dist/components/react/post-card-control.js +6 -7
  198. package/dist/components/react/post-closebutton.js +1 -1
  199. package/dist/components/react/post-collapsible-trigger.js +1 -1
  200. package/dist/components/react/post-collapsible.js +1 -1
  201. package/dist/components/react/{post-list.d.ts → post-env-test.d.ts} +4 -4
  202. package/dist/components/react/post-env-test.js +32 -0
  203. package/dist/components/react/post-footer.js +23 -22
  204. package/dist/components/react/post-header.js +158 -121
  205. package/dist/components/react/post-icon.js +1 -1
  206. package/dist/components/react/post-language-menu-item.d.ts +11 -0
  207. package/dist/components/react/post-language-menu-item.js +99 -0
  208. package/dist/components/react/{post-language-option.d.ts → post-language-menu.d.ts} +4 -4
  209. package/dist/components/react/post-language-menu.js +157 -0
  210. package/dist/components/react/post-linkarea.js +2 -2
  211. package/dist/components/react/post-logo.js +4 -5
  212. package/dist/components/react/post-mainnavigation.js +23 -34
  213. package/dist/components/react/post-megadropdown-trigger.js +74 -81
  214. package/dist/components/react/post-megadropdown.js +185 -80
  215. package/dist/components/react/post-menu-item.js +1 -1
  216. package/dist/components/react/post-menu-trigger.js +1 -1
  217. package/dist/components/react/post-menu.js +1 -1
  218. package/dist/components/react/post-pagination.d.ts +11 -0
  219. package/dist/components/react/post-pagination.js +636 -0
  220. package/dist/components/react/post-popover-trigger.js +42 -27
  221. package/dist/components/react/post-popover.js +14 -15
  222. package/dist/components/react/post-popovercontainer.js +1 -1
  223. package/dist/components/react/post-rating.js +5 -6
  224. package/dist/components/react/post-stepper-item.d.ts +11 -0
  225. package/dist/components/react/post-stepper-item.js +34 -0
  226. package/dist/components/react/{post-list-item.d.ts → post-stepper.d.ts} +4 -4
  227. package/dist/components/react/post-stepper.js +137 -0
  228. package/dist/components/react/{post-tab-header.d.ts → post-tab-item.d.ts} +4 -4
  229. package/dist/components/react/post-tab-item.js +71 -0
  230. package/dist/components/react/post-tab-panel.js +9 -10
  231. package/dist/components/react/post-tabs.js +193 -38
  232. package/dist/components/react/post-togglebutton.js +1 -52
  233. package/dist/components/react/post-tooltip-trigger.js +4 -4
  234. package/dist/components/react/post-tooltip.js +5 -6
  235. package/dist/components/utils.js +24 -0
  236. package/dist/docs.json +968 -563
  237. package/dist/esm/{breakpoints-CJ80BZ06.js → breakpoints-DYoSKGHO.js} +90 -3
  238. package/dist/esm/debounce-C9hMpmsD.js +11 -0
  239. package/dist/esm/environment-CEmnRoA6.js +49 -0
  240. package/dist/esm/{event-from-CzIKqBrS.js → event-from-rEfV4v4a.js} +2 -2
  241. package/dist/esm/fade-DsgPYmAa.js +24 -0
  242. package/dist/esm/fade-slide-CvOvauo9.js +36 -0
  243. package/dist/esm/{get-focusable-children-D9ZHp2FP.js → get-focusable-children-BXNs2_sw.js} +29 -21
  244. package/dist/esm/{get-root-BkQ3CrLq.js → get-root-CXfAA093.js} +1 -1
  245. package/dist/esm/{index-CFNKgUjL.js → index-1ReqxAnI.js} +29 -13
  246. package/dist/esm/loader.js +3 -3
  247. package/dist/esm/package-DZ5m2Ttg.js +3 -0
  248. package/dist/esm/post-accordion_2.entry.js +10 -10
  249. package/dist/esm/post-avatar.entry.js +6 -6
  250. package/dist/esm/post-back-to-top.entry.js +16 -40
  251. package/dist/esm/post-banner.entry.js +10 -9
  252. package/dist/esm/post-breadcrumb-item_2.entry.js +6 -6
  253. package/dist/esm/post-breadcrumbs.entry.js +20 -29
  254. package/dist/esm/post-card-control.entry.js +6 -6
  255. package/dist/esm/{post-closebutton_15.entry.js → post-closebutton_13.entry.js} +518 -486
  256. package/dist/esm/post-collapsible_2.entry.js +36 -35
  257. package/dist/esm/post-components.js +3 -3
  258. package/dist/esm/post-env-test.entry.js +13 -0
  259. package/dist/esm/post-footer.entry.js +18 -16
  260. package/dist/esm/post-linkarea.entry.js +3 -3
  261. package/dist/esm/post-pagination.entry.js +587 -0
  262. package/dist/esm/post-popover-trigger.entry.js +44 -28
  263. package/dist/esm/post-popover.entry.js +11 -11
  264. package/dist/esm/post-rating.entry.js +5 -5
  265. package/dist/esm/post-stepper-item.entry.js +16 -0
  266. package/dist/esm/post-stepper.entry.js +107 -0
  267. package/dist/esm/post-tab-item.entry.js +47 -0
  268. package/dist/esm/post-tab-panel.entry.js +9 -9
  269. package/dist/esm/post-tabs.entry.js +191 -38
  270. package/dist/esm/post-tooltip-trigger.entry.js +5 -5
  271. package/dist/esm/post-tooltip.entry.js +6 -6
  272. package/dist/esm/utils-CoDiS_Ik.js +24 -0
  273. package/dist/post-components/{p-8f0fc02a.entry.js → p-130eb074.entry.js} +1 -1
  274. package/dist/post-components/p-13d018fe.entry.js +1 -0
  275. package/dist/post-components/p-143e5a84.entry.js +1 -0
  276. package/dist/post-components/p-1ReqxAnI.js +2 -0
  277. package/dist/post-components/p-2b220851.entry.js +1 -0
  278. package/dist/post-components/{p-96750e25.entry.js → p-390f111f.entry.js} +1 -1
  279. package/dist/post-components/p-3cf09fbd.entry.js +1 -0
  280. package/dist/post-components/p-52e584ca.entry.js +1 -0
  281. package/dist/post-components/p-56a4040c.entry.js +1 -0
  282. package/dist/post-components/p-675dab57.entry.js +1 -0
  283. package/dist/post-components/p-6857fd9d.entry.js +1 -0
  284. package/dist/post-components/p-7cd00e3e.entry.js +1 -0
  285. package/dist/post-components/p-7f5d2487.entry.js +1 -0
  286. package/dist/post-components/{p-bf41fe56.entry.js → p-88201353.entry.js} +1 -1
  287. package/dist/post-components/p-89360cd1.entry.js +1 -0
  288. package/dist/post-components/p-B7ebLhHc.js +1 -0
  289. package/dist/post-components/p-BVCjnh6Q.js +1 -0
  290. package/dist/post-components/p-BXNs2_sw.js +1 -0
  291. package/dist/post-components/p-C9hMpmsD.js +1 -0
  292. package/dist/post-components/p-CEmnRoA6.js +1 -0
  293. package/dist/post-components/p-CoDiS_Ik.js +1 -0
  294. package/dist/post-components/p-D5knoiyy.js +1 -0
  295. package/dist/post-components/p-DI-h_mEL.js +1 -0
  296. package/dist/post-components/p-DZ5m2Ttg.js +1 -0
  297. package/dist/post-components/p-a740eaed.entry.js +1 -0
  298. package/dist/post-components/{p-261b1452.entry.js → p-a79590f5.entry.js} +1 -1
  299. package/dist/post-components/p-b708d96a.entry.js +1 -0
  300. package/dist/post-components/p-bcf5786f.entry.js +1 -0
  301. package/dist/post-components/p-c92512f5.entry.js +1 -0
  302. package/dist/post-components/{p-658b1ccc.entry.js → p-d7cb3a61.entry.js} +1 -1
  303. package/dist/post-components/p-d7f33813.entry.js +1 -0
  304. package/dist/post-components/p-da97ee21.entry.js +1 -0
  305. package/dist/post-components/{p-11c204e0.entry.js → p-ed4db774.entry.js} +1 -1
  306. package/dist/post-components/post-components.css +1 -1
  307. package/dist/post-components/post-components.esm.js +1 -1
  308. package/dist/prebuild.js +46 -0
  309. package/dist/types/animations/collapse.d.ts +1 -0
  310. package/dist/types/animations/fade-slide.d.ts +11 -0
  311. package/dist/types/animations/fade.d.ts +2 -2
  312. package/dist/types/animations/index.d.ts +2 -0
  313. package/dist/types/animations/slide.d.ts +9 -2
  314. package/dist/types/animations/types.d.ts +13 -0
  315. package/dist/types/animations/utils.d.ts +2 -0
  316. package/dist/types/components/post-accordion-item/heading-levels.d.ts +1 -1
  317. package/dist/types/components/post-accordion-item/post-accordion-item.d.ts +2 -2
  318. package/dist/types/components/post-back-to-top/post-back-to-top.d.ts +2 -2
  319. package/dist/types/components/post-breadcrumbs/post-breadcrumbs.d.ts +6 -6
  320. package/dist/types/components/post-collapsible/post-collapsible.d.ts +4 -5
  321. package/dist/types/components/post-collapsible-trigger/post-collapsible-trigger.d.ts +1 -0
  322. package/dist/types/components/post-footer/post-footer.d.ts +4 -4
  323. package/dist/types/components/post-header/post-header.d.ts +28 -19
  324. package/dist/types/components/{post-language-switch/post-language-switch.d.ts → post-language-menu/post-language-menu.d.ts} +6 -6
  325. package/dist/types/components/{post-language-option/post-language-option.d.ts → post-language-menu-item/post-language-menu-item.d.ts} +5 -5
  326. package/dist/types/components/post-mainnavigation/post-mainnavigation.d.ts +6 -5
  327. package/dist/types/components/post-megadropdown/post-megadropdown.d.ts +20 -2
  328. package/dist/types/components/post-megadropdown-trigger/post-megadropdown-trigger.d.ts +17 -23
  329. package/dist/types/components/post-menu/post-menu.d.ts +4 -4
  330. package/dist/types/components/post-pagination/post-pagination.d.ts +224 -0
  331. package/dist/types/components/post-popover/post-popover.d.ts +3 -3
  332. package/dist/types/components/post-popover-trigger/post-popover-trigger.d.ts +2 -1
  333. package/dist/types/components/post-popovercontainer/post-popovercontainer.d.ts +13 -16
  334. package/dist/types/components/post-rating/post-rating.d.ts +1 -1
  335. package/dist/types/components/post-stepper/post-stepper.d.ts +39 -0
  336. package/dist/types/components/post-stepper-item/post-stepper-item.d.ts +3 -0
  337. package/dist/types/components/post-tab-item/post-tab-item.d.ts +19 -0
  338. package/dist/types/components/post-tab-panel/post-tab-panel.d.ts +3 -3
  339. package/dist/types/components/post-tabs/post-tabs.d.ts +33 -12
  340. package/dist/types/components.d.ts +357 -186
  341. package/dist/types/home/runner/work/design-system/design-system/packages/components/.stencil/prebuild.d.ts +9 -0
  342. package/dist/types/types/heading-levels.d.ts +1 -1
  343. package/dist/types/utils/environment.d.ts +25 -1
  344. package/dist/types/utils/get-focusable-children.d.ts +2 -2
  345. package/dist/types/utils/tests/environment/hydrate-app-helper.d.ts +5 -0
  346. package/dist/types/utils/tests/environment/post-env-test.d.ts +3 -0
  347. package/hydrate/index.js +1882 -833
  348. package/hydrate/index.mjs +1882 -833
  349. package/package.json +9 -11
  350. package/dist/cjs/fade-nS5zzDQS.js +0 -14
  351. package/dist/cjs/index-DtvYdwe1.js +0 -96
  352. package/dist/cjs/post-tab-header.cjs.entry.js +0 -31
  353. package/dist/collection/animations/slide-and-fade.js +0 -25
  354. package/dist/collection/components/post-language-option/post-language-option.css +0 -1
  355. package/dist/collection/components/post-language-switch/post-language-switch.css +0 -1
  356. package/dist/collection/components/post-list/post-list.css +0 -1
  357. package/dist/collection/components/post-list/post-list.js +0 -97
  358. package/dist/collection/components/post-list-item/post-list-item.css +0 -1
  359. package/dist/collection/components/post-list-item/post-list-item.js +0 -26
  360. package/dist/collection/components/post-tab-header/post-tab-header.css +0 -1
  361. package/dist/collection/components/post-tab-header/post-tab-header.js +0 -65
  362. package/dist/components/index2.js +0 -88
  363. package/dist/components/post-language-option.d.ts +0 -11
  364. package/dist/components/post-language-option.js +0 -99
  365. package/dist/components/post-language-switch.js +0 -157
  366. package/dist/components/post-list-item.js +0 -38
  367. package/dist/components/post-list.js +0 -61
  368. package/dist/components/post-tab-header.js +0 -52
  369. package/dist/components/react/p-BXRsHuTS.js +0 -3
  370. package/dist/components/react/p-CV7fm1rW.js +0 -88
  371. package/dist/components/react/p-Dj7qWba5.js +0 -114
  372. package/dist/components/react/p-SbIC4aZX.js +0 -11
  373. package/dist/components/react/post-language-option.js +0 -100
  374. package/dist/components/react/post-language-switch.d.ts +0 -11
  375. package/dist/components/react/post-language-switch.js +0 -158
  376. package/dist/components/react/post-list-item.js +0 -39
  377. package/dist/components/react/post-list.js +0 -62
  378. package/dist/components/react/post-tab-header.js +0 -53
  379. package/dist/esm/fade-SbIC4aZX.js +0 -11
  380. package/dist/esm/index-VmK3ABCB.js +0 -88
  381. package/dist/esm/package-BXRsHuTS.js +0 -3
  382. package/dist/esm/post-tab-header.entry.js +0 -29
  383. package/dist/post-components/p-02ea3ec5.entry.js +0 -1
  384. package/dist/post-components/p-0e92dbef.entry.js +0 -1
  385. package/dist/post-components/p-0ec2bdd7.entry.js +0 -1
  386. package/dist/post-components/p-197a0f25.entry.js +0 -1
  387. package/dist/post-components/p-3274ab81.entry.js +0 -1
  388. package/dist/post-components/p-77e43032.entry.js +0 -1
  389. package/dist/post-components/p-BXRsHuTS.js +0 -1
  390. package/dist/post-components/p-CBFgkSgY.js +0 -1
  391. package/dist/post-components/p-CFNKgUjL.js +0 -2
  392. package/dist/post-components/p-CJ80BZ06.js +0 -1
  393. package/dist/post-components/p-D9ZHp2FP.js +0 -1
  394. package/dist/post-components/p-SbIC4aZX.js +0 -1
  395. package/dist/post-components/p-VmK3ABCB.js +0 -1
  396. package/dist/post-components/p-b5b5e4b9.entry.js +0 -1
  397. package/dist/post-components/p-b8059ba1.entry.js +0 -1
  398. package/dist/post-components/p-d6134e24.entry.js +0 -1
  399. package/dist/post-components/p-e7029b9e.entry.js +0 -1
  400. package/dist/post-components/p-e90688ab.entry.js +0 -1
  401. package/dist/post-components/p-ea5da614.entry.js +0 -1
  402. package/dist/post-components/p-f1b815b6.entry.js +0 -1
  403. package/dist/types/animations/slide-and-fade.d.ts +0 -2
  404. package/dist/types/components/post-list/post-list.d.ts +0 -24
  405. package/dist/types/components/post-list-item/post-list-item.d.ts +0 -8
  406. package/dist/types/components/post-tab-header/post-tab-header.d.ts +0 -14
  407. /package/dist/collection/components/{post-language-switch → post-language-menu}/switch-variants.js +0 -0
  408. /package/dist/post-components/{p-CzIKqBrS.js → p-rEfV4v4a.js} +0 -0
  409. /package/dist/types/components/{post-language-switch → post-language-menu}/switch-variants.d.ts +0 -0
@@ -0,0 +1,587 @@
1
+ import { r as registerInstance, c as createEvent, h, H as Host, a as getElement } from './index-1ReqxAnI.js';
2
+ import { v as version } from './package-DZ5m2Ttg.js';
3
+ import { n as nanoid } from './index.browser-BLchVpF6.js';
4
+ import { c as checkRequiredAndType, b as checkEmptyOrType } from './breakpoints-DYoSKGHO.js';
5
+ import { d as debounce } from './debounce-C9hMpmsD.js';
6
+ import './environment-CEmnRoA6.js';
7
+
8
+ const postPaginationCss = ".pagination{position:relative;display:flex;align-items:center;justify-content:center;width:100%;max-width:100%;padding:8px;overflow:hidden}.pagination-list{display:flex;align-items:center;gap:4px;min-width:0;max-width:100%;margin:0;padding:0;list-style:none;flex-wrap:nowrap}.pagination-item{display:flex;align-items:center;margin:0;padding:0;flex-shrink:0;flex-grow:0}.pagination-link{display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:32px;height:32px;min-width:32px;padding:0;margin:0;font-size:14px;font-weight:700;color:#050400;text-decoration:none;background-color:rgba(0,0,0,0);border:1px solid #ccc;border-radius:100%;cursor:pointer;appearance:none;outline:none}.pagination-link:hover:not(:disabled):not(.pagination-link-disabled){color:#504f4b;background-color:#f5f5f5;border:2px solid #504f4b}.pagination-link:active:not(:disabled):not(.pagination-link-disabled):not(.pagination-link-active){color:#504f4b;background-color:#f5f5f5;border:2px solid #504f4b}.pagination-link:focus-visible{z-index:1;outline:2px solid #050400;outline-offset:2px}.pagination-link:focus:not(:focus-visible){outline:none}.pagination-link.pagination-link-active{font-weight:700;color:#fff;background-color:#050400;border-color:#050400;cursor:default}.pagination-link.pagination-link-active:hover:not(:disabled):not(.pagination-link-disabled){background-color:#504f4b;border-color:#504f4b;color:#fff}.pagination-link:disabled,.pagination-link.pagination-link-disabled{color:#6b6b6b;background-color:#f0f0f0;border-color:#ccc;opacity:.6;cursor:default}@media (min-width: 600px){.pagination-link{width:40px;height:40px;min-width:40px;font-size:16px}}@media (min-width: 1024px){.pagination-link{width:48px;height:48px;min-width:48px;font-size:20px}}.pagination-control-button post-icon{display:flex;align-items:center;justify-content:center;width:16px;height:16px}@media (min-width: 600px){.pagination-control-button post-icon{width:18px;height:18px}}@media (min-width: 1024px){.pagination-control-button post-icon{width:20px;height:20px}}.pagination-control-button:active:not(:disabled):not(.pagination-link-disabled){background-color:#f5f5f5;border:2px solid #504f4b}.pagination-ellipsis{display:flex;align-items:center;justify-content:center;flex-shrink:0;flex-grow:0}.pagination-ellipsis-content{display:flex;align-items:center;justify-content:center;width:32px;height:32px;font-size:14px;color:#050400;user-select:none}@media (min-width: 600px){.pagination-ellipsis-content{width:40px;height:40px}}@media (min-width: 1024px){.pagination-ellipsis-content{width:48px;height:48px}}.hidden-items{position:absolute;display:flex;gap:4px;height:0;overflow:hidden;white-space:nowrap;visibility:hidden;pointer-events:none}.pagination-icon-rotated{display:inline-block;transform:rotate(180deg)}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}";
9
+
10
+ const ELLIPSIS = '...';
11
+ const MEASUREMENT_DEBOUNCE_MS = 50;
12
+ const RESIZE_DEBOUNCE_MS = 150;
13
+ const MIN_VISIBLE_PAGES = 3;
14
+ const EDGE_ITEM_COUNT = 2; // Always show first and last page
15
+ const MAX_ELLIPSIS_COUNT = 2; // Maximum ellipsis elements
16
+ const GAP_THRESHOLD_FOR_PAGE = 2; // Show page number instead of ellipsis when gap is this value
17
+ const MIDDLE_RANGE_START = 2; // Middle range starts from page 2 (page 1 is always shown separately)
18
+ const PostPagination = class {
19
+ constructor(hostRef) {
20
+ registerInstance(this, hostRef);
21
+ this.postChange = createEvent(this, "postChange");
22
+ this.items = [];
23
+ this.lastWindowWidth = window.innerWidth;
24
+ this.loaded = false;
25
+ this.debouncedResize = debounce(this.handleResizeInternal.bind(this), RESIZE_DEBOUNCE_MS);
26
+ this.measurementTimeoutId = null;
27
+ }
28
+ validatePage() {
29
+ this.validateProp('page', 'number', false);
30
+ }
31
+ validatePageSize() {
32
+ this.validateProp('pageSize', 'number', true);
33
+ }
34
+ validateCollectionSize() {
35
+ this.validateProp('collectionSize', 'number', true);
36
+ }
37
+ validateLabel() {
38
+ this.validateProp('label', 'string', true);
39
+ }
40
+ validateTextPrevious() {
41
+ this.validateProp('textPrevious', 'string', true);
42
+ }
43
+ validateTextNext() {
44
+ this.validateProp('textNext', 'string', true);
45
+ }
46
+ validateTextPage() {
47
+ this.validateProp('textPage', 'string', true);
48
+ }
49
+ validateTextFirst() {
50
+ this.validateProp('textFirst', 'string', true);
51
+ }
52
+ validateTextLast() {
53
+ this.validateProp('textLast', 'string', true);
54
+ }
55
+ validateDisabled() {
56
+ this.validateProp('disabled', 'boolean', false);
57
+ }
58
+ handlePropsChange() {
59
+ this.updatePagesWithValidation();
60
+ }
61
+ componentWillLoad() {
62
+ this.paginationId = `pagination-${this.host.id || nanoid(6)}`;
63
+ if (this.page == null) {
64
+ this.page = 1;
65
+ }
66
+ }
67
+ connectedCallback() {
68
+ window.addEventListener('resize', this.debouncedResize);
69
+ }
70
+ componentDidLoad() {
71
+ this.loaded = true;
72
+ this.runAllValidations();
73
+ this.scheduleMeasurement();
74
+ }
75
+ disconnectedCallback() {
76
+ this.loaded = false;
77
+ window.removeEventListener('resize', this.debouncedResize);
78
+ if (this.measurementTimeoutId !== null) {
79
+ clearTimeout(this.measurementTimeoutId);
80
+ this.measurementTimeoutId = null;
81
+ }
82
+ }
83
+ /**
84
+ * Validate a prop with the appropriate check function
85
+ */
86
+ validateProp(propName, type, required = true) {
87
+ if (required) {
88
+ checkRequiredAndType(this, propName, type);
89
+ }
90
+ else {
91
+ checkEmptyOrType(this, propName, type);
92
+ }
93
+ }
94
+ /**
95
+ * Run all prop validations
96
+ */
97
+ runAllValidations() {
98
+ this.validateProp('page', 'number', false);
99
+ this.validateProp('pageSize', 'number', true);
100
+ this.validateProp('collectionSize', 'number', true);
101
+ this.validateProp('label', 'string', true);
102
+ this.validateProp('textPrevious', 'string', true);
103
+ this.validateProp('textNext', 'string', true);
104
+ this.validateProp('textPage', 'string', true);
105
+ this.validateProp('textFirst', 'string', true);
106
+ this.validateProp('textLast', 'string', true);
107
+ this.validateProp('disabled', 'boolean', false);
108
+ }
109
+ /**
110
+ * Schedule measurement attempt with timeout
111
+ */
112
+ scheduleMeasurement() {
113
+ if (!this.loaded)
114
+ return;
115
+ this.measurementTimeoutId = window.setTimeout(() => {
116
+ const canMeasure = this.navRef?.clientWidth > 0 && this.hiddenItemsRef;
117
+ if (canMeasure) {
118
+ this.measureAndCalculateVisiblePages();
119
+ }
120
+ else {
121
+ this.scheduleMeasurement();
122
+ }
123
+ }, MEASUREMENT_DEBOUNCE_MS);
124
+ }
125
+ /**
126
+ * Internal resize handler
127
+ */
128
+ handleResizeInternal() {
129
+ if (!this.loaded)
130
+ return;
131
+ if (window.innerWidth === this.lastWindowWidth)
132
+ return;
133
+ this.lastWindowWidth = window.innerWidth;
134
+ this.measureAndCalculateVisiblePages();
135
+ }
136
+ /**
137
+ * Calculates gap between two elements
138
+ */
139
+ calculateGap(first, second) {
140
+ const firstRect = first.getBoundingClientRect();
141
+ const secondRect = second.getBoundingClientRect();
142
+ return secondRect.left - firstRect.right;
143
+ }
144
+ /**
145
+ * Measures actual rendered elements to determine how many pages can fit
146
+ */
147
+ measureAndCalculateVisiblePages() {
148
+ if (!this.navRef || !this.hiddenItemsRef || !this.loaded)
149
+ return;
150
+ const totalPages = this.getTotalPages();
151
+ if (totalPages <= 1)
152
+ return;
153
+ const paginationPadding = this.getPaginationPadding();
154
+ const availableWidth = this.getAvailableWidth();
155
+ const netWidth = availableWidth - paginationPadding;
156
+ const controlButtonsWidth = this.getControlButtonsWidth();
157
+ const pageButton = this.hiddenItemsRef.querySelector('.hidden-page-button');
158
+ const ellipsis = this.hiddenItemsRef.querySelector('.hidden-ellipsis');
159
+ if (!pageButton)
160
+ return;
161
+ const singleButtonWidth = pageButton.getBoundingClientRect().width;
162
+ const gap = pageButton && ellipsis ? this.calculateGap(pageButton, ellipsis) : 0;
163
+ const controlButtonGaps = gap * 2; // Gap after prev and before next
164
+ const widthForPages = netWidth - controlButtonsWidth - controlButtonGaps;
165
+ // Calculate how many page buttons can fit
166
+ const maxPages = Math.floor((widthForPages + gap) / (singleButtonWidth + gap));
167
+ const clampedMaxPages = Math.max(MIN_VISIBLE_PAGES, Math.min(maxPages, totalPages));
168
+ this.maxVisiblePages = clampedMaxPages;
169
+ this.updatePagesWithValidation();
170
+ }
171
+ /**
172
+ * Gets total width of control buttons (prev/next)
173
+ */
174
+ getControlButtonsWidth() {
175
+ if (!this.hiddenItemsRef)
176
+ return 0;
177
+ const controlButtons = Array.from(this.hiddenItemsRef.querySelectorAll('.hidden-control-button'));
178
+ const totalWidth = controlButtons.reduce((sum, el) => sum + el.getBoundingClientRect().width, 0);
179
+ return totalWidth;
180
+ }
181
+ /**
182
+ * Gets the horizontal padding of the pagination container
183
+ */
184
+ getPaginationPadding() {
185
+ if (!this.navRef)
186
+ return 0;
187
+ const computedStyle = window.getComputedStyle(this.navRef);
188
+ const paddingLeft = parseFloat(computedStyle.paddingLeft) || 0;
189
+ const paddingRight = parseFloat(computedStyle.paddingRight) || 0;
190
+ return paddingLeft + paddingRight;
191
+ }
192
+ /**
193
+ * Gets available width from parent container
194
+ */
195
+ getAvailableWidth() {
196
+ if (!this.navRef)
197
+ return 0;
198
+ return this.host.parentElement?.clientWidth ?? window.innerWidth;
199
+ }
200
+ /**
201
+ * Returns true if collection size or page size is invalid
202
+ */
203
+ get invalidSize() {
204
+ return this.collectionSize === 0 || this.pageSize === 0;
205
+ }
206
+ /**
207
+ * Clamps the page number to valid range
208
+ */
209
+ clampPageToValidRange(totalPages) {
210
+ const invalidTotalPages = totalPages === 0 || this.invalidSize || isNaN(totalPages);
211
+ const invalidPage = !this.page || this.page < 1 || isNaN(this.page);
212
+ const pageExceedsTotal = this.page > totalPages;
213
+ if (invalidTotalPages || invalidPage) {
214
+ return 1;
215
+ }
216
+ else if (pageExceedsTotal) {
217
+ return totalPages;
218
+ }
219
+ else {
220
+ return this.page;
221
+ }
222
+ }
223
+ /**
224
+ * Validates and updates pages with clamped page number
225
+ */
226
+ updatePagesWithValidation() {
227
+ const totalPages = this.getTotalPages();
228
+ this.page = this.clampPageToValidRange(totalPages);
229
+ this.generatePages(totalPages);
230
+ }
231
+ /**
232
+ * Calculates the total number of pages.
233
+ */
234
+ getTotalPages() {
235
+ if (this.invalidSize)
236
+ return 1;
237
+ return Math.ceil(this.collectionSize / this.pageSize);
238
+ }
239
+ /**
240
+ * Convert numeric gap to a section type
241
+ */
242
+ sectionForGap(gap) {
243
+ if (gap <= 1)
244
+ return 'none';
245
+ return gap === GAP_THRESHOLD_FOR_PAGE ? 'page' : 'ellipsis';
246
+ }
247
+ /**
248
+ * Compute the left/right sections and numeric gaps for a given range
249
+ */
250
+ getSections(startPage, endPage, totalPages) {
251
+ const leftGap = startPage - 1;
252
+ const rightGap = totalPages - endPage;
253
+ return {
254
+ leftSection: this.sectionForGap(leftGap),
255
+ rightSection: this.sectionForGap(rightGap),
256
+ leftGap,
257
+ rightGap,
258
+ };
259
+ }
260
+ /**
261
+ * Compute total items that would be rendered for a given range
262
+ */
263
+ computeTotalItems(startPage, endPage, totalPages) {
264
+ const { leftSection, rightSection } = this.getSections(startPage, endPage, totalPages);
265
+ const middle = Math.max(0, endPage - startPage + 1);
266
+ const leftCount = leftSection === 'none' ? 0 : 1;
267
+ const rightCount = rightSection === 'none' ? 0 : 1;
268
+ // Always include first page (1) and last page (totalPages) = EDGE_ITEM_COUNT pages
269
+ // Plus any left/right sections (ellipsis or pages) and middle pages
270
+ return EDGE_ITEM_COUNT + leftCount + rightCount + middle;
271
+ }
272
+ /**
273
+ * Build a full list of pages (1..totalPages)
274
+ */
275
+ buildAllPages(totalPages) {
276
+ const items = [];
277
+ for (let i = 1; i <= totalPages; i++) {
278
+ items.push({ type: 'page', page: i });
279
+ }
280
+ return items;
281
+ }
282
+ /**
283
+ * Adjust start/end pages to avoid gap=2 scenarios
284
+ */
285
+ adjustForGapTwo(startPage, endPage, totalPages, middleSlots) {
286
+ const adjusted = { startPage, endPage };
287
+ // Fix rightGap=GAP_THRESHOLD_FOR_PAGE to maintain visual consistency
288
+ const rightGap = totalPages - endPage;
289
+ if (rightGap === GAP_THRESHOLD_FOR_PAGE) {
290
+ adjusted.endPage = totalPages - 1;
291
+ adjusted.startPage = Math.max(MIDDLE_RANGE_START, adjusted.endPage - middleSlots + 1);
292
+ }
293
+ // Fix leftGap=GAP_THRESHOLD_FOR_PAGE to maintain symmetry
294
+ const leftGap = adjusted.startPage - 1;
295
+ if (leftGap === GAP_THRESHOLD_FOR_PAGE) {
296
+ adjusted.startPage = MIDDLE_RANGE_START;
297
+ adjusted.endPage = Math.min(totalPages - 1, adjusted.startPage + middleSlots - 1);
298
+ }
299
+ return adjusted;
300
+ }
301
+ /**
302
+ * Ensure we have the desired number of middle slots
303
+ */
304
+ ensureMiddleSlots(startPage, endPage, totalPages, middleSlots) {
305
+ const adjusted = { startPage, endPage };
306
+ const actualSlots = endPage - startPage + 1;
307
+ if (actualSlots < middleSlots && endPage < totalPages - 1) {
308
+ adjusted.endPage = Math.min(totalPages - 1, startPage + middleSlots - 1);
309
+ }
310
+ if (actualSlots < middleSlots && startPage > MIDDLE_RANGE_START) {
311
+ adjusted.startPage = Math.max(MIDDLE_RANGE_START, endPage - middleSlots + 1);
312
+ }
313
+ return adjusted;
314
+ }
315
+ /**
316
+ * Trim excess items by shrinking the range away from current page
317
+ */
318
+ trimExcessItems(startPage, endPage, totalPages, maxVisible, currentPage) {
319
+ const adjusted = { startPage, endPage };
320
+ let totalItems = this.computeTotalItems(adjusted.startPage, adjusted.endPage, totalPages);
321
+ while (totalItems > maxVisible) {
322
+ const distLeft = currentPage - adjusted.startPage;
323
+ const distRight = adjusted.endPage - currentPage;
324
+ if (distRight >= distLeft && adjusted.endPage > adjusted.startPage) {
325
+ adjusted.endPage = Math.max(adjusted.startPage - 1, adjusted.endPage - 1);
326
+ }
327
+ else if (adjusted.startPage < adjusted.endPage) {
328
+ adjusted.startPage = Math.min(adjusted.endPage + 1, adjusted.startPage + 1);
329
+ }
330
+ else {
331
+ break;
332
+ }
333
+ const newTotal = this.computeTotalItems(adjusted.startPage, adjusted.endPage, totalPages);
334
+ if (newTotal === totalItems)
335
+ break;
336
+ totalItems = newTotal;
337
+ }
338
+ return adjusted;
339
+ }
340
+ /**
341
+ * Expand range to fill available slots
342
+ */
343
+ expandToFillSlots(startPage, endPage, totalPages, maxVisible) {
344
+ const adjusted = { startPage, endPage };
345
+ let totalItems = this.computeTotalItems(adjusted.startPage, adjusted.endPage, totalPages);
346
+ while (totalItems < maxVisible) {
347
+ const canExpandLeft = adjusted.startPage > MIDDLE_RANGE_START;
348
+ const canExpandRight = adjusted.endPage < totalPages - 1;
349
+ if (canExpandLeft) {
350
+ adjusted.startPage = Math.max(MIDDLE_RANGE_START, adjusted.startPage - 1);
351
+ }
352
+ else if (canExpandRight) {
353
+ adjusted.endPage = Math.min(totalPages - 1, adjusted.endPage + 1);
354
+ }
355
+ else {
356
+ break;
357
+ }
358
+ const newTotal = this.computeTotalItems(adjusted.startPage, adjusted.endPage, totalPages);
359
+ if (newTotal === totalItems)
360
+ break;
361
+ totalItems = newTotal;
362
+ }
363
+ return adjusted;
364
+ }
365
+ /**
366
+ * Balance total items to match maxVisible by trimming or expanding
367
+ */
368
+ balanceTotalItems(startPage, endPage, totalPages, maxVisible, currentPage) {
369
+ const trimmed = this.trimExcessItems(startPage, endPage, totalPages, maxVisible, currentPage);
370
+ return this.expandToFillSlots(trimmed.startPage, trimmed.endPage, totalPages, maxVisible);
371
+ }
372
+ /**
373
+ * Calculate optimal page range centered around current page
374
+ */
375
+ calculatePageRange(currentPage, totalPages, maxVisible) {
376
+ // Reserve slots for first, last, and potential ellipses
377
+ const middleSlots = Math.max(0, maxVisible - EDGE_ITEM_COUNT - MAX_ELLIPSIS_COUNT);
378
+ if (middleSlots <= 0) {
379
+ return { startPage: MIDDLE_RANGE_START, endPage: 1 };
380
+ }
381
+ // Center around current page
382
+ const halfMiddle = Math.floor(middleSlots / 2);
383
+ let startPage = currentPage - halfMiddle;
384
+ let endPage = startPage + middleSlots - 1;
385
+ // Clamp to valid range
386
+ if (startPage < MIDDLE_RANGE_START) {
387
+ startPage = MIDDLE_RANGE_START;
388
+ endPage = startPage + middleSlots - 1;
389
+ }
390
+ if (endPage > totalPages - 1) {
391
+ endPage = totalPages - 1;
392
+ startPage = endPage - middleSlots + 1;
393
+ }
394
+ startPage = Math.max(MIDDLE_RANGE_START, startPage);
395
+ endPage = Math.min(totalPages - 1, endPage);
396
+ // Adjust for gap=2 scenarios and balance items
397
+ const gapAdjusted = this.adjustForGapTwo(startPage, endPage, totalPages, middleSlots);
398
+ const slotAdjusted = this.ensureMiddleSlots(gapAdjusted.startPage, gapAdjusted.endPage, totalPages, middleSlots);
399
+ return this.balanceTotalItems(slotAdjusted.startPage, slotAdjusted.endPage, totalPages, maxVisible, currentPage);
400
+ }
401
+ /**
402
+ * Build pagination items with ellipsis
403
+ */
404
+ buildPaginationItems(startPage, endPage, totalPages) {
405
+ const items = [];
406
+ const hasMiddlePages = startPage <= endPage;
407
+ // First page
408
+ items.push({ type: 'page', page: 1 });
409
+ if (hasMiddlePages) {
410
+ const { leftSection, rightSection } = this.getSections(startPage, endPage, totalPages);
411
+ // Left section (ellipsis or page 2)
412
+ if (leftSection === 'page') {
413
+ items.push({ type: 'page', page: 2 });
414
+ }
415
+ else if (leftSection === 'ellipsis') {
416
+ items.push({ type: 'ellipsis' });
417
+ }
418
+ // Middle pages
419
+ for (let i = startPage; i <= endPage; i++) {
420
+ items.push({ type: 'page', page: i });
421
+ }
422
+ // Right section (ellipsis or second-to-last page)
423
+ if (rightSection === 'page') {
424
+ items.push({ type: 'page', page: totalPages - 1 });
425
+ }
426
+ else if (rightSection === 'ellipsis') {
427
+ items.push({ type: 'ellipsis' });
428
+ }
429
+ // Last page
430
+ items.push({ type: 'page', page: totalPages });
431
+ return items;
432
+ }
433
+ }
434
+ /**
435
+ * Generates pagination items for small slot counts (3 or 4 items).
436
+ * Ensures current page is always visible.
437
+ */
438
+ generateSmallPagination(currentPage, totalPages) {
439
+ if (currentPage === 1 || currentPage === totalPages) {
440
+ return [{ type: 'page', page: 1 }, { type: 'ellipsis' }, { type: 'page', page: totalPages }];
441
+ }
442
+ return [{ type: 'ellipsis' }, { type: 'page', page: currentPage }, { type: 'ellipsis' }];
443
+ }
444
+ /**
445
+ * Generates the page numbers array with ellipsis based on available space.
446
+ */
447
+ generatePages(totalPages) {
448
+ const maxVisible = this.maxVisiblePages;
449
+ const currentPage = this.page || 1;
450
+ if (totalPages <= maxVisible) {
451
+ this.items = this.buildAllPages(totalPages);
452
+ return;
453
+ }
454
+ // Use simplified logic for small slot counts
455
+ if (maxVisible <= 4) {
456
+ this.items = this.generateSmallPagination(currentPage, totalPages);
457
+ return;
458
+ }
459
+ // Use full algorithm for larger slot counts
460
+ const { startPage, endPage } = this.calculatePageRange(currentPage, totalPages, maxVisible);
461
+ this.items = this.buildPaginationItems(startPage, endPage, totalPages);
462
+ }
463
+ /**
464
+ * Emit page change event and update page
465
+ */
466
+ emitPageChange(newPage) {
467
+ this.page = newPage;
468
+ this.postChange.emit(newPage);
469
+ }
470
+ /**
471
+ * Handles page change when a page button is clicked.
472
+ */
473
+ handlePageClick(pageNumber) {
474
+ if (this.disabled || pageNumber === this.page)
475
+ return;
476
+ this.emitPageChange(pageNumber);
477
+ }
478
+ /**
479
+ * Handles previous button click.
480
+ */
481
+ handlePrevious() {
482
+ if (this.disabled || this.page <= 1)
483
+ return;
484
+ this.emitPageChange(this.page - 1);
485
+ }
486
+ /**
487
+ * Handles next button click.
488
+ */
489
+ handleNext() {
490
+ const totalPages = this.getTotalPages();
491
+ if (this.disabled || this.page >= totalPages)
492
+ return;
493
+ this.emitPageChange(this.page + 1);
494
+ }
495
+ /**
496
+ * Handles keyboard navigation
497
+ */
498
+ handleKeyDown(event, action) {
499
+ if (event.key === 'Enter' || event.key === ' ') {
500
+ event.preventDefault();
501
+ action();
502
+ }
503
+ }
504
+ /**
505
+ * Builds accessible label for a page button.
506
+ */
507
+ buildPageLabel(pageNumber) {
508
+ const totalPages = this.getTotalPages();
509
+ if (pageNumber === 1) {
510
+ return `${this.textFirst}, ${this.textPage} ${pageNumber}`;
511
+ }
512
+ if (pageNumber === totalPages) {
513
+ return `${this.textLast}, ${this.textPage} ${pageNumber}`;
514
+ }
515
+ return `${this.textPage} ${pageNumber}`;
516
+ }
517
+ /**
518
+ * Renders an ellipsis item.
519
+ */
520
+ renderEllipsis(key) {
521
+ return (h("li", { class: "pagination-item pagination-ellipsis", key: key }, h("span", { class: "pagination-ellipsis-content", "aria-hidden": "true" }, ELLIPSIS)));
522
+ }
523
+ /**
524
+ * Renders a page button.
525
+ */
526
+ renderPageButton(pageNumber) {
527
+ const isCurrent = pageNumber === this.page;
528
+ return (h("li", { class: "pagination-item", key: `page-${pageNumber}` }, h("button", { type: "button", class: {
529
+ 'pagination-link': true,
530
+ 'pagination-link-active': isCurrent,
531
+ }, "aria-label": this.buildPageLabel(pageNumber), "aria-current": isCurrent ? 'page' : undefined, onClick: () => this.handlePageClick(pageNumber), onKeyDown: e => this.handleKeyDown(e, () => this.handlePageClick(pageNumber)), disabled: this.disabled ? true : undefined, tabIndex: this.disabled ? -1 : 0 }, h("span", { "aria-hidden": "true" }, pageNumber))));
532
+ }
533
+ /**
534
+ * Renders a pagination item.
535
+ */
536
+ renderItem(item, index) {
537
+ return item.type === 'ellipsis'
538
+ ? this.renderEllipsis(`ellipsis-${index}`)
539
+ : this.renderPageButton(item.page);
540
+ }
541
+ /**
542
+ * Renders control button (prev/next)
543
+ */
544
+ renderControlButton(iconName, label, isDisabled, onClick, rotateIcon = false) {
545
+ return (h("li", { class: "pagination-item pagination-control" }, h("button", { type: "button", class: {
546
+ 'pagination-link': true,
547
+ 'pagination-control-button': true,
548
+ 'pagination-link-disabled': isDisabled,
549
+ }, "aria-label": label, onClick: onClick, onKeyDown: e => this.handleKeyDown(e, onClick), disabled: isDisabled, tabIndex: isDisabled ? -1 : 0 }, h("post-icon", { name: iconName, class: rotateIcon ? 'pagination-icon-rotated' : undefined, "aria-hidden": "true" }), h("span", { class: "visually-hidden" }, label))));
550
+ }
551
+ /**
552
+ * Renders minimal hidden items for measurement
553
+ */
554
+ renderHiddenItems(totalPages) {
555
+ return [
556
+ h("button", { class: "pagination-link pagination-control-button hidden-control-button", disabled: true }, h("post-icon", { name: "chevronleft", "aria-hidden": "true" })),
557
+ h("button", { class: "pagination-link pagination-control-button hidden-page-button", "aria-label": this.buildPageLabel(totalPages), disabled: true }, h("span", { "aria-hidden": "true" }, totalPages)),
558
+ h("span", { class: "pagination-ellipsis-content hidden-ellipsis", "aria-hidden": "true" }, ELLIPSIS),
559
+ h("button", { class: "pagination-link pagination-control-button hidden-control-button", disabled: true }, h("post-icon", { name: "chevronleft", class: "pagination-icon-rotated", "aria-hidden": "true" })),
560
+ ];
561
+ }
562
+ render() {
563
+ const totalPages = this.getTotalPages();
564
+ if (totalPages <= 1) {
565
+ return null;
566
+ }
567
+ const isPrevDisabled = this.disabled || this.page <= 1;
568
+ const isNextDisabled = this.disabled || this.page >= totalPages;
569
+ return (h(Host, { slot: "post-pagination", "data-version": version }, h("nav", { class: "pagination", "aria-label": this.label, id: this.paginationId, ref: el => (this.navRef = el) }, h("ul", { class: "pagination-list", role: "list" }, this.renderControlButton('chevronleft', this.textPrevious, isPrevDisabled, () => this.handlePrevious()), this.items.map((item, index) => this.renderItem(item, index)), this.renderControlButton('chevronleft', this.textNext, isNextDisabled, () => this.handleNext(), true)), h("div", { class: "hidden-items", "aria-hidden": "true", ref: el => (this.hiddenItemsRef = el) }, this.renderHiddenItems(totalPages)))));
570
+ }
571
+ get host() { return getElement(this); }
572
+ static get watchers() { return {
573
+ "page": ["validatePage", "handlePropsChange"],
574
+ "pageSize": ["validatePageSize", "handlePropsChange"],
575
+ "collectionSize": ["validateCollectionSize", "handlePropsChange"],
576
+ "label": ["validateLabel"],
577
+ "textPrevious": ["validateTextPrevious"],
578
+ "textNext": ["validateTextNext"],
579
+ "textPage": ["validateTextPage"],
580
+ "textFirst": ["validateTextFirst"],
581
+ "textLast": ["validateTextLast"],
582
+ "disabled": ["validateDisabled"]
583
+ }; }
584
+ };
585
+ PostPagination.style = postPaginationCss;
586
+
587
+ export { PostPagination as post_pagination };