@swisspost/design-system-components 10.0.0-next.55 → 10.0.0-next.57

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 (443) 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-B4gYpuJF.js → index-B4rc1pqu.js} +2150 -292
  10. package/dist/cjs/loader.cjs.js +2 -2
  11. package/dist/cjs/{package-DkJrv93P.js → package-uQ5oiSiN.js} +1 -1
  12. package/dist/cjs/post-accordion_2.cjs.entry.js +19 -15
  13. package/dist/cjs/post-avatar.cjs.entry.js +27 -17
  14. package/dist/cjs/post-back-to-top.cjs.entry.js +23 -43
  15. package/dist/cjs/post-banner.cjs.entry.js +15 -12
  16. package/dist/cjs/post-breadcrumb-item_2.cjs.entry.js +14 -12
  17. package/dist/cjs/post-breadcrumbs.cjs.entry.js +33 -34
  18. package/dist/cjs/post-card-control.cjs.entry.js +42 -26
  19. package/dist/cjs/{post-closebutton_15.cjs.entry.js → post-closebutton_13.cjs.entry.js} +618 -531
  20. package/dist/cjs/post-collapsible_2.cjs.entry.js +41 -37
  21. package/dist/cjs/post-components.cjs.js +3 -3
  22. package/dist/cjs/post-env-test.cjs.entry.js +15 -0
  23. package/dist/cjs/post-footer.cjs.entry.js +24 -20
  24. package/dist/cjs/post-linkarea.cjs.entry.js +5 -5
  25. package/dist/cjs/post-pagination.cjs.entry.js +615 -0
  26. package/dist/cjs/post-popover-trigger.cjs.entry.js +54 -34
  27. package/dist/cjs/post-popover.cjs.entry.js +26 -17
  28. package/dist/cjs/post-rating.cjs.entry.js +24 -18
  29. package/dist/cjs/post-stepper-item.cjs.entry.js +5 -5
  30. package/dist/cjs/post-stepper.cjs.entry.js +40 -29
  31. package/dist/cjs/post-tab-item.cjs.entry.js +51 -0
  32. package/dist/cjs/post-tab-panel.cjs.entry.js +13 -11
  33. package/dist/cjs/post-tabs.cjs.entry.js +195 -40
  34. package/dist/cjs/post-tooltip-trigger.cjs.entry.js +13 -11
  35. package/dist/cjs/post-tooltip.cjs.entry.js +14 -12
  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 -8
  45. package/dist/collection/components/post-accordion/post-accordion.css +1 -1
  46. package/dist/collection/components/post-accordion/post-accordion.js +5 -4
  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 +9 -8
  49. package/dist/collection/components/post-avatar/post-avatar.js +11 -11
  50. package/dist/collection/components/post-back-to-top/post-back-to-top.js +15 -15
  51. package/dist/collection/components/post-banner/post-banner.css +4 -1
  52. package/dist/collection/components/post-banner/post-banner.js +6 -5
  53. package/dist/collection/components/post-breadcrumb-item/post-breadcrumb-item.js +3 -3
  54. package/dist/collection/components/post-breadcrumbs/post-breadcrumbs.js +29 -29
  55. package/dist/collection/components/post-card-control/post-card-control.js +18 -18
  56. package/dist/collection/components/post-closebutton/post-closebutton.css +1 -1
  57. package/dist/collection/components/post-closebutton/post-closebutton.js +4 -3
  58. package/dist/collection/components/post-collapsible/post-collapsible.js +28 -28
  59. package/dist/collection/components/post-collapsible-trigger/post-collapsible-trigger.js +3 -3
  60. package/dist/collection/components/post-footer/post-footer.css +1 -1
  61. package/dist/collection/components/post-footer/post-footer.js +18 -16
  62. package/dist/collection/components/post-header/post-header.css +1 -1
  63. package/dist/collection/components/post-header/post-header.js +144 -82
  64. package/dist/collection/components/post-icon/post-icon.js +18 -16
  65. package/dist/collection/components/post-language-menu/post-language-menu.css +1 -0
  66. package/dist/collection/components/{post-language-switch/post-language-switch.js → post-language-menu/post-language-menu.js} +45 -36
  67. package/dist/collection/components/post-language-menu-item/post-language-menu-item.css +1 -0
  68. package/dist/collection/components/{post-language-option/post-language-option.js → post-language-menu-item/post-language-menu-item.js} +24 -23
  69. package/dist/collection/components/post-linkarea/post-linkarea.js +1 -1
  70. package/dist/collection/components/post-logo/post-logo.css +3 -1
  71. package/dist/collection/components/post-logo/post-logo.js +3 -3
  72. package/dist/collection/components/post-mainnavigation/post-mainnavigation.css +1 -1
  73. package/dist/collection/components/post-mainnavigation/post-mainnavigation.js +41 -29
  74. package/dist/collection/components/post-megadropdown/post-megadropdown.css +1 -1
  75. package/dist/collection/components/post-megadropdown/post-megadropdown.js +183 -74
  76. package/dist/collection/components/post-megadropdown-trigger/post-megadropdown-trigger.css +3 -1
  77. package/dist/collection/components/post-megadropdown-trigger/post-megadropdown-trigger.js +81 -75
  78. package/dist/collection/components/post-menu/post-menu.css +1 -1
  79. package/dist/collection/components/post-menu/post-menu.js +39 -38
  80. package/dist/collection/components/post-menu-item/post-menu-item.js +1 -1
  81. package/dist/collection/components/post-menu-trigger/post-menu-trigger.js +3 -3
  82. package/dist/collection/components/post-pagination/post-pagination.css +1 -0
  83. package/dist/collection/components/post-pagination/post-pagination.js +838 -0
  84. package/dist/collection/components/post-popover/post-popover.js +22 -16
  85. package/dist/collection/components/post-popover-trigger/post-popover-trigger.js +45 -29
  86. package/dist/collection/components/post-popovercontainer/post-popovercontainer.css +1 -1
  87. package/dist/collection/components/post-popovercontainer/post-popovercontainer.js +82 -131
  88. package/dist/collection/components/post-rating/post-rating.js +7 -7
  89. package/dist/collection/components/post-stepper/post-stepper.js +38 -35
  90. package/dist/collection/components/post-stepper-item/post-stepper-item.css +2 -2
  91. package/dist/collection/components/post-stepper-item/post-stepper-item.js +1 -1
  92. package/dist/collection/components/post-tab-item/post-tab-item.css +1 -0
  93. package/dist/collection/components/post-tab-item/post-tab-item.js +86 -0
  94. package/dist/collection/components/post-tab-panel/post-tab-panel.js +10 -10
  95. package/dist/collection/components/post-tabs/post-tabs.js +232 -59
  96. package/dist/collection/components/post-togglebutton/post-togglebutton.js +2 -2
  97. package/dist/collection/components/post-tooltip/post-tooltip.js +9 -27
  98. package/dist/collection/components/post-tooltip-trigger/post-tooltip-trigger.js +4 -4
  99. package/dist/collection/utils/environment.js +47 -2
  100. package/dist/collection/utils/event-from.js +2 -2
  101. package/dist/collection/utils/get-focusable-children.js +29 -21
  102. package/dist/collection/utils/is-motion-reduced.js +1 -1
  103. package/dist/collection/utils/tests/environment/hydrate-app-helper.js +16 -0
  104. package/dist/collection/utils/tests/environment/post-env-test.js +9 -0
  105. package/dist/component-names.json +4 -5
  106. package/dist/components/breakpoints.js +1 -178
  107. package/dist/components/debounce.js +1 -0
  108. package/dist/components/environment.js +1 -0
  109. package/dist/components/event-from.js +1 -119
  110. package/dist/components/fade-slide.js +1 -0
  111. package/dist/components/fade.js +1 -11
  112. package/dist/components/focusable.js +1 -5018
  113. package/dist/components/get-focusable-children.js +1 -64
  114. package/dist/components/get-root.js +1 -15
  115. package/dist/components/heading-levels.js +1 -3
  116. package/dist/components/index.browser.js +1 -14
  117. package/dist/components/index.d.ts +11 -10
  118. package/dist/components/index.js +1 -39
  119. package/dist/components/long-press-event.js +1 -257
  120. package/dist/components/package.js +1 -3
  121. package/dist/components/post-accordion-item.js +1 -6
  122. package/dist/components/post-accordion-item2.js +1 -113
  123. package/dist/components/post-accordion.js +1 -6
  124. package/dist/components/post-accordion2.js +1 -138
  125. package/dist/components/post-avatar.js +1 -217
  126. package/dist/components/post-back-to-top.js +1 -144
  127. package/dist/components/post-banner.js +1 -98
  128. package/dist/components/post-breadcrumb-item.js +1 -6
  129. package/dist/components/post-breadcrumb-item2.js +1 -79
  130. package/dist/components/post-breadcrumbs.js +1 -196
  131. package/dist/components/post-card-control.js +1 -326
  132. package/dist/components/post-closebutton.js +1 -6
  133. package/dist/components/post-closebutton2.js +1 -77
  134. package/dist/components/post-collapsible-trigger.js +1 -6
  135. package/dist/components/post-collapsible-trigger2.js +1 -136
  136. package/dist/components/post-collapsible.js +1 -6
  137. package/dist/components/post-collapsible2.js +1 -110
  138. package/dist/components/{post-list.d.ts → post-env-test.d.ts} +4 -4
  139. package/dist/components/post-env-test.js +1 -0
  140. package/dist/components/post-footer.js +1 -116
  141. package/dist/components/post-header.js +1 -372
  142. package/dist/components/post-icon.js +1 -6
  143. package/dist/components/post-icon2.js +1 -159
  144. package/dist/components/post-language-menu-item.d.ts +11 -0
  145. package/dist/components/post-language-menu-item.js +1 -0
  146. package/dist/components/{post-language-switch.d.ts → post-language-menu.d.ts} +4 -4
  147. package/dist/components/post-language-menu.js +1 -0
  148. package/dist/components/post-linkarea.js +1 -58
  149. package/dist/components/post-logo.js +1 -58
  150. package/dist/components/post-mainnavigation.js +1 -180
  151. package/dist/components/post-megadropdown-trigger.js +1 -136
  152. package/dist/components/post-megadropdown.js +1 -267
  153. package/dist/components/post-menu-item.js +1 -6
  154. package/dist/components/post-menu-item2.js +1 -30
  155. package/dist/components/post-menu-trigger.js +1 -6
  156. package/dist/components/post-menu-trigger2.js +1 -110
  157. package/dist/components/post-menu.js +1 -6
  158. package/dist/components/post-menu2.js +1 -242
  159. package/dist/components/{post-tab-header.d.ts → post-pagination.d.ts} +4 -4
  160. package/dist/components/post-pagination.js +1 -0
  161. package/dist/components/post-popover-trigger.js +1 -132
  162. package/dist/components/post-popover.js +1 -118
  163. package/dist/components/post-popovercontainer.js +1 -6
  164. package/dist/components/post-popovercontainer2.js +1 -3127
  165. package/dist/components/post-rating.js +1 -148
  166. package/dist/components/post-stepper-item.js +1 -33
  167. package/dist/components/post-stepper.js +1 -134
  168. package/dist/components/{post-list-item.d.ts → post-tab-item.d.ts} +4 -4
  169. package/dist/components/post-tab-item.js +1 -0
  170. package/dist/components/post-tab-panel.js +1 -54
  171. package/dist/components/post-tabs.js +1 -196
  172. package/dist/components/post-togglebutton.js +1 -56
  173. package/dist/components/post-togglebutton2.js +1 -0
  174. package/dist/components/post-tooltip-trigger.js +1 -206
  175. package/dist/components/post-tooltip.js +1 -114
  176. package/dist/components/react/index.d.ts +2 -0
  177. package/dist/components/react/index.js +1 -2315
  178. package/dist/components/react/p-B8YiQ3mz.js +1 -0
  179. package/dist/components/react/p-BC5nlBvn.js +1 -0
  180. package/dist/components/react/p-BLchVpF6.js +1 -14
  181. package/dist/components/react/p-BVCjnh6Q.js +1 -0
  182. package/dist/{post-components/p-CBFgkSgY.js → components/react/p-BVGcVycs.js} +1 -1
  183. package/dist/components/react/p-B_XPj2c8.js +1 -0
  184. package/dist/components/react/p-BllOMLDs.js +1 -0
  185. package/dist/components/react/p-BmRNjQUZ.js +1 -0
  186. package/dist/components/react/p-ByFh05IW.js +1 -0
  187. package/dist/components/react/p-C9hMpmsD.js +1 -0
  188. package/dist/components/react/p-CJ13r5fi.js +1 -0
  189. package/dist/components/react/p-CZvbetqX.js +1 -0
  190. package/dist/components/react/p-C_2k3G1c.js +1 -257
  191. package/dist/components/react/p-CoDiS_Ik.js +1 -0
  192. package/dist/components/react/p-Cou17ld8.js +1 -0
  193. package/dist/components/react/p-D5knoiyy.js +1 -0
  194. package/dist/components/react/p-D9DDtvFM.js +1 -0
  195. package/dist/components/react/p-DY2U5CQt.js +1 -0
  196. package/dist/components/react/p-DjIHLduJ.js +1 -3
  197. package/dist/components/react/p-DpATRD2W.js +1 -0
  198. package/dist/components/react/p-FxUVQ4Tx.js +1 -0
  199. package/dist/components/react/p-HygIVKXC.js +1 -5018
  200. package/dist/components/react/p-YR7U0Z_g.js +1 -0
  201. package/dist/components/react/p-ZeKXASQs.js +1 -0
  202. package/dist/components/react/p-r4txK0AC.js +1 -3
  203. package/dist/components/react/p-sSn0kXFi.js +1 -0
  204. package/dist/components/react/post-accordion-item.js +1 -6
  205. package/dist/components/react/post-accordion.js +1 -6
  206. package/dist/components/react/post-avatar.js +1 -218
  207. package/dist/components/react/post-back-to-top.js +1 -145
  208. package/dist/components/react/post-banner.js +1 -99
  209. package/dist/components/react/post-breadcrumb-item.js +1 -6
  210. package/dist/components/react/post-breadcrumbs.js +1 -197
  211. package/dist/components/react/post-card-control.js +1 -327
  212. package/dist/components/react/post-closebutton.js +1 -6
  213. package/dist/components/react/post-collapsible-trigger.js +1 -6
  214. package/dist/components/react/post-collapsible.js +1 -6
  215. package/dist/components/react/{post-list.d.ts → post-env-test.d.ts} +4 -4
  216. package/dist/components/react/post-env-test.js +1 -0
  217. package/dist/components/react/post-footer.js +1 -117
  218. package/dist/components/react/post-header.js +1 -373
  219. package/dist/components/react/post-icon.js +1 -6
  220. package/dist/components/react/post-language-menu-item.d.ts +11 -0
  221. package/dist/components/react/post-language-menu-item.js +1 -0
  222. package/dist/components/react/{post-language-option.d.ts → post-language-menu.d.ts} +4 -4
  223. package/dist/components/react/post-language-menu.js +1 -0
  224. package/dist/components/react/post-linkarea.js +1 -59
  225. package/dist/components/react/post-logo.js +1 -59
  226. package/dist/components/react/post-mainnavigation.js +1 -181
  227. package/dist/components/react/post-megadropdown-trigger.js +1 -137
  228. package/dist/components/react/post-megadropdown.js +1 -268
  229. package/dist/components/react/post-menu-item.js +1 -6
  230. package/dist/components/react/post-menu-trigger.js +1 -6
  231. package/dist/components/react/post-menu.js +1 -6
  232. package/dist/components/react/{post-tab-header.d.ts → post-pagination.d.ts} +4 -4
  233. package/dist/components/react/post-pagination.js +1 -0
  234. package/dist/components/react/post-popover-trigger.js +1 -133
  235. package/dist/components/react/post-popover.js +1 -119
  236. package/dist/components/react/post-popovercontainer.js +1 -6
  237. package/dist/components/react/post-rating.js +1 -149
  238. package/dist/components/react/post-stepper-item.js +1 -34
  239. package/dist/components/react/post-stepper.js +1 -135
  240. package/dist/components/react/{post-list-item.d.ts → post-tab-item.d.ts} +4 -4
  241. package/dist/components/react/post-tab-item.js +1 -0
  242. package/dist/components/react/post-tab-panel.js +1 -55
  243. package/dist/components/react/post-tabs.js +1 -197
  244. package/dist/components/react/post-togglebutton.js +1 -57
  245. package/dist/components/react/post-tooltip-trigger.js +1 -207
  246. package/dist/components/react/post-tooltip.js +1 -115
  247. package/dist/components/switch-variants.js +1 -3
  248. package/dist/components/utils.js +1 -0
  249. package/dist/docs.d.ts +11 -0
  250. package/dist/docs.json +873 -631
  251. package/dist/{cjs/breakpoints-CEkeixld.js → esm/breakpoints-DYoSKGHO.js} +89 -6
  252. package/dist/esm/debounce-C9hMpmsD.js +11 -0
  253. package/dist/esm/environment-CEmnRoA6.js +49 -0
  254. package/dist/{components/react/p-CzIKqBrS.js → esm/event-from-rEfV4v4a.js} +2 -2
  255. package/dist/esm/fade-DsgPYmAa.js +24 -0
  256. package/dist/esm/fade-slide-CvOvauo9.js +36 -0
  257. package/dist/esm/{get-focusable-children-D9ZHp2FP.js → get-focusable-children-BXNs2_sw.js} +29 -21
  258. package/dist/{components/react/p-CBFgkSgY.js → esm/get-root-CXfAA093.js} +1 -1
  259. package/dist/esm/{index-wEFJ-c34.js → index-CDZBzSdV.js} +2150 -292
  260. package/dist/esm/loader.js +3 -3
  261. package/dist/esm/package-CZvbetqX.js +3 -0
  262. package/dist/esm/post-accordion_2.entry.js +17 -13
  263. package/dist/esm/post-avatar.entry.js +22 -12
  264. package/dist/esm/post-back-to-top.entry.js +23 -43
  265. package/dist/esm/post-banner.entry.js +14 -11
  266. package/dist/esm/post-breadcrumb-item_2.entry.js +13 -11
  267. package/dist/esm/post-breadcrumbs.entry.js +31 -32
  268. package/dist/esm/post-card-control.entry.js +32 -16
  269. package/dist/esm/{post-closebutton_15.entry.js → post-closebutton_13.entry.js} +599 -510
  270. package/dist/esm/post-collapsible_2.entry.js +38 -34
  271. package/dist/esm/post-components.js +4 -4
  272. package/dist/esm/post-env-test.entry.js +13 -0
  273. package/dist/esm/post-footer.entry.js +21 -17
  274. package/dist/esm/post-linkarea.entry.js +5 -5
  275. package/dist/esm/post-pagination.entry.js +613 -0
  276. package/dist/esm/post-popover-trigger.entry.js +52 -32
  277. package/dist/esm/post-popover.entry.js +25 -16
  278. package/dist/esm/post-rating.entry.js +16 -10
  279. package/dist/esm/post-stepper-item.entry.js +5 -5
  280. package/dist/esm/post-stepper.entry.js +39 -28
  281. package/dist/esm/post-tab-item.entry.js +49 -0
  282. package/dist/esm/post-tab-panel.entry.js +13 -11
  283. package/dist/esm/post-tabs.entry.js +195 -40
  284. package/dist/esm/post-tooltip-trigger.entry.js +10 -8
  285. package/dist/esm/post-tooltip.entry.js +13 -11
  286. package/dist/esm/utils-CoDiS_Ik.js +24 -0
  287. package/dist/post-components/p-09ba7cf9.entry.js +1 -0
  288. package/dist/post-components/p-0c091898.entry.js +1 -0
  289. package/dist/post-components/{p-cd03e6f2.entry.js → p-0e97fcfd.entry.js} +1 -1
  290. package/dist/post-components/p-296f1dd5.entry.js +1 -0
  291. package/dist/post-components/p-32ad2b21.entry.js +1 -0
  292. package/dist/post-components/p-366c28cb.entry.js +1 -0
  293. package/dist/post-components/p-41ae68d5.entry.js +1 -0
  294. package/dist/post-components/p-448e7265.entry.js +1 -0
  295. package/dist/post-components/p-554da188.entry.js +1 -0
  296. package/dist/post-components/p-5912f8f1.entry.js +1 -0
  297. package/dist/post-components/p-790f300d.entry.js +1 -0
  298. package/dist/post-components/p-7ed5a493.entry.js +1 -0
  299. package/dist/post-components/p-85bea1b6.entry.js +1 -0
  300. package/dist/post-components/p-8bcff4d2.entry.js +1 -0
  301. package/dist/post-components/p-9dc9c245.entry.js +1 -0
  302. package/dist/post-components/p-B7ebLhHc.js +1 -0
  303. package/dist/post-components/p-BVCjnh6Q.js +1 -0
  304. package/dist/post-components/p-BXNs2_sw.js +1 -0
  305. package/dist/post-components/p-C9hMpmsD.js +1 -0
  306. package/dist/post-components/p-CDZBzSdV.js +2 -0
  307. package/dist/post-components/p-CEmnRoA6.js +1 -0
  308. package/dist/post-components/p-CZvbetqX.js +1 -0
  309. package/dist/post-components/p-CoDiS_Ik.js +1 -0
  310. package/dist/post-components/p-D5knoiyy.js +1 -0
  311. package/dist/post-components/p-DI-h_mEL.js +1 -0
  312. package/dist/post-components/p-a06f9695.entry.js +1 -0
  313. package/dist/post-components/p-a191f1df.entry.js +1 -0
  314. package/dist/post-components/p-c5d19d62.entry.js +1 -0
  315. package/dist/post-components/{p-24dc54d1.entry.js → p-c8c4d05b.entry.js} +1 -1
  316. package/dist/post-components/{p-57288cb2.entry.js → p-d1a5c980.entry.js} +1 -1
  317. package/dist/post-components/p-d4e2c556.entry.js +1 -0
  318. package/dist/post-components/p-f96a310c.entry.js +1 -0
  319. package/dist/post-components/p-fab2327d.entry.js +1 -0
  320. package/dist/post-components/p-rEfV4v4a.js +1 -0
  321. package/dist/post-components/post-components.css +1 -1
  322. package/dist/post-components/post-components.esm.js +1 -1
  323. package/dist/prebuild.js +46 -0
  324. package/dist/types/animations/collapse.d.ts +1 -0
  325. package/dist/types/animations/fade-slide.d.ts +11 -0
  326. package/dist/types/animations/fade.d.ts +2 -2
  327. package/dist/types/animations/index.d.ts +2 -0
  328. package/dist/types/animations/slide.d.ts +9 -2
  329. package/dist/types/animations/types.d.ts +13 -0
  330. package/dist/types/animations/utils.d.ts +2 -0
  331. package/dist/types/components/post-accordion-item/heading-levels.d.ts +1 -1
  332. package/dist/types/components/post-accordion-item/post-accordion-item.d.ts +2 -2
  333. package/dist/types/components/post-back-to-top/post-back-to-top.d.ts +2 -2
  334. package/dist/types/components/post-breadcrumbs/post-breadcrumbs.d.ts +6 -6
  335. package/dist/types/components/post-collapsible/post-collapsible.d.ts +4 -5
  336. package/dist/types/components/post-footer/post-footer.d.ts +4 -4
  337. package/dist/types/components/post-header/post-header.d.ts +23 -13
  338. package/dist/types/components/{post-language-switch/post-language-switch.d.ts → post-language-menu/post-language-menu.d.ts} +12 -11
  339. package/dist/types/components/{post-language-option/post-language-option.d.ts → post-language-menu-item/post-language-menu-item.d.ts} +5 -5
  340. package/dist/types/components/post-mainnavigation/post-mainnavigation.d.ts +6 -5
  341. package/dist/types/components/post-megadropdown/post-megadropdown.d.ts +20 -2
  342. package/dist/types/components/post-megadropdown-trigger/post-megadropdown-trigger.d.ts +17 -23
  343. package/dist/types/components/post-menu/post-menu.d.ts +4 -4
  344. package/dist/types/components/post-pagination/post-pagination.d.ts +224 -0
  345. package/dist/types/components/post-popover/post-popover.d.ts +4 -3
  346. package/dist/types/components/post-popover-trigger/post-popover-trigger.d.ts +2 -1
  347. package/dist/types/components/post-popovercontainer/post-popovercontainer.d.ts +23 -21
  348. package/dist/types/components/post-rating/post-rating.d.ts +1 -1
  349. package/dist/types/components/post-stepper/post-stepper.d.ts +9 -8
  350. package/dist/types/components/post-tab-item/post-tab-item.d.ts +19 -0
  351. package/dist/types/components/post-tab-panel/post-tab-panel.d.ts +3 -3
  352. package/dist/types/components/post-tabs/post-tabs.d.ts +33 -12
  353. package/dist/types/components/post-tooltip/post-tooltip.d.ts +1 -5
  354. package/dist/types/components.d.ts +322 -219
  355. package/dist/types/home/runner/work/design-system/design-system/packages/components/.stencil/prebuild.d.ts +9 -0
  356. package/dist/types/stencil-public-runtime.d.ts +147 -10
  357. package/dist/types/types/heading-levels.d.ts +1 -1
  358. package/dist/types/utils/environment.d.ts +25 -1
  359. package/dist/types/utils/get-focusable-children.d.ts +2 -2
  360. package/dist/types/utils/tests/environment/hydrate-app-helper.d.ts +5 -0
  361. package/dist/types/utils/tests/environment/post-env-test.d.ts +3 -0
  362. package/hydrate/index.d.ts +14 -0
  363. package/hydrate/index.js +7494 -2714
  364. package/hydrate/index.mjs +7493 -2715
  365. package/package.json +7 -8
  366. package/dist/cjs/fade-nS5zzDQS.js +0 -14
  367. package/dist/cjs/index-UFKR6Ok0.js +0 -98
  368. package/dist/cjs/post-tab-header.cjs.entry.js +0 -31
  369. package/dist/collection/animations/slide-and-fade.js +0 -25
  370. package/dist/collection/components/post-language-option/post-language-option.css +0 -1
  371. package/dist/collection/components/post-language-switch/post-language-switch.css +0 -1
  372. package/dist/collection/components/post-list/post-list.css +0 -1
  373. package/dist/collection/components/post-list/post-list.js +0 -97
  374. package/dist/collection/components/post-list-item/post-list-item.css +0 -1
  375. package/dist/collection/components/post-list-item/post-list-item.js +0 -26
  376. package/dist/collection/components/post-tab-header/post-tab-header.css +0 -1
  377. package/dist/collection/components/post-tab-header/post-tab-header.js +0 -65
  378. package/dist/components/index2.js +0 -89
  379. package/dist/components/post-language-option.d.ts +0 -11
  380. package/dist/components/post-language-option.js +0 -99
  381. package/dist/components/post-language-switch.js +0 -157
  382. package/dist/components/post-list-item.js +0 -38
  383. package/dist/components/post-list.js +0 -61
  384. package/dist/components/post-tab-header.js +0 -52
  385. package/dist/components/react/p-BVXiQdHq.js +0 -64
  386. package/dist/components/react/p-BhxZzOEC.js +0 -3
  387. package/dist/components/react/p-CSAMO7iJ.js +0 -243
  388. package/dist/components/react/p-CYkf_7Y5.js +0 -89
  389. package/dist/components/react/p-Ccrl2AQn.js +0 -111
  390. package/dist/components/react/p-CewRvBtg.js +0 -139
  391. package/dist/components/react/p-Cwiv86_f.js +0 -111
  392. package/dist/components/react/p-D2waO0Zc.js +0 -31
  393. package/dist/components/react/p-DBPOV12C.js +0 -160
  394. package/dist/components/react/p-DVGEExot.js +0 -3128
  395. package/dist/components/react/p-Djvj8fd2.js +0 -80
  396. package/dist/components/react/p-LtiDhYis.js +0 -137
  397. package/dist/components/react/p-SbIC4aZX.js +0 -11
  398. package/dist/components/react/p-XrZzCOKT.js +0 -78
  399. package/dist/components/react/p-v3pOrMNQ.js +0 -114
  400. package/dist/components/react/post-language-option.js +0 -100
  401. package/dist/components/react/post-language-switch.d.ts +0 -11
  402. package/dist/components/react/post-language-switch.js +0 -158
  403. package/dist/components/react/post-list-item.js +0 -39
  404. package/dist/components/react/post-list.js +0 -62
  405. package/dist/components/react/post-tab-header.js +0 -53
  406. package/dist/esm/breakpoints-CJ80BZ06.js +0 -178
  407. package/dist/esm/event-from-CzIKqBrS.js +0 -119
  408. package/dist/esm/fade-SbIC4aZX.js +0 -11
  409. package/dist/esm/get-root-BkQ3CrLq.js +0 -15
  410. package/dist/esm/index-Beaz8wEe.js +0 -89
  411. package/dist/esm/package-BhxZzOEC.js +0 -3
  412. package/dist/esm/post-tab-header.entry.js +0 -29
  413. package/dist/post-components/p-01e678c9.entry.js +0 -1
  414. package/dist/post-components/p-034a453f.entry.js +0 -1
  415. package/dist/post-components/p-15a4cdbf.entry.js +0 -1
  416. package/dist/post-components/p-2a2030bf.entry.js +0 -1
  417. package/dist/post-components/p-2ed84cc3.entry.js +0 -1
  418. package/dist/post-components/p-3228968f.entry.js +0 -1
  419. package/dist/post-components/p-3c01ddfe.entry.js +0 -1
  420. package/dist/post-components/p-748b1f01.entry.js +0 -1
  421. package/dist/post-components/p-7745e46e.entry.js +0 -1
  422. package/dist/post-components/p-7f635728.entry.js +0 -1
  423. package/dist/post-components/p-82c178a3.entry.js +0 -1
  424. package/dist/post-components/p-9b5f8319.entry.js +0 -1
  425. package/dist/post-components/p-Beaz8wEe.js +0 -1
  426. package/dist/post-components/p-BhxZzOEC.js +0 -1
  427. package/dist/post-components/p-CJ80BZ06.js +0 -1
  428. package/dist/post-components/p-D9ZHp2FP.js +0 -1
  429. package/dist/post-components/p-SbIC4aZX.js +0 -1
  430. package/dist/post-components/p-a9644e54.entry.js +0 -1
  431. package/dist/post-components/p-af030a3a.entry.js +0 -1
  432. package/dist/post-components/p-b8ba8139.entry.js +0 -1
  433. package/dist/post-components/p-db935e8e.entry.js +0 -1
  434. package/dist/post-components/p-e62e1f57.entry.js +0 -1
  435. package/dist/post-components/p-fb4b1641.entry.js +0 -1
  436. package/dist/post-components/p-wEFJ-c34.js +0 -2
  437. package/dist/types/animations/slide-and-fade.d.ts +0 -2
  438. package/dist/types/components/post-list/post-list.d.ts +0 -24
  439. package/dist/types/components/post-list-item/post-list-item.d.ts +0 -8
  440. package/dist/types/components/post-tab-header/post-tab-header.d.ts +0 -14
  441. /package/dist/collection/components/{post-language-switch → post-language-menu}/switch-variants.js +0 -0
  442. /package/dist/{post-components/p-CzIKqBrS.js → components/react/p-rEfV4v4a.js} +0 -0
  443. /package/dist/types/components/{post-language-switch → post-language-menu}/switch-variants.d.ts +0 -0
