@swisspost/design-system-components 10.0.0-next.46 → 10.0.0-next.48

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 (270) hide show
  1. package/dist/cjs/{event-from-AKK8RQrn.js → event-from-C6kpQwhw.js} +2 -2
  2. package/dist/cjs/index-CpDyH7Ww.js +8 -8
  3. package/dist/cjs/loader.cjs.js +1 -1
  4. package/dist/cjs/{package-Din0le0Q.js → package-CZyXYkIN.js} +1 -1
  5. package/dist/cjs/post-accordion_2.cjs.entry.js +4 -4
  6. package/dist/cjs/post-avatar.cjs.entry.js +91 -54
  7. package/dist/cjs/post-back-to-top.cjs.entry.js +32 -7
  8. package/dist/cjs/post-banner.cjs.entry.js +31 -35
  9. package/dist/cjs/post-breadcrumb-item_2.cjs.entry.js +1 -1
  10. package/dist/cjs/post-breadcrumbs.cjs.entry.js +1 -1
  11. package/dist/cjs/post-card-control.cjs.entry.js +3 -3
  12. package/dist/cjs/post-closebutton_15.cjs.entry.js +39 -8
  13. package/dist/cjs/post-collapsible_2.cjs.entry.js +2 -2
  14. package/dist/cjs/post-components.cjs.js +1 -1
  15. package/dist/cjs/post-footer.cjs.entry.js +1 -1
  16. package/dist/cjs/post-linkarea.cjs.entry.js +1 -1
  17. package/dist/cjs/post-popover.cjs.entry.js +1 -1
  18. package/dist/cjs/post-rating.cjs.entry.js +1 -1
  19. package/dist/cjs/post-tab-header.cjs.entry.js +1 -1
  20. package/dist/cjs/post-tab-panel.cjs.entry.js +1 -1
  21. package/dist/cjs/post-tabs.cjs.entry.js +2 -2
  22. package/dist/cjs/post-tooltip-trigger.cjs.entry.js +1 -1
  23. package/dist/cjs/post-tooltip.cjs.entry.js +1 -1
  24. package/dist/collection/animations/slide-and-fade.js +25 -0
  25. package/dist/collection/components/post-accordion-item/post-accordion-item.js +5 -5
  26. package/dist/collection/components/post-avatar/avatar-utils.js +16 -0
  27. package/dist/collection/components/post-avatar/post-avatar.js +91 -58
  28. package/dist/collection/components/post-back-to-top/post-back-to-top.css +1 -1
  29. package/dist/collection/components/post-back-to-top/post-back-to-top.js +5 -5
  30. package/dist/collection/components/post-banner/post-banner.css +1 -1
  31. package/dist/collection/components/post-banner/post-banner.js +41 -81
  32. package/dist/collection/components/post-card-control/post-card-control.js +8 -8
  33. package/dist/collection/components/post-closebutton/post-closebutton.js +9 -1
  34. package/dist/collection/components/post-menu/post-menu.js +4 -1
  35. package/dist/collection/components/post-popovercontainer/post-popovercontainer.js +1 -1
  36. package/dist/collection/components/post-tabs/post-tabs.js +3 -3
  37. package/dist/collection/utils/event-from.js +2 -2
  38. package/dist/components/{p-8U5GFtQP.js → event-from.js} +2 -2
  39. package/dist/components/get-root.js +15 -0
  40. package/dist/components/index.d.ts +73 -0
  41. package/dist/components/index.js +36 -2315
  42. package/dist/components/package.js +3 -0
  43. package/dist/components/post-accordion-item.js +1 -1
  44. package/dist/components/post-accordion-item2.js +113 -0
  45. package/dist/components/post-accordion.js +1 -1
  46. package/dist/components/post-accordion2.js +138 -0
  47. package/dist/components/post-avatar.js +99 -62
  48. package/dist/components/post-back-to-top.js +37 -13
  49. package/dist/components/post-banner.js +39 -51
  50. package/dist/components/post-breadcrumb-item.js +1 -1
  51. package/dist/components/post-breadcrumb-item2.js +79 -0
  52. package/dist/components/post-breadcrumbs.js +13 -14
  53. package/dist/components/post-card-control.js +10 -11
  54. package/dist/components/post-closebutton.js +13 -6
  55. package/dist/components/post-collapsible-trigger.js +1 -1
  56. package/dist/components/post-collapsible-trigger2.js +135 -0
  57. package/dist/components/post-collapsible.js +1 -1
  58. package/dist/components/post-collapsible2.js +110 -0
  59. package/dist/components/post-footer.js +10 -11
  60. package/dist/components/post-header.js +30 -8
  61. package/dist/components/post-icon.js +1 -1
  62. package/dist/components/post-icon2.js +153 -0
  63. package/dist/components/post-language-option.js +8 -9
  64. package/dist/components/post-language-switch.js +12 -13
  65. package/dist/components/post-linkarea.js +3 -4
  66. package/dist/components/post-list-item.js +3 -4
  67. package/dist/components/post-list.js +4 -5
  68. package/dist/components/post-logo.js +5 -6
  69. package/dist/components/post-mainnavigation.js +4 -5
  70. package/dist/components/post-megadropdown-trigger.js +6 -7
  71. package/dist/components/post-megadropdown.js +7 -8
  72. package/dist/components/post-menu-item.js +1 -1
  73. package/dist/components/post-menu-item2.js +30 -0
  74. package/dist/components/post-menu-trigger.js +1 -1
  75. package/dist/components/post-menu-trigger2.js +110 -0
  76. package/dist/components/post-menu.js +1 -1
  77. package/dist/components/post-menu2.js +222 -0
  78. package/dist/components/post-popover.js +6 -7
  79. package/dist/components/post-popovercontainer.js +1 -1
  80. package/dist/components/post-popovercontainer2.js +3018 -0
  81. package/dist/components/post-rating.js +8 -9
  82. package/dist/components/post-tab-header.js +6 -7
  83. package/dist/components/post-tab-panel.js +6 -7
  84. package/dist/components/post-tabs.js +7 -8
  85. package/dist/components/post-togglebutton.js +3 -4
  86. package/dist/components/post-tooltip-trigger.js +6 -7
  87. package/dist/components/post-tooltip.js +6 -7
  88. package/dist/components/react/index.d.ts +33 -0
  89. package/dist/components/react/index.js +2315 -0
  90. package/dist/components/react/p-0Ltezq5O.js +3 -0
  91. package/dist/components/{p-C8YtuR96.js → react/p-38PqL5iD.js} +1 -1
  92. package/dist/components/react/p-BLchVpF6.js +14 -0
  93. package/dist/components/react/p-C35MCWIp.js +35 -0
  94. package/dist/components/{p-Dg6sSnLv.js → react/p-CGsAj6ij.js} +1 -1
  95. package/dist/components/react/p-CJ80BZ06.js +178 -0
  96. package/dist/{esm/index-BWC0gtGU.js → components/react/p-CV7fm1rW.js} +1 -1
  97. package/dist/components/react/p-C_2k3G1c.js +264 -0
  98. package/dist/components/{p-D1Ldeko3.js → react/p-Ce7jgYmK.js} +2 -2
  99. package/dist/components/{p-DNnYEFO6.js → react/p-CiYSngKM.js} +7 -7
  100. package/dist/components/{p-Cpy7mEQb.js → react/p-Da5wbVP8.js} +1 -1
  101. package/dist/components/{p-9rHPmDn6.js → react/p-Dq9F2i7n.js} +2 -2
  102. package/dist/components/{p-jLh9Y0sO.js → react/p-DzYquz3e.js} +2 -2
  103. package/dist/components/{p-C1i4rB_c.js → react/p-JHuJA2Lv.js} +4 -4
  104. package/dist/components/react/p-SbIC4aZX.js +11 -0
  105. package/dist/components/{p-Cd5RHPSU.js → react/p-Tg0GNTZM.js} +2 -2
  106. package/dist/{esm/event-from-8U5GFtQP.js → components/react/p-kraHE1r3.js} +2 -2
  107. package/dist/components/{p-DQE6fqIb.js → react/p-q8Fvf8A0.js} +1 -1
  108. package/dist/components/react/p-r4txK0AC.js +3 -0
  109. package/dist/components/react/post-accordion-item.d.ts +11 -0
  110. package/dist/components/react/post-accordion-item.js +6 -0
  111. package/dist/components/react/post-accordion.d.ts +11 -0
  112. package/dist/components/react/post-accordion.js +6 -0
  113. package/dist/components/react/post-avatar.d.ts +11 -0
  114. package/dist/components/react/post-avatar.js +226 -0
  115. package/dist/components/react/post-back-to-top.d.ts +11 -0
  116. package/dist/components/react/post-back-to-top.js +145 -0
  117. package/dist/components/react/post-banner.d.ts +11 -0
  118. package/dist/components/react/post-banner.js +99 -0
  119. package/dist/components/react/post-breadcrumb-item.d.ts +11 -0
  120. package/dist/components/react/post-breadcrumb-item.js +6 -0
  121. package/dist/components/react/post-breadcrumbs.d.ts +11 -0
  122. package/dist/components/react/post-breadcrumbs.js +187 -0
  123. package/dist/components/react/post-card-control.d.ts +11 -0
  124. package/dist/components/react/post-card-control.js +327 -0
  125. package/dist/components/react/post-closebutton.d.ts +11 -0
  126. package/dist/components/react/post-closebutton.js +50 -0
  127. package/dist/components/react/post-collapsible-trigger.d.ts +11 -0
  128. package/dist/components/react/post-collapsible-trigger.js +6 -0
  129. package/dist/components/react/post-collapsible.d.ts +11 -0
  130. package/dist/components/react/post-collapsible.js +6 -0
  131. package/dist/components/react/post-footer.d.ts +11 -0
  132. package/dist/components/react/post-footer.js +117 -0
  133. package/dist/components/react/post-header.d.ts +11 -0
  134. package/dist/components/react/post-header.js +333 -0
  135. package/dist/components/react/post-icon.d.ts +11 -0
  136. package/dist/components/react/post-icon.js +6 -0
  137. package/dist/components/react/post-language-option.d.ts +11 -0
  138. package/dist/components/react/post-language-option.js +101 -0
  139. package/dist/components/react/post-language-switch.d.ts +11 -0
  140. package/dist/components/react/post-language-switch.js +159 -0
  141. package/dist/components/react/post-linkarea.d.ts +11 -0
  142. package/dist/components/react/post-linkarea.js +46 -0
  143. package/dist/components/react/post-list-item.d.ts +11 -0
  144. package/dist/components/react/post-list-item.js +39 -0
  145. package/dist/components/react/post-list.d.ts +11 -0
  146. package/dist/components/react/post-list.js +62 -0
  147. package/dist/components/react/post-logo.d.ts +11 -0
  148. package/dist/components/react/post-logo.js +59 -0
  149. package/dist/components/react/post-mainnavigation.d.ts +11 -0
  150. package/dist/components/react/post-mainnavigation.js +181 -0
  151. package/dist/components/react/post-megadropdown-trigger.d.ts +11 -0
  152. package/dist/components/react/post-megadropdown-trigger.js +137 -0
  153. package/dist/components/react/post-megadropdown.d.ts +11 -0
  154. package/dist/components/react/post-megadropdown.js +197 -0
  155. package/dist/components/react/post-menu-item.d.ts +11 -0
  156. package/dist/components/react/post-menu-item.js +6 -0
  157. package/dist/components/react/post-menu-trigger.d.ts +11 -0
  158. package/dist/components/react/post-menu-trigger.js +6 -0
  159. package/dist/components/react/post-menu.d.ts +11 -0
  160. package/dist/components/react/post-menu.js +6 -0
  161. package/dist/components/react/post-popover.d.ts +11 -0
  162. package/dist/components/react/post-popover.js +189 -0
  163. package/dist/components/react/post-popovercontainer.d.ts +11 -0
  164. package/dist/components/react/post-popovercontainer.js +6 -0
  165. package/dist/components/react/post-rating.d.ts +11 -0
  166. package/dist/components/react/post-rating.js +153 -0
  167. package/dist/components/react/post-tab-header.d.ts +11 -0
  168. package/dist/components/react/post-tab-header.js +53 -0
  169. package/dist/components/react/post-tab-panel.d.ts +11 -0
  170. package/dist/components/react/post-tab-panel.js +55 -0
  171. package/dist/components/react/post-tabs.d.ts +11 -0
  172. package/dist/components/react/post-tabs.js +197 -0
  173. package/dist/components/react/post-togglebutton.d.ts +11 -0
  174. package/dist/components/react/post-togglebutton.js +57 -0
  175. package/dist/components/react/post-tooltip-trigger.d.ts +11 -0
  176. package/dist/components/react/post-tooltip-trigger.js +5223 -0
  177. package/dist/components/react/post-tooltip.d.ts +11 -0
  178. package/dist/components/react/post-tooltip.js +115 -0
  179. package/dist/components/switch-variants.js +3 -0
  180. package/dist/docs.json +43 -76
  181. package/dist/esm/event-from-kraHE1r3.js +105 -0
  182. package/dist/esm/index-C8a0ddDa.js +8 -8
  183. package/dist/esm/index-VmK3ABCB.js +88 -0
  184. package/dist/esm/loader.js +1 -1
  185. package/dist/esm/package-0Ltezq5O.js +3 -0
  186. package/dist/esm/post-accordion_2.entry.js +5 -5
  187. package/dist/esm/post-avatar.entry.js +92 -55
  188. package/dist/esm/post-back-to-top.entry.js +33 -8
  189. package/dist/esm/post-banner.entry.js +32 -36
  190. package/dist/esm/post-breadcrumb-item_2.entry.js +2 -2
  191. package/dist/esm/post-breadcrumbs.entry.js +2 -2
  192. package/dist/esm/post-card-control.entry.js +4 -4
  193. package/dist/esm/post-closebutton_15.entry.js +38 -7
  194. package/dist/esm/post-collapsible_2.entry.js +3 -3
  195. package/dist/esm/post-components.js +1 -1
  196. package/dist/esm/post-footer.entry.js +2 -2
  197. package/dist/esm/post-linkarea.entry.js +1 -1
  198. package/dist/esm/post-popover.entry.js +2 -2
  199. package/dist/esm/post-rating.entry.js +2 -2
  200. package/dist/esm/post-tab-header.entry.js +2 -2
  201. package/dist/esm/post-tab-panel.entry.js +2 -2
  202. package/dist/esm/post-tabs.entry.js +2 -2
  203. package/dist/esm/post-tooltip-trigger.entry.js +2 -2
  204. package/dist/esm/post-tooltip.entry.js +2 -2
  205. package/dist/loader/cdn.js +1 -0
  206. package/dist/loader/index.cjs.js +1 -0
  207. package/{loader → dist/loader}/index.d.ts +1 -1
  208. package/dist/loader/index.es2017.js +1 -0
  209. package/{loader → dist/loader}/index.js +1 -1
  210. package/dist/post-components/p-0Ltezq5O.js +1 -0
  211. package/dist/post-components/{p-eddb07df.entry.js → p-16772417.entry.js} +1 -1
  212. package/dist/post-components/{p-1dee733a.entry.js → p-38d3d441.entry.js} +1 -1
  213. package/dist/post-components/{p-470750be.entry.js → p-3c71f590.entry.js} +1 -1
  214. package/dist/post-components/p-40f21542.entry.js +1 -0
  215. package/dist/post-components/{p-30f12b7c.entry.js → p-4243cdd1.entry.js} +1 -1
  216. package/dist/post-components/p-4c18cb8c.entry.js +1 -0
  217. package/dist/post-components/{p-7819009b.entry.js → p-51dc7647.entry.js} +1 -1
  218. package/dist/post-components/{p-80bad606.entry.js → p-6777e505.entry.js} +1 -1
  219. package/dist/post-components/{p-7689015e.entry.js → p-6add880f.entry.js} +1 -1
  220. package/dist/post-components/{p-74a9aafc.entry.js → p-8363fedb.entry.js} +1 -1
  221. package/dist/post-components/p-83998038.entry.js +1 -0
  222. package/dist/post-components/{p-cb937e6b.entry.js → p-85bb1b5e.entry.js} +1 -1
  223. package/dist/post-components/{p-a0a1cab6.entry.js → p-8f4d8685.entry.js} +1 -1
  224. package/dist/post-components/{p-a69c874a.entry.js → p-95ad536d.entry.js} +1 -1
  225. package/dist/post-components/{p-3789cf50.entry.js → p-9d806e89.entry.js} +1 -1
  226. package/dist/post-components/{p-BWC0gtGU.js → p-VmK3ABCB.js} +1 -1
  227. package/dist/post-components/p-aad86320.entry.js +1 -0
  228. package/dist/post-components/p-c3e38acf.entry.js +1 -0
  229. package/dist/post-components/{p-ba13450e.entry.js → p-d61bb2ff.entry.js} +1 -1
  230. package/dist/post-components/p-kraHE1r3.js +1 -0
  231. package/dist/post-components/post-components.esm.js +1 -1
  232. package/dist/types/animations/slide-and-fade.d.ts +2 -0
  233. package/dist/types/components/post-accordion-item/post-accordion-item.d.ts +3 -3
  234. package/dist/types/components/post-avatar/avatar-utils.d.ts +3 -0
  235. package/dist/types/components/post-avatar/post-avatar.d.ts +14 -11
  236. package/dist/types/components/post-banner/post-banner.d.ts +6 -14
  237. package/dist/types/components/post-card-control/post-card-control.d.ts +7 -7
  238. package/dist/types/components/post-closebutton/post-closebutton.d.ts +2 -0
  239. package/dist/types/components/post-menu/post-menu.d.ts +3 -0
  240. package/dist/types/components/post-tabs/post-tabs.d.ts +2 -2
  241. package/dist/types/components.d.ts +9 -27
  242. package/dist/types/utils/component-on-ready.d.ts +2 -2
  243. package/hydrate/index.js +208 -142
  244. package/hydrate/index.mjs +208 -142
  245. package/package.json +20 -10
  246. package/dist/cjs/slide-CbBL7A8w.js +0 -28
  247. package/dist/components/p-7hVD-I9l.js +0 -3
  248. package/dist/components/p-BuLMaH5t.js +0 -25
  249. package/dist/esm/package-7hVD-I9l.js +0 -3
  250. package/dist/esm/slide-BuLMaH5t.js +0 -25
  251. package/dist/post-components/p-26730afe.entry.js +0 -1
  252. package/dist/post-components/p-2d3fb75c.entry.js +0 -1
  253. package/dist/post-components/p-2ed74834.entry.js +0 -1
  254. package/dist/post-components/p-7hVD-I9l.js +0 -1
  255. package/dist/post-components/p-8U5GFtQP.js +0 -1
  256. package/dist/post-components/p-BuLMaH5t.js +0 -1
  257. package/dist/post-components/p-cb5af9d8.entry.js +0 -1
  258. package/dist/post-components/p-ea9ae6b7.entry.js +0 -1
  259. package/loader/cdn.js +0 -1
  260. package/loader/index.cjs.js +0 -1
  261. package/loader/index.es2017.js +0 -1
  262. /package/dist/components/{p-CJ80BZ06.js → breakpoints.js} +0 -0
  263. /package/dist/components/{p-SbIC4aZX.js → fade.js} +0 -0
  264. /package/dist/components/{p-C35MCWIp.js → get-focusable-children.js} +0 -0
  265. /package/dist/components/{p-r4txK0AC.js → heading-levels.js} +0 -0
  266. /package/dist/components/{p-BLchVpF6.js → index.browser.js} +0 -0
  267. /package/dist/components/{p-CV7fm1rW.js → index2.js} +0 -0
  268. /package/dist/components/{p-C_2k3G1c.js → long-press-event.js} +0 -0
  269. /package/dist/components/{p-CBFgkSgY.js → react/p-CBFgkSgY.js} +0 -0
  270. /package/dist/components/{p-DjIHLduJ.js → react/p-DjIHLduJ.js} +0 -0
