@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,589 @@
1
+ 'use strict';
2
+
3
+ var index = require('./index-CKNxhb0S.js');
4
+ var _package = require('./package-CY7IOoiw.js');
5
+ var index_browser = require('./index.browser-Doj636JV.js');
6
+ var breakpoints = require('./breakpoints-Df03Ct7n.js');
7
+ var debounce = require('./debounce-BsIBi_-2.js');
8
+ require('./environment-BQE9Unf_.js');
9
+
10
+ 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}";
11
+
12
+ const ELLIPSIS = '...';
13
+ const MEASUREMENT_DEBOUNCE_MS = 50;
14
+ const RESIZE_DEBOUNCE_MS = 150;
15
+ const MIN_VISIBLE_PAGES = 3;
16
+ const EDGE_ITEM_COUNT = 2; // Always show first and last page
17
+ const MAX_ELLIPSIS_COUNT = 2; // Maximum ellipsis elements
18
+ const GAP_THRESHOLD_FOR_PAGE = 2; // Show page number instead of ellipsis when gap is this value
19
+ const MIDDLE_RANGE_START = 2; // Middle range starts from page 2 (page 1 is always shown separately)
20
+ const PostPagination = class {
21
+ constructor(hostRef) {
22
+ index.registerInstance(this, hostRef);
23
+ this.postChange = index.createEvent(this, "postChange");
24
+ this.items = [];
25
+ this.lastWindowWidth = window.innerWidth;
26
+ this.loaded = false;
27
+ this.debouncedResize = debounce.debounce(this.handleResizeInternal.bind(this), RESIZE_DEBOUNCE_MS);
28
+ this.measurementTimeoutId = null;
29
+ }
30
+ validatePage() {
31
+ this.validateProp('page', 'number', false);
32
+ }
33
+ validatePageSize() {
34
+ this.validateProp('pageSize', 'number', true);
35
+ }
36
+ validateCollectionSize() {
37
+ this.validateProp('collectionSize', 'number', true);
38
+ }
39
+ validateLabel() {
40
+ this.validateProp('label', 'string', true);
41
+ }
42
+ validateTextPrevious() {
43
+ this.validateProp('textPrevious', 'string', true);
44
+ }
45
+ validateTextNext() {
46
+ this.validateProp('textNext', 'string', true);
47
+ }
48
+ validateTextPage() {
49
+ this.validateProp('textPage', 'string', true);
50
+ }
51
+ validateTextFirst() {
52
+ this.validateProp('textFirst', 'string', true);
53
+ }
54
+ validateTextLast() {
55
+ this.validateProp('textLast', 'string', true);
56
+ }
57
+ validateDisabled() {
58
+ this.validateProp('disabled', 'boolean', false);
59
+ }
60
+ handlePropsChange() {
61
+ this.updatePagesWithValidation();
62
+ }
63
+ componentWillLoad() {
64
+ this.paginationId = `pagination-${this.host.id || index_browser.nanoid(6)}`;
65
+ if (this.page == null) {
66
+ this.page = 1;
67
+ }
68
+ }
69
+ connectedCallback() {
70
+ window.addEventListener('resize', this.debouncedResize);
71
+ }
72
+ componentDidLoad() {
73
+ this.loaded = true;
74
+ this.runAllValidations();
75
+ this.scheduleMeasurement();
76
+ }
77
+ disconnectedCallback() {
78
+ this.loaded = false;
79
+ window.removeEventListener('resize', this.debouncedResize);
80
+ if (this.measurementTimeoutId !== null) {
81
+ clearTimeout(this.measurementTimeoutId);
82
+ this.measurementTimeoutId = null;
83
+ }
84
+ }
85
+ /**
86
+ * Validate a prop with the appropriate check function
87
+ */
88
+ validateProp(propName, type, required = true) {
89
+ if (required) {
90
+ breakpoints.checkRequiredAndType(this, propName, type);
91
+ }
92
+ else {
93
+ breakpoints.checkEmptyOrType(this, propName, type);
94
+ }
95
+ }
96
+ /**
97
+ * Run all prop validations
98
+ */
99
+ runAllValidations() {
100
+ this.validateProp('page', 'number', false);
101
+ this.validateProp('pageSize', 'number', true);
102
+ this.validateProp('collectionSize', 'number', true);
103
+ this.validateProp('label', 'string', true);
104
+ this.validateProp('textPrevious', 'string', true);
105
+ this.validateProp('textNext', 'string', true);
106
+ this.validateProp('textPage', 'string', true);
107
+ this.validateProp('textFirst', 'string', true);
108
+ this.validateProp('textLast', 'string', true);
109
+ this.validateProp('disabled', 'boolean', false);
110
+ }
111
+ /**
112
+ * Schedule measurement attempt with timeout
113
+ */
114
+ scheduleMeasurement() {
115
+ if (!this.loaded)
116
+ return;
117
+ this.measurementTimeoutId = window.setTimeout(() => {
118
+ const canMeasure = this.navRef?.clientWidth > 0 && this.hiddenItemsRef;
119
+ if (canMeasure) {
120
+ this.measureAndCalculateVisiblePages();
121
+ }
122
+ else {
123
+ this.scheduleMeasurement();
124
+ }
125
+ }, MEASUREMENT_DEBOUNCE_MS);
126
+ }
127
+ /**
128
+ * Internal resize handler
129
+ */
130
+ handleResizeInternal() {
131
+ if (!this.loaded)
132
+ return;
133
+ if (window.innerWidth === this.lastWindowWidth)
134
+ return;
135
+ this.lastWindowWidth = window.innerWidth;
136
+ this.measureAndCalculateVisiblePages();
137
+ }
138
+ /**
139
+ * Calculates gap between two elements
140
+ */
141
+ calculateGap(first, second) {
142
+ const firstRect = first.getBoundingClientRect();
143
+ const secondRect = second.getBoundingClientRect();
144
+ return secondRect.left - firstRect.right;
145
+ }
146
+ /**
147
+ * Measures actual rendered elements to determine how many pages can fit
148
+ */
149
+ measureAndCalculateVisiblePages() {
150
+ if (!this.navRef || !this.hiddenItemsRef || !this.loaded)
151
+ return;
152
+ const totalPages = this.getTotalPages();
153
+ if (totalPages <= 1)
154
+ return;
155
+ const paginationPadding = this.getPaginationPadding();
156
+ const availableWidth = this.getAvailableWidth();
157
+ const netWidth = availableWidth - paginationPadding;
158
+ const controlButtonsWidth = this.getControlButtonsWidth();
159
+ const pageButton = this.hiddenItemsRef.querySelector('.hidden-page-button');
160
+ const ellipsis = this.hiddenItemsRef.querySelector('.hidden-ellipsis');
161
+ if (!pageButton)
162
+ return;
163
+ const singleButtonWidth = pageButton.getBoundingClientRect().width;
164
+ const gap = pageButton && ellipsis ? this.calculateGap(pageButton, ellipsis) : 0;
165
+ const controlButtonGaps = gap * 2; // Gap after prev and before next
166
+ const widthForPages = netWidth - controlButtonsWidth - controlButtonGaps;
167
+ // Calculate how many page buttons can fit
168
+ const maxPages = Math.floor((widthForPages + gap) / (singleButtonWidth + gap));
169
+ const clampedMaxPages = Math.max(MIN_VISIBLE_PAGES, Math.min(maxPages, totalPages));
170
+ this.maxVisiblePages = clampedMaxPages;
171
+ this.updatePagesWithValidation();
172
+ }
173
+ /**
174
+ * Gets total width of control buttons (prev/next)
175
+ */
176
+ getControlButtonsWidth() {
177
+ if (!this.hiddenItemsRef)
178
+ return 0;
179
+ const controlButtons = Array.from(this.hiddenItemsRef.querySelectorAll('.hidden-control-button'));
180
+ const totalWidth = controlButtons.reduce((sum, el) => sum + el.getBoundingClientRect().width, 0);
181
+ return totalWidth;
182
+ }
183
+ /**
184
+ * Gets the horizontal padding of the pagination container
185
+ */
186
+ getPaginationPadding() {
187
+ if (!this.navRef)
188
+ return 0;
189
+ const computedStyle = window.getComputedStyle(this.navRef);
190
+ const paddingLeft = parseFloat(computedStyle.paddingLeft) || 0;
191
+ const paddingRight = parseFloat(computedStyle.paddingRight) || 0;
192
+ return paddingLeft + paddingRight;
193
+ }
194
+ /**
195
+ * Gets available width from parent container
196
+ */
197
+ getAvailableWidth() {
198
+ if (!this.navRef)
199
+ return 0;
200
+ return this.host.parentElement?.clientWidth ?? window.innerWidth;
201
+ }
202
+ /**
203
+ * Returns true if collection size or page size is invalid
204
+ */
205
+ get invalidSize() {
206
+ return this.collectionSize === 0 || this.pageSize === 0;
207
+ }
208
+ /**
209
+ * Clamps the page number to valid range
210
+ */
211
+ clampPageToValidRange(totalPages) {
212
+ const invalidTotalPages = totalPages === 0 || this.invalidSize || isNaN(totalPages);
213
+ const invalidPage = !this.page || this.page < 1 || isNaN(this.page);
214
+ const pageExceedsTotal = this.page > totalPages;
215
+ if (invalidTotalPages || invalidPage) {
216
+ return 1;
217
+ }
218
+ else if (pageExceedsTotal) {
219
+ return totalPages;
220
+ }
221
+ else {
222
+ return this.page;
223
+ }
224
+ }
225
+ /**
226
+ * Validates and updates pages with clamped page number
227
+ */
228
+ updatePagesWithValidation() {
229
+ const totalPages = this.getTotalPages();
230
+ this.page = this.clampPageToValidRange(totalPages);
231
+ this.generatePages(totalPages);
232
+ }
233
+ /**
234
+ * Calculates the total number of pages.
235
+ */
236
+ getTotalPages() {
237
+ if (this.invalidSize)
238
+ return 1;
239
+ return Math.ceil(this.collectionSize / this.pageSize);
240
+ }
241
+ /**
242
+ * Convert numeric gap to a section type
243
+ */
244
+ sectionForGap(gap) {
245
+ if (gap <= 1)
246
+ return 'none';
247
+ return gap === GAP_THRESHOLD_FOR_PAGE ? 'page' : 'ellipsis';
248
+ }
249
+ /**
250
+ * Compute the left/right sections and numeric gaps for a given range
251
+ */
252
+ getSections(startPage, endPage, totalPages) {
253
+ const leftGap = startPage - 1;
254
+ const rightGap = totalPages - endPage;
255
+ return {
256
+ leftSection: this.sectionForGap(leftGap),
257
+ rightSection: this.sectionForGap(rightGap),
258
+ leftGap,
259
+ rightGap,
260
+ };
261
+ }
262
+ /**
263
+ * Compute total items that would be rendered for a given range
264
+ */
265
+ computeTotalItems(startPage, endPage, totalPages) {
266
+ const { leftSection, rightSection } = this.getSections(startPage, endPage, totalPages);
267
+ const middle = Math.max(0, endPage - startPage + 1);
268
+ const leftCount = leftSection === 'none' ? 0 : 1;
269
+ const rightCount = rightSection === 'none' ? 0 : 1;
270
+ // Always include first page (1) and last page (totalPages) = EDGE_ITEM_COUNT pages
271
+ // Plus any left/right sections (ellipsis or pages) and middle pages
272
+ return EDGE_ITEM_COUNT + leftCount + rightCount + middle;
273
+ }
274
+ /**
275
+ * Build a full list of pages (1..totalPages)
276
+ */
277
+ buildAllPages(totalPages) {
278
+ const items = [];
279
+ for (let i = 1; i <= totalPages; i++) {
280
+ items.push({ type: 'page', page: i });
281
+ }
282
+ return items;
283
+ }
284
+ /**
285
+ * Adjust start/end pages to avoid gap=2 scenarios
286
+ */
287
+ adjustForGapTwo(startPage, endPage, totalPages, middleSlots) {
288
+ const adjusted = { startPage, endPage };
289
+ // Fix rightGap=GAP_THRESHOLD_FOR_PAGE to maintain visual consistency
290
+ const rightGap = totalPages - endPage;
291
+ if (rightGap === GAP_THRESHOLD_FOR_PAGE) {
292
+ adjusted.endPage = totalPages - 1;
293
+ adjusted.startPage = Math.max(MIDDLE_RANGE_START, adjusted.endPage - middleSlots + 1);
294
+ }
295
+ // Fix leftGap=GAP_THRESHOLD_FOR_PAGE to maintain symmetry
296
+ const leftGap = adjusted.startPage - 1;
297
+ if (leftGap === GAP_THRESHOLD_FOR_PAGE) {
298
+ adjusted.startPage = MIDDLE_RANGE_START;
299
+ adjusted.endPage = Math.min(totalPages - 1, adjusted.startPage + middleSlots - 1);
300
+ }
301
+ return adjusted;
302
+ }
303
+ /**
304
+ * Ensure we have the desired number of middle slots
305
+ */
306
+ ensureMiddleSlots(startPage, endPage, totalPages, middleSlots) {
307
+ const adjusted = { startPage, endPage };
308
+ const actualSlots = endPage - startPage + 1;
309
+ if (actualSlots < middleSlots && endPage < totalPages - 1) {
310
+ adjusted.endPage = Math.min(totalPages - 1, startPage + middleSlots - 1);
311
+ }
312
+ if (actualSlots < middleSlots && startPage > MIDDLE_RANGE_START) {
313
+ adjusted.startPage = Math.max(MIDDLE_RANGE_START, endPage - middleSlots + 1);
314
+ }
315
+ return adjusted;
316
+ }
317
+ /**
318
+ * Trim excess items by shrinking the range away from current page
319
+ */
320
+ trimExcessItems(startPage, endPage, totalPages, maxVisible, currentPage) {
321
+ const adjusted = { startPage, endPage };
322
+ let totalItems = this.computeTotalItems(adjusted.startPage, adjusted.endPage, totalPages);
323
+ while (totalItems > maxVisible) {
324
+ const distLeft = currentPage - adjusted.startPage;
325
+ const distRight = adjusted.endPage - currentPage;
326
+ if (distRight >= distLeft && adjusted.endPage > adjusted.startPage) {
327
+ adjusted.endPage = Math.max(adjusted.startPage - 1, adjusted.endPage - 1);
328
+ }
329
+ else if (adjusted.startPage < adjusted.endPage) {
330
+ adjusted.startPage = Math.min(adjusted.endPage + 1, adjusted.startPage + 1);
331
+ }
332
+ else {
333
+ break;
334
+ }
335
+ const newTotal = this.computeTotalItems(adjusted.startPage, adjusted.endPage, totalPages);
336
+ if (newTotal === totalItems)
337
+ break;
338
+ totalItems = newTotal;
339
+ }
340
+ return adjusted;
341
+ }
342
+ /**
343
+ * Expand range to fill available slots
344
+ */
345
+ expandToFillSlots(startPage, endPage, totalPages, maxVisible) {
346
+ const adjusted = { startPage, endPage };
347
+ let totalItems = this.computeTotalItems(adjusted.startPage, adjusted.endPage, totalPages);
348
+ while (totalItems < maxVisible) {
349
+ const canExpandLeft = adjusted.startPage > MIDDLE_RANGE_START;
350
+ const canExpandRight = adjusted.endPage < totalPages - 1;
351
+ if (canExpandLeft) {
352
+ adjusted.startPage = Math.max(MIDDLE_RANGE_START, adjusted.startPage - 1);
353
+ }
354
+ else if (canExpandRight) {
355
+ adjusted.endPage = Math.min(totalPages - 1, adjusted.endPage + 1);
356
+ }
357
+ else {
358
+ break;
359
+ }
360
+ const newTotal = this.computeTotalItems(adjusted.startPage, adjusted.endPage, totalPages);
361
+ if (newTotal === totalItems)
362
+ break;
363
+ totalItems = newTotal;
364
+ }
365
+ return adjusted;
366
+ }
367
+ /**
368
+ * Balance total items to match maxVisible by trimming or expanding
369
+ */
370
+ balanceTotalItems(startPage, endPage, totalPages, maxVisible, currentPage) {
371
+ const trimmed = this.trimExcessItems(startPage, endPage, totalPages, maxVisible, currentPage);
372
+ return this.expandToFillSlots(trimmed.startPage, trimmed.endPage, totalPages, maxVisible);
373
+ }
374
+ /**
375
+ * Calculate optimal page range centered around current page
376
+ */
377
+ calculatePageRange(currentPage, totalPages, maxVisible) {
378
+ // Reserve slots for first, last, and potential ellipses
379
+ const middleSlots = Math.max(0, maxVisible - EDGE_ITEM_COUNT - MAX_ELLIPSIS_COUNT);
380
+ if (middleSlots <= 0) {
381
+ return { startPage: MIDDLE_RANGE_START, endPage: 1 };
382
+ }
383
+ // Center around current page
384
+ const halfMiddle = Math.floor(middleSlots / 2);
385
+ let startPage = currentPage - halfMiddle;
386
+ let endPage = startPage + middleSlots - 1;
387
+ // Clamp to valid range
388
+ if (startPage < MIDDLE_RANGE_START) {
389
+ startPage = MIDDLE_RANGE_START;
390
+ endPage = startPage + middleSlots - 1;
391
+ }
392
+ if (endPage > totalPages - 1) {
393
+ endPage = totalPages - 1;
394
+ startPage = endPage - middleSlots + 1;
395
+ }
396
+ startPage = Math.max(MIDDLE_RANGE_START, startPage);
397
+ endPage = Math.min(totalPages - 1, endPage);
398
+ // Adjust for gap=2 scenarios and balance items
399
+ const gapAdjusted = this.adjustForGapTwo(startPage, endPage, totalPages, middleSlots);
400
+ const slotAdjusted = this.ensureMiddleSlots(gapAdjusted.startPage, gapAdjusted.endPage, totalPages, middleSlots);
401
+ return this.balanceTotalItems(slotAdjusted.startPage, slotAdjusted.endPage, totalPages, maxVisible, currentPage);
402
+ }
403
+ /**
404
+ * Build pagination items with ellipsis
405
+ */
406
+ buildPaginationItems(startPage, endPage, totalPages) {
407
+ const items = [];
408
+ const hasMiddlePages = startPage <= endPage;
409
+ // First page
410
+ items.push({ type: 'page', page: 1 });
411
+ if (hasMiddlePages) {
412
+ const { leftSection, rightSection } = this.getSections(startPage, endPage, totalPages);
413
+ // Left section (ellipsis or page 2)
414
+ if (leftSection === 'page') {
415
+ items.push({ type: 'page', page: 2 });
416
+ }
417
+ else if (leftSection === 'ellipsis') {
418
+ items.push({ type: 'ellipsis' });
419
+ }
420
+ // Middle pages
421
+ for (let i = startPage; i <= endPage; i++) {
422
+ items.push({ type: 'page', page: i });
423
+ }
424
+ // Right section (ellipsis or second-to-last page)
425
+ if (rightSection === 'page') {
426
+ items.push({ type: 'page', page: totalPages - 1 });
427
+ }
428
+ else if (rightSection === 'ellipsis') {
429
+ items.push({ type: 'ellipsis' });
430
+ }
431
+ // Last page
432
+ items.push({ type: 'page', page: totalPages });
433
+ return items;
434
+ }
435
+ }
436
+ /**
437
+ * Generates pagination items for small slot counts (3 or 4 items).
438
+ * Ensures current page is always visible.
439
+ */
440
+ generateSmallPagination(currentPage, totalPages) {
441
+ if (currentPage === 1 || currentPage === totalPages) {
442
+ return [{ type: 'page', page: 1 }, { type: 'ellipsis' }, { type: 'page', page: totalPages }];
443
+ }
444
+ return [{ type: 'ellipsis' }, { type: 'page', page: currentPage }, { type: 'ellipsis' }];
445
+ }
446
+ /**
447
+ * Generates the page numbers array with ellipsis based on available space.
448
+ */
449
+ generatePages(totalPages) {
450
+ const maxVisible = this.maxVisiblePages;
451
+ const currentPage = this.page || 1;
452
+ if (totalPages <= maxVisible) {
453
+ this.items = this.buildAllPages(totalPages);
454
+ return;
455
+ }
456
+ // Use simplified logic for small slot counts
457
+ if (maxVisible <= 4) {
458
+ this.items = this.generateSmallPagination(currentPage, totalPages);
459
+ return;
460
+ }
461
+ // Use full algorithm for larger slot counts
462
+ const { startPage, endPage } = this.calculatePageRange(currentPage, totalPages, maxVisible);
463
+ this.items = this.buildPaginationItems(startPage, endPage, totalPages);
464
+ }
465
+ /**
466
+ * Emit page change event and update page
467
+ */
468
+ emitPageChange(newPage) {
469
+ this.page = newPage;
470
+ this.postChange.emit(newPage);
471
+ }
472
+ /**
473
+ * Handles page change when a page button is clicked.
474
+ */
475
+ handlePageClick(pageNumber) {
476
+ if (this.disabled || pageNumber === this.page)
477
+ return;
478
+ this.emitPageChange(pageNumber);
479
+ }
480
+ /**
481
+ * Handles previous button click.
482
+ */
483
+ handlePrevious() {
484
+ if (this.disabled || this.page <= 1)
485
+ return;
486
+ this.emitPageChange(this.page - 1);
487
+ }
488
+ /**
489
+ * Handles next button click.
490
+ */
491
+ handleNext() {
492
+ const totalPages = this.getTotalPages();
493
+ if (this.disabled || this.page >= totalPages)
494
+ return;
495
+ this.emitPageChange(this.page + 1);
496
+ }
497
+ /**
498
+ * Handles keyboard navigation
499
+ */
500
+ handleKeyDown(event, action) {
501
+ if (event.key === 'Enter' || event.key === ' ') {
502
+ event.preventDefault();
503
+ action();
504
+ }
505
+ }
506
+ /**
507
+ * Builds accessible label for a page button.
508
+ */
509
+ buildPageLabel(pageNumber) {
510
+ const totalPages = this.getTotalPages();
511
+ if (pageNumber === 1) {
512
+ return `${this.textFirst}, ${this.textPage} ${pageNumber}`;
513
+ }
514
+ if (pageNumber === totalPages) {
515
+ return `${this.textLast}, ${this.textPage} ${pageNumber}`;
516
+ }
517
+ return `${this.textPage} ${pageNumber}`;
518
+ }
519
+ /**
520
+ * Renders an ellipsis item.
521
+ */
522
+ renderEllipsis(key) {
523
+ return (index.h("li", { class: "pagination-item pagination-ellipsis", key: key }, index.h("span", { class: "pagination-ellipsis-content", "aria-hidden": "true" }, ELLIPSIS)));
524
+ }
525
+ /**
526
+ * Renders a page button.
527
+ */
528
+ renderPageButton(pageNumber) {
529
+ const isCurrent = pageNumber === this.page;
530
+ return (index.h("li", { class: "pagination-item", key: `page-${pageNumber}` }, index.h("button", { type: "button", class: {
531
+ 'pagination-link': true,
532
+ 'pagination-link-active': isCurrent,
533
+ }, "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 }, index.h("span", { "aria-hidden": "true" }, pageNumber))));
534
+ }
535
+ /**
536
+ * Renders a pagination item.
537
+ */
538
+ renderItem(item, index) {
539
+ return item.type === 'ellipsis'
540
+ ? this.renderEllipsis(`ellipsis-${index}`)
541
+ : this.renderPageButton(item.page);
542
+ }
543
+ /**
544
+ * Renders control button (prev/next)
545
+ */
546
+ renderControlButton(iconName, label, isDisabled, onClick, rotateIcon = false) {
547
+ return (index.h("li", { class: "pagination-item pagination-control" }, index.h("button", { type: "button", class: {
548
+ 'pagination-link': true,
549
+ 'pagination-control-button': true,
550
+ 'pagination-link-disabled': isDisabled,
551
+ }, "aria-label": label, onClick: onClick, onKeyDown: e => this.handleKeyDown(e, onClick), disabled: isDisabled, tabIndex: isDisabled ? -1 : 0 }, index.h("post-icon", { name: iconName, class: rotateIcon ? 'pagination-icon-rotated' : undefined, "aria-hidden": "true" }), index.h("span", { class: "visually-hidden" }, label))));
552
+ }
553
+ /**
554
+ * Renders minimal hidden items for measurement
555
+ */
556
+ renderHiddenItems(totalPages) {
557
+ return [
558
+ index.h("button", { class: "pagination-link pagination-control-button hidden-control-button", disabled: true }, index.h("post-icon", { name: "chevronleft", "aria-hidden": "true" })),
559
+ index.h("button", { class: "pagination-link pagination-control-button hidden-page-button", "aria-label": this.buildPageLabel(totalPages), disabled: true }, index.h("span", { "aria-hidden": "true" }, totalPages)),
560
+ index.h("span", { class: "pagination-ellipsis-content hidden-ellipsis", "aria-hidden": "true" }, ELLIPSIS),
561
+ index.h("button", { class: "pagination-link pagination-control-button hidden-control-button", disabled: true }, index.h("post-icon", { name: "chevronleft", class: "pagination-icon-rotated", "aria-hidden": "true" })),
562
+ ];
563
+ }
564
+ render() {
565
+ const totalPages = this.getTotalPages();
566
+ if (totalPages <= 1) {
567
+ return null;
568
+ }
569
+ const isPrevDisabled = this.disabled || this.page <= 1;
570
+ const isNextDisabled = this.disabled || this.page >= totalPages;
571
+ return (index.h(index.Host, { slot: "post-pagination", "data-version": _package.version }, index.h("nav", { class: "pagination", "aria-label": this.label, id: this.paginationId, ref: el => (this.navRef = el) }, index.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)), index.h("div", { class: "hidden-items", "aria-hidden": "true", ref: el => (this.hiddenItemsRef = el) }, this.renderHiddenItems(totalPages)))));
572
+ }
573
+ get host() { return index.getElement(this); }
574
+ static get watchers() { return {
575
+ "page": ["validatePage", "handlePropsChange"],
576
+ "pageSize": ["validatePageSize", "handlePropsChange"],
577
+ "collectionSize": ["validateCollectionSize", "handlePropsChange"],
578
+ "label": ["validateLabel"],
579
+ "textPrevious": ["validateTextPrevious"],
580
+ "textNext": ["validateTextNext"],
581
+ "textPage": ["validateTextPage"],
582
+ "textFirst": ["validateTextFirst"],
583
+ "textLast": ["validateTextLast"],
584
+ "disabled": ["validateDisabled"]
585
+ }; }
586
+ };
587
+ PostPagination.style = postPaginationCss;
588
+
589
+ exports.post_pagination = PostPagination;