@@ -0,0 +1,613 @@
1
+ import { r as registerInstance, c as createEvent, h, H as Host, a as getElement } from './index-CDZBzSdV.js';
2
+ import { v as version } from './package-CZvbetqX.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": [{
574
+ "validatePage": 0
575
+ }, {
576
+ "handlePropsChange": 0
577
+ }],
578
+ "pageSize": [{
579
+ "validatePageSize": 0
580
+ }, {
581
+ "handlePropsChange": 0
582
+ }],
583
+ "collectionSize": [{
584
+ "validateCollectionSize": 0
585
+ }, {
586
+ "handlePropsChange": 0
587
+ }],
588
+ "label": [{
589
+ "validateLabel": 0
590
+ }],
591
+ "textPrevious": [{
592
+ "validateTextPrevious": 0
593
+ }],
594
+ "textNext": [{
595
+ "validateTextNext": 0
596
+ }],
597
+ "textPage": [{
598
+ "validateTextPage": 0
599
+ }],
600
+ "textFirst": [{
601
+ "validateTextFirst": 0
602
+ }],
603
+ "textLast": [{
604
+ "validateTextLast": 0
605
+ }],
606
+ "disabled": [{
607
+ "validateDisabled": 0
608
+ }]
609
+ }; }
610
+ };
611
+ PostPagination.style = postPaginationCss();
612
+
613
+ export { PostPagination as post_pagination };