@@ -0,0 +1,11 @@
1
+ const fadeDuration = 200;
2
+ const fadedOutKeyframe = { opacity: '0' };
3
+ const fadedInKeyframe = { opacity: '1' };
4
+ function fadeIn(el) {
5
+ return el.animate([fadedOutKeyframe, fadedInKeyframe], { duration: fadeDuration });
6
+ }
7
+ function fadeOut(el) {
8
+ return el.animate([fadedInKeyframe, fadedOutKeyframe], { duration: fadeDuration });
9
+ }
10
+
11
+ export { fadeIn as a, fadeOut as f };
@@ -1,8 +1,8 @@
1
1
  import { p as proxyCustomElement, H, h, a as Host } from './index.js';
2
- import { v as version } from './p-7hVD-I9l.js';
2
+ import { v as version } from './p-0Ltezq5O.js';
3
3
  import { c as checkRequiredAndType } from './p-CV7fm1rW.js';
4
4
  import './p-CJ80BZ06.js';
5
- import { E as EventFrom } from './p-8U5GFtQP.js';
5
+ import { E as EventFrom } from './p-kraHE1r3.js';
6
6
  import { g as getRoot } from './p-CBFgkSgY.js';
7
7
 
8
8
  var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
@@ -7,7 +7,7 @@
7
7
  * @returns true if the event should be processed, false otherwise
