@blateral/b.kit 2.7.5 → 2.8.1

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 (313) hide show
  1. package/cjs/Actions-c52a14e4.js +2 -0
  2. package/cjs/{Actions-c7b16449.js.map → Actions-c52a14e4.js.map} +1 -1
  3. package/cjs/Bdot-62c8e349.js +2 -0
  4. package/cjs/{Bdot-5f8e0450.js.map → Bdot-62c8e349.js.map} +1 -1
  5. package/cjs/Button-1adf99b8.js +2 -0
  6. package/cjs/{Button-51ea72b7.js.map → Button-1adf99b8.js.map} +1 -1
  7. package/cjs/ButtonGhost-fbab8769.js +2 -0
  8. package/cjs/{ButtonGhost-628bbd60.js.map → ButtonGhost-fbab8769.js.map} +1 -1
  9. package/cjs/Callout-d84ca60b.js +2 -0
  10. package/cjs/{Callout-5dd16679.js.map → Callout-d84ca60b.js.map} +1 -1
  11. package/cjs/Checkbox-8dccd42f.js +2 -0
  12. package/cjs/Checkbox-8dccd42f.js.map +1 -0
  13. package/cjs/Control-e15e1572.js +2 -0
  14. package/cjs/{Control-08d09950.js.map → Control-e15e1572.js.map} +1 -1
  15. package/cjs/Copy-a0bc570d.js +2 -0
  16. package/cjs/{Copy-ea6ab025.js.map → Copy-a0bc570d.js.map} +1 -1
  17. package/cjs/EventBlock-4e406696.js +2 -0
  18. package/cjs/{EventBlock-04e719a7.js.map → EventBlock-4e406696.js.map} +1 -1
  19. package/cjs/Filter-89286db9.js +2 -0
  20. package/cjs/Filter-89286db9.js.map +1 -0
  21. package/cjs/FilterBar-0781490f.js +2 -0
  22. package/cjs/FilterBar-0781490f.js.map +1 -0
  23. package/cjs/FilterField-7efcacb7.js +2 -0
  24. package/cjs/FilterField-7efcacb7.js.map +1 -0
  25. package/cjs/Grid-1acefee9.js +2 -0
  26. package/cjs/{Grid-6f4f99bc.js.map → Grid-1acefee9.js.map} +1 -1
  27. package/cjs/Image-94820dfd.js +2 -0
  28. package/cjs/{Image-c72f7a80.js.map → Image-94820dfd.js.map} +1 -1
  29. package/cjs/InfoList-e416058c.js +2 -0
  30. package/cjs/{InfoList-71d3388a.js.map → InfoList-e416058c.js.map} +1 -1
  31. package/cjs/LanguageSwitcher-aa96cc7d.js +2 -0
  32. package/cjs/{LanguageSwitcher-8fdd22ba.js.map → LanguageSwitcher-aa96cc7d.js.map} +1 -1
  33. package/cjs/LibThemeProvider-69109901.js +2 -0
  34. package/cjs/{LibThemeProvider-4823de57.js.map → LibThemeProvider-69109901.js.map} +1 -1
  35. package/cjs/Link-8951180c.js +2 -0
  36. package/cjs/{Link-5a6f1633.js.map → Link-8951180c.js.map} +1 -1
  37. package/cjs/MultiselectDropdown-a16ea1c9.js +2 -0
  38. package/cjs/MultiselectDropdown-a16ea1c9.js.map +1 -0
  39. package/cjs/Navigation-6abb6213.js +2 -0
  40. package/cjs/{Navigation-939e4d0e.js.map → Navigation-6abb6213.js.map} +1 -1
  41. package/cjs/Pointer-331140b6.js +2 -0
  42. package/cjs/{Pointer-fde7b548.js.map → Pointer-331140b6.js.map} +1 -1
  43. package/cjs/Section-c9a16ccc.js +2 -0
  44. package/cjs/{Section-e8e8cf81.js.map → Section-c9a16ccc.js.map} +1 -1
  45. package/cjs/SocialList-aec9a5c2.js +2 -0
  46. package/cjs/{SocialList-1d5f75a8.js.map → SocialList-aec9a5c2.js.map} +1 -1
  47. package/cjs/TableBlock-c545ca8d.js +2 -0
  48. package/cjs/{TableBlock-f2c59d9b.js.map → TableBlock-c545ca8d.js.map} +1 -1
  49. package/cjs/Tag-937849ad.js +2 -0
  50. package/cjs/{Tag-9238cf0c.js.map → Tag-937849ad.js.map} +1 -1
  51. package/cjs/Textarea-599e94a4.js +2 -0
  52. package/cjs/{Textarea-03bd2c34.js.map → Textarea-599e94a4.js.map} +1 -1
  53. package/cjs/Textfield-24f468be.js +2 -0
  54. package/cjs/Textfield-24f468be.js.map +1 -0
  55. package/cjs/VideoBlock-1fbf598b.js +2 -0
  56. package/cjs/{VideoBlock-dea7de8a.js.map → VideoBlock-1fbf598b.js.map} +1 -1
  57. package/cjs/VideoCard-905c08d2.js +2 -0
  58. package/cjs/{VideoCard-f6c436ca.js.map → VideoCard-905c08d2.js.map} +1 -1
  59. package/cjs/Wrapper-bca9463e.js +2 -0
  60. package/cjs/{Wrapper-ff6854d7.js.map → Wrapper-bca9463e.js.map} +1 -1
  61. package/cjs/base.js +1 -1
  62. package/cjs/blocks.js +1 -1
  63. package/cjs/buttons.js +1 -1
  64. package/cjs/cookies.js +1 -1
  65. package/cjs/cookies.js.map +1 -1
  66. package/cjs/fields.js +1 -1
  67. package/cjs/fields.js.map +1 -1
  68. package/cjs/footer.js +1 -1
  69. package/cjs/footer.js.map +1 -1
  70. package/cjs/formFieldText-046fcbf4.js +2 -0
  71. package/cjs/formFieldText-046fcbf4.js.map +1 -0
  72. package/cjs/headers.js +1 -1
  73. package/cjs/headers.js.map +1 -1
  74. package/cjs/hooks.js +1 -1
  75. package/cjs/hooks.js.map +1 -1
  76. package/cjs/icons.js +1 -1
  77. package/cjs/index.js +1 -1
  78. package/cjs/navigation-3f9d4ac4.js +2 -0
  79. package/cjs/{navigation-bf154e6e.js.map → navigation-3f9d4ac4.js.map} +1 -1
  80. package/cjs/navigation.js +1 -1
  81. package/cjs/navigation.js.map +1 -1
  82. package/cjs/sections.dynamicform.js +1 -1
  83. package/cjs/sections.dynamicform.js.map +1 -1
  84. package/cjs/sections.events.js +1 -1
  85. package/cjs/sections.events.js.map +1 -1
  86. package/cjs/sections.forms.js +1 -1
  87. package/cjs/sections.forms.js.map +1 -1
  88. package/cjs/sections.jobs.js +1 -1
  89. package/cjs/sections.jobs.js.map +1 -1
  90. package/cjs/sections.js +1 -1
  91. package/cjs/sections.js.map +1 -1
  92. package/cjs/sections.news.js +1 -1
  93. package/cjs/sections.news.js.map +1 -1
  94. package/cjs/sections.pois.js +1 -1
  95. package/cjs/sections.pois.js.map +1 -1
  96. package/cjs/styles-13e5d9ac.js +2 -0
  97. package/cjs/styles-13e5d9ac.js.map +1 -0
  98. package/cjs/typography.js +1 -1
  99. package/cjs/useCookieConsent-665d91cf.js +2 -0
  100. package/cjs/{useCookieConsent-aa9f1104.js.map → useCookieConsent-665d91cf.js.map} +1 -1
  101. package/cjs/useEqualSheetHeight-f1c10ec5.js +2 -0
  102. package/cjs/{useEqualSheetHeight-501f4c5f.js.map → useEqualSheetHeight-f1c10ec5.js.map} +1 -1
  103. package/cjs/useLazyInput-911b8eda.js +2 -0
  104. package/cjs/{useLazyInput-f71c221b.js.map → useLazyInput-911b8eda.js.map} +1 -1
  105. package/cjs/useLeafletMap-514304b6.js +2 -0
  106. package/cjs/{useLeafletMap-2e608b01.js.map → useLeafletMap-514304b6.js.map} +1 -1
  107. package/cjs/useMediaQuery-619d7203.js +2 -0
  108. package/cjs/{useMediaQuery-3d1054e5.js.map → useMediaQuery-619d7203.js.map} +1 -1
  109. package/cjs/useScroll-2f086e7f.js +2 -0
  110. package/cjs/useScroll-2f086e7f.js.map +1 -0
  111. package/esm/{Actions-21372b3a.js → Actions-e29b5e75.js} +3 -3
  112. package/esm/{Actions-21372b3a.js.map → Actions-e29b5e75.js.map} +1 -1
  113. package/esm/{Bdot-4db38753.js → Bdot-5e798e7e.js} +3 -3
  114. package/esm/{Bdot-4db38753.js.map → Bdot-5e798e7e.js.map} +1 -1
  115. package/esm/{Button-f9279013.js → Button-9a0dd9aa.js} +3 -3
  116. package/esm/{Button-f9279013.js.map → Button-9a0dd9aa.js.map} +1 -1
  117. package/esm/{ButtonGhost-ae2e97a2.js → ButtonGhost-fc9e7a75.js} +3 -3
  118. package/esm/{ButtonGhost-ae2e97a2.js.map → ButtonGhost-fc9e7a75.js.map} +1 -1
  119. package/esm/{Callout-a926194d.js → Callout-46f0bef0.js} +4 -4
  120. package/esm/{Callout-a926194d.js.map → Callout-46f0bef0.js.map} +1 -1
  121. package/esm/{Checkbox-dd12facd.js → Checkbox-1957067a.js} +11 -8
  122. package/esm/Checkbox-1957067a.js.map +1 -0
  123. package/esm/{Control-2d605e12.js → Control-56ec7872.js} +3 -3
  124. package/esm/{Control-2d605e12.js.map → Control-56ec7872.js.map} +1 -1
  125. package/esm/{Copy-a28aeb61.js → Copy-c6786949.js} +4 -4
  126. package/esm/{Copy-a28aeb61.js.map → Copy-c6786949.js.map} +1 -1
  127. package/esm/{EventBlock-b9204a0d.js → EventBlock-8e130f6b.js} +8 -8
  128. package/esm/{EventBlock-b9204a0d.js.map → EventBlock-8e130f6b.js.map} +1 -1
  129. package/esm/{ClockFilled-62515a8f.js → Filter-19220970.js} +321 -235
  130. package/esm/Filter-19220970.js.map +1 -0
  131. package/esm/FilterBar-2a2a09b7.js +460 -0
  132. package/esm/FilterBar-2a2a09b7.js.map +1 -0
  133. package/esm/FilterField-bec061bc.js +115 -0
  134. package/esm/FilterField-bec061bc.js.map +1 -0
  135. package/esm/{Grid-5eec127f.js → Grid-7b33e271.js} +3 -3
  136. package/esm/{Grid-5eec127f.js.map → Grid-7b33e271.js.map} +1 -1
  137. package/esm/{Image-dc2b33c1.js → Image-b26692a9.js} +5 -5
  138. package/esm/{Image-dc2b33c1.js.map → Image-b26692a9.js.map} +1 -1
  139. package/esm/{InfoList-5c4586ed.js → InfoList-b6980a42.js} +4 -4
  140. package/esm/{InfoList-5c4586ed.js.map → InfoList-b6980a42.js.map} +1 -1
  141. package/esm/{LanguageSwitcher-3fa20077.js → LanguageSwitcher-f9218fdc.js} +5 -5
  142. package/esm/{LanguageSwitcher-3fa20077.js.map → LanguageSwitcher-f9218fdc.js.map} +1 -1
  143. package/esm/{LibThemeProvider-52555ac9.js → LibThemeProvider-fb1d35ac.js} +3 -3
  144. package/esm/{LibThemeProvider-52555ac9.js.map → LibThemeProvider-fb1d35ac.js.map} +1 -1
  145. package/esm/{Link-3fd9c9b8.js → Link-6067a27f.js} +3 -3
  146. package/esm/{Link-3fd9c9b8.js.map → Link-6067a27f.js.map} +1 -1
  147. package/esm/MultiselectDropdown-a97be6bc.js +296 -0
  148. package/esm/MultiselectDropdown-a97be6bc.js.map +1 -0
  149. package/esm/{Navigation-99f6dc41.js → Navigation-bb79a1eb.js} +10 -10
  150. package/esm/{Navigation-99f6dc41.js.map → Navigation-bb79a1eb.js.map} +1 -1
  151. package/esm/{Pointer-5c77b1f1.js → Pointer-b4abee91.js} +3 -3
  152. package/esm/{Pointer-5c77b1f1.js.map → Pointer-b4abee91.js.map} +1 -1
  153. package/esm/{Section-b76e6909.js → Section-bd61eb2f.js} +3 -3
  154. package/esm/{Section-b76e6909.js.map → Section-bd61eb2f.js.map} +1 -1
  155. package/esm/{SocialList-402b8f20.js → SocialList-336b7f6d.js} +5 -5
  156. package/esm/{SocialList-402b8f20.js.map → SocialList-336b7f6d.js.map} +1 -1
  157. package/esm/{TableBlock-67fe2385.js → TableBlock-1ddfd539.js} +5 -5
  158. package/esm/{TableBlock-67fe2385.js.map → TableBlock-1ddfd539.js.map} +1 -1
  159. package/esm/{Tag-ac51e916.js → Tag-c3bd6b7f.js} +5 -5
  160. package/esm/{Tag-ac51e916.js.map → Tag-c3bd6b7f.js.map} +1 -1
  161. package/esm/{Textarea-266f1e45.js → Textarea-95352f50.js} +10 -10
  162. package/esm/{Textarea-266f1e45.js.map → Textarea-95352f50.js.map} +1 -1
  163. package/esm/{Textfield-d2f201a9.js → Textfield-99d91b4e.js} +10 -97
  164. package/esm/Textfield-99d91b4e.js.map +1 -0
  165. package/esm/{VideoBlock-b227ae6e.js → VideoBlock-474e0aa4.js} +7 -7
  166. package/esm/{VideoBlock-b227ae6e.js.map → VideoBlock-474e0aa4.js.map} +1 -1
  167. package/esm/{VideoCard-2c6e26d1.js → VideoCard-91438667.js} +7 -7
  168. package/esm/{VideoCard-2c6e26d1.js.map → VideoCard-91438667.js.map} +1 -1
  169. package/esm/{Wrapper-90dccc89.js → Wrapper-95108115.js} +3 -3
  170. package/esm/{Wrapper-90dccc89.js.map → Wrapper-95108115.js.map} +1 -1
  171. package/esm/base.js +5 -5
  172. package/esm/blocks.js +25 -16
  173. package/esm/blocks.js.map +1 -1
  174. package/esm/buttons.js +6 -6
  175. package/esm/cookies.js +7 -7
  176. package/esm/fields.js +14 -12
  177. package/esm/fields.js.map +1 -1
  178. package/esm/footer.js +11 -11
  179. package/esm/formFieldText-f4188e55.js +96 -0
  180. package/esm/formFieldText-f4188e55.js.map +1 -0
  181. package/esm/headers.js +12 -12
  182. package/esm/hooks.js +12 -83
  183. package/esm/hooks.js.map +1 -1
  184. package/esm/icons.js +5 -2
  185. package/esm/icons.js.map +1 -1
  186. package/esm/index.js +3 -3
  187. package/esm/{navigation-b89325f8.js → navigation-5216dbad.js} +2 -2
  188. package/esm/{navigation-b89325f8.js.map → navigation-5216dbad.js.map} +1 -1
  189. package/esm/navigation.js +12 -12
  190. package/esm/sections.dynamicform.js +15 -14
  191. package/esm/sections.dynamicform.js.map +1 -1
  192. package/esm/sections.events.js +13 -14
  193. package/esm/sections.events.js.map +1 -1
  194. package/esm/sections.forms.js +10 -9
  195. package/esm/sections.forms.js.map +1 -1
  196. package/esm/sections.jobs.js +12 -12
  197. package/esm/sections.js +28 -25
  198. package/esm/sections.js.map +1 -1
  199. package/esm/sections.news.js +17 -18
  200. package/esm/sections.news.js.map +1 -1
  201. package/esm/sections.pois.js +318 -143
  202. package/esm/sections.pois.js.map +1 -1
  203. package/esm/{styles-da982973.js → styles-1f1841ef.js} +4 -3
  204. package/esm/styles-1f1841ef.js.map +1 -0
  205. package/esm/typography.js +6 -6
  206. package/esm/{useCookieConsent-6b2d4d93.js → useCookieConsent-6661d419.js} +49 -49
  207. package/esm/useCookieConsent-6661d419.js.map +1 -0
  208. package/esm/{useEqualSheetHeight-97420d63.js → useEqualSheetHeight-60ff9de7.js} +4 -4
  209. package/esm/{useEqualSheetHeight-97420d63.js.map → useEqualSheetHeight-60ff9de7.js.map} +1 -1
  210. package/esm/{useLazyInput-54d1785c.js → useLazyInput-0b6932aa.js} +2 -2
  211. package/esm/{useLazyInput-54d1785c.js.map → useLazyInput-0b6932aa.js.map} +1 -1
  212. package/esm/{useLeafletMap-84170d32.js → useLeafletMap-fa0ab7d4.js} +10 -6
  213. package/esm/useLeafletMap-fa0ab7d4.js.map +1 -0
  214. package/esm/{useMediaQuery-b42fd64e.js → useMediaQuery-4c1b1fa6.js} +3 -3
  215. package/esm/{useMediaQuery-b42fd64e.js.map → useMediaQuery-4c1b1fa6.js.map} +1 -1
  216. package/esm/useScroll-881c7b04.js +76 -0
  217. package/esm/useScroll-881c7b04.js.map +1 -0
  218. package/package.json +2 -1
  219. package/types/blocks.d.ts +1 -0
  220. package/types/blocks.d.ts.map +1 -1
  221. package/types/components/base/icons/Cross.d.ts +2 -0
  222. package/types/components/base/icons/Cross.d.ts.map +1 -1
  223. package/types/components/base/icons/CrossBubble.d.ts +8 -0
  224. package/types/components/base/icons/CrossBubble.d.ts.map +1 -0
  225. package/types/components/base/icons/Icons.d.ts +3 -0
  226. package/types/components/base/icons/Icons.d.ts.map +1 -1
  227. package/types/components/base/icons/Magnifier.d.ts +2 -0
  228. package/types/components/base/icons/Magnifier.d.ts.map +1 -1
  229. package/types/components/blocks/FilterBar.d.ts +38 -0
  230. package/types/components/blocks/FilterBar.d.ts.map +1 -0
  231. package/types/components/blocks/POICard.d.ts.map +1 -1
  232. package/types/components/blocks/Portal.d.ts +8 -0
  233. package/types/components/blocks/Portal.d.ts.map +1 -0
  234. package/types/components/fields/Checkbox.d.ts +3 -1
  235. package/types/components/fields/Checkbox.d.ts.map +1 -1
  236. package/types/components/fields/FilterField.d.ts +1 -0
  237. package/types/components/fields/FilterField.d.ts.map +1 -1
  238. package/types/components/fields/MultiselectDropdown.d.ts +42 -0
  239. package/types/components/fields/MultiselectDropdown.d.ts.map +1 -0
  240. package/types/components/sections/Accordion.d.ts.map +1 -1
  241. package/types/components/sections/pois/PointOfInterestMap.d.ts +42 -1
  242. package/types/components/sections/pois/PointOfInterestMap.d.ts.map +1 -1
  243. package/types/components/sections/pois/PointOfInterestOverview.d.ts +41 -20
  244. package/types/components/sections/pois/PointOfInterestOverview.d.ts.map +1 -1
  245. package/types/components/sections/pois/filters.d.ts +10 -0
  246. package/types/components/sections/pois/filters.d.ts.map +1 -0
  247. package/types/components/sections/pois/partials/PoiFilterBar.d.ts +8 -0
  248. package/types/components/sections/pois/partials/PoiFilterBar.d.ts.map +1 -0
  249. package/types/components/sections/pois/partials/index.d.ts +3 -0
  250. package/types/components/sections/pois/partials/index.d.ts.map +1 -0
  251. package/types/fields.d.ts +1 -0
  252. package/types/fields.d.ts.map +1 -1
  253. package/types/sections.pois.d.ts +1 -0
  254. package/types/sections.pois.d.ts.map +1 -1
  255. package/types/utils/styles.d.ts +1 -0
  256. package/types/utils/styles.d.ts.map +1 -1
  257. package/types/utils/useLeafletMap.d.ts.map +1 -1
  258. package/cjs/Actions-c7b16449.js +0 -2
  259. package/cjs/Bdot-5f8e0450.js +0 -2
  260. package/cjs/Button-51ea72b7.js +0 -2
  261. package/cjs/ButtonGhost-628bbd60.js +0 -2
  262. package/cjs/Callout-5dd16679.js +0 -2
  263. package/cjs/Checkbox-1c34c7e6.js +0 -2
  264. package/cjs/Checkbox-1c34c7e6.js.map +0 -1
  265. package/cjs/ClockFilled-2483aa4a.js +0 -2
  266. package/cjs/ClockFilled-2483aa4a.js.map +0 -1
  267. package/cjs/Control-08d09950.js +0 -2
  268. package/cjs/Copy-ea6ab025.js +0 -2
  269. package/cjs/EventBlock-04e719a7.js +0 -2
  270. package/cjs/Filter-d6d90b8b.js +0 -2
  271. package/cjs/Filter-d6d90b8b.js.map +0 -1
  272. package/cjs/FilterField-cce38ffb.js +0 -2
  273. package/cjs/FilterField-cce38ffb.js.map +0 -1
  274. package/cjs/Grid-6f4f99bc.js +0 -2
  275. package/cjs/Image-c72f7a80.js +0 -2
  276. package/cjs/InfoList-71d3388a.js +0 -2
  277. package/cjs/LanguageSwitcher-8fdd22ba.js +0 -2
  278. package/cjs/LibThemeProvider-4823de57.js +0 -2
  279. package/cjs/Link-5a6f1633.js +0 -2
  280. package/cjs/Navigation-939e4d0e.js +0 -2
  281. package/cjs/POICard-e46f9041.js +0 -2
  282. package/cjs/POICard-e46f9041.js.map +0 -1
  283. package/cjs/Pointer-fde7b548.js +0 -2
  284. package/cjs/Section-e8e8cf81.js +0 -2
  285. package/cjs/SocialList-1d5f75a8.js +0 -2
  286. package/cjs/TableBlock-f2c59d9b.js +0 -2
  287. package/cjs/Tag-9238cf0c.js +0 -2
  288. package/cjs/Textarea-03bd2c34.js +0 -2
  289. package/cjs/Textfield-56996c98.js +0 -2
  290. package/cjs/Textfield-56996c98.js.map +0 -1
  291. package/cjs/VideoBlock-dea7de8a.js +0 -2
  292. package/cjs/VideoCard-f6c436ca.js +0 -2
  293. package/cjs/Wrapper-ff6854d7.js +0 -2
  294. package/cjs/navigation-bf154e6e.js +0 -2
  295. package/cjs/styles-3a495a2d.js +0 -2
  296. package/cjs/styles-3a495a2d.js.map +0 -1
  297. package/cjs/useCookieConsent-aa9f1104.js +0 -2
  298. package/cjs/useEqualSheetHeight-501f4c5f.js +0 -2
  299. package/cjs/useLazyInput-f71c221b.js +0 -2
  300. package/cjs/useLeafletMap-2e608b01.js +0 -2
  301. package/cjs/useMediaQuery-3d1054e5.js +0 -2
  302. package/esm/Checkbox-dd12facd.js.map +0 -1
  303. package/esm/ClockFilled-62515a8f.js.map +0 -1
  304. package/esm/Filter-2b5f5e53.js +0 -32
  305. package/esm/Filter-2b5f5e53.js.map +0 -1
  306. package/esm/FilterField-962ec61f.js +0 -129
  307. package/esm/FilterField-962ec61f.js.map +0 -1
  308. package/esm/POICard-96ec71d8.js +0 -116
  309. package/esm/POICard-96ec71d8.js.map +0 -1
  310. package/esm/Textfield-d2f201a9.js.map +0 -1
  311. package/esm/styles-da982973.js.map +0 -1
  312. package/esm/useCookieConsent-6b2d4d93.js.map +0 -1
  313. package/esm/useLeafletMap-84170d32.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"sections.js","sources":["../src/components/sections/Accordion.tsx","../src/components/blocks/Alert.tsx","../src/components/sections/AlertList.tsx","../src/components/sections/Article.tsx","../src/components/sections/CallToAction.tsx","../src/components/sections/CardList.tsx","../src/components/sections/ComparisonSlider.tsx","../src/components/blocks/PromotionCard.tsx","../src/components/sections/CrossPromotion.tsx","../src/components/blocks/Fact.tsx","../src/components/sections/FactGrid.tsx","../src/components/sections/FactList.tsx","../src/components/blocks/Feature.tsx","../src/components/sections/FeatureList.tsx","../src/components/sections/Gallery.tsx","../src/components/sections/IconList.tsx","../src/components/sections/IndexList.tsx","../src/components/sections/Intro.tsx","../src/components/blocks/NavBlock.tsx","../src/components/sections/NavList.tsx","../src/components/sections/NumberList.tsx","../src/components/sections/ParallaxBackground.tsx","../src/components/sections/Poster.tsx","../src/components/sections/PriceList.tsx","../src/components/blocks/PriceTag.tsx","../src/components/sections/PriceTable.tsx","../src/components/sections/Quote.tsx","../src/components/sections/SimpleImage.tsx","../src/components/sections/SocialWall.tsx","../src/components/sections/Table.tsx","../src/components/sections/Teaser.tsx","../src/components/sections/TeaserWide.tsx","../src/components/sections/Timeline.tsx","../src/components/sections/Video.tsx","../src/components/sections/RawVideo.tsx","../src/components/sections/Map.tsx","../src/components/sections/HtmlCode.tsx"],"sourcesContent":["import Plus from 'components/base/icons/Plus';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Copy from 'components/typography/Copy';\nimport React from 'react';\nimport styled from 'styled-components';\nimport { spacings, getColors as color, mq } from 'utils/styles';\nimport Minus from 'components/base/icons/Minus';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { generateFAQ } from 'utils/structuredData';\nimport Grid, { gridSettings } from 'components/base/Grid';\n\nconst AccordionContainer = styled.div`\n margin: 0;\n padding: 0;\n\n & > * + * {\n margin-top: ${spacings.nudge}px;\n }\n`;\n\nconst View = styled.details``;\n\nconst AccordionHead = styled.summary<{\n isInverted?: boolean;\n hasBg?: boolean;\n}>`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n\n padding: ${spacings.nudge * 2}px;\n margin: 0;\n border: none;\n outline: none;\n background: none;\n user-select: none;\n list-style: none;\n\n background: ${({ isInverted, hasBg, theme }) =>\n isInverted || hasBg\n ? color(theme).elementBg.light\n : color(theme).elementBg.medium};\n\n cursor: pointer;\n transition: background 0.2s ease-in-out;\n\n @media ${mq.medium} {\n padding: ${spacings.nudge * 3}px;\n }\n\n &::-webkit-details-marker {\n display: none;\n }\n\n &::marker {\n display: none;\n }\n\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n background: ${({ theme, isInverted, hasBg }) =>\n isInverted || hasBg\n ? color(theme).elementBg.lightHover\n : color(theme).elementBg.mediumHover};\n }\n }\n\n &:focus {\n background: ${({ theme, isInverted, hasBg }) =>\n isInverted || hasBg\n ? color(theme).elementBg.lightHover\n : color(theme).elementBg.mediumHover};\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n }\n`;\n\nconst Column = styled(Copy)`\n flex: 1 1 0;\n`;\n\nconst AccordionText = styled.div<{\n isInverted?: boolean;\n hasBg?: boolean;\n hasAside?: boolean;\n}>`\n display: flex;\n flex-direction: column;\n padding: ${spacings.nudge * 2}px;\n margin-top: 2px;\n background: ${({ isInverted, hasBg, theme }) =>\n isInverted || hasBg\n ? color(theme).elementBg.light\n : color(theme).elementBg.medium};\n\n & > * {\n max-width: 880px;\n }\n\n & > * + * {\n margin-top: ${spacings.spacer}px;\n }\n\n @media ${mq.medium} {\n padding: ${spacings.nudge * 3}px;\n }\n\n @media ${mq.semilarge} {\n flex-direction: row;\n\n & > * + * {\n margin-top: 0px;\n margin-left: ${gridSettings.gutter}px;\n }\n }\n`;\n\ninterface AccordionItem {\n label?: string;\n text?: string;\n aside?: string;\n}\n\nconst AccordionBlock: React.FC<\n AccordionItem & {\n isSelected?: boolean;\n onClick?: () => void;\n isInverted?: boolean;\n hasBg?: boolean;\n itemIcon?: (props: { isSelected: boolean }) => React.ReactNode;\n className?: string;\n }\n> = ({\n label,\n text,\n aside,\n isSelected,\n onClick,\n hasBg,\n isInverted,\n itemIcon,\n className,\n}) => {\n const { colors } = useLibTheme();\n\n return (\n <View open={isSelected} onToggle={onClick} className={className}>\n <AccordionHead isInverted={isInverted} hasBg={hasBg}>\n <Copy renderAs=\"span\" size=\"big\" type=\"copy-b\">\n {label}\n </Copy>\n <span>\n {itemIcon ? (\n itemIcon({ isSelected: isSelected || false })\n ) : isSelected ? (\n <Minus iconColor={colors.text.default} />\n ) : (\n <Plus iconColor={colors.text.default} />\n )}\n </span>\n </AccordionHead>\n <AccordionText\n isInverted={isInverted}\n hasBg={hasBg}\n hasAside={!!aside}\n >\n {text && <Column type=\"copy\" innerHTML={text} />}\n {aside && <Column type=\"copy\" innerHTML={aside} />}\n </AccordionText>\n </View>\n );\n};\n\nconst Accordion: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array of accordion items */\n items?: AccordionItem[];\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n\n /** Function to inject custom item state icon */\n itemIcon?: (props: { isSelected: boolean }) => React.ReactNode;\n}> = ({ anchorId, items, bgMode, itemIcon }) => {\n const [currentItems, setCurrentItems] = React.useState<number[]>([]);\n\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : hasBg\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n {items && generateFAQ(items)}\n <Wrapper addWhitespace>\n <Grid.Row gutter={0}>\n <Grid.Col>\n <AccordionContainer aria-label=\"Accordion Control Group Buttons\">\n {items?.map(({ label, text, aside }, i) => {\n const isSelected =\n currentItems.indexOf(i) !== -1;\n return (\n <AccordionBlock\n key={`${label}_${i}`}\n isSelected={isSelected}\n label={label}\n text={text}\n aside={aside}\n onClick={() => {\n setCurrentItems((prev) => {\n const copy = [...prev];\n const index = copy.indexOf(i);\n if (index === -1) {\n copy.push(i);\n } else {\n copy.splice(index, 1);\n }\n return copy;\n });\n }}\n isInverted={isInverted}\n hasBg={hasBg}\n itemIcon={itemIcon}\n />\n );\n })}\n </AccordionContainer>\n </Grid.Col>\n </Grid.Row>\n </Wrapper>\n </Section>\n );\n};\n\nexport const AccordionComponent = Accordion;\nexport default withLibTheme(Accordion);\n","import Copy from 'components/typography/Copy';\nimport Link, { LinkProps } from 'components/typography/Link';\nimport React from 'react';\nimport styled from 'styled-components';\nimport {\n getColors as color,\n getGlobals as global,\n spacings,\n} from 'utils/styles';\nimport StatusFormatter from '../../utils/statusFormatter';\nimport Info from '../base/icons/Info';\n\nconst View = styled.div<{ isInverted?: boolean }>`\n display: -ms-grid;\n display: grid;\n\n -ms-grid-columns: min-content 1fr;\n grid-template-columns: min-content 1fr;\n -ms-grid-rows: min-content 1fr;\n grid-auto-rows: min-content 1fr;\n\n text-decoration: none;\n\n position: relative;\n border: 2px solid\n ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n\n color: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n\n padding: ${spacings.nudge * 3}px;\n\n text-align: left;\n width: 100%;\n cursor: pointer;\n\n transition: color ease-in-out 0.2s, border 0.2s ease-in-out;\n\n & > * + * {\n margin-left: ${spacings.nudge * 3}px;\n }\n\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n border: 2px solid\n ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.invertedHover\n : color(theme).primary.hover};\n color: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.invertedHover\n : color(theme).primary.hover};\n }\n }\n`;\n\nconst Icon = styled.div`\n display: flex;\n align-items: center;\n\n & > * {\n height: 48px;\n width: 48px;\n }\n`;\n\nconst MainLabel = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst Content = styled.div`\n margin-top: ${spacings.nudge}px;\n\n & > * + * {\n margin-top: ${spacings.nudge}px;\n }\n`;\n\nconst Title = styled(Copy)`\n display: inline-block;\n`;\n\nconst ViewLink = styled(Link)`\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n\n && {\n margin: 0;\n }\n\n &:focus-within {\n outline: dotted 2px\n ${({ isInverted, theme }) =>\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n outline-offset: 4px;\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n box-shadow: none;\n }\n`;\n\nexport interface AlertProps {\n /** Invert colors for use on dark backgrounds */\n isInverted?: boolean;\n\n /** Alert title text */\n title?: string;\n\n /** Alert date */\n date?: Date;\n\n /** Additional description text (richtext) */\n description?: string;\n\n /** Alert link that covers hole element */\n link?: LinkProps;\n\n /** Function to inject custom alert icon */\n customIcon?: (props: { isInverted?: boolean }) => React.ReactNode;\n}\n\nconst Alert: React.FC<AlertProps & { className?: string }> = ({\n isInverted,\n title,\n date,\n description,\n link,\n customIcon,\n className,\n}) => {\n let formattedDate = '';\n if (date) {\n const formatter = new StatusFormatter(\n date.getTime(),\n '',\n 'dd. MMMM yyyy',\n 'hh:mm',\n 'de'\n );\n formattedDate = formatter.getFormattedDate();\n }\n\n return (\n <View isInverted={isInverted} data-sheet=\"alert\" className={className}>\n <Icon>{customIcon ? customIcon({ isInverted }) : <Info />}</Icon>\n <MainLabel>\n {title && (\n <Title textColor=\"inherit\" size=\"medium\" type=\"copy-b\">\n {title}\n </Title>\n )}\n </MainLabel>\n <span />\n <Content>\n {description && (\n <Copy\n isInverted={isInverted}\n size=\"small\"\n innerHTML={description}\n />\n )}\n {date && (\n <Copy size=\"small\" isInverted={isInverted}>\n {formattedDate}\n </Copy>\n )}\n </Content>\n {link && (\n <ViewLink\n {...link}\n ariaLabel={link?.href ? title : undefined}\n />\n )}\n </View>\n );\n};\n\nexport default Alert;\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport { mq, spacings } from 'utils/styles';\nimport Wrapper from 'components/base/Wrapper';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Alert, { AlertProps } from '../blocks/Alert';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { useEqualSheetHeight } from 'utils/useEqualSheetHeight';\n\nconst List = styled.ul`\n margin-top: -${spacings.nudge * 2}px;\n margin-left: -${spacings.nudge * 2}px;\n padding: 0;\n list-style: none;\n\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n justify-content: center;\n flex-wrap: wrap;\n\n @media ${mq.medium} {\n margin-top: -${spacings.spacer}px;\n margin-left: -${spacings.spacer}px;\n }\n`;\n\nconst ListItem = styled.li<{ itemsPerRow: number }>`\n padding-top: ${spacings.nudge * 2}px;\n padding-left: ${spacings.nudge * 2}px;\n flex: 1 1 100%;\n\n @media ${mq.medium} {\n flex: 0 1 50%;\n max-width: 50%;\n\n padding-top: ${spacings.spacer}px;\n padding-left: ${spacings.spacer}px;\n }\n\n @media ${mq.large} {\n flex: 0 1 ${({ itemsPerRow }) => (1 / itemsPerRow) * 100}%;\n max-width: 600px;\n\n padding-top: ${spacings.spacer}px;\n padding-left: ${spacings.spacer}px;\n }\n`;\n\nconst AlertList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array of alert items */\n items?: Pick<AlertProps, 'title' | 'date' | 'description' | 'link'>[];\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n\n /** Function to inject custom alert icon */\n customIcon?: (props: { isInverted?: boolean }) => React.ReactNode;\n}> = ({ anchorId, items, bgMode, customIcon }) => {\n const { colors } = useLibTheme();\n\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n const alertCount = items?.length || 0;\n const itemsPerRow = alertCount % 3 === 1 || alertCount === 2 ? 2 : 3;\n\n const { sheetRefs: alertRefs } = useEqualSheetHeight<HTMLLIElement>({\n listLength: alertCount,\n identifiers: ['[data-sheet=\"alert\"]'],\n responsive: {\n small: 1,\n medium: 2,\n semilarge: 2,\n large: itemsPerRow,\n xlarge: itemsPerRow,\n },\n });\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : hasBg\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper addWhitespace>\n <List>\n {items?.map((item, i) => (\n <ListItem\n key={i}\n itemsPerRow={itemsPerRow}\n ref={alertRefs[i]}\n >\n <Alert\n {...item}\n isInverted={isInverted}\n customIcon={customIcon}\n />\n </ListItem>\n ))}\n </List>\n </Wrapper>\n </Section>\n );\n};\n\nexport const AlertListComponent = AlertList;\nexport default withLibTheme(AlertList);\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Title, { TitleSize } from 'components/blocks/Title';\nimport Copy from 'components/typography/Copy';\nimport Wrapper from 'components/base/Wrapper';\nimport { spacings, mq } from 'utils/styles';\nimport Actions from 'components/blocks/Actions';\nimport { HeadlineTag } from 'components/typography/Heading';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Grid from 'components/base/Grid';\n\nconst StyledTitle = styled(Title)`\n &:not(:last-child) {\n margin-bottom: ${spacings.spacer}px;\n }\n\n @media ${mq.semilarge} {\n max-width: 880px;\n }\n`;\n\nconst ContentText = styled(Copy)`\n text-align: left;\n`;\n\nconst StyledActions = styled(Actions)`\n margin-top: ${spacings.spacer}px;\n`;\n\nconst Article: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n /** Main title text */\n title?: string;\n /** Main title HTML tag type (h2, h3, h4...) */\n titleAs?: HeadlineTag;\n /** Main title size */\n titleSize?: TitleSize;\n /** Superior title that stands above main title */\n superTitle?: string;\n /** Superior title HTML tag type (h3, h4 ...) */\n superTitleAs?: HeadlineTag;\n /** Bold intro text underneath the title (limited richtext capabilites) */\n intro?: string;\n /** Main article richtext */\n text?: string;\n /** Additional article richtext in a second column */\n asideText?: string;\n /** Controls width of left text column (8/12 or 6/12) */\n halfAside?: boolean;\n\n /** Section background */\n bgMode?: 'full' | 'splitted' | 'inverted';\n\n /** Function to inject custom primary button */\n primaryAction?: (isInverted?: boolean) => React.ReactNode;\n /** Function to inject custom secondary button */\n secondaryAction?: (isInverted?: boolean) => React.ReactNode;\n}> = ({\n anchorId,\n title,\n titleAs = 'h2',\n titleSize = 'heading-2',\n superTitle,\n superTitleAs,\n intro,\n text,\n asideText,\n halfAside,\n bgMode,\n primaryAction,\n secondaryAction,\n}) => {\n const { colors } = useLibTheme();\n\n const isInverted = bgMode === 'inverted';\n const hasContent = intro || text || asideText;\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n >\n <Wrapper clampWidth=\"normal\" addWhitespace>\n {(title || superTitle) && (\n <StyledTitle\n title={title}\n titleAs={titleAs}\n titleSize={titleSize}\n superTitle={superTitle}\n superTitleAs={superTitleAs}\n colorMode={isInverted ? 'inverted' : 'default'}\n />\n )}\n {hasContent && (\n <Grid.Row valign=\"top\">\n <Grid.Col\n semilarge={{ span: halfAside ? 6 / 12 : 8 / 12 }}\n >\n {intro && (\n <ContentText\n type=\"copy-b\"\n isInverted={isInverted}\n innerHTML={intro}\n />\n )}\n {text && (\n <ContentText\n type=\"copy\"\n isInverted={isInverted}\n innerHTML={text}\n />\n )}\n </Grid.Col>\n {asideText && (\n <Grid.Col\n semilarge={{\n span: halfAside ? 6 / 12 : 4 / 12,\n }}\n >\n <ContentText\n type=\"copy\"\n isInverted={isInverted}\n innerHTML={asideText}\n />\n </Grid.Col>\n )}\n </Grid.Row>\n )}\n {(primaryAction || secondaryAction) && (\n <StyledActions\n primary={primaryAction && primaryAction(isInverted)}\n secondary={\n secondaryAction && secondaryAction(isInverted)\n }\n />\n )}\n </Wrapper>\n </Section>\n );\n};\n\nexport const ArticleComponent = Article;\nexport default withLibTheme(Article);\n","import React, { FC } from 'react';\nimport styled from 'styled-components';\n\nimport { getGlobals as global, mq, spacings } from 'utils/styles';\nimport Copy from 'components/typography/Copy';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport { HeadlineTag } from 'components/typography/Heading';\nimport IntroBlock from 'components/blocks/IntroBlock';\nimport Actions from 'components/blocks/Actions';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { gridSettings, getGridWidth } from 'components/base/Grid';\n\nconst ContactView = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n margin: 0 auto;\n width: 100%;\n\n text-align: left;\n hyphens: auto;\n overflow-wrap: break-word;\n\n & > * + * {\n margin-top: ${spacings.spacer}px;\n }\n\n @media ${mq.semilarge} {\n flex-direction: row;\n\n & > * + * {\n margin-top: 0px;\n margin-left: ${gridSettings.gutter}px;\n }\n }\n`;\n\nconst Avatar = styled.img<{ isInverted?: boolean }>`\n align-self: center;\n display: block;\n border: solid 1px transparent;\n border-radius: 50%;\n width: 180px;\n height: 180px;\n\n background: ${({ theme, isInverted }) =>\n isInverted\n ? global(theme).sections.imagePlaceholderBg.inverted\n : global(theme).sections.imagePlaceholderBg.default};\n\n @media ${mq.semilarge} {\n display: block;\n width: 190px;\n height: 190px;\n }\n`;\n\nconst Description = styled(Copy)`\n text-align: center;\n\n .icon-label {\n flex-direction: column;\n }\n\n .icon-label > * + * {\n margin-left: 0;\n margin-top: ${spacings.nudge * 2}px;\n }\n\n & > * {\n justify-content: center;\n }\n\n @media ${mq.semilarge} {\n text-align: left;\n\n & > * {\n justify-content: left;\n }\n\n .icon-label {\n flex-direction: row;\n }\n\n .icon-label > * + * {\n margin-left: ${spacings.nudge * 2}px;\n margin-top: 0;\n }\n }\n`;\n\nexport interface ContactBoxProps {\n isInverted?: boolean;\n description?: string;\n avatar?: { src: string; alt: string };\n}\n\nconst ContactBox: FC<ContactBoxProps & { className?: string }> = ({\n isInverted,\n description,\n avatar,\n className,\n}) => {\n return (\n <ContactView className={className}>\n <Avatar\n src={avatar?.src}\n alt={avatar?.alt}\n isInverted={isInverted}\n />\n {description && (\n <Description\n type=\"copy\"\n isInverted={isInverted}\n innerHTML={description}\n />\n )}\n </ContactView>\n );\n};\n\nconst StyledIntro = styled(IntroBlock)<{ hasDecorator?: boolean }>`\n max-width: 880px;\n margin-right: auto;\n margin-left: auto;\n\n @media ${mq.xlarge} {\n & > *:first-child {\n min-height: ${({ hasDecorator }) => hasDecorator && '110px'};\n }\n }\n`;\n\nconst StyledContactBox = styled(ContactBox)`\n margin-top: ${spacings.spacer}px;\n\n @media ${mq.semilarge} {\n max-width: ${getGridWidth({ cols: 8 })};\n margin-right: auto;\n margin-left: auto;\n }\n\n @media ${mq.large} {\n max-width: ${getGridWidth({ cols: 6 })};\n }\n`;\n\nconst StyledActions = styled(Actions)`\n margin-top: ${spacings.spacer}px;\n\n @media ${mq.medium} {\n display: block;\n text-align: center;\n }\n`;\n\nconst NewsletterWrapper = styled.div`\n width: 100%;\n margin: 0 auto;\n margin-top: ${spacings.spacer}px;\n\n @media ${mq.semilarge} {\n max-width: 400px;\n }\n`;\n\nconst Badge = styled.div`\n display: none;\n position: relative;\n height: 241px;\n width: 241px;\n margin-left: auto;\n margin-bottom: -135px;\n z-index: 3;\n\n @media ${mq.xlarge} {\n display: block;\n margin-right: ${1440 * (1 / 28) + 'px'};\n }\n`;\n\nexport interface CtaActionProps {\n isInverted?: boolean;\n isTextCentered?: boolean;\n}\n\nexport const CallToAction: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n /** Main title text */\n title?: string;\n /** Main title HTML tag type (h2, h3, h4...) */\n titleAs?: HeadlineTag;\n /** Superior title that stands above main title */\n superTitle?: string;\n /** Superior title HTML tag type (h3, h4 ...) */\n superTitleAs?: HeadlineTag;\n /** Bold text underneath the title (limited richtext capabilites) */\n text?: string;\n /** Props for contact area */\n contact?: ContactBoxProps;\n /** Show Newsletter defined by inject function newsFormMain. Only visible if React node is defined! */\n hasNewsletter?: boolean;\n /** Badge decorator visible only on large screens */\n badge?: React.ReactNode;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n\n /** Function to inject custom primary button */\n primaryAction?: (props: CtaActionProps) => React.ReactNode;\n /** Function to inject custom secondary button */\n secondaryAction?: (props: CtaActionProps) => React.ReactNode;\n /** Function to inject newsletter form */\n newsFormMain?: (isInverted?: boolean) => React.ReactNode;\n}> = ({\n anchorId,\n title,\n titleAs = 'h2',\n superTitle,\n superTitleAs,\n text,\n contact,\n badge,\n primaryAction,\n secondaryAction,\n hasNewsletter,\n newsFormMain,\n bgMode,\n}) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted ? colors.sectionBg.dark : colors.sectionBg.medium\n }\n bgMode={bgMode ? mapToBgMode(bgMode, true) : 'full'}\n >\n <Wrapper addWhitespace clampWidth=\"normal\">\n {badge && <Badge>{badge}</Badge>}\n {title && (\n <StyledIntro\n isCentered\n colorMode={isInverted ? 'inverted' : 'default'}\n title={title}\n titleAs={titleAs}\n superTitle={superTitle}\n superTitleAs={superTitleAs}\n hasDecorator={!!badge}\n text={text}\n />\n )}\n\n {contact && (\n <StyledContactBox\n isInverted={isInverted}\n description={contact.description}\n avatar={contact.avatar}\n />\n )}\n {newsFormMain && hasNewsletter && (\n <NewsletterWrapper>\n {newsFormMain(isInverted)}\n </NewsletterWrapper>\n )}\n {(primaryAction || secondaryAction) && (\n <StyledActions\n primary={\n primaryAction &&\n primaryAction({ isInverted, isTextCentered: true })\n }\n secondary={\n secondaryAction &&\n secondaryAction({\n isInverted,\n isTextCentered: true,\n })\n }\n />\n )}\n </Wrapper>\n </Section>\n );\n};\n\nexport const CallToActionComponent = CallToAction;\nexport default withLibTheme(CallToAction);\n","import Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport Copy from 'components/typography/Copy';\nimport Link, { LinkProps } from 'components/typography/Link';\nimport React from 'react';\nimport styled, { css } from 'styled-components';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport {\n spacings,\n getColors as color,\n mq,\n getGlobals as global,\n} from 'utils/styles';\n\nconst View = styled.div<{\n isInverted?: boolean;\n cardColor?: string;\n hasLink?: boolean;\n}>`\n display: flex;\n flex-direction: column;\n justify-content: center;\n position: relative;\n color: ${({ theme }) => color(theme).text.inverted};\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n min-height: 110px;\n\n overflow: hidden;\n\n @media ${mq.medium} {\n display: block;\n padding-top: 85%;\n }\n`;\n\nconst SolidView = styled(View)`\n background-color: ${({ theme, isInverted, cardColor }) =>\n cardColor\n ? cardColor\n : isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n\n transition: background-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out;\n\n ${({ hasLink }) =>\n hasLink &&\n css`\n cursor: pointer;\n\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n box-shadow: 0 2px 24px 0 rgba(0, 0, 0, 0.35);\n }\n }\n `}\n`;\n\nconst ImageView = styled(View)`\n transition: box-shadow 0.2s ease-in-out;\n\n ${({ hasLink }) =>\n hasLink &&\n css`\n @media (hover: hover) and (pointer: fine) {\n cursor: pointer;\n\n img {\n -webkit-backface-visibility: hidden;\n -ms-transform: translateZ(0); /* IE 9 */\n -webkit-transform: translateZ(\n 0\n ); /* Chrome, Safari, Opera */\n transform: translateZ(0);\n transform-origin: center;\n transition: transform 0.2s ease-in-out;\n }\n\n &:hover {\n box-shadow: 0 2px 24px 0 rgba(0, 0, 0, 0.35);\n\n img {\n transform: scale(1.03);\n }\n }\n }\n `}\n\n &:after {\n content: '';\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n background: ${({ theme }) => global(theme).sections.imageTextGradient};\n pointer-events: none;\n }\n\n @media ${mq.medium} {\n padding-top: 0;\n }\n`;\n\nconst StyledImage = styled(Image)`\n position: absolute;\n top: 0;\n bottom: 0;\n right: 0;\n left: 0;\n\n display: block;\n width: 100%;\n height: 100%;\n\n object-fit: cover;\n object-position: center;\n\n @media ${mq.medium} {\n position: relative;\n }\n`;\n\nconst Content = styled.div<{ hasIcon?: boolean }>`\n z-index: 1;\n\n padding: ${spacings.nudge * 3}px;\n\n display: flex;\n flex-direction: row;\n align-items: center;\n\n & > * + * {\n margin-left: ${spacings.spacer}px;\n }\n\n @media ${mq.medium} {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n overflow: hidden;\n\n display: flex;\n flex-direction: ${({ hasIcon }) => (hasIcon ? 'column' : 'row')};\n justify-content: space-between;\n align-items: ${({ hasIcon }) => (hasIcon ? 'flex-start' : 'flex-end')};\n\n & > * + * {\n margin-left: 0;\n }\n }\n`;\n\nconst TextContainer = styled.div`\n width: 100%;\n overflow: hidden;\n\n & > * + * {\n margin-top: ${spacings.nudge / 2}px;\n }\n`;\n\nconst Title = styled(Copy)`\n display: inline-block;\n max-width: 100%;\n\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n text-overflow: ellipsis;\n overflow: hidden;\n`;\n\nconst Footer = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n & > * + * {\n margin-left: ${spacings.nudge * 2}px;\n }\n`;\n\nconst SubLabel = styled(Copy)`\n display: inline-block;\n\n display: -webkit-box;\n -webkit-line-clamp: 1;\n -webkit-box-orient: vertical;\n overflow: hidden;\n`;\n\nconst Icon = styled.div`\n height: 100%;\n max-height: 60px;\n min-height: 40px;\n min-width: 40px;\n\n * {\n height: 100%;\n }\n\n svg,\n img {\n width: 100%;\n }\n\n @media ${mq.medium} {\n svg,\n img {\n width: auto;\n }\n }\n`;\n\nconst CardLink = styled(Link)<{ isInverted?: boolean }>`\n z-index: 1;\n display: block;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n\n outline-color: ${({ theme }) => color(theme).primary.default};\n\n &:focus {\n border: 2px dotted ${({ theme }) => color(theme).primary.invertedHover};\n outline-offset: 4px;\n\n color: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.invertedHover\n : color(theme).primary.hover};\n }\n`;\n\nexport interface CardProps {\n isInverted?: boolean;\n title?: string;\n subLabel?: string;\n image?: ImageProps;\n link?: LinkProps;\n decorator?: (props: { isInverted?: boolean }) => React.ReactNode;\n cardColor?: string;\n customIcon?: (props: { isInverted?: boolean }) => React.ReactNode;\n}\n\nconst Card: React.FC<\n Omit<CardProps, 'coverSpace' | 'ratios'> & {\n className?: string;\n }\n> = ({\n isInverted,\n title,\n subLabel,\n image,\n link,\n decorator,\n cardColor,\n customIcon,\n}) => {\n const { colors } = useLibTheme();\n const CardView = image && image.small ? ImageView : SolidView;\n const defaultCardColor = isInverted\n ? colors.primary.inverted\n : colors.primary.default;\n\n return (\n <CardView\n isInverted={isInverted}\n cardColor={cardColor || defaultCardColor}\n hasLink={!!link?.href}\n >\n {image?.small && (\n <StyledImage\n {...image}\n coverSpace\n isInverted={isInverted}\n ratios={{\n small: { w: 352, h: 108 },\n medium: { w: 286, h: 244 },\n }}\n />\n )}\n <Content hasIcon={!!customIcon}>\n {customIcon ? <Icon>{customIcon({})}</Icon> : ''}\n <TextContainer>\n {title && (\n <Title size=\"big\" type=\"copy\" isInverted>\n {title}\n </Title>\n )}\n {subLabel && (\n <Footer>\n <SubLabel type=\"copy-b\" size=\"big\" isInverted>\n {subLabel}\n </SubLabel>\n {decorator ? decorator({ isInverted }) : undefined}\n </Footer>\n )}\n </TextContainer>\n </Content>\n {link?.href && (\n <CardLink\n isInverted={isInverted}\n {...link}\n ariaLabel={title || undefined}\n />\n )}\n </CardView>\n );\n};\n\nconst List = styled.ul`\n padding: 0;\n margin-top: -${spacings.nudge * 2}px;\n margin-left: -${spacings.nudge * 2}px;\n list-style: none;\n\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n justify-content: center;\n flex-wrap: wrap;\n\n @media ${mq.medium} {\n margin-top: -${spacings.spacer}px;\n margin-left: -${spacings.spacer}px;\n }\n`;\n\nconst CardItem = styled.li<{ isEqual?: boolean; threeCols?: boolean }>`\n padding-top: ${spacings.nudge * 2}px;\n padding-left: ${spacings.nudge * 2}px;\n\n width: 100%;\n\n @media ${mq.medium} {\n flex: 0 0 50%;\n max-width: 370px;\n padding-top: ${spacings.spacer}px;\n padding-left: ${spacings.spacer}px;\n }\n\n @media ${mq.semilarge} {\n flex: 0 0 33.33%;\n }\n\n @media (min-width: 75em) {\n flex: ${({ isEqual, threeCols }) =>\n threeCols ? '0 0 33.33%' : isEqual && '0 0 25%'};\n }\n`;\n\nconst CardList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array with card item settings */\n items?: Omit<CardProps, 'decorator' | 'isInverted'>[];\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n\n /** Function to inject custom decoration icon */\n decorator?: (props: { isInverted?: boolean }) => React.ReactNode;\n\n /** Force maximal three items per row */\n maxThreeCols?: boolean;\n}> = ({ anchorId, items, bgMode, decorator, maxThreeCols }) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n\n return (\n <Section\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n addSeperation\n >\n <Wrapper addWhitespace>\n <List>\n {items?.map((item, i) => (\n <CardItem\n key={i}\n isEqual={items.length % 2 === 0}\n threeCols={maxThreeCols}\n >\n <Card\n {...item}\n isInverted={isInverted}\n decorator={decorator}\n />\n </CardItem>\n ))}\n </List>\n </Wrapper>\n </Section>\n );\n};\n\nexport const CardListComponent = CardList;\nexport default withLibTheme(CardList);\n","import React, { FC, useEffect, useRef, useState } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport { getColors as color, spacings } from 'utils/styles';\nimport ArrowLeftRight from 'components/base/icons/ArrowLeftRight';\nimport Copy from 'components/typography/Copy';\nimport useIE from 'utils/useIE';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\n\nconst clamp = (num: number, min: number, max: number) => {\n return Math.min(Math.max(num, min), max);\n};\n\nconst Images = styled.div`\n position: relative;\n cursor: col-resize;\n & > * {\n pointer-events: none;\n user-select: none;\n }\n`;\n\nconst BackgroundImg = styled(Image)`\n position: relative;\n display: block;\n width: 100%;\n`;\n\nconst ForegroundContainer = styled.div<{\n hasTransition?: boolean;\n initalValue?: number;\n hasAnim?: boolean;\n}>`\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 50%;\n overflow: hidden;\n transition: width ${({ hasTransition }) => (hasTransition ? 0.1 : 0)}s\n ease-in-out;\n ${({ hasAnim, initalValue }) =>\n hasAnim &&\n css`\n animation-name: ForegroundAnim;\n animation-duration: 5s;\n animation-iteration-count: 1;\n animation-play-state: ${hasAnim && 'running'};\n animation-timing-function: ease-in-out;\n @keyframes ForegroundAnim {\n 0% {\n width: ${initalValue\n ? clamp(initalValue * 100, 0, 100) + '%'\n : '50%'};\n }\n 33% {\n width: ${initalValue\n ? clamp(initalValue * 100 + 10, 0, 100) + '%'\n : '60%'};\n }\n 66% {\n width: ${initalValue\n ? clamp(initalValue * 100 - 10, 0, 100) + '%'\n : '40%'};\n }\n 100% {\n width: ${initalValue ? initalValue * 100 + '%' : '50%'};\n }\n }\n `}\n`;\n\nconst ForegroundImg = styled(Image)`\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n height: 100%;\n max-width: none;\n object-fit: cover;\n\n img {\n height: auto;\n width: auto;\n }\n`;\n\nconst ForegroundOverlay = styled.div<{ color: string }>`\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background-color: ${({ color }) => color};\n`;\n\nconst ImageLabel = styled(Copy)<{ bgColor?: string }>`\n height: ${spacings.spacer}px;\n padding: ${spacings.nudge}px ${spacings.spacer}px ${spacings.spacer}px\n ${spacings.spacer}px;\n background: ${({ bgColor }) => bgColor && bgColor};\n`;\n\nconst ForegroundLabel = styled(ImageLabel)`\n position: absolute;\n bottom: ${spacings.spacer}px;\n left: ${spacings.spacer}px;\n pointer-events: none;\n white-space: nowrap;\n`;\n\nconst BackgroundLabel = styled(ImageLabel)`\n position: absolute;\n bottom: ${spacings.spacer}px;\n right: ${spacings.spacer}px;\n pointer-events: none;\n white-space: nowrap;\n`;\n\nconst ControlContainer = styled.div<{\n hasTransition?: boolean;\n hasAnim?: boolean;\n initalValue?: number;\n}>`\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n transition: left ${({ hasTransition }) => (hasTransition ? 0.1 : 0)}s\n ease-in-out;\n ${({ hasAnim, initalValue }) =>\n hasAnim &&\n css`\n animation-name: ControlAnim;\n animation-duration: 5s;\n animation-iteration-count: 1;\n animation-play-state: ${hasAnim && 'running'};\n animation-timing-function: ease-in-out;\n @keyframes ControlAnim {\n 0% {\n left: ${initalValue\n ? clamp(initalValue * 100, 0, 100) + '%'\n : '50%'};\n }\n 33% {\n left: ${initalValue\n ? clamp(initalValue * 100 + 10, 0, 100) + '%'\n : '60%'};\n }\n 66% {\n left: ${initalValue\n ? clamp(initalValue * 100 - 10, 0, 100) + '%'\n : '40%'};\n }\n 100% {\n left: ${initalValue ? initalValue * 100 + '%' : '50%'};\n }\n }\n `}\n`;\n\nconst Control = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n height: 54px;\n width: 54px;\n border: solid 2px ${({ theme }) => color(theme).elementBg.light};\n border-radius: 50%;\n background-color: ${({ theme }) => color(theme).elementBg.medium};\n`;\n\nconst ComparisonSlider: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n bgMode?: 'full' | 'inverted' | 'splitted';\n initialValue?: number;\n foregroundImg?: ImageProps;\n backgroundImg?: ImageProps;\n foregroundLabel?: string;\n backgroundLabel?: string;\n overlayColor?: string;\n labelColor?: string;\n dragControl?: React.ReactNode;\n enableControlAnim?: boolean;\n}> = ({\n anchorId,\n bgMode,\n initialValue,\n foregroundImg,\n backgroundImg,\n foregroundLabel,\n backgroundLabel,\n overlayColor = 'rgba(0, 0 , 0, 0.2)',\n labelColor = 'rgba(0, 0 , 0, 0.3)',\n dragControl,\n enableControlAnim,\n}) => {\n const isIE = useIE(true);\n const [slideValue, setSlideValue] = useState<number>(\n initialValue ? Math.min(Math.max(initialValue, 0), 1) : 0.5\n );\n const [isHolding, setIsHolding] = useState<boolean>(false);\n const [isDragging, setIsDragging] = useState<boolean>(false);\n const [interacted, setInteracted] = useState<boolean>(true);\n const [sideOffset, setSideOffset] = useState<number>(0);\n const controlRef = useRef<HTMLDivElement | null>(null);\n const { colors } = useLibTheme();\n\n useEffect(() => {\n if (controlRef.current) {\n setSideOffset(controlRef.current.offsetWidth / 2);\n }\n }, []);\n\n useEffect(() => {\n const handleInitalLoad = () => {\n const options = {\n rootMargin: '0px',\n threshold: 1.0,\n };\n\n const observer = new IntersectionObserver((entries, observer) => {\n if (enableControlAnim && entries[0]?.isIntersecting) {\n // if control is first fully visible\n observer.unobserve(entries[0]?.target);\n setInteracted(false);\n }\n }, options);\n if (controlRef.current) observer.observe(controlRef.current);\n window.removeEventListener('load', handleInitalLoad);\n };\n\n // wait unitl user has scrolled once\n if (!isIE) {\n if (document.readyState === 'complete') handleInitalLoad();\n else window.addEventListener('load', handleInitalLoad);\n }\n\n return () => {\n window.removeEventListener('load', handleInitalLoad);\n };\n }, [enableControlAnim, isIE]);\n\n const setCurrentPos = (target: EventTarget & Element, clientX: number) => {\n if (target && clientX) {\n const relativeClientX = clientX - target.getBoundingClientRect().x;\n\n // check side offset\n if (\n relativeClientX >= sideOffset &&\n relativeClientX <=\n target.getBoundingClientRect().width - sideOffset\n ) {\n let percentage =\n relativeClientX / target.getBoundingClientRect().width;\n percentage = Math.min(Math.max(percentage, 0), 1);\n\n setSlideValue(percentage);\n }\n }\n };\n\n const handleClick = (ev: React.MouseEvent) => {\n const target = ev.currentTarget;\n if (target && ev.clientX) {\n setCurrentPos(target, ev.clientX);\n setInteracted(true);\n }\n };\n\n const handleMouseMove = (ev: React.MouseEvent) => {\n const target = ev.currentTarget;\n if (target && ev.clientX && isHolding) {\n setIsDragging(true);\n setInteracted(true);\n if (isDragging) setCurrentPos(target, ev.clientX);\n }\n };\n\n const handleTouchMove = (ev: React.TouchEvent<HTMLDivElement>) => {\n const target = ev.currentTarget;\n if (target && ev.touches[0]?.clientX) {\n setInteracted(true);\n setCurrentPos(target, ev.touches[0]?.clientX);\n }\n };\n\n const isInverted = bgMode === 'inverted';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n >\n <Wrapper>\n {backgroundImg && foregroundImg && (\n <Images\n onClick={handleClick}\n onMouseMove={handleMouseMove}\n onMouseDown={() => {\n setIsDragging(false);\n setIsHolding(true);\n }}\n onMouseUp={() => {\n setIsDragging(false);\n setIsHolding(false);\n }}\n onMouseLeave={() => {\n setIsHolding(false);\n setIsDragging(false);\n }}\n onTouchMove={handleTouchMove}\n onTouchStart={() => setIsHolding(true)}\n onTouchEnd={() => setIsHolding(false)}\n >\n <BackgroundImg {...backgroundImg} />\n {backgroundLabel && (\n <BackgroundLabel\n textColor={colors.text.inverted}\n bgColor={labelColor}\n >\n {backgroundLabel}\n </BackgroundLabel>\n )}\n <ForegroundContainer\n hasTransition={!isHolding}\n hasAnim={!interacted}\n initalValue={initialValue}\n style={{ width: slideValue * 100 + '%' }}\n >\n <ForegroundImg {...foregroundImg} />\n {foregroundLabel && (\n <ForegroundLabel\n textColor={colors.text.inverted}\n bgColor={labelColor}\n >\n {foregroundLabel}\n </ForegroundLabel>\n )}\n <ForegroundOverlay color={overlayColor} />\n </ForegroundContainer>\n <ControlContainer\n ref={controlRef}\n hasTransition={!isHolding}\n hasAnim={!interacted}\n initalValue={initialValue}\n style={{ left: slideValue * 100 + '%' }}\n >\n {dragControl ? (\n dragControl\n ) : (\n <Control>\n <ArrowLeftRight\n iconColor={colors.elementBg.light}\n />\n </Control>\n )}\n </ControlContainer>\n </Images>\n )}\n </Wrapper>\n </Section>\n );\n};\n\nexport const ComparisonSliderComponent = ComparisonSlider;\nexport default withLibTheme(ComparisonSlider);\n","import React, { forwardRef } from 'react';\nimport ReactDOMServer from 'react-dom/server';\nimport styled, { css } from 'styled-components';\n\nimport {\n spacings,\n getGlobals as global,\n mq,\n withRange,\n getColors as color,\n} from 'utils/styles';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport Link, { LinkProps } from 'components/typography/Link';\nimport Title from 'components/blocks/Title';\nimport External from 'components/base/icons/External';\nimport { HeadlineTag } from 'components/typography/Heading';\n\nconst View = styled(Link)<{\n clickable?: boolean;\n}>`\n display: block;\n position: relative;\n width: 100%;\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n overflow: hidden;\n outline: none;\n\n &:after {\n content: '';\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n background: ${({ theme }) => global(theme).sections.imageTextGradient};\n pointer-events: none;\n }\n\n ${({ clickable, theme, isInverted }) =>\n clickable &&\n css`\n transition: box-shadow 0.2s ease-in-out;\n cursor: pointer;\n\n &:hover {\n box-shadow: 0 2px 24px 0 rgba(0, 0, 0, 0.35);\n }\n\n &:focus {\n box-shadow: 0 2px 24px 0 rgba(0, 0, 0, 0.35);\n outline: solid 2px\n ${isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n outline-offset: 4px;\n\n color: ${isInverted\n ? color(theme).primary.invertedHover\n : color(theme).primary.hover};\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n box-shadow: none;\n }\n `}\n`;\n\nconst StyledImage = styled(Image)`\n width: 100%;\n height: 100%;\n min-height: 300px;\n\n img {\n height: 100%;\n }\n`;\n\nconst IntroContainer = styled.div`\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n overflow: auto;\n z-index: 1;\n\n padding: ${spacings.spacer}px ${spacings.nudge * 3}px;\n\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n align-items: flex-start;\n\n /* required to align items at flex-end in ie11 */\n &:before {\n content: '';\n display: block;\n flex: 1 0 0px;\n }\n\n @media ${mq.medium} {\n padding: ${spacings.nudge * 5}px ${spacings.spacer}px;\n }\n`;\n\nconst StyledTitle = styled(Title)<{ clampTitle?: boolean }>`\n max-width: ${({ clampTitle }) =>\n clampTitle && (13 / 28) * spacings.wrapper + 'px'};\n`;\n\nconst ExternalIconHolder = styled.span`\n margin-left: ${spacings.nudge * 2}px;\n\n & > * {\n display: inline-block;\n }\n`;\n\nconst Icon = styled.div`\n ${withRange([60, 100], 'height')};\n ${withRange([60, 100], 'width')};\n\n position: absolute;\n top: ${spacings.nudge * 3}px;\n left: ${spacings.nudge * 3}px;\n\n & > * {\n ${withRange([60, 100], 'height')};\n ${withRange([60, 100], 'width')};\n }\n\n color: ${({ theme }) => color(theme).text.inverted};\n`;\n\nexport interface PromotionCardProps {\n /** Setup Card for dark backgrounds */\n isInverted?: boolean;\n /** Card image settings */\n image: ImageProps;\n /** Card title */\n title?: string;\n /** Card title HTML tag type (h2, h3, h4...) */\n titleAs?: HeadlineTag;\n /** Superior card title that stands above main title */\n superTitle?: string;\n /** Superior card title HTML tag type (h3, h4 ...) */\n superTitleAs?: HeadlineTag;\n /** Href path */\n href?: string;\n /** Advanced href options */\n link?: LinkProps;\n /** Inject custom icon that indicates an external link */\n externalLinkIcon?: React.ReactNode;\n\n /** Function to inject icon in top left corner */\n icon?: (props: { isInverted?: boolean }) => React.ReactNode;\n}\n\nconst PromotionCard = forwardRef<\n HTMLAnchorElement,\n PromotionCardProps & { className?: string }\n>(\n (\n {\n isInverted,\n image,\n title,\n titleAs,\n superTitle,\n superTitleAs,\n href,\n link,\n externalLinkIcon,\n icon,\n className,\n },\n ref\n ) => {\n // fallback for older versions\n let linkObj = link;\n if (href && !link) {\n linkObj = {\n href: href,\n isExternal: false,\n };\n }\n\n const externalIconString = ReactDOMServer.renderToString(\n <ExternalIconHolder>\n {externalLinkIcon || <External />}\n </ExternalIconHolder>\n );\n\n return (\n <View\n ref={ref}\n clickable={!!href || !!link}\n {...linkObj}\n className={className}\n >\n <StyledImage {...image} isInverted={isInverted} coverSpace />\n {icon && <Icon>{icon({ isInverted })}</Icon>}\n {title && (\n <IntroContainer>\n <StyledTitle\n colorMode=\"onImage\"\n superTitle={superTitle}\n superTitleAs={superTitleAs}\n title={\n linkObj?.isExternal\n ? title + externalIconString\n : title\n }\n titleAs={titleAs || 'div'}\n clampTitle\n />\n </IntroContainer>\n )}\n </View>\n );\n }\n);\n\nPromotionCard.displayName = 'PromotionCard';\n\nexport default PromotionCard;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nimport Grid, { gridSettings } from 'components/base/Grid';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\n\nimport PromotionCard, {\n PromotionCardProps,\n} from 'components/blocks/PromotionCard';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\n\nconst Card = styled(PromotionCard)<{ isMain?: boolean }>`\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n\n height: ${({ isMain }) => isMain && '100%'};\n\n flex: 1 0 auto;\n\n & + & {\n margin-top: ${gridSettings.gutter}px;\n }\n`;\n\nconst CrossPromotion: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Promotion card settings in main grid column (default: on right side). The size prop controls the width. */\n main?: Array<\n Omit<PromotionCardProps, 'externalLinkIcon' | 'isInverted'> & {\n size?: 'full' | 'half';\n }\n >;\n\n /** Promotion card settings in second grid column (default: on left side). The size prop controls the width. */\n aside?: Array<\n Omit<PromotionCardProps, 'externalLinkIcon' | 'isInverted'> & {\n size?: 'full' | 'half';\n }\n >;\n\n /** Section background */\n bgMode?: 'full' | 'inverted' | 'splitted';\n\n /** Switching order of main and aside columns */\n isMirrored?: boolean;\n\n /** Inject custom icon that indicates an external link */\n externalLinkIcon?: React.ReactNode;\n}> = ({ anchorId, main, aside, bgMode, isMirrored, externalLinkIcon }) => {\n const { colors } = useLibTheme();\n\n const isInverted = bgMode === 'inverted';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, false, isMirrored)}\n >\n <Wrapper clampWidth=\"normal\" addWhitespace>\n {aside ? (\n isMirrored ? (\n <Grid.Row>\n <Grid.Col semilarge={{ span: 6 / 12 }}>\n {main &&\n main.map((card, i) => (\n <Card\n key={i}\n isMain\n {...card}\n externalLinkIcon={externalLinkIcon}\n isInverted={isInverted}\n />\n ))}\n </Grid.Col>\n <Grid.Col semilarge={{ span: 6 / 12 }}>\n {aside.map((card, i) => (\n <Card\n key={i}\n {...card}\n externalLinkIcon={externalLinkIcon}\n isInverted={isInverted}\n />\n ))}\n </Grid.Col>\n </Grid.Row>\n ) : (\n <Grid.Row>\n <Grid.Col semilarge={{ span: 6 / 12 }}>\n {aside.map((card, i) => (\n <Card\n key={i}\n {...card}\n externalLinkIcon={externalLinkIcon}\n isInverted={isInverted}\n />\n ))}\n </Grid.Col>\n <Grid.Col semilarge={{ span: 6 / 12 }}>\n {main &&\n main.map((card, i) => (\n <Card\n key={i}\n isMain\n {...card}\n externalLinkIcon={externalLinkIcon}\n isInverted={isInverted}\n />\n ))}\n </Grid.Col>\n </Grid.Row>\n )\n ) : (\n main && (\n <Grid.Row>\n {main.map((card, i) => (\n <Grid.Col\n semilarge={{\n span:\n (card.size === 'half' ? 6 : 12) /\n 12,\n }}\n key={i}\n >\n <Card\n key={i}\n {...card}\n externalLinkIcon={externalLinkIcon}\n isInverted={isInverted}\n />\n </Grid.Col>\n ))}\n </Grid.Row>\n )\n )}\n </Wrapper>\n </Section>\n );\n};\n\nexport const CrossPromotionComponent = CrossPromotion;\nexport default withLibTheme(CrossPromotion);\n","import React, { forwardRef } from 'react';\nimport styled from 'styled-components';\n\nimport { spacings, getGlobals as global } from 'utils/styles';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport Copy from 'components/typography/Copy';\n\nconst View = styled.div``;\n\nconst ImageContainer = styled.div<{ isCentered?: boolean }>`\n display: flex;\n justify-content: ${({ isCentered }) =>\n isCentered ? 'center' : 'flex-start'};\n margin-bottom: ${spacings.nudge * 3}px;\n max-width: 100%;\n`;\n\nconst StyledImage = styled(Image)`\n overflow: hidden;\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n`;\n\nconst Content = styled.div<{ isCentered?: boolean }>`\n text-align: ${({ isCentered }) => isCentered && 'center'};\n\n & > * + * {\n margin-top: ${spacings.nudge * 3}px;\n }\n`;\n\nconst Title = styled(Copy)``;\n\nconst SubTitle = styled(Copy)``;\n\nconst Text = styled(Copy)`\n ${SubTitle} + & {\n margin-top: ${spacings.nudge}px;\n }\n`;\n\nexport interface FactProps {\n isInverted?: boolean;\n isCentered?: boolean;\n title?: string;\n subTitle?: string;\n text?: string;\n image?: ImageProps;\n}\n\nconst Fact = forwardRef<\n HTMLDivElement,\n FactProps & {\n className?: string;\n }\n>(\n (\n {\n isInverted = false,\n isCentered = false,\n title,\n subTitle,\n text,\n image,\n className,\n },\n ref\n ) => {\n return (\n <View ref={ref} className={className}>\n {image?.small && (\n <ImageContainer isCentered={isCentered}>\n <StyledImage\n isInverted={isInverted}\n small={image.small}\n medium={image.medium}\n semilarge={image.semilarge}\n large={image.large}\n xlarge={image.xlarge}\n alt={image.alt}\n coverSpace={image.coverSpace}\n ratios={image.ratios}\n showPlaceholder={image.showPlaceholder}\n />\n </ImageContainer>\n )}\n <Content isCentered={isCentered}>\n {title && (\n <Title\n type=\"copy-b\"\n size=\"big\"\n isInverted={isInverted}\n data-sheet=\"title\"\n >\n {title}\n </Title>\n )}\n {subTitle && (\n <SubTitle\n type=\"copy-b\"\n isInverted={isInverted}\n data-sheet=\"subtitle\"\n >\n {subTitle}\n </SubTitle>\n )}\n {text && (\n <Text\n type=\"copy\"\n isInverted={isInverted}\n data-sheet=\"text\"\n innerHTML={text}\n />\n )}\n </Content>\n </View>\n );\n }\n);\n\nFact.displayName = 'Fact';\n\nexport default Fact;\n","import React, { FC } from 'react';\nimport styled from 'styled-components';\n\nimport { mq } from 'utils/styles';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Fact, { FactProps } from 'components/blocks/Fact';\nimport { useEqualSheetHeight } from 'utils/useEqualSheetHeight';\nimport Grid from 'components/base/Grid';\n\nconst FactFill = styled.div`\n display: none;\n\n @media ${mq.large} {\n display: block;\n }\n`;\n\nconst FactGrid: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Controls amount columns on large screens */\n columns?: 3 | 4 | 6;\n\n /** Array with fact card data */\n facts?: Array<Omit<FactProps, 'isInverted' | 'isCentered'>>;\n\n /** Section background */\n bgMode?: 'full' | 'inverted' | 'splitted';\n\n /** Center text inside fact card items */\n isCentered?: boolean;\n}> = ({ anchorId, columns = 3, facts, bgMode, isCentered }) => {\n const { colors } = useLibTheme();\n const factCount = facts?.length || 0;\n\n const isInverted = bgMode === 'inverted';\n\n const { sheetRefs: cardRefs } = useEqualSheetHeight<HTMLDivElement>({\n listLength: factCount,\n identifiers: ['[data-sheet=\"title\"]', '[data-sheet=\"subtitle\"]'],\n responsive: {\n small: 1,\n medium: columns < 3 ? columns : 3,\n semilarge: columns < 4 ? columns : 4,\n large: columns,\n xlarge: columns,\n },\n });\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n >\n <Wrapper clampWidth=\"normal\" addWhitespace>\n <Grid.Row>\n {facts &&\n facts.map((fact, i) => {\n if (\n fact?.title ||\n fact?.subTitle ||\n fact?.image ||\n fact?.text\n ) {\n return (\n <Grid.Col\n key={i}\n medium={{ span: 4 / 12 }}\n semilarge={\n columns > 3\n ? { span: 3 / 12 }\n : { span: 4 / 12 }\n }\n large={{ span: 12 / columns / 12 }}\n >\n <Fact\n key={i}\n ref={cardRefs[i]}\n {...fact}\n isCentered={isCentered}\n isInverted={isInverted}\n />\n </Grid.Col>\n );\n } else {\n return (\n <Grid.Col\n key={i}\n medium={{ span: 4 / 12 }}\n semilarge={\n columns > 3\n ? { span: 3 / 12 }\n : { span: 4 / 12 }\n }\n large={{ span: 12 / columns / 12 }}\n >\n <FactFill ref={cardRefs[i]} key={i} />\n </Grid.Col>\n );\n }\n })}\n </Grid.Row>\n </Wrapper>\n </Section>\n );\n};\n\nexport const FactGridComponent = FactGrid;\nexport default withLibTheme(FactGrid);\n","import React from 'react';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport styled from 'styled-components';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { spacings, getColors as color, mq } from 'utils/styles';\nimport Wrapper from 'components/base/Wrapper';\nimport Copy from 'components/typography/Copy';\n\nconst FactsContainer = styled.ul`\n padding: 0;\n margin: 0;\n\n list-style-type: none;\n\n & > * + * {\n margin-top: ${spacings.nudge}px;\n }\n`;\n\nconst FactItem = styled.li<{ hasText?: boolean; hasBack?: boolean }>`\n padding: ${spacings.nudge * 2}px;\n\n background: ${({ theme, hasBack }) =>\n hasBack ? color(theme).elementBg.light : color(theme).elementBg.medium};\n\n display: flex;\n flex-direction: row;\n align-items: ${({ hasText }) => (hasText ? 'flex-start' : 'center')};\n\n @media ${mq.medium} {\n padding: ${spacings.nudge * 3}px;\n }\n`;\n\nconst Icon = styled.img`\n margin-right: ${spacings.nudge * 3}px;\n display: block;\n max-width: ${spacings.nudge * 5}px;\n\n @media ${mq.medium} {\n margin-right: ${spacings.spacer}px;\n }\n`;\n\nconst ContentBlock = styled.div`\n & > * + * {\n margin-top: ${spacings.nudge * 2}px;\n }\n`;\n\nconst Description = styled(Copy)`\n max-width: 880px;\n`;\n\nconst FactList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array with fact item data */\n facts?: Array<{\n label?: string;\n text?: string;\n }>;\n\n /** Icon for each fact item */\n icon?: { src: string; alt?: string };\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n}> = ({ anchorId, facts, icon, bgMode }) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const hasBack = isInverted || bgMode === 'full';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode === 'full'\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper clampWidth=\"normal\" addWhitespace>\n {facts && (\n <FactsContainer>\n {facts.map(({ label, text }, i) => {\n return (\n <FactItem\n key={i}\n hasText={!!text}\n hasBack={hasBack}\n >\n {icon && (\n <Icon\n src={icon.src}\n alt={icon.alt || ''}\n />\n )}\n <ContentBlock>\n {label && (\n <Copy type=\"copy-b\">{label}</Copy>\n )}\n {text && (\n <Description\n type=\"copy\"\n innerHTML={text}\n />\n )}\n </ContentBlock>\n </FactItem>\n );\n })}\n </FactsContainer>\n )}\n </Wrapper>\n </Section>\n );\n};\n\nexport const FactListComponent = FactList;\nexport default withLibTheme(FactList);\n","import React, { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport {\n mq,\n spacings,\n getGlobals as global,\n getFonts as font,\n} from 'utils/styles';\n\nimport Copy, { copyStyle } from 'components/typography/Copy';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport Link, { LinkProps } from 'components/typography/Link';\n\nconst View = styled.div<{ isCentered?: boolean }>`\n min-width: 270px;\n padding-bottom: ${spacings.nudge}px;\n text-align: ${({ isCentered }) => isCentered && 'center'};\n\n & > * + * {\n margin-top: ${spacings.spacer}px;\n }\n`;\n\nconst TitleLink = styled(Link)<{ href?: string }>`\n display: inline-block;\n ${copyStyle('copy-b', 'big')}\n\n color: ${({ theme, isInverted }) =>\n isInverted\n ? font(theme)['copy-b'].big.colorInverted\n : font(theme)['copy-b'].big.color};\n text-decoration: none;\n\n ${({ href, isInverted, theme }) =>\n !href &&\n css`\n &:hover {\n color: ${isInverted\n ? font(theme)['copy-b'].big.colorInverted\n : font(theme)['copy-b'].big.color};\n }\n `}\n`;\n\nconst ImageContainer = styled(Link)<{ isCentered?: boolean }>`\n display: flex;\n justify-content: ${({ isCentered }) =>\n isCentered ? 'center' : 'flex-start'};\n width: 100%;\n`;\n\nconst StyledImage = styled(Image)`\n overflow: hidden;\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n`;\n\nconst ArticleContent = styled.div<{ isCentered?: boolean }>`\n text-align: ${({ isCentered }) => isCentered && 'center'};\n\n & > * + * {\n margin-top: ${spacings.nudge * 2}px;\n }\n\n @media ${mq.medium} {\n & > * {\n max-width: 95%;\n margin-right: ${({ isCentered }) => isCentered && 'auto'};\n margin-left: ${({ isCentered }) => isCentered && 'auto'};\n }\n }\n`;\n\nconst Action = styled.div`\n max-width: 100%;\n`;\n\nexport interface FeatureActionProps {\n isInverted?: boolean;\n isTextCentered?: boolean;\n}\n\nexport interface FeatureProps {\n /** Invert color and background for darker themes */\n isInverted?: boolean;\n\n /** Center all texts */\n isCentered?: boolean;\n\n /** Image on item's top */\n image?: ImageProps;\n\n /** Item title text underneath the image */\n title?: string;\n\n /** Small item description text (richtext) */\n description?: string;\n\n /** Item intro text (partial richtext cause it's always bold) */\n intro?: string;\n\n /** Item's main text (richtext) */\n text?: string;\n\n /** Item link settings */\n link?: LinkProps;\n\n /** Function to inject custom primary button */\n action?: (props: FeatureActionProps) => React.ReactNode;\n}\n\nconst Feature = forwardRef<\n HTMLDivElement,\n FeatureProps & {\n className?: string;\n }\n>(\n (\n {\n title,\n description,\n intro,\n text,\n link,\n image,\n isInverted = false,\n isCentered = false,\n action,\n className,\n },\n ref\n ) => {\n return (\n <View ref={ref} isCentered={isCentered} className={className}>\n {image?.small && (\n <ImageContainer {...link} isCentered={isCentered}>\n <StyledImage\n small={image.small}\n medium={image.medium}\n semilarge={image.semilarge}\n large={image.large}\n xlarge={image.xlarge}\n alt={image.alt}\n ratios={image.ratios}\n coverSpace={\n image.coverSpace === undefined\n ? true\n : image.coverSpace\n }\n isInverted={isInverted}\n />\n </ImageContainer>\n )}\n <TitleLink\n {...link}\n isInverted={isInverted}\n ariaLabel={title}\n dataSheet=\"title\"\n >\n {title}\n </TitleLink>\n <Copy\n size=\"small\"\n isInverted={isInverted}\n data-sheet=\"desc\"\n innerHTML={description}\n />\n <ArticleContent isCentered={isCentered}>\n <Copy\n type=\"copy-b\"\n isInverted={isInverted}\n innerHTML={intro}\n data-sheet=\"intro\"\n />\n <Copy\n type=\"copy\"\n size=\"medium\"\n isInverted={isInverted}\n innerHTML={text}\n data-sheet=\"text\"\n />\n </ArticleContent>\n {action && (\n <Action>\n {action({ isInverted, isTextCentered: isCentered })}\n </Action>\n )}\n </View>\n );\n }\n);\n\nFeature.displayName = 'Feature';\n\nexport default Feature;\n","import React, { useMemo } from 'react';\n\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Feature, { FeatureProps } from 'components/blocks/Feature';\nimport { useEqualSheetHeight } from 'utils/useEqualSheetHeight';\nimport Grid from 'components/base/Grid';\n\nconst FeatureList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Center texts in every feature item */\n isCentered?: boolean;\n\n /** Array with feature item content */\n features?: Omit<FeatureProps, 'isInverted' | 'isCentered'>[];\n\n /** If not defined the component falls back to legacy logic: Uneven items = max 3 per row, even items = max 2 per row */\n columns?: 2 | 3;\n\n /** Section background */\n bgMode?: 'full' | 'splitted' | 'inverted';\n}> = ({ anchorId, features, bgMode, isCentered = false, columns }) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const featureCount = features?.length || 0;\n\n const isHalf = useMemo(() => {\n if (columns) {\n return columns === 2;\n }\n\n // legacy logic\n return features && features.length % 2 === 0;\n }, [features, columns]);\n\n const { sheetRefs: cardRefs } = useEqualSheetHeight<HTMLDivElement>({\n listLength: featureCount,\n identifiers: [\n '[data-sheet=\"title\"]',\n '[data-sheet=\"desc\"]',\n '[data-sheet=\"intro\"]',\n '[data-sheet=\"text\"]',\n ],\n responsive: {\n small: 1,\n medium: 1,\n semilarge: 2,\n large: isHalf ? 2 : 3,\n xlarge: isHalf ? 2 : 3,\n },\n });\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n >\n <Wrapper addWhitespace clampWidth=\"normal\">\n <Grid.Row\n halign={isHalf || featureCount <= 2 ? 'center' : 'left'}\n >\n {features?.map((feature, i) => (\n <Grid.Col\n semilarge={{ span: 6 / 12 }}\n large={{\n span: isHalf ? 5 / 12 : 4 / 12,\n }}\n key={i}\n >\n <Feature\n ref={cardRefs[i]}\n {...feature}\n isCentered={isCentered}\n isInverted={isInverted}\n />\n </Grid.Col>\n ))}\n </Grid.Row>\n </Wrapper>\n </Section>\n );\n};\n\nexport const FeatureListComponent = FeatureList;\nexport default withLibTheme(FeatureList);\n","import React, { FC } from 'react';\nimport styled from 'styled-components';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport { getGlobals as global } from 'utils/styles';\nimport Grid from 'components/base/Grid';\n\nconst StyledImage = styled(Image)`\n width: 100%;\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n overflow: hidden;\n\n picture > img {\n width: 100%;\n height: 100%;\n }\n`;\n\ntype ImageType = Omit<ImageProps, 'coverSpace'> & { isFull?: boolean };\n\nconst Gallery: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array of image settings */\n images?: Array<ImageType>;\n\n /** Section background */\n bgMode?: 'full' | 'splitted' | 'inverted';\n}> = ({ anchorId, bgMode, images }) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n >\n <Wrapper addWhitespace>\n <Grid.Row>\n {images?.map((img, i) => (\n <Grid.Col\n key={i}\n semilarge={{\n span: img.isFull ? 12 / 12 : 6 / 12,\n }}\n >\n <StyledImage\n {...img}\n coverSpace\n isInverted={isInverted}\n />\n </Grid.Col>\n ))}\n </Grid.Row>\n </Wrapper>\n </Section>\n );\n};\n\nexport const GalleryComponent = Gallery;\nexport default withLibTheme(Gallery);\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\n\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport { mq, spacings, getColors as color } from 'utils/styles';\nimport Actions from 'components/blocks/Actions';\nimport Pointer from 'components/buttons/Pointer';\nimport Link, { LinkProps } from 'components/typography/Link';\nimport Image from 'components/blocks/Image';\n\nconst StyledSection = styled(Section)<{ isCentered?: boolean }>`\n margin: 0 auto;\n\n @media ${mq.semilarge} {\n margin: ${({ isCentered }) => (isCentered ? '0 auto' : '0')};\n\n text-align: ${({ isCentered }) => (isCentered ? 'center' : 'left')};\n }\n`;\n\nconst ItemContainer = styled.div<{ isCentered?: boolean }>`\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n text-align: center;\n\n &:not(:last-child) {\n margin-bottom: ${spacings.spacer}px;\n }\n\n @media ${mq.semilarge} {\n justify-content: ${({ isCentered }) =>\n isCentered ? 'center' : 'flex-start'};\n }\n`;\n\nconst Items = styled.ul<{ isVisible?: boolean; isCentered?: boolean }>`\n display: ${({ isVisible }) => (isVisible ? 'flex' : 'block')};\n align-items: center;\n justify-content: ${({ isCentered }) =>\n isCentered ? 'center' : 'flex-start'};\n\n flex-wrap: wrap;\n padding: 0;\n margin: 0;\n margin-top: -${spacings.nudge * 2}px;\n margin-left: -${spacings.nudge * 2}px;\n\n list-style: none;\n\n @media ${mq.medium} {\n margin-top: -${spacings.spacer}px;\n margin-left: -${spacings.spacer}px;\n\n & > * {\n flex: 0 1 auto;\n }\n }\n`;\n\nconst Item = styled.li<{\n isVisible?: boolean;\n index: number;\n}>`\n padding-top: ${spacings.nudge * 2}px;\n padding-left: ${spacings.nudge * 2}px;\n\n display: ${({ index, isVisible }) =>\n isVisible || index < 6 ? 'block' : 'none'};\n\n & > img {\n width: 100%;\n }\n\n @media ${mq.medium} {\n padding-top: ${spacings.spacer}px;\n padding-left: ${spacings.spacer}px;\n\n & > img {\n width: auto;\n }\n }\n\n @media ${mq.semilarge} {\n display: ${({ index, isVisible }) =>\n isVisible || index < 8 ? 'block' : 'none'};\n }\n\n @media ${mq.large} {\n display: ${({ index, isVisible }) =>\n isVisible || index < 10 ? 'block' : 'none'};\n }\n`;\n\nconst ItemLink = styled(Link)<{ isInverted?: boolean }>`\n display: block;\n outline-color: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n`;\n\nconst ShowMore = styled.div<{ itemCount?: number; isCentered?: boolean }>`\n display: ${({ itemCount }) =>\n itemCount && itemCount > 6 ? 'block' : 'none'};\n\n background: none;\n border: none;\n text-align: ${({ isCentered }) => (isCentered ? 'center' : 'left')};\n\n @media ${mq.semilarge} {\n display: ${({ itemCount }) =>\n itemCount && itemCount > 8 ? 'block' : 'none'};\n }\n\n @media ${mq.large} {\n display: ${({ itemCount }) =>\n itemCount && itemCount > 10 ? 'block' : 'none'};\n }\n`;\n\nconst StyledActions = styled(Actions)<{ isCentered?: boolean }>`\n margin-top: ${spacings.spacer}px;\n\n @media ${mq.medium} {\n display: block;\n text-align: ${({ isCentered }) => isCentered && 'center'};\n }\n`;\n\nexport interface IconListItem {\n src: string;\n alt?: string;\n link?: LinkProps;\n ratio?: { h: number; w: number };\n showPlaceholder?: boolean;\n}\n\nconst IconList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array with icon items data */\n items?: Array<IconListItem>;\n\n /** Function to inject custom primary button */\n primaryAction?: (isInverted?: boolean) => React.ReactNode;\n\n /** Function to inject custom secondary button */\n secondaryAction?: (isInverted?: boolean) => React.ReactNode;\n\n /** Function to inject custom toggle button */\n toggle?: (props: {\n isInverted?: boolean;\n isToggled?: boolean;\n showLessText?: string;\n showMoreText?: string;\n clickHandler?: (ev?: React.SyntheticEvent<HTMLButtonElement>) => void;\n additionalProps?: Record<string, any>;\n }) => React.ReactNode;\n\n /** Custom text for toggle button in folded state */\n showMoreText?: string;\n\n /** Custom text for toggle button in expanded state */\n showLessText?: string;\n\n /** Center all icons and texts */\n isCentered?: boolean;\n\n /** Enable toggle feature */\n enableToggle?: boolean;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n}> = ({\n anchorId,\n items,\n isCentered = false,\n primaryAction,\n secondaryAction,\n toggle,\n showLessText = 'show less',\n showMoreText = 'show more',\n enableToggle,\n bgMode,\n}) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const [showMore, setShowMore] = useState<boolean>(!enableToggle);\n\n const handleToggleClick = () => {\n setShowMore((prev) => !prev);\n };\n\n return (\n <StyledSection\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n isCentered={isCentered}\n >\n <Wrapper clampWidth=\"normal\" addWhitespace>\n <ItemContainer isCentered={isCentered}>\n <Items\n isVisible={!showMore ? true : showMore === true}\n isCentered={isCentered}\n >\n {items?.map(\n ({ src, link, alt, ratio, showPlaceholder }, i) => (\n <Item isVisible={showMore} index={i} key={i}>\n <ItemLink\n {...link}\n isInverted={isInverted}\n ariaLabel={alt}\n >\n <Image\n data-img-loaded={false}\n isInverted={isInverted}\n small={src}\n alt={alt}\n ratios={\n ratio\n ? { small: ratio }\n : undefined\n }\n showPlaceholder={showPlaceholder}\n />\n </ItemLink>\n </Item>\n )\n )}\n </Items>\n </ItemContainer>\n {enableToggle && (\n <ShowMore\n isCentered={isCentered}\n itemCount={items?.length || 0}\n >\n {toggle ? (\n toggle({\n isInverted,\n showLessText,\n showMoreText,\n isToggled: showMore,\n clickHandler: handleToggleClick,\n additionalProps: { 'aria-pressed': showMore },\n })\n ) : (\n <Pointer.View\n as=\"button\"\n isInverted={isInverted}\n aria-pressed={showMore}\n onClick={() => handleToggleClick()}\n >\n <Pointer.Label>\n {showMore ? showLessText : showMoreText}\n </Pointer.Label>\n </Pointer.View>\n )}\n </ShowMore>\n )}\n\n {(primaryAction || secondaryAction) && (\n <StyledActions\n isCentered={isCentered}\n primary={primaryAction && primaryAction(isInverted)}\n secondary={\n secondaryAction && secondaryAction(isInverted)\n }\n />\n )}\n </Wrapper>\n </StyledSection>\n );\n};\n\nexport const IconListComponent = IconList;\nexport default withLibTheme(IconList);\n","import React, { useEffect, useState } from 'react';\nimport styled from 'styled-components';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport { copyStyle } from 'components/typography/Copy';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { getColors as color, spacings } from 'utils/styles';\nimport Link, { LinkProps } from 'components/typography/Link';\nimport ArrowDown from 'components/base/icons/ArrowDown';\nimport { useScrollTo } from 'utils/useScrollTo';\nimport { getFullNavbarHeights, getNavbarState } from './navigation/Navigation';\nimport { useMediaQueries } from 'utils/useMediaQuery';\n\nconst List = styled.ul<{ hasBg?: boolean; isInverted?: boolean }>`\n margin: 0;\n padding: 0;\n list-style: none;\n\n max-width: 880px;\n\n & > li + li {\n border-top: 1px solid\n ${({ theme, hasBg, isInverted }) =>\n hasBg && !isInverted\n ? color(theme).elementBg.light\n : color(theme).elementBg.medium};\n }\n\n & > li:first-child {\n border-top: 1px solid\n ${({ theme, hasBg, isInverted }) =>\n hasBg && !isInverted\n ? color(theme).elementBg.light\n : color(theme).elementBg.medium};\n }\n\n & > li:last-child {\n border-bottom: 1px solid\n ${({ theme, hasBg, isInverted }) =>\n hasBg && !isInverted\n ? color(theme).elementBg.light\n : color(theme).elementBg.medium};\n }\n`;\n\nconst ListItem = styled.li``;\n\nconst IndexLink = styled(Link)<{ isInverted?: boolean }>`\n display: inline-flex;\n align-items: center;\n max-width: 100%;\n padding: ${spacings.nudge}px 0;\n\n ${copyStyle('copy', 'big')}\n`;\n\nconst LinkLabel = styled.span`\n display: inline-block;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n`;\n\nconst IconWrapper = styled.span`\n display: inline-block;\n\n margin-left: ${spacings.nudge * 2}px;\n`;\n\nexport interface IndexItem {\n label?: string;\n link?: LinkProps;\n}\n\nconst IndexList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array of index item settings */\n items?: IndexItem[];\n\n /** Section background */\n bgMode?: 'inverted' | 'full';\n\n /** Function to inject custom icon decorator */\n customIcon?: (props: { isInverted?: boolean }) => React.ReactNode;\n\n /** Top offset for scroll to clicked item. Default: auto */\n scrollToOffset?: number;\n}> = ({ anchorId, items, bgMode, customIcon, scrollToOffset }) => {\n const { colors, theme } = useLibTheme();\n const setTargetPos = useScrollTo(500);\n const { semilarge } = useMediaQueries();\n\n const [topOffset, setTopOffset] = useState<number>(0);\n\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n\n const handleLinkClick = (ev: React.SyntheticEvent<HTMLAnchorElement>) => {\n if (!ev?.currentTarget) return;\n\n ev.preventDefault();\n const href = ev.currentTarget.getAttribute('href') as string;\n\n if (!href) return;\n\n const target = document.getElementById(href.split('#')?.[1] || href);\n if (target) {\n setTargetPos(\n target.getBoundingClientRect().top +\n window.scrollY -\n (scrollToOffset || topOffset)\n );\n }\n\n if (window) {\n const url = new URL(window.location as any);\n url.hash = href.split('#')[1];\n window.history.pushState({}, '', url as any);\n }\n };\n\n useEffect(() => {\n if (scrollToOffset) return;\n\n // if header is defined get navbar height and generate top offset\n const header = document.querySelector('header[data-navbar-ident]');\n const navbarIdent = header?.getAttribute('data-navbar-ident');\n if (!navbarIdent) return;\n\n const { isStickable } = getNavbarState(navbarIdent);\n if (!isStickable) return;\n\n // calculate offset from navbar height\n const navbarHeights = getFullNavbarHeights(theme, navbarIdent);\n\n if (semilarge) setTopOffset(navbarHeights.small[1] + spacings.spacer);\n else setTopOffset(navbarHeights.small[0] + spacings.spacer);\n }, [theme, semilarge, scrollToOffset]);\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : hasBg\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper addWhitespace>\n <List hasBg={hasBg} isInverted={isInverted}>\n {items?.map((item, i) => (\n <ListItem key={i}>\n <IndexLink\n {...item.link}\n isInverted={isInverted}\n onClick={handleLinkClick}\n >\n <LinkLabel>{item.label}</LinkLabel>\n <IconWrapper>\n {customIcon ? (\n customIcon({ isInverted })\n ) : (\n <ArrowDown />\n )}\n </IconWrapper>\n </IndexLink>\n </ListItem>\n ))}\n </List>\n </Wrapper>\n </Section>\n );\n};\n\nexport const IndexListComponent = IndexList;\nexport default withLibTheme(IndexList);\n","import React from 'react';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport IntroBlock, { IntroActionProps } from 'components/blocks/IntroBlock';\nimport { HeadlineTag } from 'components/typography/Heading';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { ImageProps } from 'components/blocks/Image';\nimport { TitleSize } from 'components/blocks/Title';\n\nconst Intro: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Main title text */\n title?: string;\n\n /** Main title HTML tag type (h2, h3, h4...) */\n titleAs?: HeadlineTag;\n\n /** Main title style */\n titleSize?: TitleSize;\n\n /** Superior title that stands above main title */\n superTitle?: string;\n\n /** Superior title HTML tag type (h3, h4 ...) */\n superTitleAs?: HeadlineTag;\n\n /** Intro text under headline (richtext) */\n abstract?: string;\n\n /** Main text (richtext) */\n text?: string;\n\n /** Images for different screen sizes. coverSpace defaults to true */\n image?: ImageProps;\n\n /** Function to inject custom primary button */\n primaryAction?: (props: IntroActionProps) => React.ReactNode;\n\n /** Function to inject custom secondary button */\n secondaryAction?: (props: IntroActionProps) => React.ReactNode;\n\n /** Center text and actions */\n isCentered?: boolean;\n\n /** Allow reduced section spacing to next section */\n isStackable?: boolean;\n\n /** Clamp title to a width of max 8 grid cols. */\n clampTitle?: boolean;\n\n /** Section background */\n bgMode?: 'inverted' | 'full' | 'splitted';\n className?: string;\n}> = ({\n anchorId,\n title,\n titleAs,\n titleSize = 'heading-2',\n superTitle,\n superTitleAs,\n abstract,\n text,\n primaryAction,\n secondaryAction,\n isCentered = false,\n isStackable = false,\n bgMode,\n image,\n}) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n\n // set default ratio settings\n if (image && !image?.ratios) {\n image.ratios = {\n small: { h: 1, w: 1 },\n };\n }\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n isStackable={isStackable}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n >\n <Wrapper clampWidth=\"normal\" addWhitespace>\n <IntroBlock\n title={title}\n titleAs={titleAs}\n titleSize={titleSize}\n superTitle={superTitle}\n superTitleAs={superTitleAs}\n abstract={abstract}\n text={text}\n colorMode={isInverted ? 'inverted' : 'default'}\n secondaryAction={secondaryAction}\n primaryAction={primaryAction}\n isCentered={isCentered}\n image={image}\n clampTitle\n clampAbstract\n clampText\n />\n </Wrapper>\n </Section>\n );\n};\n\nexport const IntroComponent = Intro;\nexport default withLibTheme(Intro);\n","import Copy from 'components/typography/Copy';\nimport Link, { LinkProps } from 'components/typography/Link';\nimport React from 'react';\nimport styled from 'styled-components';\nimport { getColors as color, mq, spacings } from 'utils/styles';\n\nconst View = styled(Link)<{ isInverted?: boolean; hasIcon?: boolean }>`\n display: -ms-grid;\n display: grid;\n\n -ms-grid-columns: ${({ hasIcon }) => (hasIcon ? 'min-content 1fr' : '1fr')};\n grid-template-columns: ${({ hasIcon }) =>\n hasIcon ? 'min-content 1fr' : '1fr'};\n -ms-grid-rows: min-content 1fr;\n grid-auto-rows: min-content 1fr;\n\n cursor: pointer;\n text-decoration: none;\n color: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n\n outline-color: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n\n transition: all ease-in-out 0.2s;\n\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n color: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.invertedHover\n : color(theme).primary.hover};\n }\n }\n`;\n\nconst MainLabel = styled.div<{ hasIcon?: boolean }>`\n display: flex;\n align-items: center;\n margin-left: ${({ hasIcon }) => hasIcon && `${spacings.nudge * 3}px`};\n`;\n\nconst Text = styled(Copy)<{ hasIcon?: boolean }>`\n margin-top: ${({ hasIcon }) =>\n hasIcon ? spacings.nudge : spacings.nudge * 2}px;\n margin-left: ${({ hasIcon }) => hasIcon && `${spacings.nudge * 3}px`};\n`;\n\nconst Icon = styled.div`\n display: flex;\n align-items: center;\n\n & > * {\n height: 48px;\n width: 48px;\n }\n`;\n\nconst Title = styled(Copy)`\n display: inline-block;\n`;\n\nconst TitleIcon = styled.span`\n display: inline-block;\n margin-left: ${spacings.nudge * 2}px;\n\n @media ${mq.medium} {\n margin-left: ${spacings.nudge * 3}px;\n }\n`;\n\nexport interface NavBlockProps {\n /** Invert colors for use on dark backgrounds */\n isInverted?: boolean;\n\n /** Navigation title */\n title?: string;\n\n /** Navigation text (richtext) */\n text?: string;\n\n /** Link settings */\n link?: LinkProps;\n\n /** Function to inject custom icon node */\n customIcon?: (props: { isInverted?: boolean }) => React.ReactNode;\n\n /** Function to inject custom title icon decorator node */\n customTitleIcon?: (props: { isInverted?: boolean }) => React.ReactNode;\n\n className?: string;\n}\n\nconst NavBlock: React.FC<NavBlockProps> = ({\n isInverted = false,\n title,\n text,\n link,\n customIcon,\n customTitleIcon,\n className,\n}) => {\n return (\n <View\n {...link}\n isInverted={isInverted}\n hasIcon={!!customIcon}\n className={className}\n >\n {customIcon ? <Icon>{customIcon({})}</Icon> : ''}\n <MainLabel hasIcon={!!customIcon}>\n {title && (\n <Title textColor=\"inherit\" size=\"medium\" type=\"copy-b\">\n {title}\n {title && customTitleIcon && (\n <TitleIcon>\n {customTitleIcon({ isInverted })}\n </TitleIcon>\n )}\n </Title>\n )}\n </MainLabel>\n {text && (\n <>\n <span />\n <Text\n size=\"small\"\n isInverted={isInverted}\n innerHTML={text}\n hasIcon={!!customIcon}\n />\n </>\n )}\n </View>\n );\n};\n\nexport default NavBlock;\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport NavBlock, { NavBlockProps } from 'components/blocks/NavBlock';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { mq, spacings } from 'utils/styles';\n\nconst List = styled.ul`\n margin: 0;\n margin-top: -${spacings.spacer}px;\n margin-left: -${spacings.spacer}px;\n padding: 0;\n list-style: none;\n\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n flex-wrap: wrap;\n\n @media ${mq.medium} {\n margin-top: -${spacings.spacer * 2}px;\n }\n`;\n\nconst ListItem = styled.li`\n padding-top: ${spacings.spacer}px;\n padding-left: ${spacings.spacer}px;\n flex: 1 0 100%;\n\n @media ${mq.medium} {\n flex: 0 0 50%;\n max-width: 50%;\n padding-top: ${spacings.spacer * 2}px;\n }\n\n @media ${mq.large} {\n flex: 0 0 33.33%;\n max-width: 33.33%;\n }\n\n // print version\n @media print {\n flex: 0 0 50%;\n max-width: 50%;\n padding-top: ${spacings.spacer * 2}px;\n }\n`;\n\nexport type NavItem = Omit<\n NavBlockProps,\n 'isInverted' | 'customTitleIcon' | 'className'\n>;\n\nconst NavList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array of navigation item settings */\n items?: NavItem[];\n\n /** Section backgrounds */\n bgMode?: 'full' | 'inverted';\n\n /** Function to inject custom title decorator icon */\n customTitleIcon?: (props: { isInverted?: boolean }) => React.ReactNode;\n}> = ({ anchorId, items, bgMode, customTitleIcon }) => {\n const { colors } = useLibTheme();\n\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : hasBg\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper addWhitespace>\n <List>\n {items?.map((item, i) => (\n <ListItem key={i}>\n <NavBlock\n {...item}\n isInverted={isInverted}\n customTitleIcon={customTitleIcon}\n />\n </ListItem>\n ))}\n </List>\n </Wrapper>\n </Section>\n );\n};\n\nexport const NavListComponent = NavList;\nexport default withLibTheme(NavList);\n","import Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Callout from 'components/typography/Callout';\nimport React, { forwardRef, useContext } from 'react';\nimport styled, { ThemeContext } from 'styled-components';\nimport {\n getColors as color,\n spacings,\n getGlobals as global,\n} from 'utils/styles';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Copy from 'components/typography/Copy';\nimport { useEqualSheetHeight } from 'utils/useEqualSheetHeight';\nimport Image, { ImageProps } from 'components/blocks/Image';\n\nconst CARD_MIN_WIDTH = 240;\nconst CARD_MAX_WIDTH = 440;\nconst MEDIA_QUERIES = {\n medium: '(min-width: 36.5em)',\n semilarge: '(min-width: 54.75em)',\n large: '(min-width: 73em)',\n xlarge: '(min-width: 90em)',\n};\n\nconst View = styled.li<{ isCentered?: boolean }>`\n text-align: ${({ isCentered }) => (isCentered ? 'center' : 'left')};\n\n & > * {\n margin: ${({ isCentered }) => (isCentered ? '0 auto' : 0)};\n margin-right: auto;\n }\n\n & > * + * {\n margin-top: ${spacings.nudge * 3}px;\n }\n`;\n\nconst ImageContainer = styled.div<{ isCentered?: boolean }>`\n display: flex;\n justify-content: ${({ isCentered }) =>\n isCentered ? 'center' : 'flex-start'};\n margin-bottom: ${spacings.nudge * 3}px;\n max-width: 100%;\n`;\n\nconst StyledImage = styled(Image)`\n overflow: hidden;\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n`;\n\nconst Label = styled(Copy)``;\n\nconst Text = styled(Copy)``;\n\nexport interface NumberListCardProps {\n image?: ImageProps;\n digit?: string;\n label?: string;\n text?: string;\n}\n\nconst NumberListCard = forwardRef<\n HTMLLIElement,\n NumberListCardProps & {\n isInverted?: boolean;\n isCentered?: boolean;\n className?: string;\n }\n>(({ image, label, digit, isInverted, isCentered, text, className }, ref) => {\n const { colors } = useLibTheme();\n\n return (\n <View ref={ref} isCentered={isCentered} className={className}>\n {image?.small && (\n <ImageContainer isCentered={isCentered}>\n <StyledImage\n isInverted={isInverted}\n small={image.small}\n medium={image.medium}\n semilarge={image.semilarge}\n large={image.large}\n xlarge={image.xlarge}\n alt={image.alt}\n coverSpace={image.coverSpace}\n ratios={image.ratios}\n showPlaceholder={image.showPlaceholder}\n />\n </ImageContainer>\n )}\n <Callout\n data-sheet=\"digit\"\n size=\"mediumBold\"\n renderAs=\"div\"\n isInverted={isInverted}\n >\n {digit}\n </Callout>\n <Label\n type=\"copy-b\"\n size=\"big\"\n textColor={\n isInverted\n ? colors.primary.inverted\n : colors.primary.default\n }\n data-sheet=\"label\"\n >\n {label}\n </Label>\n {text && (\n <Text\n type=\"copy\"\n size=\"medium\"\n isInverted={isInverted}\n data-sheet=\"text\"\n innerHTML={text}\n />\n )}\n </View>\n );\n});\n\nNumberListCard.displayName = 'NumberListCard';\n\nconst CardList = styled.ul`\n display: flex;\n flex-direction: column;\n flex-wrap: wrap;\n justify-content: flex-start;\n align-items: center;\n\n list-style: none;\n padding: 0;\n margin: 0;\n margin-left: -${spacings.spacer}px;\n margin-top: -${spacings.nudge * 6}px;\n\n & > * {\n flex: 0 0 100%;\n width: 100%;\n min-width: ${CARD_MIN_WIDTH + spacings.spacer}px;\n max-width: ${CARD_MAX_WIDTH + spacings.spacer}px;\n padding-left: ${spacings.spacer}px;\n padding-top: ${spacings.nudge * 6}px;\n }\n\n @media ${MEDIA_QUERIES.medium} {\n flex-direction: row;\n justify-content: center;\n align-items: flex-start;\n\n margin-top: -${spacings.nudge * 10}px;\n\n & > * {\n flex: 0 0 50%;\n padding-top: ${spacings.nudge * 10}px;\n }\n\n & > li:first-child:nth-last-child(1) {\n /* -or- li:only-child { */\n flex: 0 0 100%;\n }\n }\n\n @media ${MEDIA_QUERIES.semilarge} {\n & > * {\n flex: 0 0 33.33%;\n }\n\n /* one item */\n & > li:first-child:nth-last-child(1) {\n /* -or- li:only-child { */\n flex: 0 0 100%;\n }\n\n /* two items */\n & > li:first-child:nth-last-child(2),\n & > li:first-child:nth-last-child(2) ~ li {\n flex: 0 0 50%;\n }\n }\n\n @media ${MEDIA_QUERIES.large} {\n & > * {\n flex: 0 0 25%;\n }\n\n /* one item */\n & > li:first-child:nth-last-child(1) {\n /* -or- li:only-child { */\n flex: 0 0 100%;\n }\n\n /* two items */\n & > li:first-child:nth-last-child(2),\n & > li:first-child:nth-last-child(2) ~ li {\n flex: 0 0 50%;\n }\n\n /* three items */\n & > li:first-child:nth-last-child(3),\n & > li:first-child:nth-last-child(3) ~ li {\n flex: 0 0 33.33%;\n }\n }\n`;\n\nexport interface NumberListItem {\n image?: ImageProps;\n digit?: string;\n label?: string;\n text?: string;\n}\n\nconst NumberList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n items?: NumberListItem[];\n\n /** Center texts in every card item */\n isCentered?: boolean;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n}> = ({ anchorId, items, bgMode, isCentered = true }) => {\n const theme = useContext(ThemeContext);\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n\n const { sheetRefs: numbersRef } = useEqualSheetHeight<HTMLDivElement>({\n listLength: items?.length || 0,\n identifiers: [\n '[data-sheet=\"digit\"]',\n '[data-sheet=\"label\"]',\n '[data-sheet=\"text\"]',\n ],\n responsive: {\n small: 1,\n medium: 2,\n semilarge: 3,\n large: 4,\n xlarge: 4,\n },\n customMediaQueries: MEDIA_QUERIES,\n });\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? color(theme).sectionBg.dark\n : hasBg\n ? color(theme).sectionBg.medium\n : color(theme).sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper addWhitespace>\n <CardList>\n {items?.map((item, i) => {\n return (\n <NumberListCard\n key={i}\n ref={numbersRef[i] as any}\n {...item}\n isInverted={isInverted}\n isCentered={isCentered}\n />\n );\n })}\n </CardList>\n </Wrapper>\n </Section>\n );\n};\n\nexport const NumberListComponent = NumberList;\nexport default withLibTheme(NumberList);\n","import React, { FC, useEffect, useRef, useState } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport { spacings } from 'utils/styles';\n\nconst View = styled.section`\n position: relative;\n width: 100vw;\n z-index: -1;\n`;\n\nconst Parallax = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n margin-left: 0;\n width: 100%;\n`;\n\nconst Content = styled.div<{\n contentWidth?: number;\n hAlign?: 'left' | 'center' | 'right';\n}>`\n margin-left: ${({ hAlign }) =>\n (hAlign === 'right' || hAlign === 'center') && 'auto'};\n margin-right: ${({ hAlign }) =>\n (hAlign === 'left' || hAlign === 'center') && 'auto'};\n\n width: ${({ contentWidth }) =>\n contentWidth\n ? contentWidth === -1\n ? 'auto'\n : contentWidth * 100 + '%'\n : undefined};\n\n max-width: ${spacings.wrapperLarge}px;\n overflow: hidden;\n\n & > * {\n width: ${({ contentWidth }) => contentWidth !== -1 && '100%'};\n }\n`;\n\nconst StyledImage = styled(Image)<{\n coverSpace?: boolean;\n hAlign?: 'left' | 'center' | 'right';\n}>`\n max-width: ${({ coverSpace }) => !coverSpace && 'none'};\n float: ${({ hAlign }) =>\n hAlign === 'left' || hAlign === 'right' ? hAlign : undefined};\n ${({ coverSpace, hAlign }) =>\n !coverSpace &&\n hAlign === 'center' &&\n css`\n transform: translateX(-50%);\n margin-left: 50%;\n `}\n`;\n\nexport type ParallaxWidth = '1/4' | 'half' | '3/4' | 'full' | 'auto';\n\nconst ParallaxBackground: FC<{\n image?: ImageProps;\n hAlign?: 'left' | 'center' | 'right';\n contentWidth?: ParallaxWidth | number;\n moveRatio?: number;\n direction?: 'down' | 'up';\n className?: string;\n}> = ({\n image,\n hAlign = 'left',\n contentWidth = 1,\n moveRatio = 0.2,\n direction = 'up',\n className,\n}) => {\n const [isLoaded, setIsLoaded] = useState<boolean>(false);\n const [yTransform, setYTransform] = useState<number>(0);\n // const cRef = useRef<HTMLDivElement>(null);\n const [cRef, setContainerRef] = useState<HTMLElement | null>(null);\n const parallaxRef = useRef<HTMLDivElement>(null);\n\n let width = 1;\n if (typeof contentWidth === 'string') {\n switch (contentWidth) {\n case '1/4': {\n width = 0.25;\n break;\n }\n\n case 'half': {\n width = 0.5;\n break;\n }\n\n case '3/4': {\n width = 0.75;\n break;\n }\n\n case 'auto': {\n width = -1;\n break;\n }\n\n default:\n case 'full': {\n width = 1;\n break;\n }\n }\n } else if (!isNaN(contentWidth)) {\n width = contentWidth;\n }\n\n useEffect(() => {\n setIsLoaded(true);\n }, []);\n\n useEffect(() => {\n const prevEl = cRef?.previousElementSibling;\n if (prevEl) {\n const bgIdent = (prevEl as HTMLElement).dataset.bgIdent;\n const stackIdent = (prevEl as HTMLElement).dataset.stackIdent;\n\n if (bgIdent) {\n // set data background from previous element\n cRef?.setAttribute('data-bg-ident', bgIdent);\n }\n\n if (stackIdent) {\n // set data stack flag from previous element\n cRef?.setAttribute('data-stack-ident', stackIdent);\n }\n }\n }, [cRef]);\n\n useEffect(() => {\n const handleScroll = () => {\n if (!cRef) return;\n\n const containerPos = cRef.getBoundingClientRect().top;\n const ratio = containerPos * moveRatio;\n const offset = ratio * (direction === 'up' ? 1 : -1);\n\n setYTransform(offset);\n };\n\n handleScroll();\n window.addEventListener('scroll', handleScroll);\n\n return () => {\n window.removeEventListener('scroll', handleScroll);\n };\n }, [cRef, direction, moveRatio]);\n\n return (\n <>\n {isLoaded && (\n <View ref={setContainerRef} data-bg-ident=\"transparent\">\n <Parallax\n ref={parallaxRef}\n style={{\n transform: `translate3d(0px, ${yTransform}px, 0px)`,\n }}\n className={className}\n >\n <Content hAlign={hAlign} contentWidth={width}>\n {image && (\n <StyledImage\n hAlign={hAlign}\n coverSpace={width !== -1}\n {...image}\n />\n )}\n </Content>\n </Parallax>\n </View>\n )}\n </>\n );\n};\n\nexport default ParallaxBackground;\n","import React, { FC } from 'react';\nimport styled from 'styled-components';\n\nimport Section from 'components/base/Section';\nimport Wrapper, { wrapperWhitespace } from 'components/base/Wrapper';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport { spacings, getGlobals as global } from 'utils/styles';\nimport IntroBlock, { IntroActionProps } from 'components/blocks/IntroBlock';\nimport { HeadlineTag } from 'components/typography/Heading';\nimport { withLibTheme } from 'utils/LibThemeProvider';\n\nconst Container = styled.figure<{\n hasContent?: boolean;\n verticallyCentered?: boolean;\n}>`\n position: relative;\n width: 100%;\n max-height: 550px;\n padding: 0;\n margin: 0;\n\n &:after {\n content: ${({ hasContent }) => hasContent && '\"\"'};\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n background: ${({ theme, verticallyCentered }) =>\n verticallyCentered\n ? global(theme).sections.imageTextGradientCentered\n : global(theme).sections.imageTextGradient};\n pointer-events: none;\n z-index: 0;\n }\n`;\n\nconst StyledImage = styled(Image)`\n img {\n height: 550px;\n }\n`;\n\nconst Intro = styled(IntroBlock)<{\n verticallyCentered?: boolean;\n horizontallyCentered?: boolean;\n}>`\n position: absolute;\n bottom: ${({ verticallyCentered }) => !verticallyCentered && '0'};\n top: ${({ verticallyCentered }) => verticallyCentered && '50%'};\n left: 50%;\n right: 0;\n max-height: 100%;\n max-width: ${spacings.wrapper}px;\n\n padding: ${wrapperWhitespace + spacings.nudge * 2}px;\n z-index: 1;\n\n transform: ${({ verticallyCentered }) =>\n verticallyCentered ? 'translate(-50%, -50%)' : 'translateX(-50%)'};\n`;\n\nconst Poster: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Clamp width of poster image to content wrapper or large wrapper */\n width?: 'full' | 'content';\n\n /** The poster image settings */\n image: Omit<ImageProps, 'coverSpace' | 'ratios'>;\n\n /** Main title text */\n title?: string;\n\n /** Main title HTML tag type (h2, h3, h4...) */\n titleAs?: HeadlineTag;\n\n /** Superior title that stands above main title */\n superTitle?: string;\n\n /** Superior title HTML tag type (h3, h4 ...) */\n superTitleAs?: HeadlineTag;\n\n /** Text underneath the title (richtext) */\n text?: string;\n\n /** Function to inject custom primary button */\n primaryAction?: (props: IntroActionProps) => React.ReactNode;\n\n /** Function to inject custom secondary button */\n secondaryAction?: (props: IntroActionProps) => React.ReactNode;\n\n /** Align text and actions vertically */\n verticallyCentered?: boolean;\n\n /** Align text and actions horizontally */\n horizontallyCentered?: boolean;\n}> = ({\n anchorId,\n width = 'content',\n title,\n titleAs,\n superTitle,\n superTitleAs,\n text,\n primaryAction,\n secondaryAction,\n image,\n verticallyCentered,\n horizontallyCentered,\n}) => {\n const isCentered = verticallyCentered && horizontallyCentered;\n\n return (\n <Section anchorId={anchorId} bgColor=\"image\" bgMode=\"full\">\n <Wrapper clampWidth={width === 'content' ? 'normal' : 'large'}>\n <Container\n hasContent={!!title || !!text}\n verticallyCentered={verticallyCentered}\n >\n <StyledImage {...image} coverSpace ratios={undefined} />\n {title && (\n <Intro\n verticallyCentered={verticallyCentered}\n horizontallyCentered={horizontallyCentered}\n renderAs=\"figcaption\"\n colorMode=\"onImage\"\n title={title}\n titleAs={titleAs}\n superTitle={superTitle}\n superTitleAs={superTitleAs}\n text={text}\n secondaryAction={secondaryAction}\n primaryAction={primaryAction}\n clampTitle\n maxTitleLines={3}\n clampText\n maxTextLines={4}\n isCentered={horizontallyCentered || isCentered}\n />\n )}\n </Container>\n </Wrapper>\n </Section>\n );\n};\n\nexport const PosterComponent = Poster;\nexport default withLibTheme(Poster);\n","import React from 'react';\nimport styled from 'styled-components';\nimport { getColors as color, mq, spacings } from 'utils/styles';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Copy from 'components/typography/Copy';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\n\nconst ItemList = styled.ul`\n margin: 0;\n padding: 0;\n list-style: none;\n\n & > * + * {\n margin-top: ${spacings.nudge}px;\n }\n`;\n\nconst ItemBlock = styled.li<{ hasBg?: boolean }>`\n max-width: 100%;\n padding: ${spacings.nudge * 2}px;\n\n background: ${({ theme, hasBg }) =>\n hasBg ? color(theme).elementBg.light : color(theme).elementBg.medium};\n\n & > * + * {\n margin-top: ${spacings.nudge * 2}px;\n }\n\n @media ${mq.semilarge} {\n padding: ${spacings.nudge * 3}px;\n }\n`;\n\nconst ListHead = styled.div`\n display: flex;\n justify-content: space-between;\n\n & > * + * {\n margin-left: ${spacings.nudge * 2}px;\n }\n`;\n\nconst Title = styled(Copy)`\n max-width: 880px;\n`;\n\nconst Price = styled(Copy)`\n white-space: nowrap;\n`;\n\nconst Description = styled(Copy)`\n max-width: 880px;\n`;\n\nexport interface PriceItems {\n /** Title of the price item */\n title?: string;\n /** Description text of price item (richtext) */\n text?: string;\n /** The price value (Currency not included) */\n price?: string;\n}\n\nexport const PriceBlock: React.FC<PriceItems & { hasBg?: boolean }> = ({\n text,\n price,\n hasBg = false,\n title,\n}) => {\n return (\n <ItemBlock hasBg={hasBg}>\n <ListHead>\n {title && <Title type=\"copy-b\">{title}</Title>}\n {price && <Price type=\"copy-b\">{price}</Price>}\n </ListHead>\n {text && <Description type=\"copy\" innerHTML={text} />}\n </ItemBlock>\n );\n};\n\nconst PriceList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array with price items */\n items?: PriceItems[];\n\n /** Section background */\n bgMode?: 'inverted' | 'full';\n}> = ({ anchorId, bgMode, items }) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const hasBack = isInverted || bgMode === 'full';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode === 'full'\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper addWhitespace>\n <ItemList>\n {items?.map((item, i) => (\n <PriceBlock key={i} {...item} hasBg={hasBack} />\n ))}\n </ItemList>\n </Wrapper>\n </Section>\n );\n};\n\nexport const PriceListComponent = PriceList;\nexport default withLibTheme(PriceList);\n","import {\n spacings,\n getColors as color,\n getGlobals as global,\n} from 'utils/styles';\nimport React, { forwardRef } from 'react';\nimport styled from 'styled-components';\nimport Copy from 'components/typography/Copy';\nimport Actions from './Actions';\nimport Callout from 'components/typography/Callout';\n\nconst View = styled.div<{\n isInverted?: boolean;\n isCentered?: boolean;\n hasBg?: boolean;\n isHighlighted?: boolean;\n}>`\n padding: ${spacings.spacer}px;\n\n border: 1px solid transparent;\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n\n background: ${({ theme, hasBg, isInverted, isHighlighted }) =>\n isInverted\n ? isHighlighted\n ? color(theme).primary.inverted\n : color(theme).elementBg.medium\n : isHighlighted\n ? color(theme).primary.default\n : hasBg\n ? color(theme).elementBg.light\n : color(theme).elementBg.medium};\n\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n text-align: ${({ isCentered }) => (isCentered ? 'center' : 'left')};\n\n & > * + * {\n margin-top: ${spacings.nudge * 3}px;\n }\n`;\n\nconst StyledActions = styled(Actions)`\n display: block;\n margin-top: auto;\n padding-top: ${spacings.spacer}px;\n text-align: center;\n`;\n\nexport interface PriceTagProps {\n title?: string;\n superTitle?: string;\n text?: string;\n action?: (props: {\n isInverted?: boolean;\n isHighlighted?: boolean;\n }) => React.ReactNode;\n isInverted?: boolean;\n isCentered?: boolean;\n hasBackground?: boolean;\n isHighlighted?: boolean;\n}\n\nconst PriceTag = forwardRef<\n HTMLDivElement,\n PriceTagProps & { className?: string }\n>(\n (\n {\n superTitle,\n title,\n text,\n action,\n isInverted,\n isCentered,\n isHighlighted,\n hasBackground,\n className,\n },\n ref\n ) => {\n const inverted = isHighlighted ? !isInverted : false;\n\n return (\n <View\n ref={ref}\n isInverted={isInverted}\n isCentered={isCentered}\n isHighlighted={isHighlighted}\n hasBg={hasBackground}\n className={className}\n >\n {superTitle && (\n <Copy\n type=\"copy-b\"\n size=\"big\"\n isInverted={inverted}\n innerHTML={superTitle}\n data-sheet=\"superTitle\"\n />\n )}\n {title && (\n <Callout\n renderAs=\"div\"\n size=\"big\"\n isInverted={inverted}\n innerHTML={title}\n data-sheet=\"title\"\n />\n )}\n {text && (\n <Copy\n size=\"medium\"\n isInverted={inverted}\n innerHTML={text}\n data-sheet=\"desc\"\n />\n )}\n <StyledActions\n mode=\"cover\"\n primary={\n action &&\n action({\n isInverted: inverted,\n isHighlighted: isHighlighted,\n })\n }\n />\n </View>\n );\n }\n);\n\nPriceTag.displayName = 'PriceTag';\n\nexport default PriceTag;\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport PriceTag, { PriceTagProps } from 'components/blocks/PriceTag';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { useEqualSheetHeight } from 'utils/useEqualSheetHeight';\nimport { gridSettings } from 'components/base/Grid';\nimport { mq } from 'utils/styles';\n\nconst Tag = styled(PriceTag)`\n min-height: 500px;\n`;\n\nconst Items = styled.div`\n display: flex;\n justify-content: center;\n flex-wrap: wrap;\n\n margin-top: -${gridSettings.gutter}px;\n margin-left: -${gridSettings.gutter}px;\n\n & > * {\n flex: 1 1 25%;\n min-width: 286px;\n max-width: 320px;\n margin-top: ${gridSettings.gutter}px;\n margin-left: ${gridSettings.gutter}px;\n }\n\n @media ${mq.large} {\n & > * {\n max-width: 286px;\n }\n }\n`;\n\nconst PriceTable: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n /** Array of PriceTag card items */\n items: Array<Omit<PriceTagProps, 'isInverted'>>;\n /** Center text inside card items */\n isCentered?: boolean;\n /** Section background */\n bgMode?: 'full' | 'inverted';\n}> = ({ anchorId, items, isCentered, bgMode }) => {\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n const priceTagCount = items?.length || 0;\n\n const { colors } = useLibTheme();\n\n const { sheetRefs: cardRefs } = useEqualSheetHeight<HTMLDivElement>({\n listLength: priceTagCount,\n identifiers: [\n '[data-sheet=\"superTitle\"]',\n '[data-sheet=\"title\"]',\n '[data-sheet=\"desc\"]',\n ],\n responsive: {\n small: 1,\n medium: 1,\n semilarge: 2,\n large: 3,\n xlarge: 3,\n },\n });\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : hasBg\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n >\n <Wrapper addWhitespace>\n <Items>\n {items?.map((item, i) => (\n <Tag\n key={i}\n ref={cardRefs[i]}\n {...item}\n isInverted={isInverted}\n isCentered={isCentered}\n hasBackground={hasBg}\n />\n ))}\n </Items>\n </Wrapper>\n </Section>\n );\n};\n\nexport const PriceTableComponent = PriceTable;\nexport default withLibTheme(PriceTable);\n","import React, { FC } from 'react';\nimport styled from 'styled-components';\n\nimport { mq, spacings } from 'utils/styles';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Callout from 'components/typography/Callout';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Copy from 'components/typography/Copy';\n\nconst Content = styled.figure`\n margin: 0;\n padding: 0;\n\n & > * + * {\n margin-top: ${spacings.spacer}px;\n }\n\n @media ${mq.medium} {\n max-width: 960px;\n margin: 0 auto;\n }\n`;\n\nconst Text = styled(Callout)`\n text-align: center;\n margin-left: 0;\n margin-right: 0;\n padding: 0;\n`;\n\nconst Source = styled(Copy)`\n text-align: center;\n margin-left: 0;\n margin-right: 0;\n padding: 0;\n`;\n\nconst Quote: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Text of the blockquote (richtext) */\n text?: string;\n\n /** Source of the quote e.g. author (richtext) */\n source?: string;\n\n /** URL for additional cite informations */\n citeUrl?: string;\n\n /** Section backgrounds */\n bgMode?: 'full' | 'inverted';\n}> = ({ anchorId, bgMode, text, source, citeUrl }) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode === 'full'\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper clampWidth=\"normal\" addWhitespace>\n <Content>\n {text && (\n <Text\n size=\"small\"\n renderAs=\"blockquote\"\n isInverted={isInverted}\n innerHTML={text}\n {...{ cite: citeUrl }}\n />\n )}\n {source && (\n <Source\n isInverted={isInverted}\n renderAs=\"figcaption\"\n innerHTML={source}\n />\n )}\n </Content>\n </Wrapper>\n </Section>\n );\n};\n\nexport const QuoteComponent = Quote;\nexport default withLibTheme(Quote);\n","import React, { FC, useContext } from 'react';\nimport styled, { ThemeContext } from 'styled-components';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport Wrapper from 'components/base/Wrapper';\nimport { getColors } from 'utils/styles';\nimport { withLibTheme } from 'utils/LibThemeProvider';\n\nconst ImageWrapper = styled(Wrapper)<{ hAlign?: 'left' | 'center' | 'right' }>`\n display: flex;\n justify-content: ${({ hAlign }) => {\n switch (hAlign) {\n case 'center':\n return 'center';\n case 'right':\n return 'flex-end';\n default:\n return 'flex-start';\n }\n }};\n`;\n\nconst SimpleImage: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Image settings */\n image?: ImageProps;\n\n /** Horizontal alignment of the image */\n hAlign?: 'left' | 'center' | 'right';\n\n /** Allow reduced section spacing to next section */\n isStackable?: boolean;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n}> = ({ anchorId, image, hAlign = 'left', bgMode, isStackable }) => {\n const theme = useContext(ThemeContext);\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n isStackable={isStackable}\n bgColor={\n isInverted\n ? getColors(theme).sectionBg.dark\n : hasBg\n ? getColors(theme).sectionBg.medium\n : getColors(theme).sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n >\n <ImageWrapper hAlign={hAlign}>\n {image && <Image {...image} />}\n </ImageWrapper>\n </Section>\n );\n};\n\nexport const SimpleImageComponent = SimpleImage;\nexport default withLibTheme(SimpleImage);\n","import React from 'react';\nimport styled from 'styled-components';\nimport {\n getColors as color,\n mq,\n spacings,\n getGlobals as global,\n} from 'utils/styles';\n\nimport Instagram from 'components/base/icons/socials/Instagram';\nimport Heading from 'components/typography/Heading';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Link, { LinkProps } from 'components/typography/Link';\nimport { gridSettings } from 'components/base/Grid';\nimport Image, { ImageProps } from 'components/blocks/Image';\n\nconst Cards = styled.ul`\n display: flex;\n flex-wrap: wrap;\n margin: 0;\n padding: 0;\n list-style: none;\n\n margin-top: -${spacings.spacer}px;\n margin-left: -${spacings.spacer}px;\n\n & > * {\n flex: 1 1 100%;\n margin-top: ${spacings.spacer}px;\n margin-left: ${spacings.spacer}px;\n }\n\n @media ${mq.medium} {\n & > * {\n flex: 1 1 calc(50% - ${gridSettings.gutter}px);\n max-width: calc(50% - ${gridSettings.gutter}px);\n }\n }\n\n @media ${mq.large} {\n & > * {\n flex: 1 1 calc(${(1 / 3) * 100}% - ${gridSettings.gutter}px);\n max-width: calc(${(1 / 3) * 100}% - ${gridSettings.gutter}px);\n }\n }\n`;\n\nconst Item = styled.li`\n display: block;\n position: relative;\n padding: 0;\n`;\n\nconst Card = styled(Link)<{ isInverted?: boolean }>`\n position: relative;\n display: block;\n text-decoration: none;\n color: '#fff';\n outline-color: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n overflow: hidden;\n\n &:before {\n content: '';\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).secondary.inverted\n : color(theme).secondary.default};\n\n opacity: 0;\n pointer-events: none;\n z-index: 1;\n transition: opacity 0.2s ease-in-out;\n }\n\n &:hover {\n &:before {\n opacity: 1;\n pointer-events: all;\n }\n }\n\n &:focus {\n &:before {\n opacity: 1;\n pointer-events: all;\n }\n }\n`;\n\nconst StyledImage = styled(Image)`\n display: block;\n height: 100%;\n z-index: 0;\n`;\n\nconst TextContainer = styled.div`\n position: absolute;\n top: 50%;\n left: 50%;\n width: 100%;\n transform: translate(-50%, -50%);\n text-align: center;\n\n padding: ${spacings.nudge * 2}px;\n\n opacity: 0;\n pointer-events: none;\n z-index: 2;\n transition: opacity 0.2s ease-in-out;\n\n & > * + * {\n margin-top: ${spacings.nudge * 2}px;\n }\n\n ${Card}:hover & {\n opacity: 1;\n pointer-events: all;\n }\n\n ${Card}:focus & {\n opacity: 1;\n pointer-events: all;\n }\n`;\n\nconst FollowUs = styled(Heading)`\n text-transform: uppercase;\n`;\n\nconst InstagramIcon = styled.div`\n position: absolute;\n left: 20px;\n bottom: 20px;\n color: ${({ theme }) => color(theme).text.inverted};\n z-index: 2;\n\n & > * {\n fill: #fff;\n\n ${Card}:hover & {\n color: ${({ theme }) => color(theme).text.inverted};\n }\n }\n`;\n\nconst SocialWall: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array with item settings */\n items?: Array<{\n link?: LinkProps;\n image?: Omit<ImageProps, 'coverSpace' | 'ratio'>;\n }>;\n\n /** Text for main social media follow call */\n followUs?: string;\n\n /** Text for e.g. social media hashtag */\n hashTag?: string;\n\n /** Function to inject custom social icon on bottom left corner */\n socialIcon?: React.ReactNode;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n}> = ({ anchorId, items, hashTag, followUs, socialIcon, bgMode }) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n\n return (\n <Section\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : hasBg\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n addSeperation\n >\n <Wrapper addWhitespace>\n <Cards>\n {items?.map((item, i) => (\n <Item key={i}>\n <Card\n isExternal\n {...item.link}\n isInverted={isInverted}\n ariaLabel={item?.image?.alt}\n >\n {item.image && (\n <StyledImage\n {...item.image}\n coverSpace\n ratios={{\n small: { w: 1, h: 1 },\n }}\n isInverted={isInverted}\n />\n )}\n <TextContainer>\n <FollowUs size=\"super\" isInverted>\n {followUs\n ? followUs\n : 'Follow Us On Instagram'}\n </FollowUs>\n {hashTag && (\n <Heading size=\"heading-2\" isInverted>\n {hashTag}\n </Heading>\n )}\n </TextContainer>\n <InstagramIcon>\n {socialIcon || <Instagram />}\n </InstagramIcon>\n </Card>\n </Item>\n ))}\n </Cards>\n </Wrapper>\n </Section>\n );\n};\n\nexport const SocialWallComponent = SocialWall;\nexport default withLibTheme(SocialWall);\n","import React from 'react';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport TableBlock, { TableProps } from 'components/blocks/TableBlock';\nimport styled from 'styled-components';\nimport { spacings } from 'utils/styles';\n\nconst TableSection = styled(Section)`\n overflow: unset;\n`;\n\nconst TableWrapper = styled(Wrapper)`\n & > * + * {\n margin-top: ${spacings.spacer}px;\n }\n`;\n\nconst Table: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Table rows and columns */\n tableItems: TableProps[];\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n}> = ({ anchorId, bgMode, tableItems }) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full' || isInverted;\n\n return (\n <TableSection\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : hasBg\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <TableWrapper>\n {tableItems.map((item, i) => {\n return (\n <TableBlock\n key={i}\n {...item}\n isInverted={isInverted}\n hasBack={hasBg}\n />\n );\n })}\n </TableWrapper>\n </TableSection>\n );\n};\n\nexport const TableComponent = Table;\nexport default withLibTheme(Table);\n","import React, { FC, useRef, useState } from 'react';\nimport styled from 'styled-components';\n\nimport Grid from 'components/base/Grid';\nimport { HeadlineTag } from 'components/typography/Heading';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport Copy from 'components/typography/Copy';\nimport Wrapper from 'components/base/Wrapper';\nimport Section, { BgMode } from 'components/base/Section';\nimport {\n mq,\n spacings,\n getGlobals as global,\n getFonts as font,\n} from 'utils/styles';\nimport Actions from 'components/blocks/Actions';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport IntroBlock from 'components/blocks/IntroBlock';\nimport VideoBlock, { VideoAspectRatios } from 'components/blocks/VideoBlock';\nimport { isValidArray } from 'utils/arrays';\nimport { useObserverSupport } from 'utils/useObserverSupport';\nimport useUpdateEffect from 'utils/useUpdateEffect';\n\nconst Figure = styled.figure`\n display: flex;\n flex-direction: column;\n position: relative;\n height: 100%;\n width: 100%;\n margin: 0;\n padding: 0;\n\n & > * + * {\n margin-top: ${spacings.nudge}px;\n }\n\n @media ${mq.semilarge} {\n & > * + * {\n margin-top: ${spacings.nudge * 2}px;\n }\n }\n`;\n\nconst StyledImage = styled(Image)`\n position: relative;\n width: 100%;\n height: 100%;\n\n @media ${mq.semilarge} {\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n overflow: hidden;\n }\n`;\n\nconst Video = styled(VideoBlock)<{\n ratios?: VideoAspectRatios;\n isVisible?: boolean;\n}>`\n display: ${({ isVisible }) => (isVisible ? 'block' : 'none')};\n width: 100%;\n height: 100%;\n`;\n\nconst Description = styled(Copy)<{\n isInverted?: boolean;\n isSplitted?: boolean;\n isMirrored?: boolean;\n}>`\n display: block;\n\n @media ${mq.semilarge} {\n padding-left: ${spacings.nudge * 2}px;\n padding-right: ${spacings.nudge * 2}px;\n margin-left: ${({ isMirrored }) => isMirrored && 'auto'};\n margin-right: ${({ isMirrored }) => !isMirrored && 'auto'};\n max-width: ${({ isSplitted }) => isSplitted && '81.5%'};\n\n color: ${({ theme, isInverted, isSplitted }) =>\n isInverted && !isSplitted\n ? font(theme).copy.small.colorInverted\n : font(theme).copy.small.color};\n }\n\n @media ${mq.xlarge} {\n max-width: ${({ isSplitted }) => isSplitted && '69.5%'};\n }\n`;\n\nconst StyledActions = styled(Actions)`\n &:not(:first-child) {\n margin-top: ${spacings.spacer}px;\n }\n`;\n\nconst Teaser: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Switch text and image columns */\n isMirrored?: boolean;\n\n /** Superior title that stands above main title */\n superTitle?: string;\n\n /** Superior title HTML tag type (h3, h4 ...) */\n superTitleAs?: HeadlineTag;\n\n /** Main title text */\n title?: string;\n\n /** Main title HTML tag type (h2, h3, h4...) */\n titleAs?: HeadlineTag;\n\n /** Images for different screen sizes */\n image?: Omit<ImageProps, 'coverSpace'>;\n\n /**\n * Use video instead of an image. Until video is loaded images defined in the image prop are used.\n * Multiple video urls can be used to loaded different file formats\n */\n video?: {\n urls: string[];\n aspectRatios?: VideoAspectRatios;\n };\n\n /** Image or video description text (richtext) */\n description?: string;\n\n /** Main richtext */\n text?: string;\n\n /** Section background */\n bgMode?: 'full' | 'inverted' | 'splitted' | 'inverted-splitted';\n\n /** Function to inject custom primary button */\n primaryAction?: (isInverted?: boolean) => React.ReactNode;\n\n /** Function to inject custom secondary button */\n secondaryAction?: (isInverted?: boolean) => React.ReactNode;\n}> = ({\n anchorId,\n isMirrored = false,\n bgMode,\n superTitle,\n superTitleAs,\n title,\n titleAs,\n image,\n video,\n description,\n text,\n primaryAction,\n secondaryAction,\n}) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted' || bgMode === 'inverted-splitted';\n const isSplitted = bgMode === 'splitted' || bgMode === 'inverted-splitted';\n const hasVideo = isValidArray(video?.urls, false);\n\n const viewRef = useRef<HTMLDivElement | null>(null);\n const [isLoaded, setLoaded] = useState(!image?.small || false);\n const [isVideoActive, setVideoActive] = useState<boolean>(false);\n const isObserverSupported = useObserverSupport();\n\n useUpdateEffect(() => {\n if (!viewRef.current || !hasVideo) return;\n if (!isObserverSupported) {\n setVideoActive(true);\n return;\n }\n\n const observer = new IntersectionObserver(\n (entries, observer) => {\n const [entry] = entries;\n\n if (entry.isIntersecting) {\n observer.unobserve(entry.target);\n setVideoActive(true);\n }\n },\n {\n rootMargin: '200px 0px 200px 0px',\n }\n );\n\n const viewEl = viewRef.current;\n observer.observe(viewEl);\n\n return () => {\n if (viewEl) observer.unobserve(viewEl);\n };\n }, [isObserverSupported]);\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToTeaserBgMode(bgMode, false, isMirrored)}\n >\n <Wrapper addWhitespace clampWidth=\"normal\">\n <Grid.Row valign=\"center\">\n <Grid.Col\n semilarge={{\n span: 6 / 12,\n move: (isMirrored ? 6 : 0) / 12,\n }}\n xlarge={{\n span: 7 / 12,\n move: (isMirrored ? 5 : 0) / 12,\n }}\n >\n {(image?.small || hasVideo) && (\n <Figure ref={viewRef}>\n {image?.small && (!video || !isLoaded) && (\n <StyledImage\n {...image}\n isInverted={isInverted}\n coverSpace\n />\n )}\n {hasVideo && (\n <Video\n urls={\n isVideoActive\n ? video?.urls\n : undefined\n }\n muted\n autoPlay\n loop\n onCanPlayThrough={() => setLoaded(true)}\n ratios={video?.aspectRatios}\n isVisible={isLoaded}\n isInverted={isInverted}\n />\n )}\n {description && (\n <Description\n size=\"small\"\n renderAs=\"figcaption\"\n isInverted={isInverted}\n isSplitted={isSplitted}\n isMirrored={isMirrored}\n innerHTML={description}\n />\n )}\n </Figure>\n )}\n </Grid.Col>\n\n <Grid.Col\n semilarge={{\n span: 6 / 12,\n move: (isMirrored ? -6 : 0) / 12,\n }}\n xlarge={{\n span: 5 / 12,\n move: (isMirrored ? -7 : 0) / 12,\n }}\n >\n <IntroBlock\n titleHyphens\n title={title}\n titleAs={titleAs}\n superTitle={superTitle}\n superTitleAs={superTitleAs}\n text={text}\n colorMode={isInverted ? 'inverted' : 'default'}\n />\n {(primaryAction || secondaryAction) && (\n <StyledActions\n primary={\n primaryAction && primaryAction(isInverted)\n }\n secondary={\n secondaryAction &&\n secondaryAction(isInverted)\n }\n />\n )}\n </Grid.Col>\n </Grid.Row>\n </Wrapper>\n </Section>\n );\n};\n\nexport const mapToTeaserBgMode = (\n mode?: 'full' | 'splitted' | 'inverted' | 'inverted-splitted',\n preventSplit = false,\n isMirrored = false\n): BgMode | undefined => {\n switch (mode) {\n case 'full':\n return 'full';\n case 'inverted':\n return 'inverted';\n case 'splitted': {\n if (!preventSplit)\n return isMirrored ? 'larger-left' : 'larger-right';\n else return undefined;\n }\n case 'inverted-splitted': {\n if (!preventSplit)\n return isMirrored ? 'larger-left' : 'larger-right';\n else return undefined;\n }\n\n default:\n return undefined;\n }\n};\n\nexport const TeaserComponent = Teaser;\nexport default withLibTheme(Teaser);\n","import React, { FC, useRef, useState } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport Grid, { getGridWidth } from 'components/base/Grid';\nimport { HeadlineTag } from 'components/typography/Heading';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport Wrapper, { wrapperWhitespace } from 'components/base/Wrapper';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport { mq, spacings, withRange, getGlobals as global } from 'utils/styles';\nimport Actions from 'components/blocks/Actions';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport IntroBlock from 'components/blocks/IntroBlock';\nimport VideoBlock, { VideoAspectRatios } from 'components/blocks/VideoBlock';\nimport { isValidArray } from 'utils/arrays';\nimport { useObserverSupport } from 'utils/useObserverSupport';\nimport useUpdateEffect from 'utils/useUpdateEffect';\n\n/**\n * calculate single grid col from relative content wrapper\n * (grid width = wrapper width without paddings)\n * */\nconst getGridColOfContent = () => {\n return css`\n ${getGridWidth({\n cols: 1,\n gridWidth: `${spacings.wrapper - wrapperWhitespace * 2}px `,\n })}\n `;\n};\n\nconst WideVideo = styled(VideoBlock)<{\n isMirrored?: boolean;\n isVisible?: boolean;\n}>`\n display: ${({ isVisible }) => (isVisible ? 'block' : 'none')};\n position: relative;\n top: 0;\n left: 0;\n bottom: 0;\n width: 100%;\n height: 100%;\n\n min-height: 400px;\n object-fit: cover;\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n\n @media ${mq.semilarge} {\n position: absolute;\n /** \n calculate width of 6 grid cols (grid width = viewport width without wrapper paddings)\n and add left or right wrapper padding afterwards\n */\n width: calc(\n ${getGridWidth({\n cols: 6,\n gridWidth: `100% - ${wrapperWhitespace * 2}px `,\n })} + ${wrapperWhitespace}px\n );\n left: ${({ isMirrored }) => (isMirrored ? 'auto' : '0')};\n right: ${({ isMirrored }) => (isMirrored ? '0' : 'auto')};\n }\n\n @media ${mq.xlarge} {\n /** \n calculate width of 1 grid cols\n and add left or right wrapper padding afterwards. Then add this to 50% of current\n viewport width.\n */\n width: calc(50% + ${getGridColOfContent()} + ${wrapperWhitespace}px);\n }\n\n @media ${mq.xxlarge} {\n /** \n calculate width of 1 grid cols\n and add left or right wrapper padding afterwards. Then add this to 50% of large wrapper width.\n */\n width: calc(\n ${spacings.wrapperLarge / 2}px + ${getGridColOfContent()} +\n ${wrapperWhitespace}px\n );\n\n left: ${({ isMirrored }) => (isMirrored ? 'auto' : '50%')};\n right: ${({ isMirrored }) => (isMirrored ? '50%' : 'auto')};\n\n ${({ isMirrored }) =>\n css`\n transform: translateX(\n calc(\n ${isMirrored ? '100% - ' : '-100% + '}\n (${getGridColOfContent()} + ${wrapperWhitespace}px)\n )\n );\n `};\n }\n`;\n\nconst WideImage = styled(Image)<{ isMirrored?: boolean }>`\n position: relative;\n top: 0;\n left: 0;\n bottom: 0;\n width: 100%;\n\n height: 100%;\n min-height: 400px;\n\n img {\n height: 100%;\n }\n\n @media ${mq.semilarge} {\n position: absolute;\n /** \n calculate width of 6 grid cols (grid width = viewport width without wrapper paddings)\n and add left or right wrapper padding afterwards\n */\n width: calc(\n ${getGridWidth({\n cols: 6,\n gridWidth: `100% - ${wrapperWhitespace * 2}px `,\n })} + ${wrapperWhitespace}px\n );\n left: ${({ isMirrored }) => (isMirrored ? 'auto' : '0')};\n right: ${({ isMirrored }) => (isMirrored ? '0' : 'auto')};\n }\n\n @media ${mq.xlarge} {\n /** \n calculate width of 1 grid cols\n and add left or right wrapper padding afterwards. Then add this to 50% of current\n viewport width.\n */\n width: calc(50% + ${getGridColOfContent()} + ${wrapperWhitespace}px);\n }\n\n @media ${mq.xxlarge} {\n /** \n calculate width of 1 grid cols\n and add left or right wrapper padding afterwards. Then add this to 50% of large wrapper width.\n */\n width: calc(\n ${spacings.wrapperLarge / 2}px + ${getGridColOfContent()} +\n ${wrapperWhitespace}px\n );\n\n left: ${({ isMirrored }) => (isMirrored ? 'auto' : '50%')};\n right: ${({ isMirrored }) => (isMirrored ? '50%' : 'auto')};\n\n ${({ isMirrored }) =>\n css`\n transform: translateX(\n calc(\n ${isMirrored ? '100% - ' : '-100% + '}\n (${getGridColOfContent()} + ${wrapperWhitespace}px)\n )\n );\n `};\n }\n`;\n\nconst Content = styled.div`\n ${({ theme }) =>\n withRange(\n global(theme).sections.seperation.padding.default,\n 'padding-bottom'\n )}\n\n @media ${mq.semilarge} {\n ${({ theme }) =>\n withRange(\n global(theme).sections.seperation.padding.default,\n 'padding-top'\n )}\n }\n`;\n\nconst StyledActions = styled(Actions)`\n &:not(:first-child) {\n margin-top: ${spacings.spacer}px;\n }\n`;\n\nconst TeaserWide: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Switch text and image columns */\n isMirrored?: boolean;\n\n /** Superior title that stands above main title */\n superTitle?: string;\n\n /** Superior title HTML tag type (h3, h4 ...) */\n superTitleAs?: HeadlineTag;\n\n /** Main title text */\n title?: string;\n\n /** Main title HTML tag type (h2, h3, h4...) */\n titleAs?: HeadlineTag;\n\n /** Images for different screen sizes */\n image?: Omit<ImageProps, 'coverSpace'>;\n\n /**\n * Use video instead of an image. Until video is loaded images defined in the image prop are used.\n * Multiple video urls can be used to loaded different file formats\n */\n video?: {\n urls: string[];\n aspectRatios?: VideoAspectRatios;\n };\n\n /** Main richtext */\n text?: string;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n\n /** Function to inject custom primary button */\n primaryAction?: (isInverted?: boolean) => React.ReactNode;\n\n /** Function to inject custom secondary button */\n secondaryAction?: (isInverted?: boolean) => React.ReactNode;\n}> = ({\n anchorId,\n isMirrored = false,\n superTitle,\n superTitleAs,\n title,\n titleAs,\n image,\n video,\n text,\n primaryAction,\n secondaryAction,\n bgMode,\n}) => {\n const { colors } = useLibTheme();\n\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n const hasVideo = isValidArray(video?.urls, false);\n\n const viewRef = useRef<HTMLDivElement | null>(null);\n const [isLoaded, setLoaded] = useState(!image?.small || false);\n const [isVideoActive, setVideoActive] = useState<boolean>(false);\n const isObserverSupported = useObserverSupport();\n\n useUpdateEffect(() => {\n if (!viewRef.current || !hasVideo) return;\n if (!isObserverSupported) {\n setVideoActive(true);\n return;\n }\n\n const observer = new IntersectionObserver(\n (entries, observer) => {\n const [entry] = entries;\n\n if (entry.isIntersecting) {\n observer.unobserve(entry.target);\n setVideoActive(true);\n }\n },\n {\n rootMargin: '200px 0px 200px 0px',\n }\n );\n\n const viewEl = viewRef.current;\n observer.observe(viewEl);\n\n return () => {\n if (viewEl) observer.unobserve(viewEl);\n };\n }, [isObserverSupported]);\n\n return (\n <Section\n ref={viewRef}\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : hasBg\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n {image?.small && (!video || !isLoaded) && (\n <WideImage\n coverSpace\n {...image}\n isMirrored={isMirrored}\n isInverted={isInverted}\n />\n )}\n {hasVideo && (\n <WideVideo\n urls={isVideoActive ? video?.urls : undefined}\n muted\n autoPlay\n loop\n onCanPlayThrough={() => setLoaded(true)}\n isVisible={isLoaded}\n isInverted={isInverted}\n isMirrored={isMirrored}\n ratios={video?.aspectRatios}\n />\n )}\n <Wrapper clampWidth=\"normal\" addWhitespace>\n <Grid.Row valign=\"center\">\n <Grid.Col\n semilarge={{\n span: 6 / 12,\n move: (isMirrored ? 6 : 0) / 12,\n }}\n xlarge={{\n span: 7 / 12,\n move: (isMirrored ? 5 : 0) / 12,\n }}\n ></Grid.Col>\n <Grid.Col\n semilarge={{\n span: 6 / 12,\n move: (isMirrored ? -6 : 0) / 12,\n }}\n xlarge={{\n span: 5 / 12,\n move: (isMirrored ? -7 : 0) / 12,\n }}\n >\n <Content>\n <IntroBlock\n titleHyphens\n title={title}\n titleAs={titleAs}\n superTitle={superTitle}\n superTitleAs={superTitleAs}\n text={text}\n colorMode={isInverted ? 'inverted' : 'default'}\n />\n {(primaryAction || secondaryAction) && (\n <StyledActions\n primary={\n primaryAction &&\n primaryAction(isInverted)\n }\n secondary={\n secondaryAction &&\n secondaryAction(isInverted)\n }\n />\n )}\n </Content>\n </Grid.Col>\n </Grid.Row>\n </Wrapper>\n </Section>\n );\n};\n\nexport const TeaserWideComponent = TeaserWide;\nexport default withLibTheme(TeaserWide);\n","import Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Copy from 'components/typography/Copy';\nimport Heading from 'components/typography/Heading';\nimport React, {\n createRef,\n MutableRefObject,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport styled, { ThemeContext } from 'styled-components';\nimport { getColors as color, mq, spacings } from 'utils/styles';\nimport { useObserverSupport } from 'utils/useObserverSupport';\nimport { withLibTheme } from 'utils/LibThemeProvider';\n\nconst TimelineBlock = styled.div<{\n isSwitched?: boolean;\n isActive?: boolean;\n isInverted?: boolean;\n}>`\n position: relative;\n\n @media ${mq.large} {\n text-align: ${({ isSwitched }) => (isSwitched ? 'left' : 'right')};\n }\n\n &:after {\n content: '';\n width: 10px;\n height: 10px;\n\n box-sizing: content-box;\n border: 2px solid\n ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).elementBg.light\n : color(theme).elementBg.dark};\n border-radius: 50%;\n\n background: ${({ theme, isActive, isInverted }) =>\n isActive\n ? isInverted\n ? color(theme).elementBg.light\n : color(theme).elementBg.dark\n : isInverted\n ? color(theme).elementBg.dark\n : color(theme).elementBg.light};\n\n position: absolute;\n top: 16px;\n left: 0px;\n\n transition: all 0.2s ease-in-out;\n\n @media ${mq.large} {\n left: ${({ isSwitched }) => (!isSwitched ? '50%' : 'auto')};\n right: ${({ isSwitched }) => isSwitched && '50%'};\n transform: translateX(\n ${({ isSwitched }) => (isSwitched ? '50%' : '-50%')}\n );\n }\n }\n\n &:before {\n content: '';\n display: block;\n position: absolute;\n width: 2px;\n min-height: 160px;\n height: 100%;\n background: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).elementBg.light\n : color(theme).elementBg.dark};\n left: 5px;\n\n @media ${mq.large} {\n left: 50%;\n transform: translateX(-50%);\n }\n }\n\n &:first-child {\n padding-top: 0;\n\n &:before {\n top: 16px;\n }\n }\n`;\n\nconst TimelineText = styled.div<{\n isSwitched?: boolean;\n}>`\n position: relative;\n padding-left: ${spacings.nudge * 3 + 2}px;\n padding-bottom: ${spacings.spacer}px;\n\n @media ${mq.large} {\n max-width: 50%;\n\n margin-left: ${({ isSwitched }) => isSwitched && '50%'};\n margin-right: ${({ isSwitched }) => !isSwitched && '50%'};\n\n padding: ${({ isSwitched }) =>\n isSwitched\n ? `${spacings.spacer}px 0 ${spacings.spacer * 1.75}px ${\n spacings.spacer\n }px`\n : `${spacings.spacer}px ${spacings.spacer}px ${\n spacings.spacer * 1.75\n }px 0`};\n }\n\n &:first-child {\n padding-top: 0;\n }\n\n & > * + * {\n margin-top: ${spacings.nudge * 2}px;\n }\n`;\n\nconst ItemTitle = styled(Heading)``;\n\nconst ItemTextBlock = styled(Copy)``;\n\nconst Timeline: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n items?: { label?: string; title?: string; text?: string }[];\n bgMode?: 'full' | 'inverted';\n}> = ({ anchorId, bgMode, items }) => {\n const theme = useContext(ThemeContext);\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n\n const [targetRefs, setTargetRefs] = useState<\n MutableRefObject<HTMLDivElement>[]\n >([]);\n const observerSupported = useObserverSupport();\n const observerRef = useRef<IntersectionObserver | null>(null);\n\n const [activeItem, setActiveItem] = useState<number>(0);\n\n useEffect(() => {\n if (observerSupported && targetRefs && targetRefs.length > 0) {\n const options = {\n rootMargin: '-50% 0% -50% 0%',\n threshold: 0,\n };\n\n observerRef.current = new IntersectionObserver((entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n const index = targetRefs?.findIndex(\n (t) => t.current === entry.target\n );\n setActiveItem(index);\n }\n });\n }, options);\n\n for (let i = 0; i < targetRefs.length; i++) {\n observerRef.current.observe(targetRefs[i].current);\n }\n }\n\n return () => {\n observerRef.current?.disconnect();\n };\n }, [targetRefs, observerSupported]);\n\n useEffect(() => {\n setTargetRefs(() =>\n Array(items?.length)\n .fill(null)\n .map((_, i) => targetRefs[i] || createRef())\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [items?.length]);\n\n return (\n <Section\n anchorId={anchorId}\n bgColor={\n isInverted\n ? color(theme).sectionBg.dark\n : hasBg\n ? color(theme).sectionBg.medium\n : 'transparent'\n }\n bgMode={mapToBgMode(bgMode, true)}\n addSeperation\n >\n <Wrapper addWhitespace>\n {items &&\n items.map((item, i) => {\n return (\n <TimelineBlock\n ref={targetRefs[i]}\n isActive={activeItem === i}\n isSwitched={i % 2 === 0}\n isInverted={isInverted}\n key={i}\n >\n <TimelineText isSwitched={i % 2 === 0}>\n <ItemTitle\n size=\"heading-2\"\n textColor={\n isInverted\n ? color(theme).text.inverted\n : color(theme).text.default\n }\n >\n {item.label}\n </ItemTitle>\n\n <ItemTextBlock\n type=\"copy-b\"\n size=\"big\"\n isInverted={isInverted}\n >\n {item.title}\n </ItemTextBlock>\n <ItemTextBlock\n innerHTML={item.text}\n isInverted={isInverted}\n />\n </TimelineText>\n </TimelineBlock>\n );\n })}\n </Wrapper>\n </Section>\n );\n};\n\nexport const TimelineComponent = Timeline;\nexport default withLibTheme(Timeline);\n","import React from 'react';\nimport Section, { mapToBgMode } from 'components/base/Section';\n\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Wrapper from 'components/base/Wrapper';\nimport { ImageProps } from 'components/blocks/Image';\n\nimport VideoCard from 'components/blocks/VideoCard';\n\nconst Video: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n bgImage: Omit<ImageProps, 'ratios' | 'coverSpace'>;\n embedId: string;\n\n consentText?: string;\n consentAction?: (props: {\n handleClick?: () => void;\n consentProps: Record<string, string>;\n }) => React.ReactNode;\n /**\n * Custom handler for play button click\n * @returns true if video should be played\n */\n onPlayClick?: () => Promise<boolean>;\n\n playIcon?: React.ReactNode;\n bgMode?: 'full' | 'inverted' | 'splitted';\n}> = ({\n anchorId,\n bgMode,\n bgImage,\n embedId,\n playIcon,\n consentText,\n consentAction,\n onPlayClick,\n}) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n\n return (\n <Section\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n addSeperation\n >\n <Wrapper addWhitespace>\n <VideoCard\n bgImage={bgImage}\n embedId={embedId}\n playIcon={playIcon}\n consentText={consentText}\n consentAction={consentAction}\n onPlayClick={onPlayClick}\n />\n </Wrapper>\n </Section>\n );\n};\n\nexport const VideoComponent = Video;\nexport default withLibTheme(Video);\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\n\nimport { getColors as color, getGlobals as global, mq } from 'utils/styles';\nimport Play from 'components/base/icons/Play';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Wrapper from 'components/base/Wrapper';\nimport VideoBlock from 'components/blocks/VideoBlock';\nimport { ImageProps } from 'components/blocks/Image';\nimport { isValidArray } from 'utils/arrays';\n\nconst VideoContainer = styled.div<{ isInverted?: boolean }>`\n position: relative;\n cursor: pointer;\n`;\n\nconst Overlay = styled.div<{ bgImage?: ImageProps; isInverted?: boolean }>`\n position: relative;\n padding-top: ${`calc(100% / (16 / 9))`};\n background: ${({ theme, isInverted }) =>\n isInverted\n ? global(theme).sections.imagePlaceholderBg.inverted\n : global(theme).sections.imagePlaceholderBg.default};\n\n background-image: ${({ bgImage }) =>\n bgImage?.small && `url(\"${bgImage.small}\")`};\n background-size: cover;\n background-repeat: no-repeat;\n background-position: center;\n\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n overflow: hidden;\n\n @media ${mq.medium} {\n text-align: left;\n\n background-image: ${({ bgImage }) =>\n bgImage?.medium && `url(\"${bgImage.medium}\")`};\n }\n\n @media ${mq.semilarge} {\n background-image: ${({ bgImage }) =>\n bgImage?.semilarge && `url(\"${bgImage.semilarge}\")`};\n }\n\n @media ${mq.large} {\n background-image: ${({ bgImage }) =>\n bgImage?.large && `url(\"${bgImage.large}\")`};\n }\n\n @media ${mq.xlarge} {\n background-image: ${({ bgImage }) =>\n bgImage?.xlarge && `url(\"${bgImage.xlarge}\")`};\n }\n\n &:after {\n content: '';\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n pointer-events: none;\n\n background: linear-gradient(\n 358.19deg,\n rgba(29, 34, 35, 0.52) 12.37%,\n rgba(29, 34, 35, 0) 59.02%\n );\n }\n`;\n\nconst VideoControls = styled.button`\n display: block;\n border: none;\n background: none;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n color: ${({ theme }) => color(theme).elementBg.light};\n z-index: 1;\n padding: 0;\n\n cursor: pointer;\n\n & > * {\n opacity: 0.8;\n transition: transform 0.2s ease-in-out, opacity 0.2s ease-in-out;\n height: 80px;\n width: 80px;\n\n color: ${({ theme }) => color(theme).elementBg.dark};\n }\n\n ${Overlay}:hover > & > * {\n transform: scale(1.05);\n opacity: 1;\n }\n\n ${Overlay}:active > & > * {\n transform: scale(0.95);\n opacity: 1;\n }\n\n &:focus {\n outline: 2px solid ${({ theme }) => color(theme).primary.default};\n border-radius: 50%;\n opacity: 1;\n\n & > * {\n color: ${({ theme }) => color(theme).primary.default};\n }\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n box-shadow: none;\n }\n`;\n\nconst Video = styled(VideoBlock)<{ isVisible?: boolean }>`\n opacity: ${({ isVisible }) => (isVisible ? 1 : 0)};\n pointer-events: ${({ isVisible }) => (isVisible ? 'all' : 'none')};\n`;\n\nconst RawVideo: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** URL to video sources */\n videoUrls?: string[];\n\n /** Placeholder image */\n placeholderImg?: Omit<ImageProps, 'ratios' | 'coverSpace'>;\n\n /** Enable autoplay without user interaction */\n autoplay?: boolean;\n\n /** Playing video in loop */\n loop?: boolean;\n\n /** Section background */\n bgMode?: 'full' | 'inverted' | 'splitted';\n\n /** Video play icon */\n playIcon?: React.ReactNode;\n}> = ({\n anchorId,\n bgMode,\n videoUrls,\n placeholderImg,\n playIcon,\n autoplay,\n loop,\n}) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const [isStarted, setIsStarted] = useState<boolean>(autoplay || false);\n\n return (\n <Section\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n addSeperation\n >\n <Wrapper addWhitespace>\n <VideoContainer\n onClick={() => {\n if (isValidArray(videoUrls, false)) {\n setIsStarted(true);\n }\n }}\n >\n {isStarted && (\n <Video\n isVisible={isStarted || !placeholderImg?.small}\n controls={!autoplay}\n autoPlay\n loop={loop}\n muted={autoplay}\n ratios={{ small: 16 / 9 }}\n urls={videoUrls}\n isInverted={isInverted}\n />\n )}\n {!isStarted && (\n <Overlay\n bgImage={placeholderImg}\n isInverted={isInverted}\n >\n <VideoControls>\n {playIcon || <Play iconColor=\"#000\" />}\n </VideoControls>\n </Overlay>\n )}\n </VideoContainer>\n </Wrapper>\n </Section>\n );\n};\n\nexport const RawVideoComponent = RawVideo;\nexport default withLibTheme(RawVideo);\n","import React, { FC, useEffect, useMemo, useState } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport {\n mq,\n spacings,\n getColors as color,\n getFonts as font,\n getGlobals as global,\n withRange,\n} from 'utils/styles';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Grid, { getGridWidth, gridSettings } from 'components/base/Grid';\nimport Wrapper, { wrapperWhitespace } from 'components/base/Wrapper';\n\nimport IntroBlock from 'components/blocks/IntroBlock';\n\nimport Copy, { copyStyle } from 'components/typography/Copy';\nimport { HeadlineTag } from 'components/typography/Heading';\n\nimport Phone from 'components/base/icons/Phone';\nimport Mail from 'components/base/icons/Mail';\n\nimport { generateLocalBusiness } from 'utils/structuredData';\nimport Link from 'components/typography/Link';\nimport LocationPin from 'components/base/icons/LocationPin';\nimport Control from 'components/buttons/Control';\nimport * as Icons from 'components/base/icons/Icons';\nimport { getSVGDataImg as getSVGData } from 'utils/dataURI';\nimport useLeafletMap from 'utils/useLeafletMap';\nimport { isValidArray } from 'utils/arrays';\n\ninterface Address {\n street: string;\n postalCode: string;\n city?: string;\n country: string;\n}\n\nconst MapSection = styled(Section)`\n position: relative;\n min-height: 500px;\n z-index: 0;\n`;\n\nconst MapContainer = styled.div<{ isMirrored?: boolean }>`\n position: relative;\n top: 0;\n left: 0;\n bottom: 0;\n width: 100%;\n z-index: 0;\n\n height: 100%;\n min-height: 230px;\n\n @media ${mq.semilarge} {\n position: absolute;\n /** \n calculate width of 6 grid cols (grid width = viewport width without wrapper paddings)\n and add left or right wrapper padding afterwards\n */\n width: calc(\n ${getGridWidth({\n cols: 6,\n gridWidth: `100% - ${wrapperWhitespace * 2}px `,\n })} + ${wrapperWhitespace}px\n );\n left: ${({ isMirrored }) => (isMirrored ? 'auto' : '0')};\n right: ${({ isMirrored }) => (isMirrored ? '0' : 'auto')};\n }\n\n @media ${mq.xlarge} {\n width: calc(50% - ${gridSettings.gutter}px ${wrapperWhitespace}px);\n }\n\n @media ${mq.xxlarge} {\n width: calc(\n ${spacings.wrapperLarge / 2}px - ${gridSettings.gutter}px +\n ${wrapperWhitespace}px\n );\n\n left: ${({ isMirrored }) => (isMirrored ? 'auto' : '50%')};\n right: ${({ isMirrored }) => (isMirrored ? '50%' : 'auto')};\n\n ${({ isMirrored }) =>\n css`\n transform: translateX(\n calc(\n ${isMirrored\n ? `(100% + ${gridSettings.gutter}px) - `\n : `(-100% - ${gridSettings.gutter}px) + `}\n (${wrapperWhitespace}px)\n )\n );\n `};\n }\n`;\n\nconst CardWrapper = styled(Wrapper)`\n pointer-events: none;\n`;\n\nconst CardContainer = styled.div<{ isMirrored?: boolean }>`\n display: flex;\n flex-direction: row;\n position: relative;\n width: 100%;\n pointer-events: all;\n\n ${({ theme }) =>\n withRange(\n global(theme).sections.seperation.padding.default,\n 'padding-bottom'\n )}\n\n @media ${mq.semilarge} {\n ${({ theme }) =>\n withRange(\n global(theme).sections.seperation.padding.default,\n 'padding-top'\n )}\n }\n`;\n\nconst InfoCardView = styled.div`\n min-height: 100px;\n pointer-events: all;\n\n flex: 1 0 80%;\n max-width: 80%;\n\n & > * + * {\n margin-top: ${spacings.spacer}px;\n }\n`;\n\nconst CardHeader = styled.div`\n display: flex;\n`;\n\nconst ContactList = styled.ul<{ isInverted?: boolean }>`\n padding: 0;\n list-style-type: none;\n color: ${({ theme, isInverted }) =>\n isInverted ? color(theme).text.inverted : color(theme).text.default};\n\n li {\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 0;\n margin: 0;\n }\n\n li + li {\n margin-top: ${spacings.nudge * 3}px;\n }\n\n span:first-child {\n flex: 0 0 30px;\n max-width: 30px;\n\n & > * {\n max-width: 100%;\n }\n }\n`;\n\nconst ContactListLink = styled(Link)`\n display: block;\n\n ${copyStyle('copy-b', 'big')}\n color: ${({ theme, isInverted }) =>\n isInverted\n ? font(theme)['copy-b'].big.colorInverted\n : font(theme)['copy-b'].big.color};\n\n * + & {\n margin-left: ${spacings.nudge * 1.5}px;\n }\n`;\n\nconst AddressContainer = styled.div<{ hasIcon?: boolean }>`\n display: -ms-grid;\n display: grid;\n\n ${({ hasIcon }) => css`\n -ms-grid-columns: ${hasIcon ? 'min-content' : ''} 1fr;\n grid-template-columns: ${hasIcon ? 'min-content' : ''} 1fr;\n -ms-grid-rows: ${hasIcon ? 'min-content' : ''} 1fr;\n grid-auto-rows: ${hasIcon ? 'min-content' : ''} 1fr;\n `}\n\n & > * + * {\n margin-left: ${spacings.nudge * 2}px;\n }\n`;\n\nconst CompanyInfo: FC<{\n isInverted?: boolean;\n companyName: string;\n address?: Address;\n customIcon?: (isInverted?: boolean) => React.ReactNode;\n}> = ({ isInverted, companyName, address, customIcon }) => {\n return (\n <AddressContainer hasIcon={!!customIcon}>\n {customIcon && <span> {customIcon()} </span>}\n <div>\n <Copy type=\"copy-b\" size=\"big\" isInverted={isInverted}>\n {companyName}\n </Copy>\n {address && (\n <Copy type=\"copy-b\" size=\"big\" isInverted={isInverted}>\n <div>{address.street}</div>\n <div>{`${address.postalCode} ${address.city}`}</div>\n <div>{address.country}</div>\n </Copy>\n )}\n </div>\n </AddressContainer>\n );\n};\n\nconst Desc = styled(Copy)`\n @media ${mq.semilarge} {\n margin-top: ${spacings.spacer * 2.5}px;\n }\n`;\n\nconst LocationInfoCard: FC<\n MapLocation & {\n isInverted?: boolean;\n }\n> = ({\n isInverted,\n title,\n titleAs,\n superTitle,\n superTitleAs,\n companyName,\n address,\n addressIcon,\n contact,\n description,\n}) => {\n const { colors } = useLibTheme();\n\n const addressIconContent = addressIcon ? (\n addressIcon({ isInverted })\n ) : (\n <LocationPin\n iconColor={isInverted ? colors.text.inverted : colors.text.default}\n />\n );\n\n const phoneIconContent = contact?.telephone?.icon ? (\n contact.telephone.icon({\n isInverted,\n })\n ) : (\n <Phone />\n );\n\n const mailIconContent = contact?.email?.icon ? (\n contact.email.icon({ isInverted })\n ) : (\n <Mail />\n );\n\n return (\n <InfoCardView>\n <CardHeader>\n <IntroBlock\n colorMode={isInverted ? 'inverted' : 'default'}\n title={title}\n titleAs={titleAs}\n superTitle={superTitle}\n superTitleAs={superTitleAs}\n />\n </CardHeader>\n {companyName && (\n <CompanyInfo\n companyName={companyName || ''}\n address={address}\n customIcon={\n addressIconContent\n ? () => addressIconContent\n : undefined\n }\n isInverted={isInverted}\n />\n )}\n {contact && (\n <ContactList isInverted={isInverted}>\n {contact?.telephone?.label && (\n <li>\n {phoneIconContent && (\n <span>{phoneIconContent}</span>\n )}\n <ContactListLink\n isInverted={isInverted}\n href={`tel:${\n contact.telephone.link ||\n contact.telephone.label\n }`}\n >\n {contact.telephone?.label}\n </ContactListLink>\n </li>\n )}\n {contact?.email?.label && (\n <li>\n {mailIconContent && <span>{mailIconContent}</span>}\n <ContactListLink\n isInverted={isInverted}\n href={`mailto:${\n contact?.email.link || contact.email.label\n }`}\n >\n {contact?.email.label}\n </ContactListLink>\n </li>\n )}\n </ContactList>\n )}\n\n <Desc isInverted={isInverted} innerHTML={description} />\n </InfoCardView>\n );\n};\n\nconst Controls = styled.div`\n flex: 1 0 20%;\n max-width: 20%;\n display: flex;\n flex-direction: column;\n align-self: flex-start;\n margin-left: auto;\n text-align: right;\n\n & > * + * {\n margin-top: ${spacings.nudge}px;\n }\n`;\n\nconst FylToCtrlContainer = styled.button`\n position: absolute;\n top: 0;\n right: 0;\n z-index: 1000;\n background: none;\n border: none;\n margin: 0;\n padding: 0;\n\n margin-top: ${spacings.spacer}px;\n margin-right: ${spacings.spacer}px;\n color: ${({ theme }) => color(theme).elementBg.dark};\n\n cursor: pointer;\n`;\n\nexport interface LocationIcon {\n url: string;\n size: [number, number];\n anchor: [number, number];\n\n sizeActive: [number, number];\n anchorActive: [number, number];\n}\n\nexport interface MapLocation {\n id: string;\n position: [number, number];\n icon?: LocationIcon;\n\n title?: string; // Rich Text\n titleAs?: HeadlineTag;\n superTitle?: string;\n superTitleAs?: HeadlineTag;\n\n companyName?: string;\n address?: Address;\n addressIcon?: (props: { isInverted?: boolean }) => React.ReactNode;\n contact?: {\n telephone?: {\n link?: string;\n label?: string;\n icon?: (props: { isInverted?: boolean }) => React.ReactNode;\n };\n email?: {\n link?: string;\n label?: string;\n icon?: (props: { isInverted?: boolean }) => React.ReactNode;\n };\n };\n image?: string[];\n description?: string;\n}\n\nconst Map: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n\n /** Switch horizontal order of map and location info text */\n isMirrored?: boolean;\n\n /** Map tile provider */\n provider?: string;\n\n /** Map attribution text (richtext) */\n attribution?: string;\n\n /** Initial center of the map */\n center?: [number, number];\n\n /** Initial map zoom */\n zoom?: number;\n\n /** Zoom if map jumps to location */\n flyToZoom?: number;\n\n /** Initial location */\n initialLocation?: string;\n\n /** Array of location settings */\n locations?: Array<MapLocation>;\n\n /** Show all markers on first load */\n allMarkersOnInit?: boolean;\n\n /** Map container padding for show all markers */\n fitBoundsPadding?: [number, number];\n\n /** Icon element for flight to the current active location */\n flyToControl?: React.ReactNode;\n\n /** Injection function to replace default control button */\n controlNext?: (props: {\n isInverted?: boolean;\n isActive?: boolean;\n name?: string;\n clickHandler?: (ev: React.SyntheticEvent<HTMLButtonElement>) => void;\n }) => React.ReactNode;\n\n /** Injection function to replace default control button */\n controlPrev?: (props: {\n isInverted?: boolean;\n isActive?: boolean;\n name?: string;\n clickHandler?: (ev: React.SyntheticEvent<HTMLButtonElement>) => void;\n }) => React.ReactNode;\n}> = ({\n anchorId,\n bgMode,\n isMirrored = false,\n provider,\n attribution,\n center = [51.505, -0.09],\n zoom = 5,\n flyToZoom,\n initialLocation,\n locations,\n allMarkersOnInit = false,\n fitBoundsPadding,\n flyToControl,\n controlNext,\n controlPrev,\n}) => {\n const { colors } = useLibTheme();\n\n const [activeLocationId, setActiveLocationId] = useState<string>(\n initialLocation || ''\n );\n const [isDirty, setIsDirty] = useState<boolean>(false);\n const activeLocation = useMemo(\n () => locations?.find((l) => l.id === activeLocationId),\n [activeLocationId, locations]\n );\n\n const hasBg = bgMode === 'full';\n const isInverted = bgMode === 'inverted';\n\n const defaultMarker: LocationIcon = {\n size: [28, 28],\n anchor: [14, 28],\n sizeActive: [70, 70],\n anchorActive: [35, 70],\n url: getSVGData(<LocationPin />),\n };\n const {\n isLoaded,\n setContainer: setMapContainer,\n flyToActive,\n showAllMarkers,\n } = useLeafletMap({\n url: provider,\n attribution,\n center,\n zoom,\n activeMarkerId: activeLocationId,\n markers: locations?.map(({ id, position, icon }) => ({\n id,\n position,\n icon: icon || defaultMarker,\n isInteractive: true,\n })),\n fitBoundsPadding,\n onMarkerClick: setActiveLocationId,\n });\n\n const goToNext = () => {\n setActiveLocationId((prev) => {\n if (!locations) return prev;\n const currentIndex = locations.findIndex(\n (l) => l.id === activeLocationId\n );\n if (currentIndex === -1) return prev;\n\n // get new index\n const newIndex = (currentIndex + 1) % locations.length;\n return locations[newIndex].id;\n });\n };\n\n const goToPrevious = () => {\n setActiveLocationId((prev) => {\n if (!locations) return prev;\n const currentIndex = locations.findIndex(\n (l) => l.id === activeLocationId\n );\n if (currentIndex === -1) return prev;\n\n // get new index\n const newIndex =\n currentIndex - 1 < 0 ? locations.length - 1 : currentIndex - 1;\n return locations[newIndex].id;\n });\n };\n\n useEffect(() => {\n if (isLoaded && !isDirty) {\n if (allMarkersOnInit) showAllMarkers();\n } else {\n flyToActive(flyToZoom);\n }\n }, [\n activeLocationId,\n allMarkersOnInit,\n flyToActive,\n flyToZoom,\n initialLocation,\n isDirty,\n isLoaded,\n showAllMarkers,\n ]);\n\n useEffect(() => {\n if (!isDirty && activeLocationId !== initialLocation) setIsDirty(true);\n }, [activeLocationId, initialLocation, isDirty]);\n\n return (\n <MapSection\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : hasBg\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n {locations && generateLocalBusiness(locations)}\n <MapContainer ref={setMapContainer} isMirrored={isMirrored}>\n {flyToControl && (\n <FylToCtrlContainer\n onClick={(ev) => {\n ev.stopPropagation();\n flyToActive(flyToZoom);\n }}\n >\n {flyToControl}\n </FylToCtrlContainer>\n )}\n </MapContainer>\n\n <CardWrapper addWhitespace clampWidth=\"normal\">\n <Grid.Row>\n <Grid.Col\n semilarge={{\n span: 6 / 12,\n move: (isMirrored ? 6 : 0) / 12,\n }}\n ></Grid.Col>\n <Grid.Col\n semilarge={{\n span: 6 / 12,\n move: (isMirrored ? -6 : 0) / 12,\n }}\n >\n <CardContainer isMirrored={isMirrored}>\n {isValidArray(locations, false) && (\n <React.Fragment>\n {activeLocation && (\n <LocationInfoCard\n {...activeLocation}\n isInverted={isInverted}\n />\n )}\n {locations.length > 1 && (\n <Controls>\n {controlNext ? (\n controlNext({\n isInverted,\n isActive: true,\n clickHandler: goToNext,\n name: 'control_next_head',\n })\n ) : (\n <Control\n isInverted={isInverted}\n isDisabled={false}\n onClick={goToNext}\n >\n <Icons.ArrowRightGhost />\n </Control>\n )}\n {controlPrev ? (\n controlPrev({\n isInverted,\n isActive: true,\n clickHandler: goToPrevious,\n name: 'control_prev_head',\n })\n ) : (\n <Control\n isInverted={isInverted}\n isDisabled={false}\n onClick={goToPrevious}\n >\n <Icons.ArrowLeftGhost />\n </Control>\n )}\n </Controls>\n )}\n </React.Fragment>\n )}\n </CardContainer>\n </Grid.Col>\n </Grid.Row>\n </CardWrapper>\n </MapSection>\n );\n};\n\nexport const MapComponent = Map;\nexport default withLibTheme(Map);\n","import Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport React from 'react';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\n\nconst HtmlCode: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n /** HTML content */\n html?: string;\n /** Section background */\n bgMode?: 'full' | 'inverted';\n}> = ({ html, anchorId, bgMode }) => {\n const isInverted = bgMode === 'inverted';\n const { colors } = useLibTheme();\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper clampWidth=\"normal\" addWhitespace>\n {html && <div dangerouslySetInnerHTML={{ __html: html }} />}\n </Wrapper>\n </Section>\n );\n};\n\nexport const HtmlCodeComponent = HtmlCode;\nexport default withLibTheme(HtmlCode);\n"],"names":["AccordionContainer","styled","div","withConfig","displayName","componentId","templateObject_1","__makeTemplateObject","spacings","nudge","View","details","templateObject_2","AccordionHead","summary","templateObject_3","_a","isInverted","hasBg","theme","color","getColors","elementBg","light","medium","mq","lightHover","mediumHover","Column","Copy","templateObject_4","AccordionText","templateObject_5","spacer","semilarge","gridSettings","gutter","AccordionBlock","label","text","aside","isSelected","onClick","itemIcon","className","colors","useLibTheme","React","createElement","open","onToggle","renderAs","size","type","Minus","iconColor","default","Plus","hasAside","innerHTML","Accordion$1","withLibTheme","anchorId","items","bgMode","_b","useState","currentItems","setCurrentItems","Section","addSeperation","bgColor","sectionBg","dark","mapToBgMode","generateFAQ","Wrapper","addWhitespace","Grid","Row","Col","map","i","indexOf","key","concat","prev","copy","__spreadArray","index","push","splice","primary","inverted","global","sections","edgeRadius","invertedHover","hover","Icon","MainLabel","Content","Title","ViewLink","Link","templateObject_6","Alert","title","date","description","link","customIcon","formattedDate","StatusFormatter","getTime","getFormattedDate","Info","textColor","__assign","ariaLabel","href","undefined","List","ul","ListItem","li","large","itemsPerRow","AlertList$1","alertCount","length","alertRefs","useEqualSheetHeight","listLength","identifiers","responsive","small","xlarge","item","ref","StyledTitle","ContentText","StyledActions","Actions","Article$1","titleAs","_c","titleSize","superTitle","superTitleAs","intro","asideText","halfAside","primaryAction","secondaryAction","hasContent","clampWidth","colorMode","valign","span","secondary","ContactView","Avatar","img","getGlobals","imagePlaceholderBg","Description","StyledIntro","IntroBlock","hasDecorator","StyledContactBox","avatar","src","alt","getGridWidth","cols","NewsletterWrapper","templateObject_7","Badge","templateObject_8","CallToAction$1","contact","badge","hasNewsletter","newsFormMain","isCentered","isTextCentered","SolidView","cardColor","hasLink","css","ImageView","imageTextGradient","StyledImage","Image","hasIcon","TextContainer","templateObject_9","Footer","SubLabel","templateObject_11","templateObject_12","CardLink","templateObject_13","Card","subLabel","image","decorator","CardView","defaultCardColor","coverSpace","ratios","w","h","templateObject_14","CardItem","templateObject_15","isEqual","threeCols","CardList$2","maxThreeCols","clamp","num","min","max","Math","Images","BackgroundImg","ForegroundContainer","hasTransition","hasAnim","initalValue","ForegroundImg","ForegroundOverlay","ImageLabel","ForegroundLabel","BackgroundLabel","ControlContainer","templateObject_10","Control","ComparisonSlider$1","initialValue","foregroundImg","backgroundImg","foregroundLabel","backgroundLabel","overlayColor","labelColor","dragControl","enableControlAnim","isIE","useIE","_d","slideValue","setSlideValue","_e","isHolding","setIsHolding","_f","isDragging","setIsDragging","_g","interacted","setInteracted","_h","sideOffset","setSideOffset","controlRef","useRef","useEffect","current","offsetWidth","handleInitalLoad","observer","IntersectionObserver","entries","isIntersecting","unobserve","target","rootMargin","threshold","observe","window","removeEventListener","document","readyState","addEventListener","setCurrentPos","clientX","relativeClientX","getBoundingClientRect","x","width","percentage","ev","currentTarget","onMouseMove","onMouseDown","onMouseUp","onMouseLeave","onTouchMove","touches","onTouchStart","onTouchEnd","style","left","ArrowLeftRight","clickable","IntroContainer","clampTitle","wrapper","ExternalIconHolder","withRange","PromotionCard","forwardRef","externalLinkIcon","icon","linkObj","isExternal","externalIconString","ReactDOMServer","renderToString","External","isMain","CrossPromotion$1","main","isMirrored","card","ImageContainer","SubTitle","Text","Fact","subTitle","showPlaceholder","FactFill","FactGrid$1","columns","facts","factCount","cardRefs","fact","FactsContainer","FactItem","hasBack","hasText","ContentBlock","FactList$1","TitleLink","copyStyle","font","getFonts","big","colorInverted","ArticleContent","Action","Feature","action","dataSheet","features","featureCount","isHalf","useMemo","halign","feature","Gallery$1","images","isFull","StyledSection","ItemContainer","Items","isVisible","Item","ItemLink","ShowMore","itemCount","IconList$1","toggle","showLessText","showMoreText","enableToggle","showMore","setShowMore","handleToggleClick","ratio","isToggled","clickHandler","additionalProps","Pointer","as","Label","IndexLink","LinkLabel","IconWrapper","IndexList$1","scrollToOffset","setTargetPos","useScrollTo","useMediaQueries","topOffset","setTopOffset","handleLinkClick","preventDefault","getAttribute","getElementById","split","top","scrollY","url","URL","location","hash","history","pushState","header","querySelector","navbarIdent","getNavbarState","navbarHeights","getFullNavbarHeights","ArrowDown","abstract","isStackable","clampAbstract","clampText","TitleIcon","NavBlock","customTitleIcon","Fragment","NavList$1","MEDIA_QUERIES","NumberListCard","digit","Callout","CardList","NumberList$1","useContext","ThemeContext","numbersRef","customMediaQueries","section","Parallax","hAlign","contentWidth","wrapperLarge","Container","figure","verticallyCentered","imageTextGradientCentered","Intro","wrapperWhitespace","Poster$1","horizontallyCentered","maxTitleLines","maxTextLines","ItemList","ItemBlock","ListHead","Price","PriceBlock","price","PriceList$1","isHighlighted","PriceTag","hasBackground","mode","Tag","PriceTable$1","priceTagCount","Source","Quote$1","source","citeUrl","cite","ImageWrapper","SimpleImage$1","Cards","FollowUs","Heading","InstagramIcon","SocialWall$1","hashTag","followUs","socialIcon","Instagram","TableSection","TableWrapper","Table$1","tableItems","TableBlock","Figure","Video","VideoBlock","isSplitted","mapToTeaserBgMode","preventSplit","Teaser$1","video","hasVideo","isValidArray","urls","viewRef","isLoaded","setLoaded","isVideoActive","setVideoActive","isObserverSupported","useObserverSupport","useUpdateEffect","entry","viewEl","move","muted","autoPlay","loop","onCanPlayThrough","aspectRatios","titleHyphens","getGridColOfContent","gridWidth","WideVideo","xxlarge","WideImage","seperation","padding","TeaserWide$1","TimelineBlock","isSwitched","isActive","TimelineText","ItemTitle","ItemTextBlock","Timeline$1","targetRefs","setTargetRefs","observerSupported","observerRef","activeItem","setActiveItem","forEach","findIndex","t","disconnect","Array","fill","_","createRef","bgImage","embedId","playIcon","consentText","consentAction","onPlayClick","VideoCard","VideoContainer","Overlay","VideoControls","button","RawVideo$1","videoUrls","placeholderImg","autoplay","isStarted","setIsStarted","controls","Play","MapSection","MapContainer","CardWrapper","CardContainer","InfoCardView","CardHeader","ContactList","ContactListLink","AddressContainer","CompanyInfo","companyName","address","street","postalCode","city","country","Desc","LocationInfoCard","addressIcon","addressIconContent","LocationPin","phoneIconContent","telephone","Phone","mailIconContent","email","Mail","Controls","FylToCtrlContainer","Map$1","provider","attribution","center","zoom","flyToZoom","initialLocation","locations","allMarkersOnInit","fitBoundsPadding","flyToControl","controlNext","controlPrev","activeLocationId","setActiveLocationId","isDirty","setIsDirty","activeLocation","find","l","id","defaultMarker","anchor","sizeActive","anchorActive","getSVGData","getSVGDataImg","useLeafletMap","activeMarkerId","markers","position","isInteractive","onMarkerClick","setMapContainer","setContainer","flyToActive","showAllMarkers","goToNext","currentIndex","newIndex","goToPrevious","generateLocalBusiness","stopPropagation","name","isDisabled","Icons","ArrowRightGhost","html","dangerouslySetInnerHTML","__html","moveRatio","direction","setIsLoaded","yTransform","setYTransform","cRef","setContainerRef","parallaxRef","isNaN","prevEl","previousElementSibling","bgIdent","dataset","stackIdent","setAttribute","handleScroll","containerPos","transform"],"mappings":"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"}
1
+ {"version":3,"file":"sections.js","sources":["../src/components/sections/Accordion.tsx","../src/components/blocks/Alert.tsx","../src/components/sections/AlertList.tsx","../src/components/sections/Article.tsx","../src/components/sections/CallToAction.tsx","../src/components/sections/CardList.tsx","../src/components/sections/ComparisonSlider.tsx","../src/components/blocks/PromotionCard.tsx","../src/components/sections/CrossPromotion.tsx","../src/components/blocks/Fact.tsx","../src/components/sections/FactGrid.tsx","../src/components/sections/FactList.tsx","../src/components/blocks/Feature.tsx","../src/components/sections/FeatureList.tsx","../src/components/sections/Gallery.tsx","../src/components/sections/IconList.tsx","../src/components/sections/IndexList.tsx","../src/components/sections/Intro.tsx","../src/components/blocks/NavBlock.tsx","../src/components/sections/NavList.tsx","../src/components/sections/NumberList.tsx","../src/components/sections/ParallaxBackground.tsx","../src/components/sections/Poster.tsx","../src/components/sections/PriceList.tsx","../src/components/blocks/PriceTag.tsx","../src/components/sections/PriceTable.tsx","../src/components/sections/Quote.tsx","../src/components/sections/SimpleImage.tsx","../src/components/sections/SocialWall.tsx","../src/components/sections/Table.tsx","../src/components/sections/Teaser.tsx","../src/components/sections/TeaserWide.tsx","../src/components/sections/Timeline.tsx","../src/components/sections/Video.tsx","../src/components/sections/RawVideo.tsx","../src/components/sections/Map.tsx","../src/components/sections/HtmlCode.tsx"],"sourcesContent":["import Plus from 'components/base/icons/Plus';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Copy from 'components/typography/Copy';\nimport React from 'react';\nimport styled from 'styled-components';\nimport {\n spacings,\n getColors as color,\n getGlobals as global,\n mq,\n} from 'utils/styles';\nimport Minus from 'components/base/icons/Minus';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { generateFAQ } from 'utils/structuredData';\nimport Grid, { gridSettings } from 'components/base/Grid';\n\nconst AccordionContainer = styled.div`\n margin: 0;\n padding: 0;\n\n & > * + * {\n margin-top: ${spacings.nudge}px;\n }\n`;\n\nconst View = styled.details`\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n overflow: hidden;\n`;\n\nconst AccordionHead = styled.summary<{\n isInverted?: boolean;\n hasBg?: boolean;\n}>`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n\n padding: ${spacings.nudge * 2}px;\n margin: 0;\n border: none;\n outline: none;\n background: none;\n user-select: none;\n list-style: none;\n\n background: ${({ isInverted, hasBg, theme }) =>\n isInverted || hasBg\n ? color(theme).elementBg.light\n : color(theme).elementBg.medium};\n\n cursor: pointer;\n transition: background 0.2s ease-in-out;\n\n @media ${mq.medium} {\n padding: ${spacings.nudge * 3}px;\n }\n\n &::-webkit-details-marker {\n display: none;\n }\n\n &::marker {\n display: none;\n }\n\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n background: ${({ theme, isInverted, hasBg }) =>\n isInverted || hasBg\n ? color(theme).elementBg.lightHover\n : color(theme).elementBg.mediumHover};\n }\n }\n\n &:focus {\n background: ${({ theme, isInverted, hasBg }) =>\n isInverted || hasBg\n ? color(theme).elementBg.lightHover\n : color(theme).elementBg.mediumHover};\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n }\n`;\n\nconst Column = styled(Copy)`\n flex: 1 1 0;\n`;\n\nconst AccordionText = styled.div<{\n isInverted?: boolean;\n hasBg?: boolean;\n hasAside?: boolean;\n}>`\n display: flex;\n flex-direction: column;\n padding: ${spacings.nudge * 2}px;\n margin-top: 2px;\n background: ${({ isInverted, hasBg, theme }) =>\n isInverted || hasBg\n ? color(theme).elementBg.light\n : color(theme).elementBg.medium};\n\n & > * {\n max-width: 880px;\n }\n\n & > * + * {\n margin-top: ${spacings.spacer}px;\n }\n\n @media ${mq.medium} {\n padding: ${spacings.nudge * 3}px;\n }\n\n @media ${mq.semilarge} {\n flex-direction: row;\n\n & > * + * {\n margin-top: 0px;\n margin-left: ${gridSettings.gutter}px;\n }\n }\n`;\n\ninterface AccordionItem {\n label?: string;\n text?: string;\n aside?: string;\n}\n\nconst AccordionBlock: React.FC<\n AccordionItem & {\n isSelected?: boolean;\n onClick?: () => void;\n isInverted?: boolean;\n hasBg?: boolean;\n itemIcon?: (props: { isSelected: boolean }) => React.ReactNode;\n className?: string;\n }\n> = ({\n label,\n text,\n aside,\n isSelected,\n onClick,\n hasBg,\n isInverted,\n itemIcon,\n className,\n}) => {\n const { colors } = useLibTheme();\n\n return (\n <View open={isSelected} onToggle={onClick} className={className}>\n <AccordionHead isInverted={isInverted} hasBg={hasBg}>\n <Copy renderAs=\"span\" size=\"big\" type=\"copy-b\">\n {label}\n </Copy>\n <span>\n {itemIcon ? (\n itemIcon({ isSelected: isSelected || false })\n ) : isSelected ? (\n <Minus iconColor={colors.text.default} />\n ) : (\n <Plus iconColor={colors.text.default} />\n )}\n </span>\n </AccordionHead>\n <AccordionText\n isInverted={isInverted}\n hasBg={hasBg}\n hasAside={!!aside}\n >\n {text && <Column type=\"copy\" innerHTML={text} />}\n {aside && <Column type=\"copy\" innerHTML={aside} />}\n </AccordionText>\n </View>\n );\n};\n\nconst Accordion: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array of accordion items */\n items?: AccordionItem[];\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n\n /** Function to inject custom item state icon */\n itemIcon?: (props: { isSelected: boolean }) => React.ReactNode;\n}> = ({ anchorId, items, bgMode, itemIcon }) => {\n const [currentItems, setCurrentItems] = React.useState<number[]>([]);\n\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : hasBg\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n {items && generateFAQ(items)}\n <Wrapper addWhitespace>\n <Grid.Row gutter={0}>\n <Grid.Col>\n <AccordionContainer aria-label=\"Accordion Control Group Buttons\">\n {items?.map(({ label, text, aside }, i) => {\n const isSelected =\n currentItems.indexOf(i) !== -1;\n return (\n <AccordionBlock\n key={`${label}_${i}`}\n isSelected={isSelected}\n label={label}\n text={text}\n aside={aside}\n onClick={() => {\n setCurrentItems((prev) => {\n const copy = [...prev];\n const index = copy.indexOf(i);\n if (index === -1) {\n copy.push(i);\n } else {\n copy.splice(index, 1);\n }\n return copy;\n });\n }}\n isInverted={isInverted}\n hasBg={hasBg}\n itemIcon={itemIcon}\n />\n );\n })}\n </AccordionContainer>\n </Grid.Col>\n </Grid.Row>\n </Wrapper>\n </Section>\n );\n};\n\nexport const AccordionComponent = Accordion;\nexport default withLibTheme(Accordion);\n","import Copy from 'components/typography/Copy';\nimport Link, { LinkProps } from 'components/typography/Link';\nimport React from 'react';\nimport styled from 'styled-components';\nimport {\n getColors as color,\n getGlobals as global,\n spacings,\n} from 'utils/styles';\nimport StatusFormatter from '../../utils/statusFormatter';\nimport Info from '../base/icons/Info';\n\nconst View = styled.div<{ isInverted?: boolean }>`\n display: -ms-grid;\n display: grid;\n\n -ms-grid-columns: min-content 1fr;\n grid-template-columns: min-content 1fr;\n -ms-grid-rows: min-content 1fr;\n grid-auto-rows: min-content 1fr;\n\n text-decoration: none;\n\n position: relative;\n border: 2px solid\n ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n\n color: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n\n padding: ${spacings.nudge * 3}px;\n\n text-align: left;\n width: 100%;\n cursor: pointer;\n\n transition: color ease-in-out 0.2s, border 0.2s ease-in-out;\n\n & > * + * {\n margin-left: ${spacings.nudge * 3}px;\n }\n\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n border: 2px solid\n ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.invertedHover\n : color(theme).primary.hover};\n color: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.invertedHover\n : color(theme).primary.hover};\n }\n }\n`;\n\nconst Icon = styled.div`\n display: flex;\n align-items: center;\n\n & > * {\n height: 48px;\n width: 48px;\n }\n`;\n\nconst MainLabel = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst Content = styled.div`\n margin-top: ${spacings.nudge}px;\n\n & > * + * {\n margin-top: ${spacings.nudge}px;\n }\n`;\n\nconst Title = styled(Copy)`\n display: inline-block;\n`;\n\nconst ViewLink = styled(Link)`\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n\n && {\n margin: 0;\n }\n\n &:focus-within {\n outline: dotted 2px\n ${({ isInverted, theme }) =>\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n outline-offset: 4px;\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n box-shadow: none;\n }\n`;\n\nexport interface AlertProps {\n /** Invert colors for use on dark backgrounds */\n isInverted?: boolean;\n\n /** Alert title text */\n title?: string;\n\n /** Alert date */\n date?: Date;\n\n /** Additional description text (richtext) */\n description?: string;\n\n /** Alert link that covers hole element */\n link?: LinkProps;\n\n /** Function to inject custom alert icon */\n customIcon?: (props: { isInverted?: boolean }) => React.ReactNode;\n}\n\nconst Alert: React.FC<AlertProps & { className?: string }> = ({\n isInverted,\n title,\n date,\n description,\n link,\n customIcon,\n className,\n}) => {\n let formattedDate = '';\n if (date) {\n const formatter = new StatusFormatter(\n date.getTime(),\n '',\n 'dd. MMMM yyyy',\n 'hh:mm',\n 'de'\n );\n formattedDate = formatter.getFormattedDate();\n }\n\n return (\n <View isInverted={isInverted} data-sheet=\"alert\" className={className}>\n <Icon>{customIcon ? customIcon({ isInverted }) : <Info />}</Icon>\n <MainLabel>\n {title && (\n <Title textColor=\"inherit\" size=\"medium\" type=\"copy-b\">\n {title}\n </Title>\n )}\n </MainLabel>\n <span />\n <Content>\n {description && (\n <Copy\n isInverted={isInverted}\n size=\"small\"\n innerHTML={description}\n />\n )}\n {date && (\n <Copy size=\"small\" isInverted={isInverted}>\n {formattedDate}\n </Copy>\n )}\n </Content>\n {link && (\n <ViewLink\n {...link}\n ariaLabel={link?.href ? title : undefined}\n />\n )}\n </View>\n );\n};\n\nexport default Alert;\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport { mq, spacings } from 'utils/styles';\nimport Wrapper from 'components/base/Wrapper';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Alert, { AlertProps } from '../blocks/Alert';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { useEqualSheetHeight } from 'utils/useEqualSheetHeight';\n\nconst List = styled.ul`\n margin-top: -${spacings.nudge * 2}px;\n margin-left: -${spacings.nudge * 2}px;\n padding: 0;\n list-style: none;\n\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n justify-content: center;\n flex-wrap: wrap;\n\n @media ${mq.medium} {\n margin-top: -${spacings.spacer}px;\n margin-left: -${spacings.spacer}px;\n }\n`;\n\nconst ListItem = styled.li<{ itemsPerRow: number }>`\n padding-top: ${spacings.nudge * 2}px;\n padding-left: ${spacings.nudge * 2}px;\n flex: 1 1 100%;\n\n @media ${mq.medium} {\n flex: 0 1 50%;\n max-width: 50%;\n\n padding-top: ${spacings.spacer}px;\n padding-left: ${spacings.spacer}px;\n }\n\n @media ${mq.large} {\n flex: 0 1 ${({ itemsPerRow }) => (1 / itemsPerRow) * 100}%;\n max-width: 600px;\n\n padding-top: ${spacings.spacer}px;\n padding-left: ${spacings.spacer}px;\n }\n`;\n\nconst AlertList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array of alert items */\n items?: Pick<AlertProps, 'title' | 'date' | 'description' | 'link'>[];\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n\n /** Function to inject custom alert icon */\n customIcon?: (props: { isInverted?: boolean }) => React.ReactNode;\n}> = ({ anchorId, items, bgMode, customIcon }) => {\n const { colors } = useLibTheme();\n\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n const alertCount = items?.length || 0;\n const itemsPerRow = alertCount % 3 === 1 || alertCount === 2 ? 2 : 3;\n\n const { sheetRefs: alertRefs } = useEqualSheetHeight<HTMLLIElement>({\n listLength: alertCount,\n identifiers: ['[data-sheet=\"alert\"]'],\n responsive: {\n small: 1,\n medium: 2,\n semilarge: 2,\n large: itemsPerRow,\n xlarge: itemsPerRow,\n },\n });\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : hasBg\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper addWhitespace>\n <List>\n {items?.map((item, i) => (\n <ListItem\n key={i}\n itemsPerRow={itemsPerRow}\n ref={alertRefs[i]}\n >\n <Alert\n {...item}\n isInverted={isInverted}\n customIcon={customIcon}\n />\n </ListItem>\n ))}\n </List>\n </Wrapper>\n </Section>\n );\n};\n\nexport const AlertListComponent = AlertList;\nexport default withLibTheme(AlertList);\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Title, { TitleSize } from 'components/blocks/Title';\nimport Copy from 'components/typography/Copy';\nimport Wrapper from 'components/base/Wrapper';\nimport { spacings, mq } from 'utils/styles';\nimport Actions from 'components/blocks/Actions';\nimport { HeadlineTag } from 'components/typography/Heading';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Grid from 'components/base/Grid';\n\nconst StyledTitle = styled(Title)`\n &:not(:last-child) {\n margin-bottom: ${spacings.spacer}px;\n }\n\n @media ${mq.semilarge} {\n max-width: 880px;\n }\n`;\n\nconst ContentText = styled(Copy)`\n text-align: left;\n`;\n\nconst StyledActions = styled(Actions)`\n margin-top: ${spacings.spacer}px;\n`;\n\nconst Article: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n /** Main title text */\n title?: string;\n /** Main title HTML tag type (h2, h3, h4...) */\n titleAs?: HeadlineTag;\n /** Main title size */\n titleSize?: TitleSize;\n /** Superior title that stands above main title */\n superTitle?: string;\n /** Superior title HTML tag type (h3, h4 ...) */\n superTitleAs?: HeadlineTag;\n /** Bold intro text underneath the title (limited richtext capabilites) */\n intro?: string;\n /** Main article richtext */\n text?: string;\n /** Additional article richtext in a second column */\n asideText?: string;\n /** Controls width of left text column (8/12 or 6/12) */\n halfAside?: boolean;\n\n /** Section background */\n bgMode?: 'full' | 'splitted' | 'inverted';\n\n /** Function to inject custom primary button */\n primaryAction?: (isInverted?: boolean) => React.ReactNode;\n /** Function to inject custom secondary button */\n secondaryAction?: (isInverted?: boolean) => React.ReactNode;\n}> = ({\n anchorId,\n title,\n titleAs = 'h2',\n titleSize = 'heading-2',\n superTitle,\n superTitleAs,\n intro,\n text,\n asideText,\n halfAside,\n bgMode,\n primaryAction,\n secondaryAction,\n}) => {\n const { colors } = useLibTheme();\n\n const isInverted = bgMode === 'inverted';\n const hasContent = intro || text || asideText;\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n >\n <Wrapper clampWidth=\"normal\" addWhitespace>\n {(title || superTitle) && (\n <StyledTitle\n title={title}\n titleAs={titleAs}\n titleSize={titleSize}\n superTitle={superTitle}\n superTitleAs={superTitleAs}\n colorMode={isInverted ? 'inverted' : 'default'}\n />\n )}\n {hasContent && (\n <Grid.Row valign=\"top\">\n <Grid.Col\n semilarge={{ span: halfAside ? 6 / 12 : 8 / 12 }}\n >\n {intro && (\n <ContentText\n type=\"copy-b\"\n isInverted={isInverted}\n innerHTML={intro}\n />\n )}\n {text && (\n <ContentText\n type=\"copy\"\n isInverted={isInverted}\n innerHTML={text}\n />\n )}\n </Grid.Col>\n {asideText && (\n <Grid.Col\n semilarge={{\n span: halfAside ? 6 / 12 : 4 / 12,\n }}\n >\n <ContentText\n type=\"copy\"\n isInverted={isInverted}\n innerHTML={asideText}\n />\n </Grid.Col>\n )}\n </Grid.Row>\n )}\n {(primaryAction || secondaryAction) && (\n <StyledActions\n primary={primaryAction && primaryAction(isInverted)}\n secondary={\n secondaryAction && secondaryAction(isInverted)\n }\n />\n )}\n </Wrapper>\n </Section>\n );\n};\n\nexport const ArticleComponent = Article;\nexport default withLibTheme(Article);\n","import React, { FC } from 'react';\nimport styled from 'styled-components';\n\nimport { getGlobals as global, mq, spacings } from 'utils/styles';\nimport Copy from 'components/typography/Copy';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport { HeadlineTag } from 'components/typography/Heading';\nimport IntroBlock from 'components/blocks/IntroBlock';\nimport Actions from 'components/blocks/Actions';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { gridSettings, getGridWidth } from 'components/base/Grid';\n\nconst ContactView = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n margin: 0 auto;\n width: 100%;\n\n text-align: left;\n hyphens: auto;\n overflow-wrap: break-word;\n\n & > * + * {\n margin-top: ${spacings.spacer}px;\n }\n\n @media ${mq.semilarge} {\n flex-direction: row;\n\n & > * + * {\n margin-top: 0px;\n margin-left: ${gridSettings.gutter}px;\n }\n }\n`;\n\nconst Avatar = styled.img<{ isInverted?: boolean }>`\n align-self: center;\n display: block;\n border: solid 1px transparent;\n border-radius: 50%;\n width: 180px;\n height: 180px;\n\n background: ${({ theme, isInverted }) =>\n isInverted\n ? global(theme).sections.imagePlaceholderBg.inverted\n : global(theme).sections.imagePlaceholderBg.default};\n\n @media ${mq.semilarge} {\n display: block;\n width: 190px;\n height: 190px;\n }\n`;\n\nconst Description = styled(Copy)`\n text-align: center;\n\n .icon-label {\n flex-direction: column;\n }\n\n .icon-label > * + * {\n margin-left: 0;\n margin-top: ${spacings.nudge * 2}px;\n }\n\n & > * {\n justify-content: center;\n }\n\n @media ${mq.semilarge} {\n text-align: left;\n\n & > * {\n justify-content: left;\n }\n\n .icon-label {\n flex-direction: row;\n }\n\n .icon-label > * + * {\n margin-left: ${spacings.nudge * 2}px;\n margin-top: 0;\n }\n }\n`;\n\nexport interface ContactBoxProps {\n isInverted?: boolean;\n description?: string;\n avatar?: { src: string; alt: string };\n}\n\nconst ContactBox: FC<ContactBoxProps & { className?: string }> = ({\n isInverted,\n description,\n avatar,\n className,\n}) => {\n return (\n <ContactView className={className}>\n <Avatar\n src={avatar?.src}\n alt={avatar?.alt}\n isInverted={isInverted}\n />\n {description && (\n <Description\n type=\"copy\"\n isInverted={isInverted}\n innerHTML={description}\n />\n )}\n </ContactView>\n );\n};\n\nconst StyledIntro = styled(IntroBlock)<{ hasDecorator?: boolean }>`\n max-width: 880px;\n margin-right: auto;\n margin-left: auto;\n\n @media ${mq.xlarge} {\n & > *:first-child {\n min-height: ${({ hasDecorator }) => hasDecorator && '110px'};\n }\n }\n`;\n\nconst StyledContactBox = styled(ContactBox)`\n margin-top: ${spacings.spacer}px;\n\n @media ${mq.semilarge} {\n max-width: ${getGridWidth({ cols: 8 })};\n margin-right: auto;\n margin-left: auto;\n }\n\n @media ${mq.large} {\n max-width: ${getGridWidth({ cols: 6 })};\n }\n`;\n\nconst StyledActions = styled(Actions)`\n margin-top: ${spacings.spacer}px;\n\n @media ${mq.medium} {\n display: block;\n text-align: center;\n }\n`;\n\nconst NewsletterWrapper = styled.div`\n width: 100%;\n margin: 0 auto;\n margin-top: ${spacings.spacer}px;\n\n @media ${mq.semilarge} {\n max-width: 400px;\n }\n`;\n\nconst Badge = styled.div`\n display: none;\n position: relative;\n height: 241px;\n width: 241px;\n margin-left: auto;\n margin-bottom: -135px;\n z-index: 3;\n\n @media ${mq.xlarge} {\n display: block;\n margin-right: ${1440 * (1 / 28) + 'px'};\n }\n`;\n\nexport interface CtaActionProps {\n isInverted?: boolean;\n isTextCentered?: boolean;\n}\n\nexport const CallToAction: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n /** Main title text */\n title?: string;\n /** Main title HTML tag type (h2, h3, h4...) */\n titleAs?: HeadlineTag;\n /** Superior title that stands above main title */\n superTitle?: string;\n /** Superior title HTML tag type (h3, h4 ...) */\n superTitleAs?: HeadlineTag;\n /** Bold text underneath the title (limited richtext capabilites) */\n text?: string;\n /** Props for contact area */\n contact?: ContactBoxProps;\n /** Show Newsletter defined by inject function newsFormMain. Only visible if React node is defined! */\n hasNewsletter?: boolean;\n /** Badge decorator visible only on large screens */\n badge?: React.ReactNode;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n\n /** Function to inject custom primary button */\n primaryAction?: (props: CtaActionProps) => React.ReactNode;\n /** Function to inject custom secondary button */\n secondaryAction?: (props: CtaActionProps) => React.ReactNode;\n /** Function to inject newsletter form */\n newsFormMain?: (isInverted?: boolean) => React.ReactNode;\n}> = ({\n anchorId,\n title,\n titleAs = 'h2',\n superTitle,\n superTitleAs,\n text,\n contact,\n badge,\n primaryAction,\n secondaryAction,\n hasNewsletter,\n newsFormMain,\n bgMode,\n}) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted ? colors.sectionBg.dark : colors.sectionBg.medium\n }\n bgMode={bgMode ? mapToBgMode(bgMode, true) : 'full'}\n >\n <Wrapper addWhitespace clampWidth=\"normal\">\n {badge && <Badge>{badge}</Badge>}\n {title && (\n <StyledIntro\n isCentered\n colorMode={isInverted ? 'inverted' : 'default'}\n title={title}\n titleAs={titleAs}\n superTitle={superTitle}\n superTitleAs={superTitleAs}\n hasDecorator={!!badge}\n text={text}\n />\n )}\n\n {contact && (\n <StyledContactBox\n isInverted={isInverted}\n description={contact.description}\n avatar={contact.avatar}\n />\n )}\n {newsFormMain && hasNewsletter && (\n <NewsletterWrapper>\n {newsFormMain(isInverted)}\n </NewsletterWrapper>\n )}\n {(primaryAction || secondaryAction) && (\n <StyledActions\n primary={\n primaryAction &&\n primaryAction({ isInverted, isTextCentered: true })\n }\n secondary={\n secondaryAction &&\n secondaryAction({\n isInverted,\n isTextCentered: true,\n })\n }\n />\n )}\n </Wrapper>\n </Section>\n );\n};\n\nexport const CallToActionComponent = CallToAction;\nexport default withLibTheme(CallToAction);\n","import Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport Copy from 'components/typography/Copy';\nimport Link, { LinkProps } from 'components/typography/Link';\nimport React from 'react';\nimport styled, { css } from 'styled-components';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport {\n spacings,\n getColors as color,\n mq,\n getGlobals as global,\n} from 'utils/styles';\n\nconst View = styled.div<{\n isInverted?: boolean;\n cardColor?: string;\n hasLink?: boolean;\n}>`\n display: flex;\n flex-direction: column;\n justify-content: center;\n position: relative;\n color: ${({ theme }) => color(theme).text.inverted};\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n min-height: 110px;\n\n overflow: hidden;\n\n @media ${mq.medium} {\n display: block;\n padding-top: 85%;\n }\n`;\n\nconst SolidView = styled(View)`\n background-color: ${({ theme, isInverted, cardColor }) =>\n cardColor\n ? cardColor\n : isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n\n transition: background-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out;\n\n ${({ hasLink }) =>\n hasLink &&\n css`\n cursor: pointer;\n\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n box-shadow: 0 2px 24px 0 rgba(0, 0, 0, 0.35);\n }\n }\n `}\n`;\n\nconst ImageView = styled(View)`\n transition: box-shadow 0.2s ease-in-out;\n\n ${({ hasLink }) =>\n hasLink &&\n css`\n @media (hover: hover) and (pointer: fine) {\n cursor: pointer;\n\n img {\n -webkit-backface-visibility: hidden;\n -ms-transform: translateZ(0); /* IE 9 */\n -webkit-transform: translateZ(\n 0\n ); /* Chrome, Safari, Opera */\n transform: translateZ(0);\n transform-origin: center;\n transition: transform 0.2s ease-in-out;\n }\n\n &:hover {\n box-shadow: 0 2px 24px 0 rgba(0, 0, 0, 0.35);\n\n img {\n transform: scale(1.03);\n }\n }\n }\n `}\n\n &:after {\n content: '';\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n background: ${({ theme }) => global(theme).sections.imageTextGradient};\n pointer-events: none;\n }\n\n @media ${mq.medium} {\n padding-top: 0;\n }\n`;\n\nconst StyledImage = styled(Image)`\n position: absolute;\n top: 0;\n bottom: 0;\n right: 0;\n left: 0;\n\n display: block;\n width: 100%;\n height: 100%;\n\n object-fit: cover;\n object-position: center;\n\n @media ${mq.medium} {\n position: relative;\n }\n`;\n\nconst Content = styled.div<{ hasIcon?: boolean }>`\n z-index: 1;\n\n padding: ${spacings.nudge * 3}px;\n\n display: flex;\n flex-direction: row;\n align-items: center;\n\n & > * + * {\n margin-left: ${spacings.spacer}px;\n }\n\n @media ${mq.medium} {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n overflow: hidden;\n\n display: flex;\n flex-direction: ${({ hasIcon }) => (hasIcon ? 'column' : 'row')};\n justify-content: space-between;\n align-items: ${({ hasIcon }) => (hasIcon ? 'flex-start' : 'flex-end')};\n\n & > * + * {\n margin-left: 0;\n }\n }\n`;\n\nconst TextContainer = styled.div`\n width: 100%;\n overflow: hidden;\n\n & > * + * {\n margin-top: ${spacings.nudge / 2}px;\n }\n`;\n\nconst Title = styled(Copy)`\n display: inline-block;\n max-width: 100%;\n\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n text-overflow: ellipsis;\n overflow: hidden;\n`;\n\nconst Footer = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n & > * + * {\n margin-left: ${spacings.nudge * 2}px;\n }\n`;\n\nconst SubLabel = styled(Copy)`\n display: inline-block;\n\n display: -webkit-box;\n -webkit-line-clamp: 1;\n -webkit-box-orient: vertical;\n overflow: hidden;\n`;\n\nconst Icon = styled.div`\n height: 100%;\n max-height: 60px;\n min-height: 40px;\n min-width: 40px;\n\n * {\n height: 100%;\n }\n\n svg,\n img {\n width: 100%;\n }\n\n @media ${mq.medium} {\n svg,\n img {\n width: auto;\n }\n }\n`;\n\nconst CardLink = styled(Link)<{ isInverted?: boolean }>`\n z-index: 1;\n display: block;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n\n outline-color: ${({ theme }) => color(theme).primary.default};\n\n &:focus {\n border: 2px dotted ${({ theme }) => color(theme).primary.invertedHover};\n outline-offset: 4px;\n\n color: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.invertedHover\n : color(theme).primary.hover};\n }\n`;\n\nexport interface CardProps {\n isInverted?: boolean;\n title?: string;\n subLabel?: string;\n image?: ImageProps;\n link?: LinkProps;\n decorator?: (props: { isInverted?: boolean }) => React.ReactNode;\n cardColor?: string;\n customIcon?: (props: { isInverted?: boolean }) => React.ReactNode;\n}\n\nconst Card: React.FC<\n Omit<CardProps, 'coverSpace' | 'ratios'> & {\n className?: string;\n }\n> = ({\n isInverted,\n title,\n subLabel,\n image,\n link,\n decorator,\n cardColor,\n customIcon,\n}) => {\n const { colors } = useLibTheme();\n const CardView = image && image.small ? ImageView : SolidView;\n const defaultCardColor = isInverted\n ? colors.primary.inverted\n : colors.primary.default;\n\n return (\n <CardView\n isInverted={isInverted}\n cardColor={cardColor || defaultCardColor}\n hasLink={!!link?.href}\n >\n {image?.small && (\n <StyledImage\n {...image}\n coverSpace\n isInverted={isInverted}\n ratios={{\n small: { w: 352, h: 108 },\n medium: { w: 286, h: 244 },\n }}\n />\n )}\n <Content hasIcon={!!customIcon}>\n {customIcon ? <Icon>{customIcon({})}</Icon> : ''}\n <TextContainer>\n {title && (\n <Title size=\"big\" type=\"copy\" isInverted>\n {title}\n </Title>\n )}\n {subLabel && (\n <Footer>\n <SubLabel type=\"copy-b\" size=\"big\" isInverted>\n {subLabel}\n </SubLabel>\n {decorator ? decorator({ isInverted }) : undefined}\n </Footer>\n )}\n </TextContainer>\n </Content>\n {link?.href && (\n <CardLink\n isInverted={isInverted}\n {...link}\n ariaLabel={title || undefined}\n />\n )}\n </CardView>\n );\n};\n\nconst List = styled.ul`\n padding: 0;\n margin-top: -${spacings.nudge * 2}px;\n margin-left: -${spacings.nudge * 2}px;\n list-style: none;\n\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n justify-content: center;\n flex-wrap: wrap;\n\n @media ${mq.medium} {\n margin-top: -${spacings.spacer}px;\n margin-left: -${spacings.spacer}px;\n }\n`;\n\nconst CardItem = styled.li<{ isEqual?: boolean; threeCols?: boolean }>`\n padding-top: ${spacings.nudge * 2}px;\n padding-left: ${spacings.nudge * 2}px;\n\n width: 100%;\n\n @media ${mq.medium} {\n flex: 0 0 50%;\n max-width: 370px;\n padding-top: ${spacings.spacer}px;\n padding-left: ${spacings.spacer}px;\n }\n\n @media ${mq.semilarge} {\n flex: 0 0 33.33%;\n }\n\n @media (min-width: 75em) {\n flex: ${({ isEqual, threeCols }) =>\n threeCols ? '0 0 33.33%' : isEqual && '0 0 25%'};\n }\n`;\n\nconst CardList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array with card item settings */\n items?: Omit<CardProps, 'decorator' | 'isInverted'>[];\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n\n /** Function to inject custom decoration icon */\n decorator?: (props: { isInverted?: boolean }) => React.ReactNode;\n\n /** Force maximal three items per row */\n maxThreeCols?: boolean;\n}> = ({ anchorId, items, bgMode, decorator, maxThreeCols }) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n\n return (\n <Section\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n addSeperation\n >\n <Wrapper addWhitespace>\n <List>\n {items?.map((item, i) => (\n <CardItem\n key={i}\n isEqual={items.length % 2 === 0}\n threeCols={maxThreeCols}\n >\n <Card\n {...item}\n isInverted={isInverted}\n decorator={decorator}\n />\n </CardItem>\n ))}\n </List>\n </Wrapper>\n </Section>\n );\n};\n\nexport const CardListComponent = CardList;\nexport default withLibTheme(CardList);\n","import React, { FC, useEffect, useRef, useState } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport { getColors as color, spacings } from 'utils/styles';\nimport ArrowLeftRight from 'components/base/icons/ArrowLeftRight';\nimport Copy from 'components/typography/Copy';\nimport useIE from 'utils/useIE';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\n\nconst clamp = (num: number, min: number, max: number) => {\n return Math.min(Math.max(num, min), max);\n};\n\nconst Images = styled.div`\n position: relative;\n cursor: col-resize;\n & > * {\n pointer-events: none;\n user-select: none;\n }\n`;\n\nconst BackgroundImg = styled(Image)`\n position: relative;\n display: block;\n width: 100%;\n`;\n\nconst ForegroundContainer = styled.div<{\n hasTransition?: boolean;\n initalValue?: number;\n hasAnim?: boolean;\n}>`\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 50%;\n overflow: hidden;\n transition: width ${({ hasTransition }) => (hasTransition ? 0.1 : 0)}s\n ease-in-out;\n ${({ hasAnim, initalValue }) =>\n hasAnim &&\n css`\n animation-name: ForegroundAnim;\n animation-duration: 5s;\n animation-iteration-count: 1;\n animation-play-state: ${hasAnim && 'running'};\n animation-timing-function: ease-in-out;\n @keyframes ForegroundAnim {\n 0% {\n width: ${initalValue\n ? clamp(initalValue * 100, 0, 100) + '%'\n : '50%'};\n }\n 33% {\n width: ${initalValue\n ? clamp(initalValue * 100 + 10, 0, 100) + '%'\n : '60%'};\n }\n 66% {\n width: ${initalValue\n ? clamp(initalValue * 100 - 10, 0, 100) + '%'\n : '40%'};\n }\n 100% {\n width: ${initalValue ? initalValue * 100 + '%' : '50%'};\n }\n }\n `}\n`;\n\nconst ForegroundImg = styled(Image)`\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n height: 100%;\n max-width: none;\n object-fit: cover;\n\n img {\n height: auto;\n width: auto;\n }\n`;\n\nconst ForegroundOverlay = styled.div<{ color: string }>`\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background-color: ${({ color }) => color};\n`;\n\nconst ImageLabel = styled(Copy)<{ bgColor?: string }>`\n height: ${spacings.spacer}px;\n padding: ${spacings.nudge}px ${spacings.spacer}px ${spacings.spacer}px\n ${spacings.spacer}px;\n background: ${({ bgColor }) => bgColor && bgColor};\n`;\n\nconst ForegroundLabel = styled(ImageLabel)`\n position: absolute;\n bottom: ${spacings.spacer}px;\n left: ${spacings.spacer}px;\n pointer-events: none;\n white-space: nowrap;\n`;\n\nconst BackgroundLabel = styled(ImageLabel)`\n position: absolute;\n bottom: ${spacings.spacer}px;\n right: ${spacings.spacer}px;\n pointer-events: none;\n white-space: nowrap;\n`;\n\nconst ControlContainer = styled.div<{\n hasTransition?: boolean;\n hasAnim?: boolean;\n initalValue?: number;\n}>`\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n transition: left ${({ hasTransition }) => (hasTransition ? 0.1 : 0)}s\n ease-in-out;\n ${({ hasAnim, initalValue }) =>\n hasAnim &&\n css`\n animation-name: ControlAnim;\n animation-duration: 5s;\n animation-iteration-count: 1;\n animation-play-state: ${hasAnim && 'running'};\n animation-timing-function: ease-in-out;\n @keyframes ControlAnim {\n 0% {\n left: ${initalValue\n ? clamp(initalValue * 100, 0, 100) + '%'\n : '50%'};\n }\n 33% {\n left: ${initalValue\n ? clamp(initalValue * 100 + 10, 0, 100) + '%'\n : '60%'};\n }\n 66% {\n left: ${initalValue\n ? clamp(initalValue * 100 - 10, 0, 100) + '%'\n : '40%'};\n }\n 100% {\n left: ${initalValue ? initalValue * 100 + '%' : '50%'};\n }\n }\n `}\n`;\n\nconst Control = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n height: 54px;\n width: 54px;\n border: solid 2px ${({ theme }) => color(theme).elementBg.light};\n border-radius: 50%;\n background-color: ${({ theme }) => color(theme).elementBg.medium};\n`;\n\nconst ComparisonSlider: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n bgMode?: 'full' | 'inverted' | 'splitted';\n initialValue?: number;\n foregroundImg?: ImageProps;\n backgroundImg?: ImageProps;\n foregroundLabel?: string;\n backgroundLabel?: string;\n overlayColor?: string;\n labelColor?: string;\n dragControl?: React.ReactNode;\n enableControlAnim?: boolean;\n}> = ({\n anchorId,\n bgMode,\n initialValue,\n foregroundImg,\n backgroundImg,\n foregroundLabel,\n backgroundLabel,\n overlayColor = 'rgba(0, 0 , 0, 0.2)',\n labelColor = 'rgba(0, 0 , 0, 0.3)',\n dragControl,\n enableControlAnim,\n}) => {\n const isIE = useIE(true);\n const [slideValue, setSlideValue] = useState<number>(\n initialValue ? Math.min(Math.max(initialValue, 0), 1) : 0.5\n );\n const [isHolding, setIsHolding] = useState<boolean>(false);\n const [isDragging, setIsDragging] = useState<boolean>(false);\n const [interacted, setInteracted] = useState<boolean>(true);\n const [sideOffset, setSideOffset] = useState<number>(0);\n const controlRef = useRef<HTMLDivElement | null>(null);\n const { colors } = useLibTheme();\n\n useEffect(() => {\n if (controlRef.current) {\n setSideOffset(controlRef.current.offsetWidth / 2);\n }\n }, []);\n\n useEffect(() => {\n const handleInitalLoad = () => {\n const options = {\n rootMargin: '0px',\n threshold: 1.0,\n };\n\n const observer = new IntersectionObserver((entries, observer) => {\n if (enableControlAnim && entries[0]?.isIntersecting) {\n // if control is first fully visible\n observer.unobserve(entries[0]?.target);\n setInteracted(false);\n }\n }, options);\n if (controlRef.current) observer.observe(controlRef.current);\n window.removeEventListener('load', handleInitalLoad);\n };\n\n // wait unitl user has scrolled once\n if (!isIE) {\n if (document.readyState === 'complete') handleInitalLoad();\n else window.addEventListener('load', handleInitalLoad);\n }\n\n return () => {\n window.removeEventListener('load', handleInitalLoad);\n };\n }, [enableControlAnim, isIE]);\n\n const setCurrentPos = (target: EventTarget & Element, clientX: number) => {\n if (target && clientX) {\n const relativeClientX = clientX - target.getBoundingClientRect().x;\n\n // check side offset\n if (\n relativeClientX >= sideOffset &&\n relativeClientX <=\n target.getBoundingClientRect().width - sideOffset\n ) {\n let percentage =\n relativeClientX / target.getBoundingClientRect().width;\n percentage = Math.min(Math.max(percentage, 0), 1);\n\n setSlideValue(percentage);\n }\n }\n };\n\n const handleClick = (ev: React.MouseEvent) => {\n const target = ev.currentTarget;\n if (target && ev.clientX) {\n setCurrentPos(target, ev.clientX);\n setInteracted(true);\n }\n };\n\n const handleMouseMove = (ev: React.MouseEvent) => {\n const target = ev.currentTarget;\n if (target && ev.clientX && isHolding) {\n setIsDragging(true);\n setInteracted(true);\n if (isDragging) setCurrentPos(target, ev.clientX);\n }\n };\n\n const handleTouchMove = (ev: React.TouchEvent<HTMLDivElement>) => {\n const target = ev.currentTarget;\n if (target && ev.touches[0]?.clientX) {\n setInteracted(true);\n setCurrentPos(target, ev.touches[0]?.clientX);\n }\n };\n\n const isInverted = bgMode === 'inverted';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n >\n <Wrapper>\n {backgroundImg && foregroundImg && (\n <Images\n onClick={handleClick}\n onMouseMove={handleMouseMove}\n onMouseDown={() => {\n setIsDragging(false);\n setIsHolding(true);\n }}\n onMouseUp={() => {\n setIsDragging(false);\n setIsHolding(false);\n }}\n onMouseLeave={() => {\n setIsHolding(false);\n setIsDragging(false);\n }}\n onTouchMove={handleTouchMove}\n onTouchStart={() => setIsHolding(true)}\n onTouchEnd={() => setIsHolding(false)}\n >\n <BackgroundImg {...backgroundImg} />\n {backgroundLabel && (\n <BackgroundLabel\n textColor={colors.text.inverted}\n bgColor={labelColor}\n >\n {backgroundLabel}\n </BackgroundLabel>\n )}\n <ForegroundContainer\n hasTransition={!isHolding}\n hasAnim={!interacted}\n initalValue={initialValue}\n style={{ width: slideValue * 100 + '%' }}\n >\n <ForegroundImg {...foregroundImg} />\n {foregroundLabel && (\n <ForegroundLabel\n textColor={colors.text.inverted}\n bgColor={labelColor}\n >\n {foregroundLabel}\n </ForegroundLabel>\n )}\n <ForegroundOverlay color={overlayColor} />\n </ForegroundContainer>\n <ControlContainer\n ref={controlRef}\n hasTransition={!isHolding}\n hasAnim={!interacted}\n initalValue={initialValue}\n style={{ left: slideValue * 100 + '%' }}\n >\n {dragControl ? (\n dragControl\n ) : (\n <Control>\n <ArrowLeftRight\n iconColor={colors.elementBg.light}\n />\n </Control>\n )}\n </ControlContainer>\n </Images>\n )}\n </Wrapper>\n </Section>\n );\n};\n\nexport const ComparisonSliderComponent = ComparisonSlider;\nexport default withLibTheme(ComparisonSlider);\n","import React, { forwardRef } from 'react';\nimport ReactDOMServer from 'react-dom/server';\nimport styled, { css } from 'styled-components';\n\nimport {\n spacings,\n getGlobals as global,\n mq,\n withRange,\n getColors as color,\n} from 'utils/styles';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport Link, { LinkProps } from 'components/typography/Link';\nimport Title from 'components/blocks/Title';\nimport External from 'components/base/icons/External';\nimport { HeadlineTag } from 'components/typography/Heading';\n\nconst View = styled(Link)<{\n clickable?: boolean;\n}>`\n display: block;\n position: relative;\n width: 100%;\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n overflow: hidden;\n outline: none;\n\n &:after {\n content: '';\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n background: ${({ theme }) => global(theme).sections.imageTextGradient};\n pointer-events: none;\n }\n\n ${({ clickable, theme, isInverted }) =>\n clickable &&\n css`\n transition: box-shadow 0.2s ease-in-out;\n cursor: pointer;\n\n &:hover {\n box-shadow: 0 2px 24px 0 rgba(0, 0, 0, 0.35);\n }\n\n &:focus {\n box-shadow: 0 2px 24px 0 rgba(0, 0, 0, 0.35);\n outline: solid 2px\n ${isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n outline-offset: 4px;\n\n color: ${isInverted\n ? color(theme).primary.invertedHover\n : color(theme).primary.hover};\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n box-shadow: none;\n }\n `}\n`;\n\nconst StyledImage = styled(Image)`\n width: 100%;\n height: 100%;\n min-height: 300px;\n\n img {\n height: 100%;\n }\n`;\n\nconst IntroContainer = styled.div`\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n overflow: auto;\n z-index: 1;\n\n padding: ${spacings.spacer}px ${spacings.nudge * 3}px;\n\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n align-items: flex-start;\n\n /* required to align items at flex-end in ie11 */\n &:before {\n content: '';\n display: block;\n flex: 1 0 0px;\n }\n\n @media ${mq.medium} {\n padding: ${spacings.nudge * 5}px ${spacings.spacer}px;\n }\n`;\n\nconst StyledTitle = styled(Title)<{ clampTitle?: boolean }>`\n max-width: ${({ clampTitle }) =>\n clampTitle && (13 / 28) * spacings.wrapper + 'px'};\n`;\n\nconst ExternalIconHolder = styled.span`\n margin-left: ${spacings.nudge * 2}px;\n\n & > * {\n display: inline-block;\n }\n`;\n\nconst Icon = styled.div`\n ${withRange([60, 100], 'height')};\n ${withRange([60, 100], 'width')};\n\n position: absolute;\n top: ${spacings.nudge * 3}px;\n left: ${spacings.nudge * 3}px;\n\n & > * {\n ${withRange([60, 100], 'height')};\n ${withRange([60, 100], 'width')};\n }\n\n color: ${({ theme }) => color(theme).text.inverted};\n`;\n\nexport interface PromotionCardProps {\n /** Setup Card for dark backgrounds */\n isInverted?: boolean;\n /** Card image settings */\n image: ImageProps;\n /** Card title */\n title?: string;\n /** Card title HTML tag type (h2, h3, h4...) */\n titleAs?: HeadlineTag;\n /** Superior card title that stands above main title */\n superTitle?: string;\n /** Superior card title HTML tag type (h3, h4 ...) */\n superTitleAs?: HeadlineTag;\n /** Href path */\n href?: string;\n /** Advanced href options */\n link?: LinkProps;\n /** Inject custom icon that indicates an external link */\n externalLinkIcon?: React.ReactNode;\n\n /** Function to inject icon in top left corner */\n icon?: (props: { isInverted?: boolean }) => React.ReactNode;\n}\n\nconst PromotionCard = forwardRef<\n HTMLAnchorElement,\n PromotionCardProps & { className?: string }\n>(\n (\n {\n isInverted,\n image,\n title,\n titleAs,\n superTitle,\n superTitleAs,\n href,\n link,\n externalLinkIcon,\n icon,\n className,\n },\n ref\n ) => {\n // fallback for older versions\n let linkObj = link;\n if (href && !link) {\n linkObj = {\n href: href,\n isExternal: false,\n };\n }\n\n const externalIconString = ReactDOMServer.renderToString(\n <ExternalIconHolder>\n {externalLinkIcon || <External />}\n </ExternalIconHolder>\n );\n\n return (\n <View\n ref={ref}\n clickable={!!href || !!link}\n {...linkObj}\n className={className}\n >\n <StyledImage {...image} isInverted={isInverted} coverSpace />\n {icon && <Icon>{icon({ isInverted })}</Icon>}\n {title && (\n <IntroContainer>\n <StyledTitle\n colorMode=\"onImage\"\n superTitle={superTitle}\n superTitleAs={superTitleAs}\n title={\n linkObj?.isExternal\n ? title + externalIconString\n : title\n }\n titleAs={titleAs || 'div'}\n clampTitle\n />\n </IntroContainer>\n )}\n </View>\n );\n }\n);\n\nPromotionCard.displayName = 'PromotionCard';\n\nexport default PromotionCard;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nimport Grid, { gridSettings } from 'components/base/Grid';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\n\nimport PromotionCard, {\n PromotionCardProps,\n} from 'components/blocks/PromotionCard';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\n\nconst Card = styled(PromotionCard)<{ isMain?: boolean }>`\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n\n height: ${({ isMain }) => isMain && '100%'};\n\n flex: 1 0 auto;\n\n & + & {\n margin-top: ${gridSettings.gutter}px;\n }\n`;\n\nconst CrossPromotion: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Promotion card settings in main grid column (default: on right side). The size prop controls the width. */\n main?: Array<\n Omit<PromotionCardProps, 'externalLinkIcon' | 'isInverted'> & {\n size?: 'full' | 'half';\n }\n >;\n\n /** Promotion card settings in second grid column (default: on left side). The size prop controls the width. */\n aside?: Array<\n Omit<PromotionCardProps, 'externalLinkIcon' | 'isInverted'> & {\n size?: 'full' | 'half';\n }\n >;\n\n /** Section background */\n bgMode?: 'full' | 'inverted' | 'splitted';\n\n /** Switching order of main and aside columns */\n isMirrored?: boolean;\n\n /** Inject custom icon that indicates an external link */\n externalLinkIcon?: React.ReactNode;\n}> = ({ anchorId, main, aside, bgMode, isMirrored, externalLinkIcon }) => {\n const { colors } = useLibTheme();\n\n const isInverted = bgMode === 'inverted';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, false, isMirrored)}\n >\n <Wrapper clampWidth=\"normal\" addWhitespace>\n {aside ? (\n isMirrored ? (\n <Grid.Row>\n <Grid.Col semilarge={{ span: 6 / 12 }}>\n {main &&\n main.map((card, i) => (\n <Card\n key={i}\n isMain\n {...card}\n externalLinkIcon={externalLinkIcon}\n isInverted={isInverted}\n />\n ))}\n </Grid.Col>\n <Grid.Col semilarge={{ span: 6 / 12 }}>\n {aside.map((card, i) => (\n <Card\n key={i}\n {...card}\n externalLinkIcon={externalLinkIcon}\n isInverted={isInverted}\n />\n ))}\n </Grid.Col>\n </Grid.Row>\n ) : (\n <Grid.Row>\n <Grid.Col semilarge={{ span: 6 / 12 }}>\n {aside.map((card, i) => (\n <Card\n key={i}\n {...card}\n externalLinkIcon={externalLinkIcon}\n isInverted={isInverted}\n />\n ))}\n </Grid.Col>\n <Grid.Col semilarge={{ span: 6 / 12 }}>\n {main &&\n main.map((card, i) => (\n <Card\n key={i}\n isMain\n {...card}\n externalLinkIcon={externalLinkIcon}\n isInverted={isInverted}\n />\n ))}\n </Grid.Col>\n </Grid.Row>\n )\n ) : (\n main && (\n <Grid.Row>\n {main.map((card, i) => (\n <Grid.Col\n semilarge={{\n span:\n (card.size === 'half' ? 6 : 12) /\n 12,\n }}\n key={i}\n >\n <Card\n key={i}\n {...card}\n externalLinkIcon={externalLinkIcon}\n isInverted={isInverted}\n />\n </Grid.Col>\n ))}\n </Grid.Row>\n )\n )}\n </Wrapper>\n </Section>\n );\n};\n\nexport const CrossPromotionComponent = CrossPromotion;\nexport default withLibTheme(CrossPromotion);\n","import React, { forwardRef } from 'react';\nimport styled from 'styled-components';\n\nimport { spacings, getGlobals as global } from 'utils/styles';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport Copy from 'components/typography/Copy';\n\nconst View = styled.div``;\n\nconst ImageContainer = styled.div<{ isCentered?: boolean }>`\n display: flex;\n justify-content: ${({ isCentered }) =>\n isCentered ? 'center' : 'flex-start'};\n margin-bottom: ${spacings.nudge * 3}px;\n max-width: 100%;\n`;\n\nconst StyledImage = styled(Image)`\n overflow: hidden;\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n`;\n\nconst Content = styled.div<{ isCentered?: boolean }>`\n text-align: ${({ isCentered }) => isCentered && 'center'};\n\n & > * + * {\n margin-top: ${spacings.nudge * 3}px;\n }\n`;\n\nconst Title = styled(Copy)``;\n\nconst SubTitle = styled(Copy)``;\n\nconst Text = styled(Copy)`\n ${SubTitle} + & {\n margin-top: ${spacings.nudge}px;\n }\n`;\n\nexport interface FactProps {\n isInverted?: boolean;\n isCentered?: boolean;\n title?: string;\n subTitle?: string;\n text?: string;\n image?: ImageProps;\n}\n\nconst Fact = forwardRef<\n HTMLDivElement,\n FactProps & {\n className?: string;\n }\n>(\n (\n {\n isInverted = false,\n isCentered = false,\n title,\n subTitle,\n text,\n image,\n className,\n },\n ref\n ) => {\n return (\n <View ref={ref} className={className}>\n {image?.small && (\n <ImageContainer isCentered={isCentered}>\n <StyledImage\n isInverted={isInverted}\n small={image.small}\n medium={image.medium}\n semilarge={image.semilarge}\n large={image.large}\n xlarge={image.xlarge}\n alt={image.alt}\n coverSpace={image.coverSpace}\n ratios={image.ratios}\n showPlaceholder={image.showPlaceholder}\n />\n </ImageContainer>\n )}\n <Content isCentered={isCentered}>\n {title && (\n <Title\n type=\"copy-b\"\n size=\"big\"\n isInverted={isInverted}\n data-sheet=\"title\"\n >\n {title}\n </Title>\n )}\n {subTitle && (\n <SubTitle\n type=\"copy-b\"\n isInverted={isInverted}\n data-sheet=\"subtitle\"\n >\n {subTitle}\n </SubTitle>\n )}\n {text && (\n <Text\n type=\"copy\"\n isInverted={isInverted}\n data-sheet=\"text\"\n innerHTML={text}\n />\n )}\n </Content>\n </View>\n );\n }\n);\n\nFact.displayName = 'Fact';\n\nexport default Fact;\n","import React, { FC } from 'react';\nimport styled from 'styled-components';\n\nimport { mq } from 'utils/styles';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Fact, { FactProps } from 'components/blocks/Fact';\nimport { useEqualSheetHeight } from 'utils/useEqualSheetHeight';\nimport Grid from 'components/base/Grid';\n\nconst FactFill = styled.div`\n display: none;\n\n @media ${mq.large} {\n display: block;\n }\n`;\n\nconst FactGrid: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Controls amount columns on large screens */\n columns?: 3 | 4 | 6;\n\n /** Array with fact card data */\n facts?: Array<Omit<FactProps, 'isInverted' | 'isCentered'>>;\n\n /** Section background */\n bgMode?: 'full' | 'inverted' | 'splitted';\n\n /** Center text inside fact card items */\n isCentered?: boolean;\n}> = ({ anchorId, columns = 3, facts, bgMode, isCentered }) => {\n const { colors } = useLibTheme();\n const factCount = facts?.length || 0;\n\n const isInverted = bgMode === 'inverted';\n\n const { sheetRefs: cardRefs } = useEqualSheetHeight<HTMLDivElement>({\n listLength: factCount,\n identifiers: ['[data-sheet=\"title\"]', '[data-sheet=\"subtitle\"]'],\n responsive: {\n small: 1,\n medium: columns < 3 ? columns : 3,\n semilarge: columns < 4 ? columns : 4,\n large: columns,\n xlarge: columns,\n },\n });\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n >\n <Wrapper clampWidth=\"normal\" addWhitespace>\n <Grid.Row>\n {facts &&\n facts.map((fact, i) => {\n if (\n fact?.title ||\n fact?.subTitle ||\n fact?.image ||\n fact?.text\n ) {\n return (\n <Grid.Col\n key={i}\n medium={{ span: 4 / 12 }}\n semilarge={\n columns > 3\n ? { span: 3 / 12 }\n : { span: 4 / 12 }\n }\n large={{ span: 12 / columns / 12 }}\n >\n <Fact\n key={i}\n ref={cardRefs[i]}\n {...fact}\n isCentered={isCentered}\n isInverted={isInverted}\n />\n </Grid.Col>\n );\n } else {\n return (\n <Grid.Col\n key={i}\n medium={{ span: 4 / 12 }}\n semilarge={\n columns > 3\n ? { span: 3 / 12 }\n : { span: 4 / 12 }\n }\n large={{ span: 12 / columns / 12 }}\n >\n <FactFill ref={cardRefs[i]} key={i} />\n </Grid.Col>\n );\n }\n })}\n </Grid.Row>\n </Wrapper>\n </Section>\n );\n};\n\nexport const FactGridComponent = FactGrid;\nexport default withLibTheme(FactGrid);\n","import React from 'react';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport styled from 'styled-components';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { spacings, getColors as color, mq } from 'utils/styles';\nimport Wrapper from 'components/base/Wrapper';\nimport Copy from 'components/typography/Copy';\n\nconst FactsContainer = styled.ul`\n padding: 0;\n margin: 0;\n\n list-style-type: none;\n\n & > * + * {\n margin-top: ${spacings.nudge}px;\n }\n`;\n\nconst FactItem = styled.li<{ hasText?: boolean; hasBack?: boolean }>`\n padding: ${spacings.nudge * 2}px;\n\n background: ${({ theme, hasBack }) =>\n hasBack ? color(theme).elementBg.light : color(theme).elementBg.medium};\n\n display: flex;\n flex-direction: row;\n align-items: ${({ hasText }) => (hasText ? 'flex-start' : 'center')};\n\n @media ${mq.medium} {\n padding: ${spacings.nudge * 3}px;\n }\n`;\n\nconst Icon = styled.img`\n margin-right: ${spacings.nudge * 3}px;\n display: block;\n max-width: ${spacings.nudge * 5}px;\n\n @media ${mq.medium} {\n margin-right: ${spacings.spacer}px;\n }\n`;\n\nconst ContentBlock = styled.div`\n & > * + * {\n margin-top: ${spacings.nudge * 2}px;\n }\n`;\n\nconst Description = styled(Copy)`\n max-width: 880px;\n`;\n\nconst FactList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array with fact item data */\n facts?: Array<{\n label?: string;\n text?: string;\n }>;\n\n /** Icon for each fact item */\n icon?: { src: string; alt?: string };\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n}> = ({ anchorId, facts, icon, bgMode }) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const hasBack = isInverted || bgMode === 'full';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode === 'full'\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper clampWidth=\"normal\" addWhitespace>\n {facts && (\n <FactsContainer>\n {facts.map(({ label, text }, i) => {\n return (\n <FactItem\n key={i}\n hasText={!!text}\n hasBack={hasBack}\n >\n {icon && (\n <Icon\n src={icon.src}\n alt={icon.alt || ''}\n />\n )}\n <ContentBlock>\n {label && (\n <Copy type=\"copy-b\">{label}</Copy>\n )}\n {text && (\n <Description\n type=\"copy\"\n innerHTML={text}\n />\n )}\n </ContentBlock>\n </FactItem>\n );\n })}\n </FactsContainer>\n )}\n </Wrapper>\n </Section>\n );\n};\n\nexport const FactListComponent = FactList;\nexport default withLibTheme(FactList);\n","import React, { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport {\n mq,\n spacings,\n getGlobals as global,\n getFonts as font,\n} from 'utils/styles';\n\nimport Copy, { copyStyle } from 'components/typography/Copy';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport Link, { LinkProps } from 'components/typography/Link';\n\nconst View = styled.div<{ isCentered?: boolean }>`\n min-width: 270px;\n padding-bottom: ${spacings.nudge}px;\n text-align: ${({ isCentered }) => isCentered && 'center'};\n\n & > * + * {\n margin-top: ${spacings.spacer}px;\n }\n`;\n\nconst TitleLink = styled(Link)<{ href?: string }>`\n display: inline-block;\n ${copyStyle('copy-b', 'big')}\n\n color: ${({ theme, isInverted }) =>\n isInverted\n ? font(theme)['copy-b'].big.colorInverted\n : font(theme)['copy-b'].big.color};\n text-decoration: none;\n\n ${({ href, isInverted, theme }) =>\n !href &&\n css`\n &:hover {\n color: ${isInverted\n ? font(theme)['copy-b'].big.colorInverted\n : font(theme)['copy-b'].big.color};\n }\n `}\n`;\n\nconst ImageContainer = styled(Link)<{ isCentered?: boolean }>`\n display: flex;\n justify-content: ${({ isCentered }) =>\n isCentered ? 'center' : 'flex-start'};\n width: 100%;\n`;\n\nconst StyledImage = styled(Image)`\n overflow: hidden;\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n`;\n\nconst ArticleContent = styled.div<{ isCentered?: boolean }>`\n text-align: ${({ isCentered }) => isCentered && 'center'};\n\n & > * + * {\n margin-top: ${spacings.nudge * 2}px;\n }\n\n @media ${mq.medium} {\n & > * {\n max-width: 95%;\n margin-right: ${({ isCentered }) => isCentered && 'auto'};\n margin-left: ${({ isCentered }) => isCentered && 'auto'};\n }\n }\n`;\n\nconst Action = styled.div`\n max-width: 100%;\n`;\n\nexport interface FeatureActionProps {\n isInverted?: boolean;\n isTextCentered?: boolean;\n}\n\nexport interface FeatureProps {\n /** Invert color and background for darker themes */\n isInverted?: boolean;\n\n /** Center all texts */\n isCentered?: boolean;\n\n /** Image on item's top */\n image?: ImageProps;\n\n /** Item title text underneath the image */\n title?: string;\n\n /** Small item description text (richtext) */\n description?: string;\n\n /** Item intro text (partial richtext cause it's always bold) */\n intro?: string;\n\n /** Item's main text (richtext) */\n text?: string;\n\n /** Item link settings */\n link?: LinkProps;\n\n /** Function to inject custom primary button */\n action?: (props: FeatureActionProps) => React.ReactNode;\n}\n\nconst Feature = forwardRef<\n HTMLDivElement,\n FeatureProps & {\n className?: string;\n }\n>(\n (\n {\n title,\n description,\n intro,\n text,\n link,\n image,\n isInverted = false,\n isCentered = false,\n action,\n className,\n },\n ref\n ) => {\n return (\n <View ref={ref} isCentered={isCentered} className={className}>\n {image?.small && (\n <ImageContainer {...link} isCentered={isCentered}>\n <StyledImage\n small={image.small}\n medium={image.medium}\n semilarge={image.semilarge}\n large={image.large}\n xlarge={image.xlarge}\n alt={image.alt}\n ratios={image.ratios}\n coverSpace={\n image.coverSpace === undefined\n ? true\n : image.coverSpace\n }\n isInverted={isInverted}\n />\n </ImageContainer>\n )}\n <TitleLink\n {...link}\n isInverted={isInverted}\n ariaLabel={title}\n dataSheet=\"title\"\n >\n {title}\n </TitleLink>\n <Copy\n size=\"small\"\n isInverted={isInverted}\n data-sheet=\"desc\"\n innerHTML={description}\n />\n <ArticleContent isCentered={isCentered}>\n <Copy\n type=\"copy-b\"\n isInverted={isInverted}\n innerHTML={intro}\n data-sheet=\"intro\"\n />\n <Copy\n type=\"copy\"\n size=\"medium\"\n isInverted={isInverted}\n innerHTML={text}\n data-sheet=\"text\"\n />\n </ArticleContent>\n {action && (\n <Action>\n {action({ isInverted, isTextCentered: isCentered })}\n </Action>\n )}\n </View>\n );\n }\n);\n\nFeature.displayName = 'Feature';\n\nexport default Feature;\n","import React, { useMemo } from 'react';\n\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Feature, { FeatureProps } from 'components/blocks/Feature';\nimport { useEqualSheetHeight } from 'utils/useEqualSheetHeight';\nimport Grid from 'components/base/Grid';\n\nconst FeatureList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Center texts in every feature item */\n isCentered?: boolean;\n\n /** Array with feature item content */\n features?: Omit<FeatureProps, 'isInverted' | 'isCentered'>[];\n\n /** If not defined the component falls back to legacy logic: Uneven items = max 3 per row, even items = max 2 per row */\n columns?: 2 | 3;\n\n /** Section background */\n bgMode?: 'full' | 'splitted' | 'inverted';\n}> = ({ anchorId, features, bgMode, isCentered = false, columns }) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const featureCount = features?.length || 0;\n\n const isHalf = useMemo(() => {\n if (columns) {\n return columns === 2;\n }\n\n // legacy logic\n return features && features.length % 2 === 0;\n }, [features, columns]);\n\n const { sheetRefs: cardRefs } = useEqualSheetHeight<HTMLDivElement>({\n listLength: featureCount,\n identifiers: [\n '[data-sheet=\"title\"]',\n '[data-sheet=\"desc\"]',\n '[data-sheet=\"intro\"]',\n '[data-sheet=\"text\"]',\n ],\n responsive: {\n small: 1,\n medium: 1,\n semilarge: 2,\n large: isHalf ? 2 : 3,\n xlarge: isHalf ? 2 : 3,\n },\n });\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n >\n <Wrapper addWhitespace clampWidth=\"normal\">\n <Grid.Row\n halign={isHalf || featureCount <= 2 ? 'center' : 'left'}\n >\n {features?.map((feature, i) => (\n <Grid.Col\n semilarge={{ span: 6 / 12 }}\n large={{\n span: isHalf ? 5 / 12 : 4 / 12,\n }}\n key={i}\n >\n <Feature\n ref={cardRefs[i]}\n {...feature}\n isCentered={isCentered}\n isInverted={isInverted}\n />\n </Grid.Col>\n ))}\n </Grid.Row>\n </Wrapper>\n </Section>\n );\n};\n\nexport const FeatureListComponent = FeatureList;\nexport default withLibTheme(FeatureList);\n","import React, { FC } from 'react';\nimport styled from 'styled-components';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport { getGlobals as global } from 'utils/styles';\nimport Grid from 'components/base/Grid';\n\nconst StyledImage = styled(Image)`\n width: 100%;\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n overflow: hidden;\n\n picture > img {\n width: 100%;\n height: 100%;\n }\n`;\n\ntype ImageType = Omit<ImageProps, 'coverSpace'> & { isFull?: boolean };\n\nconst Gallery: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array of image settings */\n images?: Array<ImageType>;\n\n /** Section background */\n bgMode?: 'full' | 'splitted' | 'inverted';\n}> = ({ anchorId, bgMode, images }) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n >\n <Wrapper addWhitespace>\n <Grid.Row>\n {images?.map((img, i) => (\n <Grid.Col\n key={i}\n semilarge={{\n span: img.isFull ? 12 / 12 : 6 / 12,\n }}\n >\n <StyledImage\n {...img}\n coverSpace\n isInverted={isInverted}\n />\n </Grid.Col>\n ))}\n </Grid.Row>\n </Wrapper>\n </Section>\n );\n};\n\nexport const GalleryComponent = Gallery;\nexport default withLibTheme(Gallery);\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\n\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport { mq, spacings, getColors as color } from 'utils/styles';\nimport Actions from 'components/blocks/Actions';\nimport Pointer from 'components/buttons/Pointer';\nimport Link, { LinkProps } from 'components/typography/Link';\nimport Image from 'components/blocks/Image';\n\nconst StyledSection = styled(Section)<{ isCentered?: boolean }>`\n margin: 0 auto;\n\n @media ${mq.semilarge} {\n margin: ${({ isCentered }) => (isCentered ? '0 auto' : '0')};\n\n text-align: ${({ isCentered }) => (isCentered ? 'center' : 'left')};\n }\n`;\n\nconst ItemContainer = styled.div<{ isCentered?: boolean }>`\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n text-align: center;\n\n &:not(:last-child) {\n margin-bottom: ${spacings.spacer}px;\n }\n\n @media ${mq.semilarge} {\n justify-content: ${({ isCentered }) =>\n isCentered ? 'center' : 'flex-start'};\n }\n`;\n\nconst Items = styled.ul<{ isVisible?: boolean; isCentered?: boolean }>`\n display: ${({ isVisible }) => (isVisible ? 'flex' : 'block')};\n align-items: center;\n justify-content: ${({ isCentered }) =>\n isCentered ? 'center' : 'flex-start'};\n\n flex-wrap: wrap;\n padding: 0;\n margin: 0;\n margin-top: -${spacings.nudge * 2}px;\n margin-left: -${spacings.nudge * 2}px;\n\n list-style: none;\n\n @media ${mq.medium} {\n margin-top: -${spacings.spacer}px;\n margin-left: -${spacings.spacer}px;\n\n & > * {\n flex: 0 1 auto;\n }\n }\n`;\n\nconst Item = styled.li<{\n isVisible?: boolean;\n index: number;\n}>`\n padding-top: ${spacings.nudge * 2}px;\n padding-left: ${spacings.nudge * 2}px;\n\n display: ${({ index, isVisible }) =>\n isVisible || index < 6 ? 'block' : 'none'};\n\n & > img {\n width: 100%;\n }\n\n @media ${mq.medium} {\n padding-top: ${spacings.spacer}px;\n padding-left: ${spacings.spacer}px;\n\n & > img {\n width: auto;\n }\n }\n\n @media ${mq.semilarge} {\n display: ${({ index, isVisible }) =>\n isVisible || index < 8 ? 'block' : 'none'};\n }\n\n @media ${mq.large} {\n display: ${({ index, isVisible }) =>\n isVisible || index < 10 ? 'block' : 'none'};\n }\n`;\n\nconst ItemLink = styled(Link)<{ isInverted?: boolean }>`\n display: block;\n outline-color: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n`;\n\nconst ShowMore = styled.div<{ itemCount?: number; isCentered?: boolean }>`\n display: ${({ itemCount }) =>\n itemCount && itemCount > 6 ? 'block' : 'none'};\n\n background: none;\n border: none;\n text-align: ${({ isCentered }) => (isCentered ? 'center' : 'left')};\n\n @media ${mq.semilarge} {\n display: ${({ itemCount }) =>\n itemCount && itemCount > 8 ? 'block' : 'none'};\n }\n\n @media ${mq.large} {\n display: ${({ itemCount }) =>\n itemCount && itemCount > 10 ? 'block' : 'none'};\n }\n`;\n\nconst StyledActions = styled(Actions)<{ isCentered?: boolean }>`\n margin-top: ${spacings.spacer}px;\n\n @media ${mq.medium} {\n display: block;\n text-align: ${({ isCentered }) => isCentered && 'center'};\n }\n`;\n\nexport interface IconListItem {\n src: string;\n alt?: string;\n link?: LinkProps;\n ratio?: { h: number; w: number };\n showPlaceholder?: boolean;\n}\n\nconst IconList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array with icon items data */\n items?: Array<IconListItem>;\n\n /** Function to inject custom primary button */\n primaryAction?: (isInverted?: boolean) => React.ReactNode;\n\n /** Function to inject custom secondary button */\n secondaryAction?: (isInverted?: boolean) => React.ReactNode;\n\n /** Function to inject custom toggle button */\n toggle?: (props: {\n isInverted?: boolean;\n isToggled?: boolean;\n showLessText?: string;\n showMoreText?: string;\n clickHandler?: (ev?: React.SyntheticEvent<HTMLButtonElement>) => void;\n additionalProps?: Record<string, any>;\n }) => React.ReactNode;\n\n /** Custom text for toggle button in folded state */\n showMoreText?: string;\n\n /** Custom text for toggle button in expanded state */\n showLessText?: string;\n\n /** Center all icons and texts */\n isCentered?: boolean;\n\n /** Enable toggle feature */\n enableToggle?: boolean;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n}> = ({\n anchorId,\n items,\n isCentered = false,\n primaryAction,\n secondaryAction,\n toggle,\n showLessText = 'show less',\n showMoreText = 'show more',\n enableToggle,\n bgMode,\n}) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const [showMore, setShowMore] = useState<boolean>(!enableToggle);\n\n const handleToggleClick = () => {\n setShowMore((prev) => !prev);\n };\n\n return (\n <StyledSection\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n isCentered={isCentered}\n >\n <Wrapper clampWidth=\"normal\" addWhitespace>\n <ItemContainer isCentered={isCentered}>\n <Items\n isVisible={!showMore ? true : showMore === true}\n isCentered={isCentered}\n >\n {items?.map(\n ({ src, link, alt, ratio, showPlaceholder }, i) => (\n <Item isVisible={showMore} index={i} key={i}>\n <ItemLink\n {...link}\n isInverted={isInverted}\n ariaLabel={alt}\n >\n <Image\n data-img-loaded={false}\n isInverted={isInverted}\n small={src}\n alt={alt}\n ratios={\n ratio\n ? { small: ratio }\n : undefined\n }\n showPlaceholder={showPlaceholder}\n />\n </ItemLink>\n </Item>\n )\n )}\n </Items>\n </ItemContainer>\n {enableToggle && (\n <ShowMore\n isCentered={isCentered}\n itemCount={items?.length || 0}\n >\n {toggle ? (\n toggle({\n isInverted,\n showLessText,\n showMoreText,\n isToggled: showMore,\n clickHandler: handleToggleClick,\n additionalProps: { 'aria-pressed': showMore },\n })\n ) : (\n <Pointer.View\n as=\"button\"\n isInverted={isInverted}\n aria-pressed={showMore}\n onClick={() => handleToggleClick()}\n >\n <Pointer.Label>\n {showMore ? showLessText : showMoreText}\n </Pointer.Label>\n </Pointer.View>\n )}\n </ShowMore>\n )}\n\n {(primaryAction || secondaryAction) && (\n <StyledActions\n isCentered={isCentered}\n primary={primaryAction && primaryAction(isInverted)}\n secondary={\n secondaryAction && secondaryAction(isInverted)\n }\n />\n )}\n </Wrapper>\n </StyledSection>\n );\n};\n\nexport const IconListComponent = IconList;\nexport default withLibTheme(IconList);\n","import React, { useEffect, useState } from 'react';\nimport styled from 'styled-components';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport { copyStyle } from 'components/typography/Copy';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { getColors as color, spacings } from 'utils/styles';\nimport Link, { LinkProps } from 'components/typography/Link';\nimport ArrowDown from 'components/base/icons/ArrowDown';\nimport { useScrollTo } from 'utils/useScrollTo';\nimport { getFullNavbarHeights, getNavbarState } from './navigation/Navigation';\nimport { useMediaQueries } from 'utils/useMediaQuery';\n\nconst List = styled.ul<{ hasBg?: boolean; isInverted?: boolean }>`\n margin: 0;\n padding: 0;\n list-style: none;\n\n max-width: 880px;\n\n & > li + li {\n border-top: 1px solid\n ${({ theme, hasBg, isInverted }) =>\n hasBg && !isInverted\n ? color(theme).elementBg.light\n : color(theme).elementBg.medium};\n }\n\n & > li:first-child {\n border-top: 1px solid\n ${({ theme, hasBg, isInverted }) =>\n hasBg && !isInverted\n ? color(theme).elementBg.light\n : color(theme).elementBg.medium};\n }\n\n & > li:last-child {\n border-bottom: 1px solid\n ${({ theme, hasBg, isInverted }) =>\n hasBg && !isInverted\n ? color(theme).elementBg.light\n : color(theme).elementBg.medium};\n }\n`;\n\nconst ListItem = styled.li``;\n\nconst IndexLink = styled(Link)<{ isInverted?: boolean }>`\n display: inline-flex;\n align-items: center;\n max-width: 100%;\n padding: ${spacings.nudge}px 0;\n\n ${copyStyle('copy', 'big')}\n`;\n\nconst LinkLabel = styled.span`\n display: inline-block;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n`;\n\nconst IconWrapper = styled.span`\n display: inline-block;\n\n margin-left: ${spacings.nudge * 2}px;\n`;\n\nexport interface IndexItem {\n label?: string;\n link?: LinkProps;\n}\n\nconst IndexList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array of index item settings */\n items?: IndexItem[];\n\n /** Section background */\n bgMode?: 'inverted' | 'full';\n\n /** Function to inject custom icon decorator */\n customIcon?: (props: { isInverted?: boolean }) => React.ReactNode;\n\n /** Top offset for scroll to clicked item. Default: auto */\n scrollToOffset?: number;\n}> = ({ anchorId, items, bgMode, customIcon, scrollToOffset }) => {\n const { colors, theme } = useLibTheme();\n const setTargetPos = useScrollTo(500);\n const { semilarge } = useMediaQueries();\n\n const [topOffset, setTopOffset] = useState<number>(0);\n\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n\n const handleLinkClick = (ev: React.SyntheticEvent<HTMLAnchorElement>) => {\n if (!ev?.currentTarget) return;\n\n ev.preventDefault();\n const href = ev.currentTarget.getAttribute('href') as string;\n\n if (!href) return;\n\n const target = document.getElementById(href.split('#')?.[1] || href);\n if (target) {\n setTargetPos(\n target.getBoundingClientRect().top +\n window.scrollY -\n (scrollToOffset || topOffset)\n );\n }\n\n if (window) {\n const url = new URL(window.location as any);\n url.hash = href.split('#')[1];\n window.history.pushState({}, '', url as any);\n }\n };\n\n useEffect(() => {\n if (scrollToOffset) return;\n\n // if header is defined get navbar height and generate top offset\n const header = document.querySelector('header[data-navbar-ident]');\n const navbarIdent = header?.getAttribute('data-navbar-ident');\n if (!navbarIdent) return;\n\n const { isStickable } = getNavbarState(navbarIdent);\n if (!isStickable) return;\n\n // calculate offset from navbar height\n const navbarHeights = getFullNavbarHeights(theme, navbarIdent);\n\n if (semilarge) setTopOffset(navbarHeights.small[1] + spacings.spacer);\n else setTopOffset(navbarHeights.small[0] + spacings.spacer);\n }, [theme, semilarge, scrollToOffset]);\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : hasBg\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper addWhitespace>\n <List hasBg={hasBg} isInverted={isInverted}>\n {items?.map((item, i) => (\n <ListItem key={i}>\n <IndexLink\n {...item.link}\n isInverted={isInverted}\n onClick={handleLinkClick}\n >\n <LinkLabel>{item.label}</LinkLabel>\n <IconWrapper>\n {customIcon ? (\n customIcon({ isInverted })\n ) : (\n <ArrowDown />\n )}\n </IconWrapper>\n </IndexLink>\n </ListItem>\n ))}\n </List>\n </Wrapper>\n </Section>\n );\n};\n\nexport const IndexListComponent = IndexList;\nexport default withLibTheme(IndexList);\n","import React from 'react';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport IntroBlock, { IntroActionProps } from 'components/blocks/IntroBlock';\nimport { HeadlineTag } from 'components/typography/Heading';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { ImageProps } from 'components/blocks/Image';\nimport { TitleSize } from 'components/blocks/Title';\n\nconst Intro: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Main title text */\n title?: string;\n\n /** Main title HTML tag type (h2, h3, h4...) */\n titleAs?: HeadlineTag;\n\n /** Main title style */\n titleSize?: TitleSize;\n\n /** Superior title that stands above main title */\n superTitle?: string;\n\n /** Superior title HTML tag type (h3, h4 ...) */\n superTitleAs?: HeadlineTag;\n\n /** Intro text under headline (richtext) */\n abstract?: string;\n\n /** Main text (richtext) */\n text?: string;\n\n /** Images for different screen sizes. coverSpace defaults to true */\n image?: ImageProps;\n\n /** Function to inject custom primary button */\n primaryAction?: (props: IntroActionProps) => React.ReactNode;\n\n /** Function to inject custom secondary button */\n secondaryAction?: (props: IntroActionProps) => React.ReactNode;\n\n /** Center text and actions */\n isCentered?: boolean;\n\n /** Allow reduced section spacing to next section */\n isStackable?: boolean;\n\n /** Clamp title to a width of max 8 grid cols. */\n clampTitle?: boolean;\n\n /** Section background */\n bgMode?: 'inverted' | 'full' | 'splitted';\n className?: string;\n}> = ({\n anchorId,\n title,\n titleAs,\n titleSize = 'heading-2',\n superTitle,\n superTitleAs,\n abstract,\n text,\n primaryAction,\n secondaryAction,\n isCentered = false,\n isStackable = false,\n bgMode,\n image,\n}) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n\n // set default ratio settings\n if (image && !image?.ratios) {\n image.ratios = {\n small: { h: 1, w: 1 },\n };\n }\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n isStackable={isStackable}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n >\n <Wrapper clampWidth=\"normal\" addWhitespace>\n <IntroBlock\n title={title}\n titleAs={titleAs}\n titleSize={titleSize}\n superTitle={superTitle}\n superTitleAs={superTitleAs}\n abstract={abstract}\n text={text}\n colorMode={isInverted ? 'inverted' : 'default'}\n secondaryAction={secondaryAction}\n primaryAction={primaryAction}\n isCentered={isCentered}\n image={image}\n clampTitle\n clampAbstract\n clampText\n />\n </Wrapper>\n </Section>\n );\n};\n\nexport const IntroComponent = Intro;\nexport default withLibTheme(Intro);\n","import Copy from 'components/typography/Copy';\nimport Link, { LinkProps } from 'components/typography/Link';\nimport React from 'react';\nimport styled from 'styled-components';\nimport { getColors as color, mq, spacings } from 'utils/styles';\n\nconst View = styled(Link)<{ isInverted?: boolean; hasIcon?: boolean }>`\n display: -ms-grid;\n display: grid;\n\n -ms-grid-columns: ${({ hasIcon }) => (hasIcon ? 'min-content 1fr' : '1fr')};\n grid-template-columns: ${({ hasIcon }) =>\n hasIcon ? 'min-content 1fr' : '1fr'};\n -ms-grid-rows: min-content 1fr;\n grid-auto-rows: min-content 1fr;\n\n cursor: pointer;\n text-decoration: none;\n color: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n\n outline-color: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n\n transition: all ease-in-out 0.2s;\n\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n color: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.invertedHover\n : color(theme).primary.hover};\n }\n }\n`;\n\nconst MainLabel = styled.div<{ hasIcon?: boolean }>`\n display: flex;\n align-items: center;\n margin-left: ${({ hasIcon }) => hasIcon && `${spacings.nudge * 3}px`};\n`;\n\nconst Text = styled(Copy)<{ hasIcon?: boolean }>`\n margin-top: ${({ hasIcon }) =>\n hasIcon ? spacings.nudge : spacings.nudge * 2}px;\n margin-left: ${({ hasIcon }) => hasIcon && `${spacings.nudge * 3}px`};\n`;\n\nconst Icon = styled.div`\n display: flex;\n align-items: center;\n\n & > * {\n height: 48px;\n width: 48px;\n }\n`;\n\nconst Title = styled(Copy)`\n display: inline-block;\n`;\n\nconst TitleIcon = styled.span`\n display: inline-block;\n margin-left: ${spacings.nudge * 2}px;\n\n @media ${mq.medium} {\n margin-left: ${spacings.nudge * 3}px;\n }\n`;\n\nexport interface NavBlockProps {\n /** Invert colors for use on dark backgrounds */\n isInverted?: boolean;\n\n /** Navigation title */\n title?: string;\n\n /** Navigation text (richtext) */\n text?: string;\n\n /** Link settings */\n link?: LinkProps;\n\n /** Function to inject custom icon node */\n customIcon?: (props: { isInverted?: boolean }) => React.ReactNode;\n\n /** Function to inject custom title icon decorator node */\n customTitleIcon?: (props: { isInverted?: boolean }) => React.ReactNode;\n\n className?: string;\n}\n\nconst NavBlock: React.FC<NavBlockProps> = ({\n isInverted = false,\n title,\n text,\n link,\n customIcon,\n customTitleIcon,\n className,\n}) => {\n return (\n <View\n {...link}\n isInverted={isInverted}\n hasIcon={!!customIcon}\n className={className}\n >\n {customIcon ? <Icon>{customIcon({})}</Icon> : ''}\n <MainLabel hasIcon={!!customIcon}>\n {title && (\n <Title textColor=\"inherit\" size=\"medium\" type=\"copy-b\">\n {title}\n {title && customTitleIcon && (\n <TitleIcon>\n {customTitleIcon({ isInverted })}\n </TitleIcon>\n )}\n </Title>\n )}\n </MainLabel>\n {text && (\n <>\n <span />\n <Text\n size=\"small\"\n isInverted={isInverted}\n innerHTML={text}\n hasIcon={!!customIcon}\n />\n </>\n )}\n </View>\n );\n};\n\nexport default NavBlock;\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport NavBlock, { NavBlockProps } from 'components/blocks/NavBlock';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { mq, spacings } from 'utils/styles';\n\nconst List = styled.ul`\n margin: 0;\n margin-top: -${spacings.spacer}px;\n margin-left: -${spacings.spacer}px;\n padding: 0;\n list-style: none;\n\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n flex-wrap: wrap;\n\n @media ${mq.medium} {\n margin-top: -${spacings.spacer * 2}px;\n }\n`;\n\nconst ListItem = styled.li`\n padding-top: ${spacings.spacer}px;\n padding-left: ${spacings.spacer}px;\n flex: 1 0 100%;\n\n @media ${mq.medium} {\n flex: 0 0 50%;\n max-width: 50%;\n padding-top: ${spacings.spacer * 2}px;\n }\n\n @media ${mq.large} {\n flex: 0 0 33.33%;\n max-width: 33.33%;\n }\n\n // print version\n @media print {\n flex: 0 0 50%;\n max-width: 50%;\n padding-top: ${spacings.spacer * 2}px;\n }\n`;\n\nexport type NavItem = Omit<\n NavBlockProps,\n 'isInverted' | 'customTitleIcon' | 'className'\n>;\n\nconst NavList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array of navigation item settings */\n items?: NavItem[];\n\n /** Section backgrounds */\n bgMode?: 'full' | 'inverted';\n\n /** Function to inject custom title decorator icon */\n customTitleIcon?: (props: { isInverted?: boolean }) => React.ReactNode;\n}> = ({ anchorId, items, bgMode, customTitleIcon }) => {\n const { colors } = useLibTheme();\n\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : hasBg\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper addWhitespace>\n <List>\n {items?.map((item, i) => (\n <ListItem key={i}>\n <NavBlock\n {...item}\n isInverted={isInverted}\n customTitleIcon={customTitleIcon}\n />\n </ListItem>\n ))}\n </List>\n </Wrapper>\n </Section>\n );\n};\n\nexport const NavListComponent = NavList;\nexport default withLibTheme(NavList);\n","import Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Callout from 'components/typography/Callout';\nimport React, { forwardRef, useContext } from 'react';\nimport styled, { ThemeContext } from 'styled-components';\nimport {\n getColors as color,\n spacings,\n getGlobals as global,\n} from 'utils/styles';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Copy from 'components/typography/Copy';\nimport { useEqualSheetHeight } from 'utils/useEqualSheetHeight';\nimport Image, { ImageProps } from 'components/blocks/Image';\n\nconst CARD_MIN_WIDTH = 240;\nconst CARD_MAX_WIDTH = 440;\nconst MEDIA_QUERIES = {\n medium: '(min-width: 36.5em)',\n semilarge: '(min-width: 54.75em)',\n large: '(min-width: 73em)',\n xlarge: '(min-width: 90em)',\n};\n\nconst View = styled.li<{ isCentered?: boolean }>`\n text-align: ${({ isCentered }) => (isCentered ? 'center' : 'left')};\n\n & > * {\n margin: ${({ isCentered }) => (isCentered ? '0 auto' : 0)};\n margin-right: auto;\n }\n\n & > * + * {\n margin-top: ${spacings.nudge * 3}px;\n }\n`;\n\nconst ImageContainer = styled.div<{ isCentered?: boolean }>`\n display: flex;\n justify-content: ${({ isCentered }) =>\n isCentered ? 'center' : 'flex-start'};\n margin-bottom: ${spacings.nudge * 3}px;\n max-width: 100%;\n`;\n\nconst StyledImage = styled(Image)`\n overflow: hidden;\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n`;\n\nconst Label = styled(Copy)``;\n\nconst Text = styled(Copy)``;\n\nexport interface NumberListCardProps {\n image?: ImageProps;\n digit?: string;\n label?: string;\n text?: string;\n}\n\nconst NumberListCard = forwardRef<\n HTMLLIElement,\n NumberListCardProps & {\n isInverted?: boolean;\n isCentered?: boolean;\n className?: string;\n }\n>(({ image, label, digit, isInverted, isCentered, text, className }, ref) => {\n const { colors } = useLibTheme();\n\n return (\n <View ref={ref} isCentered={isCentered} className={className}>\n {image?.small && (\n <ImageContainer isCentered={isCentered}>\n <StyledImage\n isInverted={isInverted}\n small={image.small}\n medium={image.medium}\n semilarge={image.semilarge}\n large={image.large}\n xlarge={image.xlarge}\n alt={image.alt}\n coverSpace={image.coverSpace}\n ratios={image.ratios}\n showPlaceholder={image.showPlaceholder}\n />\n </ImageContainer>\n )}\n <Callout\n data-sheet=\"digit\"\n size=\"mediumBold\"\n renderAs=\"div\"\n isInverted={isInverted}\n >\n {digit}\n </Callout>\n <Label\n type=\"copy-b\"\n size=\"big\"\n textColor={\n isInverted\n ? colors.primary.inverted\n : colors.primary.default\n }\n data-sheet=\"label\"\n >\n {label}\n </Label>\n {text && (\n <Text\n type=\"copy\"\n size=\"medium\"\n isInverted={isInverted}\n data-sheet=\"text\"\n innerHTML={text}\n />\n )}\n </View>\n );\n});\n\nNumberListCard.displayName = 'NumberListCard';\n\nconst CardList = styled.ul`\n display: flex;\n flex-direction: column;\n flex-wrap: wrap;\n justify-content: flex-start;\n align-items: center;\n\n list-style: none;\n padding: 0;\n margin: 0;\n margin-left: -${spacings.spacer}px;\n margin-top: -${spacings.nudge * 6}px;\n\n & > * {\n flex: 0 0 100%;\n width: 100%;\n min-width: ${CARD_MIN_WIDTH + spacings.spacer}px;\n max-width: ${CARD_MAX_WIDTH + spacings.spacer}px;\n padding-left: ${spacings.spacer}px;\n padding-top: ${spacings.nudge * 6}px;\n }\n\n @media ${MEDIA_QUERIES.medium} {\n flex-direction: row;\n justify-content: center;\n align-items: flex-start;\n\n margin-top: -${spacings.nudge * 10}px;\n\n & > * {\n flex: 0 0 50%;\n padding-top: ${spacings.nudge * 10}px;\n }\n\n & > li:first-child:nth-last-child(1) {\n /* -or- li:only-child { */\n flex: 0 0 100%;\n }\n }\n\n @media ${MEDIA_QUERIES.semilarge} {\n & > * {\n flex: 0 0 33.33%;\n }\n\n /* one item */\n & > li:first-child:nth-last-child(1) {\n /* -or- li:only-child { */\n flex: 0 0 100%;\n }\n\n /* two items */\n & > li:first-child:nth-last-child(2),\n & > li:first-child:nth-last-child(2) ~ li {\n flex: 0 0 50%;\n }\n }\n\n @media ${MEDIA_QUERIES.large} {\n & > * {\n flex: 0 0 25%;\n }\n\n /* one item */\n & > li:first-child:nth-last-child(1) {\n /* -or- li:only-child { */\n flex: 0 0 100%;\n }\n\n /* two items */\n & > li:first-child:nth-last-child(2),\n & > li:first-child:nth-last-child(2) ~ li {\n flex: 0 0 50%;\n }\n\n /* three items */\n & > li:first-child:nth-last-child(3),\n & > li:first-child:nth-last-child(3) ~ li {\n flex: 0 0 33.33%;\n }\n }\n`;\n\nexport interface NumberListItem {\n image?: ImageProps;\n digit?: string;\n label?: string;\n text?: string;\n}\n\nconst NumberList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n items?: NumberListItem[];\n\n /** Center texts in every card item */\n isCentered?: boolean;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n}> = ({ anchorId, items, bgMode, isCentered = true }) => {\n const theme = useContext(ThemeContext);\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n\n const { sheetRefs: numbersRef } = useEqualSheetHeight<HTMLDivElement>({\n listLength: items?.length || 0,\n identifiers: [\n '[data-sheet=\"digit\"]',\n '[data-sheet=\"label\"]',\n '[data-sheet=\"text\"]',\n ],\n responsive: {\n small: 1,\n medium: 2,\n semilarge: 3,\n large: 4,\n xlarge: 4,\n },\n customMediaQueries: MEDIA_QUERIES,\n });\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? color(theme).sectionBg.dark\n : hasBg\n ? color(theme).sectionBg.medium\n : color(theme).sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper addWhitespace>\n <CardList>\n {items?.map((item, i) => {\n return (\n <NumberListCard\n key={i}\n ref={numbersRef[i] as any}\n {...item}\n isInverted={isInverted}\n isCentered={isCentered}\n />\n );\n })}\n </CardList>\n </Wrapper>\n </Section>\n );\n};\n\nexport const NumberListComponent = NumberList;\nexport default withLibTheme(NumberList);\n","import React, { FC, useEffect, useRef, useState } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport { spacings } from 'utils/styles';\n\nconst View = styled.section`\n position: relative;\n width: 100vw;\n z-index: -1;\n`;\n\nconst Parallax = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n margin-left: 0;\n width: 100%;\n`;\n\nconst Content = styled.div<{\n contentWidth?: number;\n hAlign?: 'left' | 'center' | 'right';\n}>`\n margin-left: ${({ hAlign }) =>\n (hAlign === 'right' || hAlign === 'center') && 'auto'};\n margin-right: ${({ hAlign }) =>\n (hAlign === 'left' || hAlign === 'center') && 'auto'};\n\n width: ${({ contentWidth }) =>\n contentWidth\n ? contentWidth === -1\n ? 'auto'\n : contentWidth * 100 + '%'\n : undefined};\n\n max-width: ${spacings.wrapperLarge}px;\n overflow: hidden;\n\n & > * {\n width: ${({ contentWidth }) => contentWidth !== -1 && '100%'};\n }\n`;\n\nconst StyledImage = styled(Image)<{\n coverSpace?: boolean;\n hAlign?: 'left' | 'center' | 'right';\n}>`\n max-width: ${({ coverSpace }) => !coverSpace && 'none'};\n float: ${({ hAlign }) =>\n hAlign === 'left' || hAlign === 'right' ? hAlign : undefined};\n ${({ coverSpace, hAlign }) =>\n !coverSpace &&\n hAlign === 'center' &&\n css`\n transform: translateX(-50%);\n margin-left: 50%;\n `}\n`;\n\nexport type ParallaxWidth = '1/4' | 'half' | '3/4' | 'full' | 'auto';\n\nconst ParallaxBackground: FC<{\n image?: ImageProps;\n hAlign?: 'left' | 'center' | 'right';\n contentWidth?: ParallaxWidth | number;\n moveRatio?: number;\n direction?: 'down' | 'up';\n className?: string;\n}> = ({\n image,\n hAlign = 'left',\n contentWidth = 1,\n moveRatio = 0.2,\n direction = 'up',\n className,\n}) => {\n const [isLoaded, setIsLoaded] = useState<boolean>(false);\n const [yTransform, setYTransform] = useState<number>(0);\n // const cRef = useRef<HTMLDivElement>(null);\n const [cRef, setContainerRef] = useState<HTMLElement | null>(null);\n const parallaxRef = useRef<HTMLDivElement>(null);\n\n let width = 1;\n if (typeof contentWidth === 'string') {\n switch (contentWidth) {\n case '1/4': {\n width = 0.25;\n break;\n }\n\n case 'half': {\n width = 0.5;\n break;\n }\n\n case '3/4': {\n width = 0.75;\n break;\n }\n\n case 'auto': {\n width = -1;\n break;\n }\n\n default:\n case 'full': {\n width = 1;\n break;\n }\n }\n } else if (!isNaN(contentWidth)) {\n width = contentWidth;\n }\n\n useEffect(() => {\n setIsLoaded(true);\n }, []);\n\n useEffect(() => {\n const prevEl = cRef?.previousElementSibling;\n if (prevEl) {\n const bgIdent = (prevEl as HTMLElement).dataset.bgIdent;\n const stackIdent = (prevEl as HTMLElement).dataset.stackIdent;\n\n if (bgIdent) {\n // set data background from previous element\n cRef?.setAttribute('data-bg-ident', bgIdent);\n }\n\n if (stackIdent) {\n // set data stack flag from previous element\n cRef?.setAttribute('data-stack-ident', stackIdent);\n }\n }\n }, [cRef]);\n\n useEffect(() => {\n const handleScroll = () => {\n if (!cRef) return;\n\n const containerPos = cRef.getBoundingClientRect().top;\n const ratio = containerPos * moveRatio;\n const offset = ratio * (direction === 'up' ? 1 : -1);\n\n setYTransform(offset);\n };\n\n handleScroll();\n window.addEventListener('scroll', handleScroll);\n\n return () => {\n window.removeEventListener('scroll', handleScroll);\n };\n }, [cRef, direction, moveRatio]);\n\n return (\n <>\n {isLoaded && (\n <View ref={setContainerRef} data-bg-ident=\"transparent\">\n <Parallax\n ref={parallaxRef}\n style={{\n transform: `translate3d(0px, ${yTransform}px, 0px)`,\n }}\n className={className}\n >\n <Content hAlign={hAlign} contentWidth={width}>\n {image && (\n <StyledImage\n hAlign={hAlign}\n coverSpace={width !== -1}\n {...image}\n />\n )}\n </Content>\n </Parallax>\n </View>\n )}\n </>\n );\n};\n\nexport default ParallaxBackground;\n","import React, { FC } from 'react';\nimport styled from 'styled-components';\n\nimport Section from 'components/base/Section';\nimport Wrapper, { wrapperWhitespace } from 'components/base/Wrapper';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport { spacings, getGlobals as global } from 'utils/styles';\nimport IntroBlock, { IntroActionProps } from 'components/blocks/IntroBlock';\nimport { HeadlineTag } from 'components/typography/Heading';\nimport { withLibTheme } from 'utils/LibThemeProvider';\n\nconst Container = styled.figure<{\n hasContent?: boolean;\n verticallyCentered?: boolean;\n}>`\n position: relative;\n width: 100%;\n max-height: 550px;\n padding: 0;\n margin: 0;\n\n &:after {\n content: ${({ hasContent }) => hasContent && '\"\"'};\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n background: ${({ theme, verticallyCentered }) =>\n verticallyCentered\n ? global(theme).sections.imageTextGradientCentered\n : global(theme).sections.imageTextGradient};\n pointer-events: none;\n z-index: 0;\n }\n`;\n\nconst StyledImage = styled(Image)`\n img {\n height: 550px;\n }\n`;\n\nconst Intro = styled(IntroBlock)<{\n verticallyCentered?: boolean;\n horizontallyCentered?: boolean;\n}>`\n position: absolute;\n bottom: ${({ verticallyCentered }) => !verticallyCentered && '0'};\n top: ${({ verticallyCentered }) => verticallyCentered && '50%'};\n left: 50%;\n right: 0;\n max-height: 100%;\n max-width: ${spacings.wrapper}px;\n\n padding: ${wrapperWhitespace + spacings.nudge * 2}px;\n z-index: 1;\n\n transform: ${({ verticallyCentered }) =>\n verticallyCentered ? 'translate(-50%, -50%)' : 'translateX(-50%)'};\n`;\n\nconst Poster: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Clamp width of poster image to content wrapper or large wrapper */\n width?: 'full' | 'content';\n\n /** The poster image settings */\n image: Omit<ImageProps, 'coverSpace' | 'ratios'>;\n\n /** Main title text */\n title?: string;\n\n /** Main title HTML tag type (h2, h3, h4...) */\n titleAs?: HeadlineTag;\n\n /** Superior title that stands above main title */\n superTitle?: string;\n\n /** Superior title HTML tag type (h3, h4 ...) */\n superTitleAs?: HeadlineTag;\n\n /** Text underneath the title (richtext) */\n text?: string;\n\n /** Function to inject custom primary button */\n primaryAction?: (props: IntroActionProps) => React.ReactNode;\n\n /** Function to inject custom secondary button */\n secondaryAction?: (props: IntroActionProps) => React.ReactNode;\n\n /** Align text and actions vertically */\n verticallyCentered?: boolean;\n\n /** Align text and actions horizontally */\n horizontallyCentered?: boolean;\n}> = ({\n anchorId,\n width = 'content',\n title,\n titleAs,\n superTitle,\n superTitleAs,\n text,\n primaryAction,\n secondaryAction,\n image,\n verticallyCentered,\n horizontallyCentered,\n}) => {\n const isCentered = verticallyCentered && horizontallyCentered;\n\n return (\n <Section anchorId={anchorId} bgColor=\"image\" bgMode=\"full\">\n <Wrapper clampWidth={width === 'content' ? 'normal' : 'large'}>\n <Container\n hasContent={!!title || !!text}\n verticallyCentered={verticallyCentered}\n >\n <StyledImage {...image} coverSpace ratios={undefined} />\n {title && (\n <Intro\n verticallyCentered={verticallyCentered}\n horizontallyCentered={horizontallyCentered}\n renderAs=\"figcaption\"\n colorMode=\"onImage\"\n title={title}\n titleAs={titleAs}\n superTitle={superTitle}\n superTitleAs={superTitleAs}\n text={text}\n secondaryAction={secondaryAction}\n primaryAction={primaryAction}\n clampTitle\n maxTitleLines={3}\n clampText\n maxTextLines={4}\n isCentered={horizontallyCentered || isCentered}\n />\n )}\n </Container>\n </Wrapper>\n </Section>\n );\n};\n\nexport const PosterComponent = Poster;\nexport default withLibTheme(Poster);\n","import React from 'react';\nimport styled from 'styled-components';\nimport { getColors as color, mq, spacings } from 'utils/styles';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Copy from 'components/typography/Copy';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\n\nconst ItemList = styled.ul`\n margin: 0;\n padding: 0;\n list-style: none;\n\n & > * + * {\n margin-top: ${spacings.nudge}px;\n }\n`;\n\nconst ItemBlock = styled.li<{ hasBg?: boolean }>`\n max-width: 100%;\n padding: ${spacings.nudge * 2}px;\n\n background: ${({ theme, hasBg }) =>\n hasBg ? color(theme).elementBg.light : color(theme).elementBg.medium};\n\n & > * + * {\n margin-top: ${spacings.nudge * 2}px;\n }\n\n @media ${mq.semilarge} {\n padding: ${spacings.nudge * 3}px;\n }\n`;\n\nconst ListHead = styled.div`\n display: flex;\n justify-content: space-between;\n\n & > * + * {\n margin-left: ${spacings.nudge * 2}px;\n }\n`;\n\nconst Title = styled(Copy)`\n max-width: 880px;\n`;\n\nconst Price = styled(Copy)`\n white-space: nowrap;\n`;\n\nconst Description = styled(Copy)`\n max-width: 880px;\n`;\n\nexport interface PriceItems {\n /** Title of the price item */\n title?: string;\n /** Description text of price item (richtext) */\n text?: string;\n /** The price value (Currency not included) */\n price?: string;\n}\n\nexport const PriceBlock: React.FC<PriceItems & { hasBg?: boolean }> = ({\n text,\n price,\n hasBg = false,\n title,\n}) => {\n return (\n <ItemBlock hasBg={hasBg}>\n <ListHead>\n {title && <Title type=\"copy-b\">{title}</Title>}\n {price && <Price type=\"copy-b\">{price}</Price>}\n </ListHead>\n {text && <Description type=\"copy\" innerHTML={text} />}\n </ItemBlock>\n );\n};\n\nconst PriceList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array with price items */\n items?: PriceItems[];\n\n /** Section background */\n bgMode?: 'inverted' | 'full';\n}> = ({ anchorId, bgMode, items }) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const hasBack = isInverted || bgMode === 'full';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode === 'full'\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper addWhitespace>\n <ItemList>\n {items?.map((item, i) => (\n <PriceBlock key={i} {...item} hasBg={hasBack} />\n ))}\n </ItemList>\n </Wrapper>\n </Section>\n );\n};\n\nexport const PriceListComponent = PriceList;\nexport default withLibTheme(PriceList);\n","import {\n spacings,\n getColors as color,\n getGlobals as global,\n} from 'utils/styles';\nimport React, { forwardRef } from 'react';\nimport styled from 'styled-components';\nimport Copy from 'components/typography/Copy';\nimport Actions from './Actions';\nimport Callout from 'components/typography/Callout';\n\nconst View = styled.div<{\n isInverted?: boolean;\n isCentered?: boolean;\n hasBg?: boolean;\n isHighlighted?: boolean;\n}>`\n padding: ${spacings.spacer}px;\n\n border: 1px solid transparent;\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n\n background: ${({ theme, hasBg, isInverted, isHighlighted }) =>\n isInverted\n ? isHighlighted\n ? color(theme).primary.inverted\n : color(theme).elementBg.medium\n : isHighlighted\n ? color(theme).primary.default\n : hasBg\n ? color(theme).elementBg.light\n : color(theme).elementBg.medium};\n\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n text-align: ${({ isCentered }) => (isCentered ? 'center' : 'left')};\n\n & > * + * {\n margin-top: ${spacings.nudge * 3}px;\n }\n`;\n\nconst StyledActions = styled(Actions)`\n display: block;\n margin-top: auto;\n padding-top: ${spacings.spacer}px;\n text-align: center;\n`;\n\nexport interface PriceTagProps {\n title?: string;\n superTitle?: string;\n text?: string;\n action?: (props: {\n isInverted?: boolean;\n isHighlighted?: boolean;\n }) => React.ReactNode;\n isInverted?: boolean;\n isCentered?: boolean;\n hasBackground?: boolean;\n isHighlighted?: boolean;\n}\n\nconst PriceTag = forwardRef<\n HTMLDivElement,\n PriceTagProps & { className?: string }\n>(\n (\n {\n superTitle,\n title,\n text,\n action,\n isInverted,\n isCentered,\n isHighlighted,\n hasBackground,\n className,\n },\n ref\n ) => {\n const inverted = isHighlighted ? !isInverted : false;\n\n return (\n <View\n ref={ref}\n isInverted={isInverted}\n isCentered={isCentered}\n isHighlighted={isHighlighted}\n hasBg={hasBackground}\n className={className}\n >\n {superTitle && (\n <Copy\n type=\"copy-b\"\n size=\"big\"\n isInverted={inverted}\n innerHTML={superTitle}\n data-sheet=\"superTitle\"\n />\n )}\n {title && (\n <Callout\n renderAs=\"div\"\n size=\"big\"\n isInverted={inverted}\n innerHTML={title}\n data-sheet=\"title\"\n />\n )}\n {text && (\n <Copy\n size=\"medium\"\n isInverted={inverted}\n innerHTML={text}\n data-sheet=\"desc\"\n />\n )}\n <StyledActions\n mode=\"cover\"\n primary={\n action &&\n action({\n isInverted: inverted,\n isHighlighted: isHighlighted,\n })\n }\n />\n </View>\n );\n }\n);\n\nPriceTag.displayName = 'PriceTag';\n\nexport default PriceTag;\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport PriceTag, { PriceTagProps } from 'components/blocks/PriceTag';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { useEqualSheetHeight } from 'utils/useEqualSheetHeight';\nimport { gridSettings } from 'components/base/Grid';\nimport { mq } from 'utils/styles';\n\nconst Tag = styled(PriceTag)`\n min-height: 500px;\n`;\n\nconst Items = styled.div`\n display: flex;\n justify-content: center;\n flex-wrap: wrap;\n\n margin-top: -${gridSettings.gutter}px;\n margin-left: -${gridSettings.gutter}px;\n\n & > * {\n flex: 1 1 25%;\n min-width: 286px;\n max-width: 320px;\n margin-top: ${gridSettings.gutter}px;\n margin-left: ${gridSettings.gutter}px;\n }\n\n @media ${mq.large} {\n & > * {\n max-width: 286px;\n }\n }\n`;\n\nconst PriceTable: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n /** Array of PriceTag card items */\n items: Array<Omit<PriceTagProps, 'isInverted'>>;\n /** Center text inside card items */\n isCentered?: boolean;\n /** Section background */\n bgMode?: 'full' | 'inverted';\n}> = ({ anchorId, items, isCentered, bgMode }) => {\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n const priceTagCount = items?.length || 0;\n\n const { colors } = useLibTheme();\n\n const { sheetRefs: cardRefs } = useEqualSheetHeight<HTMLDivElement>({\n listLength: priceTagCount,\n identifiers: [\n '[data-sheet=\"superTitle\"]',\n '[data-sheet=\"title\"]',\n '[data-sheet=\"desc\"]',\n ],\n responsive: {\n small: 1,\n medium: 1,\n semilarge: 2,\n large: 3,\n xlarge: 3,\n },\n });\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : hasBg\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n >\n <Wrapper addWhitespace>\n <Items>\n {items?.map((item, i) => (\n <Tag\n key={i}\n ref={cardRefs[i]}\n {...item}\n isInverted={isInverted}\n isCentered={isCentered}\n hasBackground={hasBg}\n />\n ))}\n </Items>\n </Wrapper>\n </Section>\n );\n};\n\nexport const PriceTableComponent = PriceTable;\nexport default withLibTheme(PriceTable);\n","import React, { FC } from 'react';\nimport styled from 'styled-components';\n\nimport { mq, spacings } from 'utils/styles';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Callout from 'components/typography/Callout';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Copy from 'components/typography/Copy';\n\nconst Content = styled.figure`\n margin: 0;\n padding: 0;\n\n & > * + * {\n margin-top: ${spacings.spacer}px;\n }\n\n @media ${mq.medium} {\n max-width: 960px;\n margin: 0 auto;\n }\n`;\n\nconst Text = styled(Callout)`\n text-align: center;\n margin-left: 0;\n margin-right: 0;\n padding: 0;\n`;\n\nconst Source = styled(Copy)`\n text-align: center;\n margin-left: 0;\n margin-right: 0;\n padding: 0;\n`;\n\nconst Quote: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Text of the blockquote (richtext) */\n text?: string;\n\n /** Source of the quote e.g. author (richtext) */\n source?: string;\n\n /** URL for additional cite informations */\n citeUrl?: string;\n\n /** Section backgrounds */\n bgMode?: 'full' | 'inverted';\n}> = ({ anchorId, bgMode, text, source, citeUrl }) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode === 'full'\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper clampWidth=\"normal\" addWhitespace>\n <Content>\n {text && (\n <Text\n size=\"small\"\n renderAs=\"blockquote\"\n isInverted={isInverted}\n innerHTML={text}\n {...{ cite: citeUrl }}\n />\n )}\n {source && (\n <Source\n isInverted={isInverted}\n renderAs=\"figcaption\"\n innerHTML={source}\n />\n )}\n </Content>\n </Wrapper>\n </Section>\n );\n};\n\nexport const QuoteComponent = Quote;\nexport default withLibTheme(Quote);\n","import React, { FC, useContext } from 'react';\nimport styled, { ThemeContext } from 'styled-components';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport Wrapper from 'components/base/Wrapper';\nimport { getColors } from 'utils/styles';\nimport { withLibTheme } from 'utils/LibThemeProvider';\n\nconst ImageWrapper = styled(Wrapper)<{ hAlign?: 'left' | 'center' | 'right' }>`\n display: flex;\n justify-content: ${({ hAlign }) => {\n switch (hAlign) {\n case 'center':\n return 'center';\n case 'right':\n return 'flex-end';\n default:\n return 'flex-start';\n }\n }};\n`;\n\nconst SimpleImage: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Image settings */\n image?: ImageProps;\n\n /** Horizontal alignment of the image */\n hAlign?: 'left' | 'center' | 'right';\n\n /** Allow reduced section spacing to next section */\n isStackable?: boolean;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n}> = ({ anchorId, image, hAlign = 'left', bgMode, isStackable }) => {\n const theme = useContext(ThemeContext);\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n isStackable={isStackable}\n bgColor={\n isInverted\n ? getColors(theme).sectionBg.dark\n : hasBg\n ? getColors(theme).sectionBg.medium\n : getColors(theme).sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n >\n <ImageWrapper hAlign={hAlign}>\n {image && <Image {...image} />}\n </ImageWrapper>\n </Section>\n );\n};\n\nexport const SimpleImageComponent = SimpleImage;\nexport default withLibTheme(SimpleImage);\n","import React from 'react';\nimport styled from 'styled-components';\nimport {\n getColors as color,\n mq,\n spacings,\n getGlobals as global,\n} from 'utils/styles';\n\nimport Instagram from 'components/base/icons/socials/Instagram';\nimport Heading from 'components/typography/Heading';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Link, { LinkProps } from 'components/typography/Link';\nimport { gridSettings } from 'components/base/Grid';\nimport Image, { ImageProps } from 'components/blocks/Image';\n\nconst Cards = styled.ul`\n display: flex;\n flex-wrap: wrap;\n margin: 0;\n padding: 0;\n list-style: none;\n\n margin-top: -${spacings.spacer}px;\n margin-left: -${spacings.spacer}px;\n\n & > * {\n flex: 1 1 100%;\n margin-top: ${spacings.spacer}px;\n margin-left: ${spacings.spacer}px;\n }\n\n @media ${mq.medium} {\n & > * {\n flex: 1 1 calc(50% - ${gridSettings.gutter}px);\n max-width: calc(50% - ${gridSettings.gutter}px);\n }\n }\n\n @media ${mq.large} {\n & > * {\n flex: 1 1 calc(${(1 / 3) * 100}% - ${gridSettings.gutter}px);\n max-width: calc(${(1 / 3) * 100}% - ${gridSettings.gutter}px);\n }\n }\n`;\n\nconst Item = styled.li`\n display: block;\n position: relative;\n padding: 0;\n`;\n\nconst Card = styled(Link)<{ isInverted?: boolean }>`\n position: relative;\n display: block;\n text-decoration: none;\n color: '#fff';\n outline-color: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n overflow: hidden;\n\n &:before {\n content: '';\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).secondary.inverted\n : color(theme).secondary.default};\n\n opacity: 0;\n pointer-events: none;\n z-index: 1;\n transition: opacity 0.2s ease-in-out;\n }\n\n &:hover {\n &:before {\n opacity: 1;\n pointer-events: all;\n }\n }\n\n &:focus {\n &:before {\n opacity: 1;\n pointer-events: all;\n }\n }\n`;\n\nconst StyledImage = styled(Image)`\n display: block;\n height: 100%;\n z-index: 0;\n`;\n\nconst TextContainer = styled.div`\n position: absolute;\n top: 50%;\n left: 50%;\n width: 100%;\n transform: translate(-50%, -50%);\n text-align: center;\n\n padding: ${spacings.nudge * 2}px;\n\n opacity: 0;\n pointer-events: none;\n z-index: 2;\n transition: opacity 0.2s ease-in-out;\n\n & > * + * {\n margin-top: ${spacings.nudge * 2}px;\n }\n\n ${Card}:hover & {\n opacity: 1;\n pointer-events: all;\n }\n\n ${Card}:focus & {\n opacity: 1;\n pointer-events: all;\n }\n`;\n\nconst FollowUs = styled(Heading)`\n text-transform: uppercase;\n`;\n\nconst InstagramIcon = styled.div`\n position: absolute;\n left: 20px;\n bottom: 20px;\n color: ${({ theme }) => color(theme).text.inverted};\n z-index: 2;\n\n & > * {\n fill: #fff;\n\n ${Card}:hover & {\n color: ${({ theme }) => color(theme).text.inverted};\n }\n }\n`;\n\nconst SocialWall: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array with item settings */\n items?: Array<{\n link?: LinkProps;\n image?: Omit<ImageProps, 'coverSpace' | 'ratio'>;\n }>;\n\n /** Text for main social media follow call */\n followUs?: string;\n\n /** Text for e.g. social media hashtag */\n hashTag?: string;\n\n /** Function to inject custom social icon on bottom left corner */\n socialIcon?: React.ReactNode;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n}> = ({ anchorId, items, hashTag, followUs, socialIcon, bgMode }) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n\n return (\n <Section\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : hasBg\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n addSeperation\n >\n <Wrapper addWhitespace>\n <Cards>\n {items?.map((item, i) => (\n <Item key={i}>\n <Card\n isExternal\n {...item.link}\n isInverted={isInverted}\n ariaLabel={item?.image?.alt}\n >\n {item.image && (\n <StyledImage\n {...item.image}\n coverSpace\n ratios={{\n small: { w: 1, h: 1 },\n }}\n isInverted={isInverted}\n />\n )}\n <TextContainer>\n <FollowUs size=\"super\" isInverted>\n {followUs\n ? followUs\n : 'Follow Us On Instagram'}\n </FollowUs>\n {hashTag && (\n <Heading size=\"heading-2\" isInverted>\n {hashTag}\n </Heading>\n )}\n </TextContainer>\n <InstagramIcon>\n {socialIcon || <Instagram />}\n </InstagramIcon>\n </Card>\n </Item>\n ))}\n </Cards>\n </Wrapper>\n </Section>\n );\n};\n\nexport const SocialWallComponent = SocialWall;\nexport default withLibTheme(SocialWall);\n","import React from 'react';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport TableBlock, { TableProps } from 'components/blocks/TableBlock';\nimport styled from 'styled-components';\nimport { spacings } from 'utils/styles';\n\nconst TableSection = styled(Section)`\n overflow: unset;\n`;\n\nconst TableWrapper = styled(Wrapper)`\n & > * + * {\n margin-top: ${spacings.spacer}px;\n }\n`;\n\nconst Table: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Table rows and columns */\n tableItems: TableProps[];\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n}> = ({ anchorId, bgMode, tableItems }) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full' || isInverted;\n\n return (\n <TableSection\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : hasBg\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <TableWrapper>\n {tableItems.map((item, i) => {\n return (\n <TableBlock\n key={i}\n {...item}\n isInverted={isInverted}\n hasBack={hasBg}\n />\n );\n })}\n </TableWrapper>\n </TableSection>\n );\n};\n\nexport const TableComponent = Table;\nexport default withLibTheme(Table);\n","import React, { FC, useRef, useState } from 'react';\nimport styled from 'styled-components';\n\nimport Grid from 'components/base/Grid';\nimport { HeadlineTag } from 'components/typography/Heading';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport Copy from 'components/typography/Copy';\nimport Wrapper from 'components/base/Wrapper';\nimport Section, { BgMode } from 'components/base/Section';\nimport {\n mq,\n spacings,\n getGlobals as global,\n getFonts as font,\n} from 'utils/styles';\nimport Actions from 'components/blocks/Actions';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport IntroBlock from 'components/blocks/IntroBlock';\nimport VideoBlock, { VideoAspectRatios } from 'components/blocks/VideoBlock';\nimport { isValidArray } from 'utils/arrays';\nimport { useObserverSupport } from 'utils/useObserverSupport';\nimport useUpdateEffect from 'utils/useUpdateEffect';\n\nconst Figure = styled.figure`\n display: flex;\n flex-direction: column;\n position: relative;\n height: 100%;\n width: 100%;\n margin: 0;\n padding: 0;\n\n & > * + * {\n margin-top: ${spacings.nudge}px;\n }\n\n @media ${mq.semilarge} {\n & > * + * {\n margin-top: ${spacings.nudge * 2}px;\n }\n }\n`;\n\nconst StyledImage = styled(Image)`\n position: relative;\n width: 100%;\n height: 100%;\n\n @media ${mq.semilarge} {\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n overflow: hidden;\n }\n`;\n\nconst Video = styled(VideoBlock)<{\n ratios?: VideoAspectRatios;\n isVisible?: boolean;\n}>`\n display: ${({ isVisible }) => (isVisible ? 'block' : 'none')};\n width: 100%;\n height: 100%;\n`;\n\nconst Description = styled(Copy)<{\n isInverted?: boolean;\n isSplitted?: boolean;\n isMirrored?: boolean;\n}>`\n display: block;\n\n @media ${mq.semilarge} {\n padding-left: ${spacings.nudge * 2}px;\n padding-right: ${spacings.nudge * 2}px;\n margin-left: ${({ isMirrored }) => isMirrored && 'auto'};\n margin-right: ${({ isMirrored }) => !isMirrored && 'auto'};\n max-width: ${({ isSplitted }) => isSplitted && '81.5%'};\n\n color: ${({ theme, isInverted, isSplitted }) =>\n isInverted && !isSplitted\n ? font(theme).copy.small.colorInverted\n : font(theme).copy.small.color};\n }\n\n @media ${mq.xlarge} {\n max-width: ${({ isSplitted }) => isSplitted && '69.5%'};\n }\n`;\n\nconst StyledActions = styled(Actions)`\n &:not(:first-child) {\n margin-top: ${spacings.spacer}px;\n }\n`;\n\nconst Teaser: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Switch text and image columns */\n isMirrored?: boolean;\n\n /** Superior title that stands above main title */\n superTitle?: string;\n\n /** Superior title HTML tag type (h3, h4 ...) */\n superTitleAs?: HeadlineTag;\n\n /** Main title text */\n title?: string;\n\n /** Main title HTML tag type (h2, h3, h4...) */\n titleAs?: HeadlineTag;\n\n /** Images for different screen sizes */\n image?: Omit<ImageProps, 'coverSpace'>;\n\n /**\n * Use video instead of an image. Until video is loaded images defined in the image prop are used.\n * Multiple video urls can be used to loaded different file formats\n */\n video?: {\n urls: string[];\n aspectRatios?: VideoAspectRatios;\n };\n\n /** Image or video description text (richtext) */\n description?: string;\n\n /** Main richtext */\n text?: string;\n\n /** Section background */\n bgMode?: 'full' | 'inverted' | 'splitted' | 'inverted-splitted';\n\n /** Function to inject custom primary button */\n primaryAction?: (isInverted?: boolean) => React.ReactNode;\n\n /** Function to inject custom secondary button */\n secondaryAction?: (isInverted?: boolean) => React.ReactNode;\n}> = ({\n anchorId,\n isMirrored = false,\n bgMode,\n superTitle,\n superTitleAs,\n title,\n titleAs,\n image,\n video,\n description,\n text,\n primaryAction,\n secondaryAction,\n}) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted' || bgMode === 'inverted-splitted';\n const isSplitted = bgMode === 'splitted' || bgMode === 'inverted-splitted';\n const hasVideo = isValidArray(video?.urls, false);\n\n const viewRef = useRef<HTMLDivElement | null>(null);\n const [isLoaded, setLoaded] = useState(!image?.small || false);\n const [isVideoActive, setVideoActive] = useState<boolean>(false);\n const isObserverSupported = useObserverSupport();\n\n useUpdateEffect(() => {\n if (!viewRef.current || !hasVideo) return;\n if (!isObserverSupported) {\n setVideoActive(true);\n return;\n }\n\n const observer = new IntersectionObserver(\n (entries, observer) => {\n const [entry] = entries;\n\n if (entry.isIntersecting) {\n observer.unobserve(entry.target);\n setVideoActive(true);\n }\n },\n {\n rootMargin: '200px 0px 200px 0px',\n }\n );\n\n const viewEl = viewRef.current;\n observer.observe(viewEl);\n\n return () => {\n if (viewEl) observer.unobserve(viewEl);\n };\n }, [isObserverSupported]);\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToTeaserBgMode(bgMode, false, isMirrored)}\n >\n <Wrapper addWhitespace clampWidth=\"normal\">\n <Grid.Row valign=\"center\">\n <Grid.Col\n semilarge={{\n span: 6 / 12,\n move: (isMirrored ? 6 : 0) / 12,\n }}\n xlarge={{\n span: 7 / 12,\n move: (isMirrored ? 5 : 0) / 12,\n }}\n >\n {(image?.small || hasVideo) && (\n <Figure ref={viewRef}>\n {image?.small && (!video || !isLoaded) && (\n <StyledImage\n {...image}\n isInverted={isInverted}\n coverSpace\n />\n )}\n {hasVideo && (\n <Video\n urls={\n isVideoActive\n ? video?.urls\n : undefined\n }\n muted\n autoPlay\n loop\n onCanPlayThrough={() => setLoaded(true)}\n ratios={video?.aspectRatios}\n isVisible={isLoaded}\n isInverted={isInverted}\n />\n )}\n {description && (\n <Description\n size=\"small\"\n renderAs=\"figcaption\"\n isInverted={isInverted}\n isSplitted={isSplitted}\n isMirrored={isMirrored}\n innerHTML={description}\n />\n )}\n </Figure>\n )}\n </Grid.Col>\n\n <Grid.Col\n semilarge={{\n span: 6 / 12,\n move: (isMirrored ? -6 : 0) / 12,\n }}\n xlarge={{\n span: 5 / 12,\n move: (isMirrored ? -7 : 0) / 12,\n }}\n >\n <IntroBlock\n titleHyphens\n title={title}\n titleAs={titleAs}\n superTitle={superTitle}\n superTitleAs={superTitleAs}\n text={text}\n colorMode={isInverted ? 'inverted' : 'default'}\n />\n {(primaryAction || secondaryAction) && (\n <StyledActions\n primary={\n primaryAction && primaryAction(isInverted)\n }\n secondary={\n secondaryAction &&\n secondaryAction(isInverted)\n }\n />\n )}\n </Grid.Col>\n </Grid.Row>\n </Wrapper>\n </Section>\n );\n};\n\nexport const mapToTeaserBgMode = (\n mode?: 'full' | 'splitted' | 'inverted' | 'inverted-splitted',\n preventSplit = false,\n isMirrored = false\n): BgMode | undefined => {\n switch (mode) {\n case 'full':\n return 'full';\n case 'inverted':\n return 'inverted';\n case 'splitted': {\n if (!preventSplit)\n return isMirrored ? 'larger-left' : 'larger-right';\n else return undefined;\n }\n case 'inverted-splitted': {\n if (!preventSplit)\n return isMirrored ? 'larger-left' : 'larger-right';\n else return undefined;\n }\n\n default:\n return undefined;\n }\n};\n\nexport const TeaserComponent = Teaser;\nexport default withLibTheme(Teaser);\n","import React, { FC, useRef, useState } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport Grid, { getGridWidth } from 'components/base/Grid';\nimport { HeadlineTag } from 'components/typography/Heading';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport Wrapper, { wrapperWhitespace } from 'components/base/Wrapper';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport { mq, spacings, withRange, getGlobals as global } from 'utils/styles';\nimport Actions from 'components/blocks/Actions';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport IntroBlock from 'components/blocks/IntroBlock';\nimport VideoBlock, { VideoAspectRatios } from 'components/blocks/VideoBlock';\nimport { isValidArray } from 'utils/arrays';\nimport { useObserverSupport } from 'utils/useObserverSupport';\nimport useUpdateEffect from 'utils/useUpdateEffect';\n\n/**\n * calculate single grid col from relative content wrapper\n * (grid width = wrapper width without paddings)\n * */\nconst getGridColOfContent = () => {\n return css`\n ${getGridWidth({\n cols: 1,\n gridWidth: `${spacings.wrapper - wrapperWhitespace * 2}px `,\n })}\n `;\n};\n\nconst WideVideo = styled(VideoBlock)<{\n isMirrored?: boolean;\n isVisible?: boolean;\n}>`\n display: ${({ isVisible }) => (isVisible ? 'block' : 'none')};\n position: relative;\n top: 0;\n left: 0;\n bottom: 0;\n width: 100%;\n height: 100%;\n\n min-height: 400px;\n object-fit: cover;\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n\n @media ${mq.semilarge} {\n position: absolute;\n /** \n calculate width of 6 grid cols (grid width = viewport width without wrapper paddings)\n and add left or right wrapper padding afterwards\n */\n width: calc(\n ${getGridWidth({\n cols: 6,\n gridWidth: `100% - ${wrapperWhitespace * 2}px `,\n })} + ${wrapperWhitespace}px\n );\n left: ${({ isMirrored }) => (isMirrored ? 'auto' : '0')};\n right: ${({ isMirrored }) => (isMirrored ? '0' : 'auto')};\n }\n\n @media ${mq.xlarge} {\n /** \n calculate width of 1 grid cols\n and add left or right wrapper padding afterwards. Then add this to 50% of current\n viewport width.\n */\n width: calc(50% + ${getGridColOfContent()} + ${wrapperWhitespace}px);\n }\n\n @media ${mq.xxlarge} {\n /** \n calculate width of 1 grid cols\n and add left or right wrapper padding afterwards. Then add this to 50% of large wrapper width.\n */\n width: calc(\n ${spacings.wrapperLarge / 2}px + ${getGridColOfContent()} +\n ${wrapperWhitespace}px\n );\n\n left: ${({ isMirrored }) => (isMirrored ? 'auto' : '50%')};\n right: ${({ isMirrored }) => (isMirrored ? '50%' : 'auto')};\n\n ${({ isMirrored }) =>\n css`\n transform: translateX(\n calc(\n ${isMirrored ? '100% - ' : '-100% + '}\n (${getGridColOfContent()} + ${wrapperWhitespace}px)\n )\n );\n `};\n }\n`;\n\nconst WideImage = styled(Image)<{ isMirrored?: boolean }>`\n position: relative;\n top: 0;\n left: 0;\n bottom: 0;\n width: 100%;\n\n height: 100%;\n min-height: 400px;\n\n img {\n height: 100%;\n }\n\n @media ${mq.semilarge} {\n position: absolute;\n /** \n calculate width of 6 grid cols (grid width = viewport width without wrapper paddings)\n and add left or right wrapper padding afterwards\n */\n width: calc(\n ${getGridWidth({\n cols: 6,\n gridWidth: `100% - ${wrapperWhitespace * 2}px `,\n })} + ${wrapperWhitespace}px\n );\n left: ${({ isMirrored }) => (isMirrored ? 'auto' : '0')};\n right: ${({ isMirrored }) => (isMirrored ? '0' : 'auto')};\n }\n\n @media ${mq.xlarge} {\n /** \n calculate width of 1 grid cols\n and add left or right wrapper padding afterwards. Then add this to 50% of current\n viewport width.\n */\n width: calc(50% + ${getGridColOfContent()} + ${wrapperWhitespace}px);\n }\n\n @media ${mq.xxlarge} {\n /** \n calculate width of 1 grid cols\n and add left or right wrapper padding afterwards. Then add this to 50% of large wrapper width.\n */\n width: calc(\n ${spacings.wrapperLarge / 2}px + ${getGridColOfContent()} +\n ${wrapperWhitespace}px\n );\n\n left: ${({ isMirrored }) => (isMirrored ? 'auto' : '50%')};\n right: ${({ isMirrored }) => (isMirrored ? '50%' : 'auto')};\n\n ${({ isMirrored }) =>\n css`\n transform: translateX(\n calc(\n ${isMirrored ? '100% - ' : '-100% + '}\n (${getGridColOfContent()} + ${wrapperWhitespace}px)\n )\n );\n `};\n }\n`;\n\nconst Content = styled.div`\n ${({ theme }) =>\n withRange(\n global(theme).sections.seperation.padding.default,\n 'padding-bottom'\n )}\n\n @media ${mq.semilarge} {\n ${({ theme }) =>\n withRange(\n global(theme).sections.seperation.padding.default,\n 'padding-top'\n )}\n }\n`;\n\nconst StyledActions = styled(Actions)`\n &:not(:first-child) {\n margin-top: ${spacings.spacer}px;\n }\n`;\n\nconst TeaserWide: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Switch text and image columns */\n isMirrored?: boolean;\n\n /** Superior title that stands above main title */\n superTitle?: string;\n\n /** Superior title HTML tag type (h3, h4 ...) */\n superTitleAs?: HeadlineTag;\n\n /** Main title text */\n title?: string;\n\n /** Main title HTML tag type (h2, h3, h4...) */\n titleAs?: HeadlineTag;\n\n /** Images for different screen sizes */\n image?: Omit<ImageProps, 'coverSpace'>;\n\n /**\n * Use video instead of an image. Until video is loaded images defined in the image prop are used.\n * Multiple video urls can be used to loaded different file formats\n */\n video?: {\n urls: string[];\n aspectRatios?: VideoAspectRatios;\n };\n\n /** Main richtext */\n text?: string;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n\n /** Function to inject custom primary button */\n primaryAction?: (isInverted?: boolean) => React.ReactNode;\n\n /** Function to inject custom secondary button */\n secondaryAction?: (isInverted?: boolean) => React.ReactNode;\n}> = ({\n anchorId,\n isMirrored = false,\n superTitle,\n superTitleAs,\n title,\n titleAs,\n image,\n video,\n text,\n primaryAction,\n secondaryAction,\n bgMode,\n}) => {\n const { colors } = useLibTheme();\n\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n const hasVideo = isValidArray(video?.urls, false);\n\n const viewRef = useRef<HTMLDivElement | null>(null);\n const [isLoaded, setLoaded] = useState(!image?.small || false);\n const [isVideoActive, setVideoActive] = useState<boolean>(false);\n const isObserverSupported = useObserverSupport();\n\n useUpdateEffect(() => {\n if (!viewRef.current || !hasVideo) return;\n if (!isObserverSupported) {\n setVideoActive(true);\n return;\n }\n\n const observer = new IntersectionObserver(\n (entries, observer) => {\n const [entry] = entries;\n\n if (entry.isIntersecting) {\n observer.unobserve(entry.target);\n setVideoActive(true);\n }\n },\n {\n rootMargin: '200px 0px 200px 0px',\n }\n );\n\n const viewEl = viewRef.current;\n observer.observe(viewEl);\n\n return () => {\n if (viewEl) observer.unobserve(viewEl);\n };\n }, [isObserverSupported]);\n\n return (\n <Section\n ref={viewRef}\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : hasBg\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n {image?.small && (!video || !isLoaded) && (\n <WideImage\n coverSpace\n {...image}\n isMirrored={isMirrored}\n isInverted={isInverted}\n />\n )}\n {hasVideo && (\n <WideVideo\n urls={isVideoActive ? video?.urls : undefined}\n muted\n autoPlay\n loop\n onCanPlayThrough={() => setLoaded(true)}\n isVisible={isLoaded}\n isInverted={isInverted}\n isMirrored={isMirrored}\n ratios={video?.aspectRatios}\n />\n )}\n <Wrapper clampWidth=\"normal\" addWhitespace>\n <Grid.Row valign=\"center\">\n <Grid.Col\n semilarge={{\n span: 6 / 12,\n move: (isMirrored ? 6 : 0) / 12,\n }}\n xlarge={{\n span: 7 / 12,\n move: (isMirrored ? 5 : 0) / 12,\n }}\n ></Grid.Col>\n <Grid.Col\n semilarge={{\n span: 6 / 12,\n move: (isMirrored ? -6 : 0) / 12,\n }}\n xlarge={{\n span: 5 / 12,\n move: (isMirrored ? -7 : 0) / 12,\n }}\n >\n <Content>\n <IntroBlock\n titleHyphens\n title={title}\n titleAs={titleAs}\n superTitle={superTitle}\n superTitleAs={superTitleAs}\n text={text}\n colorMode={isInverted ? 'inverted' : 'default'}\n />\n {(primaryAction || secondaryAction) && (\n <StyledActions\n primary={\n primaryAction &&\n primaryAction(isInverted)\n }\n secondary={\n secondaryAction &&\n secondaryAction(isInverted)\n }\n />\n )}\n </Content>\n </Grid.Col>\n </Grid.Row>\n </Wrapper>\n </Section>\n );\n};\n\nexport const TeaserWideComponent = TeaserWide;\nexport default withLibTheme(TeaserWide);\n","import Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Copy from 'components/typography/Copy';\nimport Heading from 'components/typography/Heading';\nimport React, {\n createRef,\n MutableRefObject,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport styled, { ThemeContext } from 'styled-components';\nimport { getColors as color, mq, spacings } from 'utils/styles';\nimport { useObserverSupport } from 'utils/useObserverSupport';\nimport { withLibTheme } from 'utils/LibThemeProvider';\n\nconst TimelineBlock = styled.div<{\n isSwitched?: boolean;\n isActive?: boolean;\n isInverted?: boolean;\n}>`\n position: relative;\n\n @media ${mq.large} {\n text-align: ${({ isSwitched }) => (isSwitched ? 'left' : 'right')};\n }\n\n &:after {\n content: '';\n width: 10px;\n height: 10px;\n\n box-sizing: content-box;\n border: 2px solid\n ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).elementBg.light\n : color(theme).elementBg.dark};\n border-radius: 50%;\n\n background: ${({ theme, isActive, isInverted }) =>\n isActive\n ? isInverted\n ? color(theme).elementBg.light\n : color(theme).elementBg.dark\n : isInverted\n ? color(theme).elementBg.dark\n : color(theme).elementBg.light};\n\n position: absolute;\n top: 16px;\n left: 0px;\n\n transition: all 0.2s ease-in-out;\n\n @media ${mq.large} {\n left: ${({ isSwitched }) => (!isSwitched ? '50%' : 'auto')};\n right: ${({ isSwitched }) => isSwitched && '50%'};\n transform: translateX(\n ${({ isSwitched }) => (isSwitched ? '50%' : '-50%')}\n );\n }\n }\n\n &:before {\n content: '';\n display: block;\n position: absolute;\n width: 2px;\n min-height: 160px;\n height: 100%;\n background: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).elementBg.light\n : color(theme).elementBg.dark};\n left: 5px;\n\n @media ${mq.large} {\n left: 50%;\n transform: translateX(-50%);\n }\n }\n\n &:first-child {\n padding-top: 0;\n\n &:before {\n top: 16px;\n }\n }\n`;\n\nconst TimelineText = styled.div<{\n isSwitched?: boolean;\n}>`\n position: relative;\n padding-left: ${spacings.nudge * 3 + 2}px;\n padding-bottom: ${spacings.spacer}px;\n\n @media ${mq.large} {\n max-width: 50%;\n\n margin-left: ${({ isSwitched }) => isSwitched && '50%'};\n margin-right: ${({ isSwitched }) => !isSwitched && '50%'};\n\n padding: ${({ isSwitched }) =>\n isSwitched\n ? `${spacings.spacer}px 0 ${spacings.spacer * 1.75}px ${\n spacings.spacer\n }px`\n : `${spacings.spacer}px ${spacings.spacer}px ${\n spacings.spacer * 1.75\n }px 0`};\n }\n\n &:first-child {\n padding-top: 0;\n }\n\n & > * + * {\n margin-top: ${spacings.nudge * 2}px;\n }\n`;\n\nconst ItemTitle = styled(Heading)``;\n\nconst ItemTextBlock = styled(Copy)``;\n\nconst Timeline: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n items?: { label?: string; title?: string; text?: string }[];\n bgMode?: 'full' | 'inverted';\n}> = ({ anchorId, bgMode, items }) => {\n const theme = useContext(ThemeContext);\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n\n const [targetRefs, setTargetRefs] = useState<\n MutableRefObject<HTMLDivElement>[]\n >([]);\n const observerSupported = useObserverSupport();\n const observerRef = useRef<IntersectionObserver | null>(null);\n\n const [activeItem, setActiveItem] = useState<number>(0);\n\n useEffect(() => {\n if (observerSupported && targetRefs && targetRefs.length > 0) {\n const options = {\n rootMargin: '-50% 0% -50% 0%',\n threshold: 0,\n };\n\n observerRef.current = new IntersectionObserver((entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n const index = targetRefs?.findIndex(\n (t) => t.current === entry.target\n );\n setActiveItem(index);\n }\n });\n }, options);\n\n for (let i = 0; i < targetRefs.length; i++) {\n observerRef.current.observe(targetRefs[i].current);\n }\n }\n\n return () => {\n observerRef.current?.disconnect();\n };\n }, [targetRefs, observerSupported]);\n\n useEffect(() => {\n setTargetRefs(() =>\n Array(items?.length)\n .fill(null)\n .map((_, i) => targetRefs[i] || createRef())\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [items?.length]);\n\n return (\n <Section\n anchorId={anchorId}\n bgColor={\n isInverted\n ? color(theme).sectionBg.dark\n : hasBg\n ? color(theme).sectionBg.medium\n : 'transparent'\n }\n bgMode={mapToBgMode(bgMode, true)}\n addSeperation\n >\n <Wrapper addWhitespace>\n {items &&\n items.map((item, i) => {\n return (\n <TimelineBlock\n ref={targetRefs[i]}\n isActive={activeItem === i}\n isSwitched={i % 2 === 0}\n isInverted={isInverted}\n key={i}\n >\n <TimelineText isSwitched={i % 2 === 0}>\n <ItemTitle\n size=\"heading-2\"\n textColor={\n isInverted\n ? color(theme).text.inverted\n : color(theme).text.default\n }\n >\n {item.label}\n </ItemTitle>\n\n <ItemTextBlock\n type=\"copy-b\"\n size=\"big\"\n isInverted={isInverted}\n >\n {item.title}\n </ItemTextBlock>\n <ItemTextBlock\n innerHTML={item.text}\n isInverted={isInverted}\n />\n </TimelineText>\n </TimelineBlock>\n );\n })}\n </Wrapper>\n </Section>\n );\n};\n\nexport const TimelineComponent = Timeline;\nexport default withLibTheme(Timeline);\n","import React from 'react';\nimport Section, { mapToBgMode } from 'components/base/Section';\n\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Wrapper from 'components/base/Wrapper';\nimport { ImageProps } from 'components/blocks/Image';\n\nimport VideoCard from 'components/blocks/VideoCard';\n\nconst Video: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n bgImage: Omit<ImageProps, 'ratios' | 'coverSpace'>;\n embedId: string;\n\n consentText?: string;\n consentAction?: (props: {\n handleClick?: () => void;\n consentProps: Record<string, string>;\n }) => React.ReactNode;\n /**\n * Custom handler for play button click\n * @returns true if video should be played\n */\n onPlayClick?: () => Promise<boolean>;\n\n playIcon?: React.ReactNode;\n bgMode?: 'full' | 'inverted' | 'splitted';\n}> = ({\n anchorId,\n bgMode,\n bgImage,\n embedId,\n playIcon,\n consentText,\n consentAction,\n onPlayClick,\n}) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n\n return (\n <Section\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n addSeperation\n >\n <Wrapper addWhitespace>\n <VideoCard\n bgImage={bgImage}\n embedId={embedId}\n playIcon={playIcon}\n consentText={consentText}\n consentAction={consentAction}\n onPlayClick={onPlayClick}\n />\n </Wrapper>\n </Section>\n );\n};\n\nexport const VideoComponent = Video;\nexport default withLibTheme(Video);\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\n\nimport { getColors as color, getGlobals as global, mq } from 'utils/styles';\nimport Play from 'components/base/icons/Play';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Wrapper from 'components/base/Wrapper';\nimport VideoBlock from 'components/blocks/VideoBlock';\nimport { ImageProps } from 'components/blocks/Image';\nimport { isValidArray } from 'utils/arrays';\n\nconst VideoContainer = styled.div<{ isInverted?: boolean }>`\n position: relative;\n cursor: pointer;\n`;\n\nconst Overlay = styled.div<{ bgImage?: ImageProps; isInverted?: boolean }>`\n position: relative;\n padding-top: ${`calc(100% / (16 / 9))`};\n background: ${({ theme, isInverted }) =>\n isInverted\n ? global(theme).sections.imagePlaceholderBg.inverted\n : global(theme).sections.imagePlaceholderBg.default};\n\n background-image: ${({ bgImage }) =>\n bgImage?.small && `url(\"${bgImage.small}\")`};\n background-size: cover;\n background-repeat: no-repeat;\n background-position: center;\n\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n overflow: hidden;\n\n @media ${mq.medium} {\n text-align: left;\n\n background-image: ${({ bgImage }) =>\n bgImage?.medium && `url(\"${bgImage.medium}\")`};\n }\n\n @media ${mq.semilarge} {\n background-image: ${({ bgImage }) =>\n bgImage?.semilarge && `url(\"${bgImage.semilarge}\")`};\n }\n\n @media ${mq.large} {\n background-image: ${({ bgImage }) =>\n bgImage?.large && `url(\"${bgImage.large}\")`};\n }\n\n @media ${mq.xlarge} {\n background-image: ${({ bgImage }) =>\n bgImage?.xlarge && `url(\"${bgImage.xlarge}\")`};\n }\n\n &:after {\n content: '';\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n pointer-events: none;\n\n background: linear-gradient(\n 358.19deg,\n rgba(29, 34, 35, 0.52) 12.37%,\n rgba(29, 34, 35, 0) 59.02%\n );\n }\n`;\n\nconst VideoControls = styled.button`\n display: block;\n border: none;\n background: none;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n color: ${({ theme }) => color(theme).elementBg.light};\n z-index: 1;\n padding: 0;\n\n cursor: pointer;\n\n & > * {\n opacity: 0.8;\n transition: transform 0.2s ease-in-out, opacity 0.2s ease-in-out;\n height: 80px;\n width: 80px;\n\n color: ${({ theme }) => color(theme).elementBg.dark};\n }\n\n ${Overlay}:hover > & > * {\n transform: scale(1.05);\n opacity: 1;\n }\n\n ${Overlay}:active > & > * {\n transform: scale(0.95);\n opacity: 1;\n }\n\n &:focus {\n outline: 2px solid ${({ theme }) => color(theme).primary.default};\n border-radius: 50%;\n opacity: 1;\n\n & > * {\n color: ${({ theme }) => color(theme).primary.default};\n }\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n box-shadow: none;\n }\n`;\n\nconst Video = styled(VideoBlock)<{ isVisible?: boolean }>`\n opacity: ${({ isVisible }) => (isVisible ? 1 : 0)};\n pointer-events: ${({ isVisible }) => (isVisible ? 'all' : 'none')};\n`;\n\nconst RawVideo: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** URL to video sources */\n videoUrls?: string[];\n\n /** Placeholder image */\n placeholderImg?: Omit<ImageProps, 'ratios' | 'coverSpace'>;\n\n /** Enable autoplay without user interaction */\n autoplay?: boolean;\n\n /** Playing video in loop */\n loop?: boolean;\n\n /** Section background */\n bgMode?: 'full' | 'inverted' | 'splitted';\n\n /** Video play icon */\n playIcon?: React.ReactNode;\n}> = ({\n anchorId,\n bgMode,\n videoUrls,\n placeholderImg,\n playIcon,\n autoplay,\n loop,\n}) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const [isStarted, setIsStarted] = useState<boolean>(autoplay || false);\n\n return (\n <Section\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n addSeperation\n >\n <Wrapper addWhitespace>\n <VideoContainer\n onClick={() => {\n if (isValidArray(videoUrls, false)) {\n setIsStarted(true);\n }\n }}\n >\n {isStarted && (\n <Video\n isVisible={isStarted || !placeholderImg?.small}\n controls={!autoplay}\n autoPlay\n loop={loop}\n muted={autoplay}\n ratios={{ small: 16 / 9 }}\n urls={videoUrls}\n isInverted={isInverted}\n />\n )}\n {!isStarted && (\n <Overlay\n bgImage={placeholderImg}\n isInverted={isInverted}\n >\n <VideoControls>\n {playIcon || <Play iconColor=\"#000\" />}\n </VideoControls>\n </Overlay>\n )}\n </VideoContainer>\n </Wrapper>\n </Section>\n );\n};\n\nexport const RawVideoComponent = RawVideo;\nexport default withLibTheme(RawVideo);\n","import React, { FC, useEffect, useMemo, useState } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport {\n mq,\n spacings,\n getColors as color,\n getFonts as font,\n getGlobals as global,\n withRange,\n} from 'utils/styles';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Grid, { getGridWidth, gridSettings } from 'components/base/Grid';\nimport Wrapper, { wrapperWhitespace } from 'components/base/Wrapper';\n\nimport IntroBlock from 'components/blocks/IntroBlock';\n\nimport Copy, { copyStyle } from 'components/typography/Copy';\nimport { HeadlineTag } from 'components/typography/Heading';\n\nimport Phone from 'components/base/icons/Phone';\nimport Mail from 'components/base/icons/Mail';\n\nimport { generateLocalBusiness } from 'utils/structuredData';\nimport Link from 'components/typography/Link';\nimport LocationPin from 'components/base/icons/LocationPin';\nimport Control from 'components/buttons/Control';\nimport * as Icons from 'components/base/icons/Icons';\nimport { getSVGDataImg as getSVGData } from 'utils/dataURI';\nimport useLeafletMap from 'utils/useLeafletMap';\nimport { isValidArray } from 'utils/arrays';\n\ninterface Address {\n street: string;\n postalCode: string;\n city?: string;\n country: string;\n}\n\nconst MapSection = styled(Section)`\n position: relative;\n min-height: 500px;\n z-index: 0;\n`;\n\nconst MapContainer = styled.div<{ isMirrored?: boolean }>`\n position: relative;\n top: 0;\n left: 0;\n bottom: 0;\n width: 100%;\n z-index: 0;\n\n height: 100%;\n min-height: 230px;\n\n @media ${mq.semilarge} {\n position: absolute;\n /** \n calculate width of 6 grid cols (grid width = viewport width without wrapper paddings)\n and add left or right wrapper padding afterwards\n */\n width: calc(\n ${getGridWidth({\n cols: 6,\n gridWidth: `100% - ${wrapperWhitespace * 2}px `,\n })} + ${wrapperWhitespace}px\n );\n left: ${({ isMirrored }) => (isMirrored ? 'auto' : '0')};\n right: ${({ isMirrored }) => (isMirrored ? '0' : 'auto')};\n }\n\n @media ${mq.xlarge} {\n width: calc(50% - ${gridSettings.gutter}px ${wrapperWhitespace}px);\n }\n\n @media ${mq.xxlarge} {\n width: calc(\n ${spacings.wrapperLarge / 2}px - ${gridSettings.gutter}px +\n ${wrapperWhitespace}px\n );\n\n left: ${({ isMirrored }) => (isMirrored ? 'auto' : '50%')};\n right: ${({ isMirrored }) => (isMirrored ? '50%' : 'auto')};\n\n ${({ isMirrored }) =>\n css`\n transform: translateX(\n calc(\n ${isMirrored\n ? `(100% + ${gridSettings.gutter}px) - `\n : `(-100% - ${gridSettings.gutter}px) + `}\n (${wrapperWhitespace}px)\n )\n );\n `};\n }\n`;\n\nconst CardWrapper = styled(Wrapper)`\n pointer-events: none;\n`;\n\nconst CardContainer = styled.div<{ isMirrored?: boolean }>`\n display: flex;\n flex-direction: row;\n position: relative;\n width: 100%;\n pointer-events: all;\n\n ${({ theme }) =>\n withRange(\n global(theme).sections.seperation.padding.default,\n 'padding-bottom'\n )}\n\n @media ${mq.semilarge} {\n ${({ theme }) =>\n withRange(\n global(theme).sections.seperation.padding.default,\n 'padding-top'\n )}\n }\n`;\n\nconst InfoCardView = styled.div`\n min-height: 100px;\n pointer-events: all;\n\n flex: 1 0 80%;\n max-width: 80%;\n\n & > * + * {\n margin-top: ${spacings.spacer}px;\n }\n`;\n\nconst CardHeader = styled.div`\n display: flex;\n`;\n\nconst ContactList = styled.ul<{ isInverted?: boolean }>`\n padding: 0;\n list-style-type: none;\n color: ${({ theme, isInverted }) =>\n isInverted ? color(theme).text.inverted : color(theme).text.default};\n\n li {\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 0;\n margin: 0;\n }\n\n li + li {\n margin-top: ${spacings.nudge * 3}px;\n }\n\n span:first-child {\n flex: 0 0 30px;\n max-width: 30px;\n\n & > * {\n max-width: 100%;\n }\n }\n`;\n\nconst ContactListLink = styled(Link)`\n display: block;\n\n ${copyStyle('copy-b', 'big')}\n color: ${({ theme, isInverted }) =>\n isInverted\n ? font(theme)['copy-b'].big.colorInverted\n : font(theme)['copy-b'].big.color};\n\n * + & {\n margin-left: ${spacings.nudge * 1.5}px;\n }\n`;\n\nconst AddressContainer = styled.div<{ hasIcon?: boolean }>`\n display: -ms-grid;\n display: grid;\n\n ${({ hasIcon }) => css`\n -ms-grid-columns: ${hasIcon ? 'min-content' : ''} 1fr;\n grid-template-columns: ${hasIcon ? 'min-content' : ''} 1fr;\n -ms-grid-rows: ${hasIcon ? 'min-content' : ''} 1fr;\n grid-auto-rows: ${hasIcon ? 'min-content' : ''} 1fr;\n `}\n\n & > * + * {\n margin-left: ${spacings.nudge * 2}px;\n }\n`;\n\nconst CompanyInfo: FC<{\n isInverted?: boolean;\n companyName: string;\n address?: Address;\n customIcon?: (isInverted?: boolean) => React.ReactNode;\n}> = ({ isInverted, companyName, address, customIcon }) => {\n return (\n <AddressContainer hasIcon={!!customIcon}>\n {customIcon && <span> {customIcon()} </span>}\n <div>\n <Copy type=\"copy-b\" size=\"big\" isInverted={isInverted}>\n {companyName}\n </Copy>\n {address && (\n <Copy type=\"copy-b\" size=\"big\" isInverted={isInverted}>\n <div>{address.street}</div>\n <div>{`${address.postalCode} ${address.city}`}</div>\n <div>{address.country}</div>\n </Copy>\n )}\n </div>\n </AddressContainer>\n );\n};\n\nconst Desc = styled(Copy)`\n @media ${mq.semilarge} {\n margin-top: ${spacings.spacer * 2.5}px;\n }\n`;\n\nconst LocationInfoCard: FC<\n MapLocation & {\n isInverted?: boolean;\n }\n> = ({\n isInverted,\n title,\n titleAs,\n superTitle,\n superTitleAs,\n companyName,\n address,\n addressIcon,\n contact,\n description,\n}) => {\n const { colors } = useLibTheme();\n\n const addressIconContent = addressIcon ? (\n addressIcon({ isInverted })\n ) : (\n <LocationPin\n iconColor={isInverted ? colors.text.inverted : colors.text.default}\n />\n );\n\n const phoneIconContent = contact?.telephone?.icon ? (\n contact.telephone.icon({\n isInverted,\n })\n ) : (\n <Phone />\n );\n\n const mailIconContent = contact?.email?.icon ? (\n contact.email.icon({ isInverted })\n ) : (\n <Mail />\n );\n\n return (\n <InfoCardView>\n <CardHeader>\n <IntroBlock\n colorMode={isInverted ? 'inverted' : 'default'}\n title={title}\n titleAs={titleAs}\n superTitle={superTitle}\n superTitleAs={superTitleAs}\n />\n </CardHeader>\n {companyName && (\n <CompanyInfo\n companyName={companyName || ''}\n address={address}\n customIcon={\n addressIconContent\n ? () => addressIconContent\n : undefined\n }\n isInverted={isInverted}\n />\n )}\n {contact && (\n <ContactList isInverted={isInverted}>\n {contact?.telephone?.label && (\n <li>\n {phoneIconContent && (\n <span>{phoneIconContent}</span>\n )}\n <ContactListLink\n isInverted={isInverted}\n href={`tel:${\n contact.telephone.link ||\n contact.telephone.label\n }`}\n >\n {contact.telephone?.label}\n </ContactListLink>\n </li>\n )}\n {contact?.email?.label && (\n <li>\n {mailIconContent && <span>{mailIconContent}</span>}\n <ContactListLink\n isInverted={isInverted}\n href={`mailto:${\n contact?.email.link || contact.email.label\n }`}\n >\n {contact?.email.label}\n </ContactListLink>\n </li>\n )}\n </ContactList>\n )}\n\n <Desc isInverted={isInverted} innerHTML={description} />\n </InfoCardView>\n );\n};\n\nconst Controls = styled.div`\n flex: 1 0 20%;\n max-width: 20%;\n display: flex;\n flex-direction: column;\n align-self: flex-start;\n margin-left: auto;\n text-align: right;\n\n & > * + * {\n margin-top: ${spacings.nudge}px;\n }\n`;\n\nconst FylToCtrlContainer = styled.button`\n position: absolute;\n top: 0;\n right: 0;\n z-index: 1000;\n background: none;\n border: none;\n margin: 0;\n padding: 0;\n\n margin-top: ${spacings.spacer}px;\n margin-right: ${spacings.spacer}px;\n color: ${({ theme }) => color(theme).elementBg.dark};\n\n cursor: pointer;\n`;\n\nexport interface LocationIcon {\n url: string;\n size: [number, number];\n anchor: [number, number];\n\n sizeActive: [number, number];\n anchorActive: [number, number];\n}\n\nexport interface MapLocation {\n id: string;\n position: [number, number];\n icon?: LocationIcon;\n\n title?: string; // Rich Text\n titleAs?: HeadlineTag;\n superTitle?: string;\n superTitleAs?: HeadlineTag;\n\n companyName?: string;\n address?: Address;\n addressIcon?: (props: { isInverted?: boolean }) => React.ReactNode;\n contact?: {\n telephone?: {\n link?: string;\n label?: string;\n icon?: (props: { isInverted?: boolean }) => React.ReactNode;\n };\n email?: {\n link?: string;\n label?: string;\n icon?: (props: { isInverted?: boolean }) => React.ReactNode;\n };\n };\n image?: string[];\n description?: string;\n}\n\nconst Map: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n\n /** Switch horizontal order of map and location info text */\n isMirrored?: boolean;\n\n /** Map tile provider */\n provider?: string;\n\n /** Map attribution text (richtext) */\n attribution?: string;\n\n /** Initial center of the map */\n center?: [number, number];\n\n /** Initial map zoom */\n zoom?: number;\n\n /** Zoom if map jumps to location */\n flyToZoom?: number;\n\n /** Initial location */\n initialLocation?: string;\n\n /** Array of location settings */\n locations?: Array<MapLocation>;\n\n /** Show all markers on first load */\n allMarkersOnInit?: boolean;\n\n /** Map container padding for show all markers */\n fitBoundsPadding?: [number, number];\n\n /** Icon element for flight to the current active location */\n flyToControl?: React.ReactNode;\n\n /** Injection function to replace default control button */\n controlNext?: (props: {\n isInverted?: boolean;\n isActive?: boolean;\n name?: string;\n clickHandler?: (ev: React.SyntheticEvent<HTMLButtonElement>) => void;\n }) => React.ReactNode;\n\n /** Injection function to replace default control button */\n controlPrev?: (props: {\n isInverted?: boolean;\n isActive?: boolean;\n name?: string;\n clickHandler?: (ev: React.SyntheticEvent<HTMLButtonElement>) => void;\n }) => React.ReactNode;\n}> = ({\n anchorId,\n bgMode,\n isMirrored = false,\n provider,\n attribution,\n center = [51.505, -0.09],\n zoom = 5,\n flyToZoom,\n initialLocation,\n locations,\n allMarkersOnInit = false,\n fitBoundsPadding,\n flyToControl,\n controlNext,\n controlPrev,\n}) => {\n const { colors } = useLibTheme();\n\n const [activeLocationId, setActiveLocationId] = useState<string>(\n initialLocation || ''\n );\n const [isDirty, setIsDirty] = useState<boolean>(false);\n const activeLocation = useMemo(\n () => locations?.find((l) => l.id === activeLocationId),\n [activeLocationId, locations]\n );\n\n const hasBg = bgMode === 'full';\n const isInverted = bgMode === 'inverted';\n\n const defaultMarker: LocationIcon = {\n size: [28, 28],\n anchor: [14, 28],\n sizeActive: [70, 70],\n anchorActive: [35, 70],\n url: getSVGData(<LocationPin />),\n };\n const {\n isLoaded,\n setContainer: setMapContainer,\n flyToActive,\n showAllMarkers,\n } = useLeafletMap({\n url: provider,\n attribution,\n center,\n zoom,\n activeMarkerId: activeLocationId,\n markers: locations?.map(({ id, position, icon }) => ({\n id,\n position,\n icon: icon || defaultMarker,\n isInteractive: true,\n })),\n fitBoundsPadding,\n onMarkerClick: setActiveLocationId,\n });\n\n const goToNext = () => {\n setActiveLocationId((prev) => {\n if (!locations) return prev;\n const currentIndex = locations.findIndex(\n (l) => l.id === activeLocationId\n );\n if (currentIndex === -1) return prev;\n\n // get new index\n const newIndex = (currentIndex + 1) % locations.length;\n return locations[newIndex].id;\n });\n };\n\n const goToPrevious = () => {\n setActiveLocationId((prev) => {\n if (!locations) return prev;\n const currentIndex = locations.findIndex(\n (l) => l.id === activeLocationId\n );\n if (currentIndex === -1) return prev;\n\n // get new index\n const newIndex =\n currentIndex - 1 < 0 ? locations.length - 1 : currentIndex - 1;\n return locations[newIndex].id;\n });\n };\n\n useEffect(() => {\n if (isLoaded && !isDirty) {\n if (allMarkersOnInit) showAllMarkers();\n } else {\n flyToActive(flyToZoom);\n }\n }, [\n activeLocationId,\n allMarkersOnInit,\n flyToActive,\n flyToZoom,\n initialLocation,\n isDirty,\n isLoaded,\n showAllMarkers,\n ]);\n\n useEffect(() => {\n if (!isDirty && activeLocationId !== initialLocation) setIsDirty(true);\n }, [activeLocationId, initialLocation, isDirty]);\n\n return (\n <MapSection\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : hasBg\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n {locations && generateLocalBusiness(locations)}\n <MapContainer ref={setMapContainer} isMirrored={isMirrored}>\n {flyToControl && (\n <FylToCtrlContainer\n onClick={(ev) => {\n ev.stopPropagation();\n flyToActive(flyToZoom);\n }}\n >\n {flyToControl}\n </FylToCtrlContainer>\n )}\n </MapContainer>\n\n <CardWrapper addWhitespace clampWidth=\"normal\">\n <Grid.Row>\n <Grid.Col\n semilarge={{\n span: 6 / 12,\n move: (isMirrored ? 6 : 0) / 12,\n }}\n ></Grid.Col>\n <Grid.Col\n semilarge={{\n span: 6 / 12,\n move: (isMirrored ? -6 : 0) / 12,\n }}\n >\n <CardContainer isMirrored={isMirrored}>\n {isValidArray(locations, false) && (\n <React.Fragment>\n {activeLocation && (\n <LocationInfoCard\n {...activeLocation}\n isInverted={isInverted}\n />\n )}\n {locations.length > 1 && (\n <Controls>\n {controlNext ? (\n controlNext({\n isInverted,\n isActive: true,\n clickHandler: goToNext,\n name: 'control_next_head',\n })\n ) : (\n <Control\n isInverted={isInverted}\n isDisabled={false}\n onClick={goToNext}\n >\n <Icons.ArrowRightGhost />\n </Control>\n )}\n {controlPrev ? (\n controlPrev({\n isInverted,\n isActive: true,\n clickHandler: goToPrevious,\n name: 'control_prev_head',\n })\n ) : (\n <Control\n isInverted={isInverted}\n isDisabled={false}\n onClick={goToPrevious}\n >\n <Icons.ArrowLeftGhost />\n </Control>\n )}\n </Controls>\n )}\n </React.Fragment>\n )}\n </CardContainer>\n </Grid.Col>\n </Grid.Row>\n </CardWrapper>\n </MapSection>\n );\n};\n\nexport const MapComponent = Map;\nexport default withLibTheme(Map);\n","import Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport React from 'react';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\n\nconst HtmlCode: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n /** HTML content */\n html?: string;\n /** Section background */\n bgMode?: 'full' | 'inverted';\n}> = ({ html, anchorId, bgMode }) => {\n const isInverted = bgMode === 'inverted';\n const { colors } = useLibTheme();\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper clampWidth=\"normal\" addWhitespace>\n {html && <div dangerouslySetInnerHTML={{ __html: html }} />}\n </Wrapper>\n </Section>\n );\n};\n\nexport const HtmlCodeComponent = HtmlCode;\nexport default withLibTheme(HtmlCode);\n"],"names":["AccordionContainer","styled","div","withConfig","displayName","componentId","templateObject_1","__makeTemplateObject","spacings","nudge","View","details","templateObject_2","_a","theme","global","sections","edgeRadius","AccordionHead","summary","templateObject_3","isInverted","hasBg","color","getColors","elementBg","light","medium","mq","lightHover","mediumHover","Column","Copy","templateObject_4","AccordionText","templateObject_5","spacer","semilarge","gridSettings","gutter","AccordionBlock","label","text","aside","isSelected","onClick","itemIcon","className","colors","useLibTheme","React","createElement","open","onToggle","renderAs","size","type","Minus","iconColor","default","Plus","hasAside","innerHTML","Accordion$1","withLibTheme","anchorId","items","bgMode","_b","useState","currentItems","setCurrentItems","Section","addSeperation","bgColor","sectionBg","dark","mapToBgMode","generateFAQ","Wrapper","addWhitespace","Grid","Row","Col","map","i","indexOf","key","concat","prev","copy","__spreadArray","index","push","splice","primary","inverted","invertedHover","hover","Icon","MainLabel","Content","Title","ViewLink","Link","templateObject_6","Alert","title","date","description","link","customIcon","formattedDate","StatusFormatter","getTime","getFormattedDate","Info","textColor","__assign","ariaLabel","href","undefined","List","ul","ListItem","li","large","itemsPerRow","AlertList$1","alertCount","length","alertRefs","useEqualSheetHeight","listLength","identifiers","responsive","small","xlarge","item","ref","StyledTitle","ContentText","StyledActions","Actions","Article$1","titleAs","_c","titleSize","superTitle","superTitleAs","intro","asideText","halfAside","primaryAction","secondaryAction","hasContent","clampWidth","colorMode","valign","span","secondary","ContactView","Avatar","img","getGlobals","imagePlaceholderBg","Description","StyledIntro","IntroBlock","hasDecorator","StyledContactBox","avatar","src","alt","getGridWidth","cols","NewsletterWrapper","templateObject_7","Badge","templateObject_8","CallToAction$1","contact","badge","hasNewsletter","newsFormMain","isCentered","isTextCentered","SolidView","cardColor","hasLink","css","ImageView","imageTextGradient","StyledImage","Image","hasIcon","TextContainer","templateObject_9","Footer","SubLabel","templateObject_11","templateObject_12","CardLink","templateObject_13","Card","subLabel","image","decorator","CardView","defaultCardColor","coverSpace","ratios","w","h","templateObject_14","CardItem","templateObject_15","isEqual","threeCols","CardList$2","maxThreeCols","clamp","num","min","max","Math","Images","BackgroundImg","ForegroundContainer","hasTransition","hasAnim","initalValue","ForegroundImg","ForegroundOverlay","ImageLabel","ForegroundLabel","BackgroundLabel","ControlContainer","templateObject_10","Control","ComparisonSlider$1","initialValue","foregroundImg","backgroundImg","foregroundLabel","backgroundLabel","overlayColor","labelColor","dragControl","enableControlAnim","isIE","useIE","_d","slideValue","setSlideValue","_e","isHolding","setIsHolding","_f","isDragging","setIsDragging","_g","interacted","setInteracted","_h","sideOffset","setSideOffset","controlRef","useRef","useEffect","current","offsetWidth","handleInitalLoad","observer","IntersectionObserver","entries","isIntersecting","unobserve","target","rootMargin","threshold","observe","window","removeEventListener","document","readyState","addEventListener","setCurrentPos","clientX","relativeClientX","getBoundingClientRect","x","width","percentage","ev","currentTarget","onMouseMove","onMouseDown","onMouseUp","onMouseLeave","onTouchMove","touches","onTouchStart","onTouchEnd","style","left","ArrowLeftRight","clickable","IntroContainer","clampTitle","wrapper","ExternalIconHolder","withRange","PromotionCard","forwardRef","externalLinkIcon","icon","linkObj","isExternal","externalIconString","ReactDOMServer","renderToString","External","isMain","CrossPromotion$1","main","isMirrored","card","ImageContainer","SubTitle","Text","Fact","subTitle","showPlaceholder","FactFill","FactGrid$1","columns","facts","factCount","cardRefs","fact","FactsContainer","FactItem","hasBack","hasText","ContentBlock","FactList$1","TitleLink","copyStyle","font","getFonts","big","colorInverted","ArticleContent","Action","Feature","action","dataSheet","features","featureCount","isHalf","useMemo","halign","feature","Gallery$1","images","isFull","StyledSection","ItemContainer","Items","isVisible","Item","ItemLink","ShowMore","itemCount","IconList$1","toggle","showLessText","showMoreText","enableToggle","showMore","setShowMore","handleToggleClick","ratio","isToggled","clickHandler","additionalProps","Pointer","as","Label","IndexLink","LinkLabel","IconWrapper","IndexList$1","scrollToOffset","setTargetPos","useScrollTo","useMediaQueries","topOffset","setTopOffset","handleLinkClick","preventDefault","getAttribute","getElementById","split","top","scrollY","url","URL","location","hash","history","pushState","header","querySelector","navbarIdent","getNavbarState","navbarHeights","getFullNavbarHeights","ArrowDown","abstract","isStackable","clampAbstract","clampText","TitleIcon","NavBlock","customTitleIcon","Fragment","NavList$1","MEDIA_QUERIES","NumberListCard","digit","Callout","CardList","NumberList$1","useContext","ThemeContext","numbersRef","customMediaQueries","section","Parallax","hAlign","contentWidth","wrapperLarge","Container","figure","verticallyCentered","imageTextGradientCentered","Intro","wrapperWhitespace","Poster$1","horizontallyCentered","maxTitleLines","maxTextLines","ItemList","ItemBlock","ListHead","Price","PriceBlock","price","PriceList$1","isHighlighted","PriceTag","hasBackground","mode","Tag","PriceTable$1","priceTagCount","Source","Quote$1","source","citeUrl","cite","ImageWrapper","SimpleImage$1","Cards","FollowUs","Heading","InstagramIcon","SocialWall$1","hashTag","followUs","socialIcon","Instagram","TableSection","TableWrapper","Table$1","tableItems","TableBlock","Figure","Video","VideoBlock","isSplitted","mapToTeaserBgMode","preventSplit","Teaser$1","video","hasVideo","isValidArray","urls","viewRef","isLoaded","setLoaded","isVideoActive","setVideoActive","isObserverSupported","useObserverSupport","useUpdateEffect","entry","viewEl","move","muted","autoPlay","loop","onCanPlayThrough","aspectRatios","titleHyphens","getGridColOfContent","gridWidth","WideVideo","xxlarge","WideImage","seperation","padding","TeaserWide$1","TimelineBlock","isSwitched","isActive","TimelineText","ItemTitle","ItemTextBlock","Timeline$1","targetRefs","setTargetRefs","observerSupported","observerRef","activeItem","setActiveItem","forEach","findIndex","t","disconnect","Array","fill","_","createRef","bgImage","embedId","playIcon","consentText","consentAction","onPlayClick","VideoCard","VideoContainer","Overlay","VideoControls","button","RawVideo$1","videoUrls","placeholderImg","autoplay","isStarted","setIsStarted","controls","Play","MapSection","MapContainer","CardWrapper","CardContainer","InfoCardView","CardHeader","ContactList","ContactListLink","AddressContainer","CompanyInfo","companyName","address","street","postalCode","city","country","Desc","LocationInfoCard","addressIcon","addressIconContent","LocationPin","phoneIconContent","telephone","Phone","mailIconContent","email","Mail","Controls","FylToCtrlContainer","Map$1","provider","attribution","center","zoom","flyToZoom","initialLocation","locations","allMarkersOnInit","fitBoundsPadding","flyToControl","controlNext","controlPrev","activeLocationId","setActiveLocationId","isDirty","setIsDirty","activeLocation","find","l","id","defaultMarker","anchor","sizeActive","anchorActive","getSVGData","getSVGDataImg","useLeafletMap","activeMarkerId","markers","position","isInteractive","onMarkerClick","setMapContainer","setContainer","flyToActive","showAllMarkers","goToNext","currentIndex","newIndex","goToPrevious","generateLocalBusiness","stopPropagation","name","isDisabled","Icons","ArrowRightGhost","html","dangerouslySetInnerHTML","__html","moveRatio","direction","setIsLoaded","yTransform","setYTransform","cRef","setContainerRef","parallaxRef","isNaN","prevEl","previousElementSibling","bgIdent","dataset","stackIdent","setAttribute","handleScroll","containerPos","transform"],"mappings":"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"}