8
8
  */
9
9
  function shouldProcessEvent(event, tag, host, ignoreNestedComponents) {
10
- if (!(event instanceof CustomEvent && event.target instanceof HTMLElement))
10
+ if (!(event instanceof Event && event.target instanceof HTMLElement))
11
11
  return false;
12
12
  const eventTarget = event.target;
13
13
  if (eventTarget.localName !== tag)
@@ -38,7 +38,7 @@ function EventFrom(tag, option = { ignoreNestedComponents: true }) {
38
38
  };
39
39
  }
40
40
  else {
41
- // Creates a hidden storage property for the original method using a
41
+ // Creates a hidden storage property for the original method using a
42
42
  // modified key format (__[property]_original) to avoid naming conflicts
43
43
  const privateKey = `__${propertyKey}_original`;
44
44
  // Create hidden storage for original method
@@ -1,5 +1,5 @@
1
1
  import { p as proxyCustomElement, H, c as createEvent, h, a as Host } from './index.js';
2
- import { v as version } from './p-7hVD-I9l.js';
2
+ import { v as version } from './p-0Ltezq5O.js';
3
3
  import { I as IS_BROWSER } from './p-CJ80BZ06.js';
4
4
  import { e as checkEmptyOrType } from './p-CV7fm1rW.js';
5
5
 
@@ -0,0 +1,3 @@
1
+ const HEADING_LEVELS = [1, 2, 3, 4, 5, 6];
2
+
3
+ export { HEADING_LEVELS as H };
@@ -0,0 +1,11 @@
1
+ import type { Components, JSX } from "../../types/components";
2
+
3
+ interface PostAccordionItem extends Components.PostAccordionItem, HTMLElement {}
4
+ export const PostAccordionItem: {
5
+ prototype: PostAccordionItem;
6
+ new (): PostAccordionItem;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;
@@ -0,0 +1,6 @@
1
+ import { P as PostAccordionItem$1, d as defineCustomElement$1 } from './p-CiYSngKM.js';
2
+
3
+ const PostAccordionItem = PostAccordionItem$1;
4
+ const defineCustomElement = defineCustomElement$1;
5
+
6
+ export { PostAccordionItem, defineCustomElement };
@@ -0,0 +1,11 @@
1
+ import type { Components, JSX } from "../../types/components";
2
+
3
+ interface PostAccordion extends Components.PostAccordion, HTMLElement {}
4
+ export const PostAccordion: {
5
+ prototype: PostAccordion;
6
+ new (): PostAccordion;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;
@@ -0,0 +1,6 @@
1
+ import { P as PostAccordion$1, d as defineCustomElement$1 } from './p-Dq9F2i7n.js';
2
+
3
+ const PostAccordion = PostAccordion$1;
4
+ const defineCustomElement = defineCustomElement$1;
5
+
6
+ export { PostAccordion, defineCustomElement };
@@ -0,0 +1,11 @@
1
+ import type { Components, JSX } from "../../types/components";
2
+
3
+ interface PostAvatar extends Components.PostAvatar, HTMLElement {}
4
+ export const PostAvatar: {
5
+ prototype: PostAvatar;
6
+ new (): PostAvatar;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;
@@ -0,0 +1,226 @@
1
+ import { p as proxyCustomElement, H, h, a as Host } from './index.js';
2
+ import { v as version } from './p-0Ltezq5O.js';
3
+ import { c as checkRequiredAndType, e as checkEmptyOrType, f as checkEmptyOrPattern } from './p-CV7fm1rW.js';
4
+ import './p-CJ80BZ06.js';
5
+
6
+ // https://docs.gravatar.com/api/avatars/images/
7
+ const GRAVATAR_DEFAULT = '404';
8
+ const GRAVATAR_RATING = 'g';
9
+ const GRAVATAR_SIZE = 80;
10
+ const GRAVATAR_BASE_URL = `https://www.gravatar.com/avatar/{email}?s=${GRAVATAR_SIZE}&d=${GRAVATAR_DEFAULT}&r=${GRAVATAR_RATING}`;
11
+
12
+ const postAvatarCss = "@keyframes popIn{from{transform:scale(0.9);opacity:0;transition-property:transform,opacity,overlay,display;transition-behavior:allow-discrete;transition-duration:var(--post-transition-duration, 0.35s);transition-timing-function:linear(0, 0.007, 0.029 2.2%, 0.118 4.7%, 0.625 14.4%, 0.826 19%, 0.902, 0.962, 1.008 26.1%, 1.041 28.7%, 1.064 32.1%, 1.07 36%, 1.061 40.5%, 1.015 53.4%, 0.999 61.6%, 0.995 71.2%, 1)}to{opacity:1;transform:scale(1)}}:host{--post-avatar-bg:var(--post-scheme-color-interactive-primary-enabled-bg2);--post-avatar-fg:var(--post-scheme-color-interactive-primary-enabled-fg3);display:inline-flex;position:relative;width:var(--post-device-sizing-interactive-icon-size3);height:var(--post-device-sizing-interactive-icon-size3);background-color:var(--post-scheme-color-interactive-primary-enabled-stroke3);border:var(--post-device-border-width-default) solid var(--post-scheme-color-interactive-primary-enabled-stroke3);border-radius:var(--post-device-border-radius-round);font-size:var(--post-device-font-size-8);vertical-align:top;line-height:1}:host::after{display:block;content:\"\";position:absolute;inset:0;z-index:1;border-radius:inherit}*,*::before,*::after{box-sizing:border-box}slot,img,::slotted(img){display:block;width:100%;height:100%}img,::slotted(img){border-radius:var(--post-device-border-radius-round)}::slotted(:not(img)){display:none !important}.initials{display:flex;justify-content:center;align-items:center;position:relative;z-index:2;width:100%;height:100%;background-color:var(--post-avatar-bg);border-radius:var(--post-device-border-radius-round);color:var(--post-avatar-fg);text-transform:uppercase}.initials span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}";
13
+
14
+ const emailPattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
15
+ var AvatarType;
16
+ (function (AvatarType) {
17
+ AvatarType["Slotted"] = "slotted";
18
+ AvatarType["Image"] = "image";
19
+ AvatarType["Initials"] = "initials";
20
+ AvatarType[AvatarType["Null"] = null] = "Null";
21
+ })(AvatarType || (AvatarType = {}));
22
+ const PostAvatar$1 = /*@__PURE__*/ proxyCustomElement(class PostAvatar extends H {
23
+ constructor() {
24
+ super();
25
+ this.__registerHost();
26
+ this.__attachShadow();
27
+ this.avatarType = null;
28
+ this.imageUrl = '';
29
+ this.imageAlt = '';
30
+ this.initials = '';
31
+ // To handle email or userid updates and reset the storage item
32
+ this.storageKey = '';
33
+ }
34
+ validateFirstname() {
35
+ checkRequiredAndType(this, 'firstname', 'string');
36
+ }
37
+ validateLastname() {
38
+ checkEmptyOrType(this, 'lastname', 'string');
39
+ }
40
+ updateUserid() {
41
+ this.validateUserId();
42
+ this.getAvatarImage();
43
+ }
44
+ updateEmail() {
45
+ this.validateEmail();
46
+ this.getAvatarImage();
47
+ }
48
+ validateUserId() {
49
+ checkEmptyOrType(this, 'userid', 'string');
50
+ }
51
+ validateEmail() {
52
+ if (this.email)
53
+ checkEmptyOrPattern(this, 'email', emailPattern);
54
+ }
55
+ async getAvatarImage() {
56
+ let imageLoaded = false;
57
+ this.slottedImage = this.host.querySelector('img');
58
+ const imageUrl = this.slottedImage?.getAttribute('src');
59
+ if (!imageUrl) {
60
+ if (this.userid) {
61
+ imageLoaded = await this.getImageByProp(this.userid, this.fetchImageByUserId.bind(this));
62
+ }
63
+ if (!imageLoaded && this.email?.match(emailPattern)) {
64
+ imageLoaded = await this.getImageByProp(this.email, this.fetchImageByEmail.bind(this));
65
+ }
66
+ if (!imageLoaded) {
67
+ this.getAvatarInitials();
68
+ }
69
+ }
70
+ else {
71
+ const slottedImageLoaded = await this.getImageByProp(imageUrl, this.fetchSlottedImage.bind(this));
72
+ if (!slottedImageLoaded) {
73
+ this.slottedImage.style.display = 'none';
74
+ this.getAvatarInitials();
75
+ }
76
+ else {
77
+ this.slottedImage.style.display = 'block';
78
+ }
79
+ }
80
+ }
81
+ async getImageByProp(prop, fetchImage) {
82
+ if (!prop)
83
+ return false;
84
+ let imageResponse;
85
+ try {
86
+ imageResponse = await fetchImage(prop);
87
+ }
88
+ catch (error) {
89
+ console.info('Loading avatar image failed.', error);
90
+ return false;
91
+ }
92
+ if (!imageResponse?.ok) {
93
+ return false;
94
+ }
95
+ else {
96
+ this.imageUrl = imageResponse.url;
97
+ this.imageAlt = `${this.firstname} ${this.lastname} avatar`;
98
+ this.avatarType = AvatarType.Image;
99
+ return true;
100
+ }
101
+ }
102
+ async fetchImageByUserId() {
103
+ return await fetch(PostAvatar.INTERNAL_USERID_IMAGE_SRC.replace('{userid}', encodeURIComponent(this.userid)));
104
+ }
105
+ async fetchImageByEmail() {
106
+ const email = await this.cryptify(this.email);
107
+ const imageUrl = GRAVATAR_BASE_URL.replace('{email}', email);
108
+ return await fetch(imageUrl);
109
+ }
110
+ async fetchSlottedImage(imageUrl) {
111
+ return await fetch(imageUrl, { method: 'HEAD' });
112
+ }
113
+ getAvatarInitials() {
114
+ this.initials = this.getInitials();
115
+ this.avatarType = AvatarType.Initials;
116
+ }
117
+ getNames() {
118
+ return [this.firstname, this.lastname].filter(n => n);
119
+ }
120
+ getInitials() {
121
+ return this.getNames()
122
+ .map(n => n.charAt(0))
123
+ .join('')
124
+ .trim();
125
+ }
126
+ async cryptify(key) {
127
+ return await crypto.subtle.digest('SHA-256', new TextEncoder().encode(key)).then(buffer => {
128
+ return Array.from(new Uint8Array(buffer))
129
+ .map(bytes => bytes.toString(16).padStart(2, '0'))
130
+ .join('');
131
+ });
132
+ }
133
+ slotChanged() {
134
+ const slot = this.host.shadowRoot.querySelector('slot');
135
+ const assignedNodes = slot?.assignedNodes({ flatten: true }) || [];
136
+ assignedNodes.forEach(node => {
137
+ if (node.nodeType === Node.ELEMENT_NODE) {
138
+ const el = node;
139
+ if (el.tagName === 'IMG') {
140
+ this.observeImageSrcChanges(el);
141
+ }
142
+ }
143
+ });
144
+ this.getAvatarImage();
145
+ }
146
+ // Observe the Slotted image src attribute and update the image
147
+ observeImageSrcChanges(img) {
148
+ if (this.slottedImageObserver) {
149
+ this.slottedImageObserver.disconnect();
150
+ }
151
+ this.slottedImageObserver = new MutationObserver(mutations => {
152
+ mutations.forEach(mutation => {
153
+ if (mutation.type === 'attributes' && mutation.attributeName === 'src') {
154
+ this.getAvatarImage();
155
+ }
156
+ });
157
+ });
158
+ this.slottedImageObserver.observe(img, { attributes: true, attributeFilter: ['src'] });
159
+ }
160
+ connectedCallback() {
161
+ //This provides a fallback by showing the initials while the image is still loading or delayed.
162
+ this.getAvatarInitials();
163
+ this.getAvatarImage();
164
+ }
165
+ componentDidLoad() {
166
+ this.validateFirstname();
167
+ this.validateLastname();
168
+ this.validateUserId();
169
+ this.validateEmail();
170
+ }
171
+ render() {
172
+ const initials = this.getNames().reduce((acc, n, i) => {
173
+ if (i > 0)
174
+ acc.push(h("span", null, " "));
175
+ acc.push(n.charAt(0));
176
+ acc.push(h("span", null, n.slice(1)));
177
+ // eslint-disable-next-line @stencil-community/render-returns-host
178
+ return acc;
179
+ }, []);
180
+ return (h(Host, { "data-version": version }, h("span", { class: this.avatarType === 'slotted' ? '' : 'd-none' }, h("slot", { onSlotchange: this.slotChanged.bind(this) })), this.avatarType === 'image' && h("img", { src: this.imageUrl, alt: this.imageAlt }), this.avatarType === 'initials' && h("div", { class: "initials" }, initials)));
181
+ }
182
+ get host() { return this; }
183
+ static get watchers() { return {
184
+ "firstname": ["validateFirstname"],
185
+ "lastname": ["validateLastname"],
186
+ "userid": ["updateUserid"],
187
+ "email": ["updateEmail"]
188
+ }; }
189
+ static get style() { return postAvatarCss; }
190
+ }, [1, "post-avatar", {
191
+ "firstname": [513],
192
+ "lastname": [1],
193
+ "userid": [1],
194
+ "email": [1],
195
+ "slottedImage": [32],
196
+ "avatarType": [32],
197
+ "imageUrl": [32],
198
+ "imageAlt": [32],
199
+ "initials": [32],
200
+ "storageKey": [32]
201
+ }, undefined, {
202
+ "firstname": ["validateFirstname"],
203
+ "lastname": ["validateLastname"],
204
+ "userid": ["updateUserid"],
205
+ "email": ["updateEmail"]
206
+ }]);
207
+ PostAvatar$1.INTERNAL_USERID_IMAGE_SRC = 'https://web.post.ch/UserProfileImage/{userid}.png';
208
+ function defineCustomElement$1() {
209
+ if (typeof customElements === "undefined") {
210
+ return;
211
+ }
212
+ const components = ["post-avatar"];
213
+ components.forEach(tagName => { switch (tagName) {
214
+ case "post-avatar":
215
+ if (!customElements.get(tagName)) {
216
+ customElements.define(tagName, PostAvatar$1);
217
+ }
218
+ break;
219
+ } });
220
+ }
221
+ defineCustomElement$1();
222
+
223
+ const PostAvatar = PostAvatar$1;
224
+ const defineCustomElement = defineCustomElement$1;
225
+
226
+ export { PostAvatar, defineCustomElement };
@@ -0,0 +1,11 @@
1
+ import type { Components, JSX } from "../../types/components";
2
+
3
+ interface PostBackToTop extends Components.PostBackToTop, HTMLElement {}
4
+ export const PostBackToTop: {
5
+ prototype: PostBackToTop;
6
+ new (): PostBackToTop;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;
@@ -0,0 +1,145 @@
1
+ import { p as proxyCustomElement, H, h, a as Host } from './index.js';
2
+ import { v as version } from './p-0Ltezq5O.js';
3
+ import { c as checkRequiredAndType } from './p-CV7fm1rW.js';
4
+ import './p-CJ80BZ06.js';
5
+ import { d as defineCustomElement$2 } from './p-Da5wbVP8.js';
6
+
7
+ // Define common animation options
8
+ const easing = 'ease';
9
+ const defaultDuration = 500;
10
+ const fill = 'forwards';
11
+ function createSlideFadeAnimation(el, keyframes, duration = defaultDuration) {
12
+ return el.animate(keyframes, {
13
+ duration: duration,
14
+ easing,
15
+ fill,
16
+ });
17
+ }
18
+ function slideUpAndFadeOut(el, translateY = '-100%', duration = defaultDuration) {
19
+ const keyframes = [
20
+ { transform: 'translateY(0)', opacity: '1' },
21
+ { transform: `translateY(${translateY})`, opacity: '0' },
22
+ ];
23
+ return createSlideFadeAnimation(el, keyframes, duration);
24
+ }
25
+ function slideDownAndFadeIn(el, translateY = '-100%', duration = defaultDuration) {
26
+ const keyframes = [
27
+ { transform: `translateY(${translateY})`, opacity: '0' },
28
+ { transform: 'translateY(0)', opacity: '1' },
29
+ ];
30
+ return createSlideFadeAnimation(el, keyframes, duration);
31
+ }
32
+
33
+ const postBackToTopCss = ":host{opacity:0;--post-floating-button-position-top:var(--post-device-position-4);--post-back-to-top-position-top:calc( var(--post-header-height) + var(--post-floating-button-position-top) );--post-back-to-top-elevation:var(--post-device-elevation-300);position:fixed;inset-block-start:var(--post-back-to-top-position-top);inset-inline-end:var(--post-device-position-1)}:host .back-to-top{padding:0;overflow:visible;border:0;background:none;color:var(--post-scheme-color-interactive-button-secondary-enabled-fg);font:inherit;-webkit-user-select:none;user-select:none;appearance:button;box-shadow:var(--post-back-to-top-elevation);cursor:pointer;border-radius:var(--post-device-border-radius-round);width:var(--post-device-sizing-interactive-button-height-2);height:var(--post-device-sizing-interactive-button-height-2);border:var(--post-device-border-width-default) solid var(--post-scheme-color-interactive-button-secondary-enabled-stroke);color:var(--post-scheme-color-interactive-button-secondary-enabled-fg);background-color:var(--post-scheme-color-interactive-button-secondary-enabled-bg);display:flex;align-items:center;justify-content:center}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host .back-to-top{background-color:ButtonFace !important}:host .back-to-top:hover{background-color:Highlight !important}}:host .back-to-top{outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}:host .back-to-top:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host .back-to-top:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){:host .back-to-top:is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host .back-to-top:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}:host .back-to-top:hover{border-color:var(--post-scheme-color-interactive-button-secondary-hover-stroke);color:var(--post-scheme-color-interactive-button-secondary-hover-fg);background-color:var(--post-scheme-color-interactive-button-secondary-hover-bg)}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host .back-to-top:hover{color:HighlightText !important}}:host .back-to-top post-icon{height:var(--post-device-sizing-interactive-button-icon-3);width:var(--post-device-sizing-interactive-button-icon-3)}:host .visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}";
34
+
35
+ const PostBackToTop$1 = /*@__PURE__*/ proxyCustomElement(class PostBackToTop extends H {
36
+ constructor() {
37
+ super();
38
+ this.__registerHost();
39
+ this.__attachShadow();
40
+ this.belowFold = false;
41
+ this.handleScroll = () => {
42
+ this.belowFold = this.isBelowFold();
43
+ };
44
+ }
45
+ isBelowFold() {
46
+ return window.scrollY > window.innerHeight;
47
+ }
48
+ validateLabel() {
49
+ checkRequiredAndType(this, 'label', 'string');
50
+ }
51
+ /*Watch for changes in belowFold to show/hide the back to top button*/
52
+ watchBelowFold(newValue) {
53
+ if (newValue) {
54
+ slideDownAndFadeIn(this.host, this.translateY);
55
+ }
56
+ else {
57
+ slideUpAndFadeOut(this.host, this.translateY);
58
+ }
59
+ }
60
+ scrollToTop() {
61
+ window.scrollTo({
62
+ top: 0,
63
+ behavior: 'smooth',
64
+ });
65
+ }
66
+ getSecondPixelValue(parts) {
67
+ for (const part of parts) {
68
+ const pixelValues = part.match(/\b\d+px\b/g);
69
+ if (pixelValues && pixelValues.length > 1) {
70
+ return pixelValues[1];
71
+ }
72
+ }
73
+ }
74
+ animateButton() {
75
+ // Get the back-to-top button top postiion
76
+ const positionTop = window.getComputedStyle(this.host).getPropertyValue('top');
77
+ const buttonElement = this.host.shadowRoot.querySelector('button');
78
+ // Extract the elevation height from the back-to-top button elevation token
79
+ const elevation = getComputedStyle(buttonElement).getPropertyValue('--post-back-to-top-elevation');
80
+ const elevationParts = elevation.split(',');
81
+ const elevationHeight = this.getSecondPixelValue(elevationParts);
82
+ // The translateY is calculated as => -100% (btt button height) - topPosition - elevationHeight
83
+ this.translateY =
84
+ String((-1 * 100) / 100 -
85
+ parseFloat(positionTop.replace('px', '')) -
86
+ parseFloat(elevationHeight.replace('px', ''))) + 'px';
87
+ if (this.belowFold) {
88
+ slideDownAndFadeIn(this.host, this.translateY);
89
+ }
90
+ if (!this.belowFold) {
91
+ this.host.style.transform = `translateY(${this.translateY})`;
92
+ }
93
+ }
94
+ // Set the initial state
95
+ componentWillLoad() {
96
+ this.belowFold = this.isBelowFold();
97
+ }
98
+ componentDidLoad() {
99
+ window.addEventListener('scroll', this.handleScroll, false);
100
+ this.animateButton();
101
+ this.validateLabel();
102
+ }
103
+ disconnectedCallback() {
104
+ window.removeEventListener('scroll', this.handleScroll);
105
+ }
106
+ render() {
107
+ return (h(Host, { key: '820244e9c039304895d78887000ed986707bf3b1', "data-version": version }, h("button", { key: 'c1d38883fbf31c50b2b00e08e6b22cbc6be37adb', class: "back-to-top", "aria-hidden": this.belowFold ? 'false' : 'true', tabindex: this.belowFold ? '0' : '-1', onClick: this.scrollToTop }, h("post-icon", { key: '3cc57c355a12bf500f368e906d147be10f9014e7', "aria-hidden": "true", name: "3026" }), h("span", { key: '134e5c579e2d99d64c25ce21ab538e51520a6dd6', class: "visually-hidden" }, this.label))));
108
+ }
109
+ get host() { return this; }
110
+ static get watchers() { return {
111
+ "label": ["validateLabel"],
112
+ "belowFold": ["watchBelowFold"]
113
+ }; }
114
+ static get style() { return postBackToTopCss; }
115
+ }, [1, "post-back-to-top", {
116
+ "label": [513],
117
+ "belowFold": [32]
118
+ }, undefined, {
119
+ "label": ["validateLabel"],
120
+ "belowFold": ["watchBelowFold"]
121
+ }]);
122
+ function defineCustomElement$1() {
123
+ if (typeof customElements === "undefined") {
124
+ return;
125
+ }
126
+ const components = ["post-back-to-top", "post-icon"];
127
+ components.forEach(tagName => { switch (tagName) {
128
+ case "post-back-to-top":
129
+ if (!customElements.get(tagName)) {
130
+ customElements.define(tagName, PostBackToTop$1);
131
+ }
132
+ break;
133
+ case "post-icon":
134
+ if (!customElements.get(tagName)) {
135
+ defineCustomElement$2();
136
+ }
137
+ break;
138
+ } });
139
+ }
140
+ defineCustomElement$1();
141
+
142
+ const PostBackToTop = PostBackToTop$1;
143
+ const defineCustomElement = defineCustomElement$1;
144
+
145
+ export { PostBackToTop, defineCustomElement };
@@ -0,0 +1,11 @@
1
+ import type { Components, JSX } from "../../types/components";
2
+
3
+ interface PostBanner extends Components.PostBanner, HTMLElement {}
4
+ export const PostBanner: {
5
+ prototype: PostBanner;
6
+ new (): PostBanner;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;