@blateral/b.kit 2.3.0-beta.1.3 → 2.3.0

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 (753) hide show
  1. package/lib/components/base/icons/Icons.d.ts +66 -0
  2. package/lib/components/base/icons/Icons.d.ts.map +1 -0
  3. package/{types → lib}/components/fields/FilterField.d.ts.map +1 -1
  4. package/lib/components/sections/NumberList.d.ts +36 -0
  5. package/lib/components/sections/NumberList.d.ts.map +1 -0
  6. package/{types → lib}/components/sections/header/Header.d.ts +3 -3
  7. package/lib/components/sections/header/Header.d.ts.map +1 -0
  8. package/lib/components/sections/navigation/menu/variations/MenuFlyout.d.ts.map +1 -0
  9. package/lib/components/sections/navigation/menu/variations/MenuLarge.d.ts.map +1 -0
  10. package/{types → lib}/components/typography/Callout.d.ts +2 -2
  11. package/lib/components/typography/Callout.d.ts.map +1 -0
  12. package/lib/index.d.ts +158 -0
  13. package/lib/index.d.ts.map +1 -0
  14. package/lib/index.es.js +2 -0
  15. package/lib/index.es.js.map +1 -0
  16. package/lib/index.js +2 -0
  17. package/lib/index.js.map +1 -0
  18. package/{types → lib}/utils/styles.d.ts +8 -1
  19. package/lib/utils/styles.d.ts.map +1 -0
  20. package/{types → lib}/utils/useEqualSheetHeight.d.ts +9 -2
  21. package/lib/utils/useEqualSheetHeight.d.ts.map +1 -0
  22. package/{types → lib}/utils/useMediaQuery.d.ts +4 -0
  23. package/{types → lib}/utils/useMediaQuery.d.ts.map +1 -1
  24. package/package.json +5 -19
  25. package/base/package.json +0 -7
  26. package/blocks/package.json +0 -7
  27. package/buttons/package.json +0 -7
  28. package/cjs/Actions-6dd616e0.js +0 -2
  29. package/cjs/Actions-6dd616e0.js.map +0 -1
  30. package/cjs/Bdot-d898ba3b.js +0 -2
  31. package/cjs/Bdot-d898ba3b.js.map +0 -1
  32. package/cjs/Button-72747f63.js +0 -2
  33. package/cjs/Button-72747f63.js.map +0 -1
  34. package/cjs/ButtonGhost-046437c5.js +0 -2
  35. package/cjs/ButtonGhost-046437c5.js.map +0 -1
  36. package/cjs/Callout-2713f870.js +0 -2
  37. package/cjs/Callout-2713f870.js.map +0 -1
  38. package/cjs/Checkbox-14000bf0.js +0 -2
  39. package/cjs/Checkbox-14000bf0.js.map +0 -1
  40. package/cjs/ClockFilled-2483aa4a.js +0 -2
  41. package/cjs/ClockFilled-2483aa4a.js.map +0 -1
  42. package/cjs/Control-eead1a4c.js +0 -2
  43. package/cjs/Control-eead1a4c.js.map +0 -1
  44. package/cjs/Copy-e860efe7.js +0 -2
  45. package/cjs/Copy-e860efe7.js.map +0 -1
  46. package/cjs/FilterField-497e998f.js +0 -2
  47. package/cjs/FilterField-497e998f.js.map +0 -1
  48. package/cjs/Image-d9681be0.js +0 -2
  49. package/cjs/Image-d9681be0.js.map +0 -1
  50. package/cjs/LanguageSwitcher-47e25e95.js +0 -2
  51. package/cjs/LanguageSwitcher-47e25e95.js.map +0 -1
  52. package/cjs/LibThemeProvider-fb99fd6d.js +0 -2
  53. package/cjs/LibThemeProvider-fb99fd6d.js.map +0 -1
  54. package/cjs/Link-70143bb7.js +0 -2
  55. package/cjs/Link-70143bb7.js.map +0 -1
  56. package/cjs/Navigation-3f5d6088.js +0 -2
  57. package/cjs/Navigation-3f5d6088.js.map +0 -1
  58. package/cjs/POICard-9911980e.js +0 -2
  59. package/cjs/POICard-9911980e.js.map +0 -1
  60. package/cjs/Pointer-3588eadf.js +0 -2
  61. package/cjs/Pointer-3588eadf.js.map +0 -1
  62. package/cjs/SocialList-da77e994.js +0 -2
  63. package/cjs/SocialList-da77e994.js.map +0 -1
  64. package/cjs/TableBlock-080c9c2e.js +0 -2
  65. package/cjs/TableBlock-080c9c2e.js.map +0 -1
  66. package/cjs/VideoCard-1fa209fc.js +0 -2
  67. package/cjs/VideoCard-1fa209fc.js.map +0 -1
  68. package/cjs/Wrapper-3b9c9e89.js +0 -2
  69. package/cjs/Wrapper-3b9c9e89.js.map +0 -1
  70. package/cjs/arrays-c272ed59.js +0 -2
  71. package/cjs/arrays-c272ed59.js.map +0 -1
  72. package/cjs/base.js +0 -2
  73. package/cjs/base.js.map +0 -1
  74. package/cjs/blocks.js +0 -2
  75. package/cjs/blocks.js.map +0 -1
  76. package/cjs/buttons.js +0 -2
  77. package/cjs/buttons.js.map +0 -1
  78. package/cjs/clamp-bd21d587.js +0 -2
  79. package/cjs/clamp-bd21d587.js.map +0 -1
  80. package/cjs/concat-f387d848.js +0 -2
  81. package/cjs/concat-f387d848.js.map +0 -1
  82. package/cjs/cookies.js +0 -2
  83. package/cjs/cookies.js.map +0 -1
  84. package/cjs/fields.js +0 -2
  85. package/cjs/fields.js.map +0 -1
  86. package/cjs/footer.js +0 -2
  87. package/cjs/footer.js.map +0 -1
  88. package/cjs/hexRgbConverter-91b28aea.js +0 -2
  89. package/cjs/hexRgbConverter-91b28aea.js.map +0 -1
  90. package/cjs/hooks.js +0 -2
  91. package/cjs/hooks.js.map +0 -1
  92. package/cjs/icons.js +0 -2
  93. package/cjs/icons.js.map +0 -1
  94. package/cjs/index.js +0 -2
  95. package/cjs/index.js.map +0 -1
  96. package/cjs/navigation-bf154e6e.js +0 -2
  97. package/cjs/navigation-bf154e6e.js.map +0 -1
  98. package/cjs/navigation.js +0 -2
  99. package/cjs/navigation.js.map +0 -1
  100. package/cjs/sections.js +0 -2
  101. package/cjs/sections.js.map +0 -1
  102. package/cjs/sections_news.js +0 -2
  103. package/cjs/sections_news.js.map +0 -1
  104. package/cjs/statusFormatter-0393122b.js +0 -2
  105. package/cjs/statusFormatter-0393122b.js.map +0 -1
  106. package/cjs/styles-0f1a0aea.js +0 -2
  107. package/cjs/styles-0f1a0aea.js.map +0 -1
  108. package/cjs/typography.js +0 -2
  109. package/cjs/typography.js.map +0 -1
  110. package/cjs/urlParams-1d03b5a6.js +0 -2
  111. package/cjs/urlParams-1d03b5a6.js.map +0 -1
  112. package/cjs/useCookieConsent-0bf94751.js +0 -2
  113. package/cjs/useCookieConsent-0bf94751.js.map +0 -1
  114. package/cjs/useGeolocation-4d38150b.js +0 -2
  115. package/cjs/useGeolocation-4d38150b.js.map +0 -1
  116. package/cjs/useIE-aef9decc.js +0 -2
  117. package/cjs/useIE-aef9decc.js.map +0 -1
  118. package/cjs/useMediaQuery-d4f81f88.js +0 -2
  119. package/cjs/useMediaQuery-d4f81f88.js.map +0 -1
  120. package/cjs/useMounted-0bba9869.js +0 -2
  121. package/cjs/useMounted-0bba9869.js.map +0 -1
  122. package/cjs/useObserverSupport-5ab320dd.js +0 -2
  123. package/cjs/useObserverSupport-5ab320dd.js.map +0 -1
  124. package/cjs/useUpdateEffect-4d233e2c.js +0 -2
  125. package/cjs/useUpdateEffect-4d233e2c.js.map +0 -1
  126. package/cookies/package.json +0 -7
  127. package/esm/Actions-73e13c48.js +0 -57
  128. package/esm/Actions-73e13c48.js.map +0 -1
  129. package/esm/Bdot-30b047cc.js +0 -24
  130. package/esm/Bdot-30b047cc.js.map +0 -1
  131. package/esm/Button-678be396.js +0 -115
  132. package/esm/Button-678be396.js.map +0 -1
  133. package/esm/ButtonGhost-6673a07e.js +0 -112
  134. package/esm/ButtonGhost-6673a07e.js.map +0 -1
  135. package/esm/Callout-439308f6.js +0 -99
  136. package/esm/Callout-439308f6.js.map +0 -1
  137. package/esm/Checkbox-a365d733.js +0 -135
  138. package/esm/Checkbox-a365d733.js.map +0 -1
  139. package/esm/ClockFilled-8784ddac.js +0 -1793
  140. package/esm/ClockFilled-8784ddac.js.map +0 -1
  141. package/esm/Control-e61c9395.js +0 -52
  142. package/esm/Control-e61c9395.js.map +0 -1
  143. package/esm/Copy-3444d005.js +0 -270
  144. package/esm/Copy-3444d005.js.map +0 -1
  145. package/esm/FilterField-f423b4d1.js +0 -4907
  146. package/esm/FilterField-f423b4d1.js.map +0 -1
  147. package/esm/Image-82417953.js +0 -193
  148. package/esm/Image-82417953.js.map +0 -1
  149. package/esm/LanguageSwitcher-a53094d3.js +0 -70
  150. package/esm/LanguageSwitcher-a53094d3.js.map +0 -1
  151. package/esm/LibThemeProvider-90a5375f.js +0 -115
  152. package/esm/LibThemeProvider-90a5375f.js.map +0 -1
  153. package/esm/Link-ee8a48ed.js +0 -60
  154. package/esm/Link-ee8a48ed.js.map +0 -1
  155. package/esm/Navigation-ece0ff0d.js +0 -1664
  156. package/esm/Navigation-ece0ff0d.js.map +0 -1
  157. package/esm/POICard-d8832988.js +0 -917
  158. package/esm/POICard-d8832988.js.map +0 -1
  159. package/esm/Pointer-da4d0977.js +0 -111
  160. package/esm/Pointer-da4d0977.js.map +0 -1
  161. package/esm/SocialList-7c00c70e.js +0 -61
  162. package/esm/SocialList-7c00c70e.js.map +0 -1
  163. package/esm/TableBlock-0bbde956.js +0 -218
  164. package/esm/TableBlock-0bbde956.js.map +0 -1
  165. package/esm/VideoCard-2557407b.js +0 -187
  166. package/esm/VideoCard-2557407b.js.map +0 -1
  167. package/esm/Wrapper-f4a70e30.js +0 -420
  168. package/esm/Wrapper-f4a70e30.js.map +0 -1
  169. package/esm/arrays-65b644ef.js +0 -17
  170. package/esm/arrays-65b644ef.js.map +0 -1
  171. package/esm/base.js +0 -10
  172. package/esm/base.js.map +0 -1
  173. package/esm/blocks.js +0 -22
  174. package/esm/blocks.js.map +0 -1
  175. package/esm/buttons.js +0 -12
  176. package/esm/buttons.js.map +0 -1
  177. package/esm/clamp-12d37b65.js +0 -10
  178. package/esm/clamp-12d37b65.js.map +0 -1
  179. package/esm/concat-ab3c66f2.js +0 -40
  180. package/esm/concat-ab3c66f2.js.map +0 -1
  181. package/esm/cookies.js +0 -270
  182. package/esm/cookies.js.map +0 -1
  183. package/esm/fields.js +0 -187
  184. package/esm/fields.js.map +0 -1
  185. package/esm/footer.js +0 -300
  186. package/esm/footer.js.map +0 -1
  187. package/esm/hexRgbConverter-edb91624.js +0 -36
  188. package/esm/hexRgbConverter-edb91624.js.map +0 -1
  189. package/esm/hooks.js +0 -527
  190. package/esm/hooks.js.map +0 -1
  191. package/esm/icons.js +0 -4
  192. package/esm/icons.js.map +0 -1
  193. package/esm/index.js +0 -7
  194. package/esm/index.js.map +0 -1
  195. package/esm/navigation-49280321.js +0 -132
  196. package/esm/navigation-49280321.js.map +0 -1
  197. package/esm/navigation.js +0 -159
  198. package/esm/navigation.js.map +0 -1
  199. package/esm/sections.js +0 -7126
  200. package/esm/sections.js.map +0 -1
  201. package/esm/sections_news.js +0 -1018
  202. package/esm/sections_news.js.map +0 -1
  203. package/esm/statusFormatter-9be0fbff.js +0 -255
  204. package/esm/statusFormatter-9be0fbff.js.map +0 -1
  205. package/esm/styles-5f78e59d.js +0 -462
  206. package/esm/styles-5f78e59d.js.map +0 -1
  207. package/esm/typography.js +0 -11
  208. package/esm/typography.js.map +0 -1
  209. package/esm/urlParams-882563ce.js +0 -297
  210. package/esm/urlParams-882563ce.js.map +0 -1
  211. package/esm/useCookieConsent-db86e5cb.js +0 -339
  212. package/esm/useCookieConsent-db86e5cb.js.map +0 -1
  213. package/esm/useGeolocation-c81e3efc.js +0 -471
  214. package/esm/useGeolocation-c81e3efc.js.map +0 -1
  215. package/esm/useIE-a9c56989.js +0 -15
  216. package/esm/useIE-a9c56989.js.map +0 -1
  217. package/esm/useMediaQuery-43629cbb.js +0 -109
  218. package/esm/useMediaQuery-43629cbb.js.map +0 -1
  219. package/esm/useMounted-1e4cc87b.js +0 -12
  220. package/esm/useMounted-1e4cc87b.js.map +0 -1
  221. package/esm/useObserverSupport-02bce7f5.js +0 -19
  222. package/esm/useObserverSupport-02bce7f5.js.map +0 -1
  223. package/esm/useUpdateEffect-824c0c84.js +0 -18
  224. package/esm/useUpdateEffect-824c0c84.js.map +0 -1
  225. package/fields/package.json +0 -7
  226. package/footer/package.json +0 -7
  227. package/hooks/package.json +0 -7
  228. package/icons/package.json +0 -7
  229. package/navigation/package.json +0 -7
  230. package/sections/news/package.json +0 -7
  231. package/sections/package.json +0 -7
  232. package/types/base.d.ts +0 -5
  233. package/types/base.d.ts.map +0 -1
  234. package/types/blocks.d.ts +0 -18
  235. package/types/blocks.d.ts.map +0 -1
  236. package/types/buttons.d.ts +0 -6
  237. package/types/buttons.d.ts.map +0 -1
  238. package/types/components/sections/NumberList.d.ts +0 -31
  239. package/types/components/sections/NumberList.d.ts.map +0 -1
  240. package/types/components/sections/header/Header.d.ts.map +0 -1
  241. package/types/components/sections/navigation/menu/variations/MenuFlyout.d.ts.map +0 -1
  242. package/types/components/sections/navigation/menu/variations/MenuLarge.d.ts.map +0 -1
  243. package/types/components/typography/Callout.d.ts.map +0 -1
  244. package/types/cookies.d.ts +0 -3
  245. package/types/cookies.d.ts.map +0 -1
  246. package/types/fields.d.ts +0 -14
  247. package/types/fields.d.ts.map +0 -1
  248. package/types/footer.d.ts +0 -4
  249. package/types/footer.d.ts.map +0 -1
  250. package/types/hooks.d.ts +0 -35
  251. package/types/hooks.d.ts.map +0 -1
  252. package/types/icons.d.ts +0 -66
  253. package/types/icons.d.ts.map +0 -1
  254. package/types/index.d.ts +0 -18
  255. package/types/index.d.ts.map +0 -1
  256. package/types/navigation.d.ts +0 -10
  257. package/types/navigation.d.ts.map +0 -1
  258. package/types/sections.d.ts +0 -42
  259. package/types/sections.d.ts.map +0 -1
  260. package/types/sections_news.d.ts +0 -10
  261. package/types/sections_news.d.ts.map +0 -1
  262. package/types/typography.d.ts +0 -6
  263. package/types/typography.d.ts.map +0 -1
  264. package/types/utils/styles.d.ts.map +0 -1
  265. package/types/utils/useEqualSheetHeight.d.ts.map +0 -1
  266. package/typography/package.json +0 -7
  267. /package/{types → lib}/components/base/Grid.d.ts +0 -0
  268. /package/{types → lib}/components/base/Grid.d.ts.map +0 -0
  269. /package/{types → lib}/components/base/Section.d.ts +0 -0
  270. /package/{types → lib}/components/base/Section.d.ts.map +0 -0
  271. /package/{types → lib}/components/base/Wrapper.d.ts +0 -0
  272. /package/{types → lib}/components/base/Wrapper.d.ts.map +0 -0
  273. /package/{types → lib}/components/base/icons/AngleDown.d.ts +0 -0
  274. /package/{types → lib}/components/base/icons/AngleDown.d.ts.map +0 -0
  275. /package/{types → lib}/components/base/icons/AngleLeft.d.ts +0 -0
  276. /package/{types → lib}/components/base/icons/AngleLeft.d.ts.map +0 -0
  277. /package/{types → lib}/components/base/icons/AngleRight.d.ts +0 -0
  278. /package/{types → lib}/components/base/icons/AngleRight.d.ts.map +0 -0
  279. /package/{types → lib}/components/base/icons/AngleUp.d.ts +0 -0
  280. /package/{types → lib}/components/base/icons/AngleUp.d.ts.map +0 -0
  281. /package/{types → lib}/components/base/icons/ArrowDown.d.ts +0 -0
  282. /package/{types → lib}/components/base/icons/ArrowDown.d.ts.map +0 -0
  283. /package/{types → lib}/components/base/icons/ArrowLeft.d.ts +0 -0
  284. /package/{types → lib}/components/base/icons/ArrowLeft.d.ts.map +0 -0
  285. /package/{types → lib}/components/base/icons/ArrowLeftGhost.d.ts +0 -0
  286. /package/{types → lib}/components/base/icons/ArrowLeftGhost.d.ts.map +0 -0
  287. /package/{types → lib}/components/base/icons/ArrowLeftRight.d.ts +0 -0
  288. /package/{types → lib}/components/base/icons/ArrowLeftRight.d.ts.map +0 -0
  289. /package/{types → lib}/components/base/icons/ArrowRight.d.ts +0 -0
  290. /package/{types → lib}/components/base/icons/ArrowRight.d.ts.map +0 -0
  291. /package/{types → lib}/components/base/icons/ArrowRightGhost.d.ts +0 -0
  292. /package/{types → lib}/components/base/icons/ArrowRightGhost.d.ts.map +0 -0
  293. /package/{types → lib}/components/base/icons/ArrowUp.d.ts +0 -0
  294. /package/{types → lib}/components/base/icons/ArrowUp.d.ts.map +0 -0
  295. /package/{types → lib}/components/base/icons/BoxArrowUpRight.d.ts +0 -0
  296. /package/{types → lib}/components/base/icons/BoxArrowUpRight.d.ts.map +0 -0
  297. /package/{types → lib}/components/base/icons/CalendarToday.d.ts +0 -0
  298. /package/{types → lib}/components/base/icons/CalendarToday.d.ts.map +0 -0
  299. /package/{types → lib}/components/base/icons/Category.d.ts +0 -0
  300. /package/{types → lib}/components/base/icons/Category.d.ts.map +0 -0
  301. /package/{types → lib}/components/base/icons/Check.d.ts +0 -0
  302. /package/{types → lib}/components/base/icons/Check.d.ts.map +0 -0
  303. /package/{types → lib}/components/base/icons/Clock.d.ts +0 -0
  304. /package/{types → lib}/components/base/icons/Clock.d.ts.map +0 -0
  305. /package/{types → lib}/components/base/icons/ClockFilled.d.ts +0 -0
  306. /package/{types → lib}/components/base/icons/ClockFilled.d.ts.map +0 -0
  307. /package/{types → lib}/components/base/icons/Computer.d.ts +0 -0
  308. /package/{types → lib}/components/base/icons/Computer.d.ts.map +0 -0
  309. /package/{types → lib}/components/base/icons/Cross.d.ts +0 -0
  310. /package/{types → lib}/components/base/icons/Cross.d.ts.map +0 -0
  311. /package/{types → lib}/components/base/icons/CrossSmall.d.ts +0 -0
  312. /package/{types → lib}/components/base/icons/CrossSmall.d.ts.map +0 -0
  313. /package/{types → lib}/components/base/icons/CurrentLocation.d.ts +0 -0
  314. /package/{types → lib}/components/base/icons/CurrentLocation.d.ts.map +0 -0
  315. /package/{types → lib}/components/base/icons/DateRange.d.ts +0 -0
  316. /package/{types → lib}/components/base/icons/DateRange.d.ts.map +0 -0
  317. /package/{types → lib}/components/base/icons/DeleteForever.d.ts +0 -0
  318. /package/{types → lib}/components/base/icons/DeleteForever.d.ts.map +0 -0
  319. /package/{types → lib}/components/base/icons/External.d.ts +0 -0
  320. /package/{types → lib}/components/base/icons/External.d.ts.map +0 -0
  321. /package/{types → lib}/components/base/icons/Filter.d.ts +0 -0
  322. /package/{types → lib}/components/base/icons/Filter.d.ts.map +0 -0
  323. /package/{types → lib}/components/base/icons/FlyTo.d.ts +0 -0
  324. /package/{types → lib}/components/base/icons/FlyTo.d.ts.map +0 -0
  325. /package/{types → lib}/components/base/icons/Info.d.ts +0 -0
  326. /package/{types → lib}/components/base/icons/Info.d.ts.map +0 -0
  327. /package/{types → lib}/components/base/icons/Language.d.ts +0 -0
  328. /package/{types → lib}/components/base/icons/Language.d.ts.map +0 -0
  329. /package/{types → lib}/components/base/icons/LocationPin.d.ts +0 -0
  330. /package/{types → lib}/components/base/icons/LocationPin.d.ts.map +0 -0
  331. /package/{types → lib}/components/base/icons/LocationSearch.d.ts +0 -0
  332. /package/{types → lib}/components/base/icons/LocationSearch.d.ts.map +0 -0
  333. /package/{types → lib}/components/base/icons/Magnifier.d.ts +0 -0
  334. /package/{types → lib}/components/base/icons/Magnifier.d.ts.map +0 -0
  335. /package/{types → lib}/components/base/icons/Mail.d.ts +0 -0
  336. /package/{types → lib}/components/base/icons/Mail.d.ts.map +0 -0
  337. /package/{types → lib}/components/base/icons/Map.d.ts +0 -0
  338. /package/{types → lib}/components/base/icons/Map.d.ts.map +0 -0
  339. /package/{types → lib}/components/base/icons/MenuBurger.d.ts +0 -0
  340. /package/{types → lib}/components/base/icons/MenuBurger.d.ts.map +0 -0
  341. /package/{types → lib}/components/base/icons/Minus.d.ts +0 -0
  342. /package/{types → lib}/components/base/icons/Minus.d.ts.map +0 -0
  343. /package/{types → lib}/components/base/icons/Money.d.ts +0 -0
  344. /package/{types → lib}/components/base/icons/Money.d.ts.map +0 -0
  345. /package/{types → lib}/components/base/icons/MyLocation.d.ts +0 -0
  346. /package/{types → lib}/components/base/icons/MyLocation.d.ts.map +0 -0
  347. /package/{types → lib}/components/base/icons/Person.d.ts +0 -0
  348. /package/{types → lib}/components/base/icons/Person.d.ts.map +0 -0
  349. /package/{types → lib}/components/base/icons/Phone.d.ts +0 -0
  350. /package/{types → lib}/components/base/icons/Phone.d.ts.map +0 -0
  351. /package/{types → lib}/components/base/icons/Place.d.ts +0 -0
  352. /package/{types → lib}/components/base/icons/Place.d.ts.map +0 -0
  353. /package/{types → lib}/components/base/icons/Play.d.ts +0 -0
  354. /package/{types → lib}/components/base/icons/Play.d.ts.map +0 -0
  355. /package/{types → lib}/components/base/icons/Plus.d.ts +0 -0
  356. /package/{types → lib}/components/base/icons/Plus.d.ts.map +0 -0
  357. /package/{types → lib}/components/base/icons/Route.d.ts +0 -0
  358. /package/{types → lib}/components/base/icons/Route.d.ts.map +0 -0
  359. /package/{types → lib}/components/base/icons/Star.d.ts +0 -0
  360. /package/{types → lib}/components/base/icons/Star.d.ts.map +0 -0
  361. /package/{types → lib}/components/base/icons/ToggleOff.d.ts +0 -0
  362. /package/{types → lib}/components/base/icons/ToggleOff.d.ts.map +0 -0
  363. /package/{types → lib}/components/base/icons/ToggleOn.d.ts +0 -0
  364. /package/{types → lib}/components/base/icons/ToggleOn.d.ts.map +0 -0
  365. /package/{types → lib}/components/base/icons/UnfoldMore.d.ts +0 -0
  366. /package/{types → lib}/components/base/icons/UnfoldMore.d.ts.map +0 -0
  367. /package/{types → lib}/components/base/icons/files/Excel.d.ts +0 -0
  368. /package/{types → lib}/components/base/icons/files/Excel.d.ts.map +0 -0
  369. /package/{types → lib}/components/base/icons/files/Image.d.ts +0 -0
  370. /package/{types → lib}/components/base/icons/files/Image.d.ts.map +0 -0
  371. /package/{types → lib}/components/base/icons/files/Pdf.d.ts +0 -0
  372. /package/{types → lib}/components/base/icons/files/Pdf.d.ts.map +0 -0
  373. /package/{types → lib}/components/base/icons/files/PowerPoint.d.ts +0 -0
  374. /package/{types → lib}/components/base/icons/files/PowerPoint.d.ts.map +0 -0
  375. /package/{types → lib}/components/base/icons/files/UploadFile.d.ts +0 -0
  376. /package/{types → lib}/components/base/icons/files/UploadFile.d.ts.map +0 -0
  377. /package/{types → lib}/components/base/icons/files/Word.d.ts +0 -0
  378. /package/{types → lib}/components/base/icons/files/Word.d.ts.map +0 -0
  379. /package/{types → lib}/components/base/icons/files/Zip.d.ts +0 -0
  380. /package/{types → lib}/components/base/icons/files/Zip.d.ts.map +0 -0
  381. /package/{types → lib}/components/base/icons/socials/Facebook.d.ts +0 -0
  382. /package/{types → lib}/components/base/icons/socials/Facebook.d.ts.map +0 -0
  383. /package/{types → lib}/components/base/icons/socials/Instagram.d.ts +0 -0
  384. /package/{types → lib}/components/base/icons/socials/Instagram.d.ts.map +0 -0
  385. /package/{types → lib}/components/base/icons/socials/LinkedIn.d.ts +0 -0
  386. /package/{types → lib}/components/base/icons/socials/LinkedIn.d.ts.map +0 -0
  387. /package/{types → lib}/components/base/icons/socials/Twitter.d.ts +0 -0
  388. /package/{types → lib}/components/base/icons/socials/Twitter.d.ts.map +0 -0
  389. /package/{types → lib}/components/base/icons/socials/Xing.d.ts +0 -0
  390. /package/{types → lib}/components/base/icons/socials/Xing.d.ts.map +0 -0
  391. /package/{types → lib}/components/base/icons/socials/Youtube.d.ts +0 -0
  392. /package/{types → lib}/components/base/icons/socials/Youtube.d.ts.map +0 -0
  393. /package/{types → lib}/components/base/nl2br.d.ts +0 -0
  394. /package/{types → lib}/components/base/nl2br.d.ts.map +0 -0
  395. /package/{types → lib}/components/blocks/Actions.d.ts +0 -0
  396. /package/{types → lib}/components/blocks/Actions.d.ts.map +0 -0
  397. /package/{types → lib}/components/blocks/Alert.d.ts +0 -0
  398. /package/{types → lib}/components/blocks/Alert.d.ts.map +0 -0
  399. /package/{types → lib}/components/blocks/Bdot.d.ts +0 -0
  400. /package/{types → lib}/components/blocks/Bdot.d.ts.map +0 -0
  401. /package/{types → lib}/components/blocks/CookieConsent.d.ts +0 -0
  402. /package/{types → lib}/components/blocks/CookieConsent.d.ts.map +0 -0
  403. /package/{types → lib}/components/blocks/EventBlock.d.ts +0 -0
  404. /package/{types → lib}/components/blocks/EventBlock.d.ts.map +0 -0
  405. /package/{types → lib}/components/blocks/Fact.d.ts +0 -0
  406. /package/{types → lib}/components/blocks/Fact.d.ts.map +0 -0
  407. /package/{types → lib}/components/blocks/Feature.d.ts +0 -0
  408. /package/{types → lib}/components/blocks/Feature.d.ts.map +0 -0
  409. /package/{types → lib}/components/blocks/Image.d.ts +0 -0
  410. /package/{types → lib}/components/blocks/Image.d.ts.map +0 -0
  411. /package/{types → lib}/components/blocks/InfoList.d.ts +0 -0
  412. /package/{types → lib}/components/blocks/InfoList.d.ts.map +0 -0
  413. /package/{types → lib}/components/blocks/IntroBlock.d.ts +0 -0
  414. /package/{types → lib}/components/blocks/IntroBlock.d.ts.map +0 -0
  415. /package/{types → lib}/components/blocks/JobCard.d.ts +0 -0
  416. /package/{types → lib}/components/blocks/JobCard.d.ts.map +0 -0
  417. /package/{types → lib}/components/blocks/LanguageSwitcher.d.ts +0 -0
  418. /package/{types → lib}/components/blocks/LanguageSwitcher.d.ts.map +0 -0
  419. /package/{types → lib}/components/blocks/NavBlock.d.ts +0 -0
  420. /package/{types → lib}/components/blocks/NavBlock.d.ts.map +0 -0
  421. /package/{types → lib}/components/blocks/NewsCard.d.ts +0 -0
  422. /package/{types → lib}/components/blocks/NewsCard.d.ts.map +0 -0
  423. /package/{types → lib}/components/blocks/POICard.d.ts +0 -0
  424. /package/{types → lib}/components/blocks/POICard.d.ts.map +0 -0
  425. /package/{types → lib}/components/blocks/POIFacts.d.ts +0 -0
  426. /package/{types → lib}/components/blocks/POIFacts.d.ts.map +0 -0
  427. /package/{types → lib}/components/blocks/PriceTag.d.ts +0 -0
  428. /package/{types → lib}/components/blocks/PriceTag.d.ts.map +0 -0
  429. /package/{types → lib}/components/blocks/PromotionCard.d.ts +0 -0
  430. /package/{types → lib}/components/blocks/PromotionCard.d.ts.map +0 -0
  431. /package/{types → lib}/components/blocks/SocialList.d.ts +0 -0
  432. /package/{types → lib}/components/blocks/SocialList.d.ts.map +0 -0
  433. /package/{types → lib}/components/blocks/TableBlock.d.ts +0 -0
  434. /package/{types → lib}/components/blocks/TableBlock.d.ts.map +0 -0
  435. /package/{types → lib}/components/blocks/Tag.d.ts +0 -0
  436. /package/{types → lib}/components/blocks/Tag.d.ts.map +0 -0
  437. /package/{types → lib}/components/blocks/Title.d.ts +0 -0
  438. /package/{types → lib}/components/blocks/Title.d.ts.map +0 -0
  439. /package/{types → lib}/components/blocks/VideoBlock.d.ts +0 -0
  440. /package/{types → lib}/components/blocks/VideoBlock.d.ts.map +0 -0
  441. /package/{types → lib}/components/blocks/VideoCard.d.ts +0 -0
  442. /package/{types → lib}/components/blocks/VideoCard.d.ts.map +0 -0
  443. /package/{types → lib}/components/buttons/Button.d.ts +0 -0
  444. /package/{types → lib}/components/buttons/Button.d.ts.map +0 -0
  445. /package/{types → lib}/components/buttons/ButtonGhost.d.ts +0 -0
  446. /package/{types → lib}/components/buttons/ButtonGhost.d.ts.map +0 -0
  447. /package/{types → lib}/components/buttons/Control.d.ts +0 -0
  448. /package/{types → lib}/components/buttons/Control.d.ts.map +0 -0
  449. /package/{types → lib}/components/buttons/Pointer.d.ts +0 -0
  450. /package/{types → lib}/components/buttons/Pointer.d.ts.map +0 -0
  451. /package/{types → lib}/components/debug/DebugLines.d.ts +0 -0
  452. /package/{types → lib}/components/debug/DebugLines.d.ts.map +0 -0
  453. /package/{types → lib}/components/examples/hooks/ArrayHookExample.d.ts +0 -0
  454. /package/{types → lib}/components/examples/hooks/ArrayHookExample.d.ts.map +0 -0
  455. /package/{types → lib}/components/examples/hooks/IntervalHookExample.d.ts +0 -0
  456. /package/{types → lib}/components/examples/hooks/IntervalHookExample.d.ts.map +0 -0
  457. /package/{types → lib}/components/fields/Checkbox.d.ts +0 -0
  458. /package/{types → lib}/components/fields/Checkbox.d.ts.map +0 -0
  459. /package/{types → lib}/components/fields/CompactForm.d.ts +0 -0
  460. /package/{types → lib}/components/fields/CompactForm.d.ts.map +0 -0
  461. /package/{types → lib}/components/fields/Datepicker.d.ts +0 -0
  462. /package/{types → lib}/components/fields/Datepicker.d.ts.map +0 -0
  463. /package/{types → lib}/components/fields/FileUpload.d.ts +0 -0
  464. /package/{types → lib}/components/fields/FileUpload.d.ts.map +0 -0
  465. /package/{types → lib}/components/fields/FilterField.d.ts +0 -0
  466. /package/{types → lib}/components/fields/FormField.d.ts +0 -0
  467. /package/{types → lib}/components/fields/FormField.d.ts.map +0 -0
  468. /package/{types → lib}/components/fields/LocationField.d.ts +0 -0
  469. /package/{types → lib}/components/fields/LocationField.d.ts.map +0 -0
  470. /package/{types → lib}/components/fields/Radio.d.ts +0 -0
  471. /package/{types → lib}/components/fields/Radio.d.ts.map +0 -0
  472. /package/{types → lib}/components/fields/SearchInput.d.ts +0 -0
  473. /package/{types → lib}/components/fields/SearchInput.d.ts.map +0 -0
  474. /package/{types → lib}/components/fields/SelectDropdown.d.ts +0 -0
  475. /package/{types → lib}/components/fields/SelectDropdown.d.ts.map +0 -0
  476. /package/{types → lib}/components/fields/Textarea.d.ts +0 -0
  477. /package/{types → lib}/components/fields/Textarea.d.ts.map +0 -0
  478. /package/{types → lib}/components/fields/Textfield.d.ts +0 -0
  479. /package/{types → lib}/components/fields/Textfield.d.ts.map +0 -0
  480. /package/{types → lib}/components/sections/Accordion.d.ts +0 -0
  481. /package/{types → lib}/components/sections/Accordion.d.ts.map +0 -0
  482. /package/{types → lib}/components/sections/AlertList.d.ts +0 -0
  483. /package/{types → lib}/components/sections/AlertList.d.ts.map +0 -0
  484. /package/{types → lib}/components/sections/Article.d.ts +0 -0
  485. /package/{types → lib}/components/sections/Article.d.ts.map +0 -0
  486. /package/{types → lib}/components/sections/CallToAction.d.ts +0 -0
  487. /package/{types → lib}/components/sections/CallToAction.d.ts.map +0 -0
  488. /package/{types → lib}/components/sections/CardList.d.ts +0 -0
  489. /package/{types → lib}/components/sections/CardList.d.ts.map +0 -0
  490. /package/{types → lib}/components/sections/ComparisonSlider.d.ts +0 -0
  491. /package/{types → lib}/components/sections/ComparisonSlider.d.ts.map +0 -0
  492. /package/{types → lib}/components/sections/CrossPromotion.d.ts +0 -0
  493. /package/{types → lib}/components/sections/CrossPromotion.d.ts.map +0 -0
  494. /package/{types → lib}/components/sections/FactGrid.d.ts +0 -0
  495. /package/{types → lib}/components/sections/FactGrid.d.ts.map +0 -0
  496. /package/{types → lib}/components/sections/FactList.d.ts +0 -0
  497. /package/{types → lib}/components/sections/FactList.d.ts.map +0 -0
  498. /package/{types → lib}/components/sections/FeatureList.d.ts +0 -0
  499. /package/{types → lib}/components/sections/FeatureList.d.ts.map +0 -0
  500. /package/{types → lib}/components/sections/Gallery.d.ts +0 -0
  501. /package/{types → lib}/components/sections/Gallery.d.ts.map +0 -0
  502. /package/{types → lib}/components/sections/IconList.d.ts +0 -0
  503. /package/{types → lib}/components/sections/IconList.d.ts.map +0 -0
  504. /package/{types → lib}/components/sections/IndexList.d.ts +0 -0
  505. /package/{types → lib}/components/sections/IndexList.d.ts.map +0 -0
  506. /package/{types → lib}/components/sections/Intro.d.ts +0 -0
  507. /package/{types → lib}/components/sections/Intro.d.ts.map +0 -0
  508. /package/{types → lib}/components/sections/Map.d.ts +0 -0
  509. /package/{types → lib}/components/sections/Map.d.ts.map +0 -0
  510. /package/{types → lib}/components/sections/NavList.d.ts +0 -0
  511. /package/{types → lib}/components/sections/NavList.d.ts.map +0 -0
  512. /package/{types → lib}/components/sections/NewsletterForm.d.ts +0 -0
  513. /package/{types → lib}/components/sections/NewsletterForm.d.ts.map +0 -0
  514. /package/{types → lib}/components/sections/ParallaxBackground.d.ts +0 -0
  515. /package/{types → lib}/components/sections/ParallaxBackground.d.ts.map +0 -0
  516. /package/{types → lib}/components/sections/Poster.d.ts +0 -0
  517. /package/{types → lib}/components/sections/Poster.d.ts.map +0 -0
  518. /package/{types → lib}/components/sections/PriceList.d.ts +0 -0
  519. /package/{types → lib}/components/sections/PriceList.d.ts.map +0 -0
  520. /package/{types → lib}/components/sections/PriceTable.d.ts +0 -0
  521. /package/{types → lib}/components/sections/PriceTable.d.ts.map +0 -0
  522. /package/{types → lib}/components/sections/Quote.d.ts +0 -0
  523. /package/{types → lib}/components/sections/Quote.d.ts.map +0 -0
  524. /package/{types → lib}/components/sections/RawVideo.d.ts +0 -0
  525. /package/{types → lib}/components/sections/RawVideo.d.ts.map +0 -0
  526. /package/{types → lib}/components/sections/SimpleImage.d.ts +0 -0
  527. /package/{types → lib}/components/sections/SimpleImage.d.ts.map +0 -0
  528. /package/{types → lib}/components/sections/SocialWall.d.ts +0 -0
  529. /package/{types → lib}/components/sections/SocialWall.d.ts.map +0 -0
  530. /package/{types → lib}/components/sections/Table.d.ts +0 -0
  531. /package/{types → lib}/components/sections/Table.d.ts.map +0 -0
  532. /package/{types → lib}/components/sections/Teaser.d.ts +0 -0
  533. /package/{types → lib}/components/sections/Teaser.d.ts.map +0 -0
  534. /package/{types → lib}/components/sections/TeaserWide.d.ts +0 -0
  535. /package/{types → lib}/components/sections/TeaserWide.d.ts.map +0 -0
  536. /package/{types → lib}/components/sections/Timeline.d.ts +0 -0
  537. /package/{types → lib}/components/sections/Timeline.d.ts.map +0 -0
  538. /package/{types → lib}/components/sections/Video.d.ts +0 -0
  539. /package/{types → lib}/components/sections/Video.d.ts.map +0 -0
  540. /package/{types → lib}/components/sections/events/EventDetail.d.ts +0 -0
  541. /package/{types → lib}/components/sections/events/EventDetail.d.ts.map +0 -0
  542. /package/{types → lib}/components/sections/events/EventList.d.ts +0 -0
  543. /package/{types → lib}/components/sections/events/EventList.d.ts.map +0 -0
  544. /package/{types → lib}/components/sections/events/EventOverview.d.ts +0 -0
  545. /package/{types → lib}/components/sections/events/EventOverview.d.ts.map +0 -0
  546. /package/{types → lib}/components/sections/footer/Footer.d.ts +0 -0
  547. /package/{types → lib}/components/sections/footer/Footer.d.ts.map +0 -0
  548. /package/{types → lib}/components/sections/footer/partials/FooterBottomBar.d.ts +0 -0
  549. /package/{types → lib}/components/sections/footer/partials/FooterBottomBar.d.ts.map +0 -0
  550. /package/{types → lib}/components/sections/footer/partials/FooterColumn.d.ts +0 -0
  551. /package/{types → lib}/components/sections/footer/partials/FooterColumn.d.ts.map +0 -0
  552. /package/{types → lib}/components/sections/footer/partials/index.d.ts +0 -0
  553. /package/{types → lib}/components/sections/footer/partials/index.d.ts.map +0 -0
  554. /package/{types → lib}/components/sections/footer/skeletons/FooterArticle.d.ts +0 -0
  555. /package/{types → lib}/components/sections/footer/skeletons/FooterArticle.d.ts.map +0 -0
  556. /package/{types → lib}/components/sections/footer/skeletons/FooterBottomGrid.d.ts +0 -0
  557. /package/{types → lib}/components/sections/footer/skeletons/FooterBottomGrid.d.ts.map +0 -0
  558. /package/{types → lib}/components/sections/footer/skeletons/index.d.ts +0 -0
  559. /package/{types → lib}/components/sections/footer/skeletons/index.d.ts.map +0 -0
  560. /package/{types → lib}/components/sections/form/DynamicForm.d.ts +0 -0
  561. /package/{types → lib}/components/sections/form/DynamicForm.d.ts.map +0 -0
  562. /package/{types → lib}/components/sections/form/renderer/areaRenderer.d.ts +0 -0
  563. /package/{types → lib}/components/sections/form/renderer/areaRenderer.d.ts.map +0 -0
  564. /package/{types → lib}/components/sections/form/renderer/datepickerRenderer.d.ts +0 -0
  565. /package/{types → lib}/components/sections/form/renderer/datepickerRenderer.d.ts.map +0 -0
  566. /package/{types → lib}/components/sections/form/renderer/fieldGroupRenderer.d.ts +0 -0
  567. /package/{types → lib}/components/sections/form/renderer/fieldGroupRenderer.d.ts.map +0 -0
  568. /package/{types → lib}/components/sections/form/renderer/fieldRenderer.d.ts +0 -0
  569. /package/{types → lib}/components/sections/form/renderer/fieldRenderer.d.ts.map +0 -0
  570. /package/{types → lib}/components/sections/form/renderer/locationRenderer.d.ts +0 -0
  571. /package/{types → lib}/components/sections/form/renderer/locationRenderer.d.ts.map +0 -0
  572. /package/{types → lib}/components/sections/form/renderer/selectRenderer.d.ts +0 -0
  573. /package/{types → lib}/components/sections/form/renderer/selectRenderer.d.ts.map +0 -0
  574. /package/{types → lib}/components/sections/form/renderer/uploadRenderer.d.ts +0 -0
  575. /package/{types → lib}/components/sections/form/renderer/uploadRenderer.d.ts.map +0 -0
  576. /package/{types → lib}/components/sections/form/validators/areaValidator.d.ts +0 -0
  577. /package/{types → lib}/components/sections/form/validators/areaValidator.d.ts.map +0 -0
  578. /package/{types → lib}/components/sections/form/validators/datepickerValidator.d.ts +0 -0
  579. /package/{types → lib}/components/sections/form/validators/datepickerValidator.d.ts.map +0 -0
  580. /package/{types → lib}/components/sections/form/validators/fieldGroupValidator.d.ts +0 -0
  581. /package/{types → lib}/components/sections/form/validators/fieldGroupValidator.d.ts.map +0 -0
  582. /package/{types → lib}/components/sections/form/validators/fieldValidator.d.ts +0 -0
  583. /package/{types → lib}/components/sections/form/validators/fieldValidator.d.ts.map +0 -0
  584. /package/{types → lib}/components/sections/form/validators/locationValidator.d.ts +0 -0
  585. /package/{types → lib}/components/sections/form/validators/locationValidator.d.ts.map +0 -0
  586. /package/{types → lib}/components/sections/form/validators/selectValidator.d.ts +0 -0
  587. /package/{types → lib}/components/sections/form/validators/selectValidator.d.ts.map +0 -0
  588. /package/{types → lib}/components/sections/form/validators/uploadValidator.d.ts +0 -0
  589. /package/{types → lib}/components/sections/form/validators/uploadValidator.d.ts.map +0 -0
  590. /package/{types → lib}/components/sections/header/HeaderKenBurns.d.ts +0 -0
  591. /package/{types → lib}/components/sections/header/HeaderKenBurns.d.ts.map +0 -0
  592. /package/{types → lib}/components/sections/header/HeaderPoster.d.ts +0 -0
  593. /package/{types → lib}/components/sections/header/HeaderPoster.d.ts.map +0 -0
  594. /package/{types → lib}/components/sections/header/HeaderVideo.d.ts +0 -0
  595. /package/{types → lib}/components/sections/header/HeaderVideo.d.ts.map +0 -0
  596. /package/{types → lib}/components/sections/jobs/JobArticle.d.ts +0 -0
  597. /package/{types → lib}/components/sections/jobs/JobArticle.d.ts.map +0 -0
  598. /package/{types → lib}/components/sections/jobs/JobList.d.ts +0 -0
  599. /package/{types → lib}/components/sections/jobs/JobList.d.ts.map +0 -0
  600. /package/{types → lib}/components/sections/navigation/NavBar.d.ts +0 -0
  601. /package/{types → lib}/components/sections/navigation/NavBar.d.ts.map +0 -0
  602. /package/{types → lib}/components/sections/navigation/Navigation.d.ts +0 -0
  603. /package/{types → lib}/components/sections/navigation/Navigation.d.ts.map +0 -0
  604. /package/{types → lib}/components/sections/navigation/menu/Menu.d.ts +0 -0
  605. /package/{types → lib}/components/sections/navigation/menu/Menu.d.ts.map +0 -0
  606. /package/{types → lib}/components/sections/navigation/menu/variations/MenuFlyout.d.ts +0 -0
  607. /package/{types → lib}/components/sections/navigation/menu/variations/MenuLarge.d.ts +0 -0
  608. /package/{types → lib}/components/sections/navigation/partials/MenuFooter.d.ts +0 -0
  609. /package/{types → lib}/components/sections/navigation/partials/MenuFooter.d.ts.map +0 -0
  610. /package/{types → lib}/components/sections/navigation/partials/MenuHeader.d.ts +0 -0
  611. /package/{types → lib}/components/sections/navigation/partials/MenuHeader.d.ts.map +0 -0
  612. /package/{types → lib}/components/sections/navigation/partials/NavBarBottom.d.ts +0 -0
  613. /package/{types → lib}/components/sections/navigation/partials/NavBarBottom.d.ts.map +0 -0
  614. /package/{types → lib}/components/sections/navigation/partials/NavBarMain.d.ts +0 -0
  615. /package/{types → lib}/components/sections/navigation/partials/NavBarMain.d.ts.map +0 -0
  616. /package/{types → lib}/components/sections/navigation/partials/NavBarTop.d.ts +0 -0
  617. /package/{types → lib}/components/sections/navigation/partials/NavBarTop.d.ts.map +0 -0
  618. /package/{types → lib}/components/sections/navigation/partials/index.d.ts +0 -0
  619. /package/{types → lib}/components/sections/navigation/partials/index.d.ts.map +0 -0
  620. /package/{types → lib}/components/sections/navigation/skeletons/BarBreadCrumbs.d.ts +0 -0
  621. /package/{types → lib}/components/sections/navigation/skeletons/BarBreadCrumbs.d.ts.map +0 -0
  622. /package/{types → lib}/components/sections/navigation/skeletons/BarColumn.d.ts +0 -0
  623. /package/{types → lib}/components/sections/navigation/skeletons/BarColumn.d.ts.map +0 -0
  624. /package/{types → lib}/components/sections/navigation/skeletons/BarLogo.d.ts +0 -0
  625. /package/{types → lib}/components/sections/navigation/skeletons/BarLogo.d.ts.map +0 -0
  626. /package/{types → lib}/components/sections/navigation/skeletons/BarMenuToggle.d.ts +0 -0
  627. /package/{types → lib}/components/sections/navigation/skeletons/BarMenuToggle.d.ts.map +0 -0
  628. /package/{types → lib}/components/sections/navigation/skeletons/BarNavList.d.ts +0 -0
  629. /package/{types → lib}/components/sections/navigation/skeletons/BarNavList.d.ts.map +0 -0
  630. /package/{types → lib}/components/sections/navigation/skeletons/index.d.ts +0 -0
  631. /package/{types → lib}/components/sections/navigation/skeletons/index.d.ts.map +0 -0
  632. /package/{types → lib}/components/sections/news/NewsAuthorCard.d.ts +0 -0
  633. /package/{types → lib}/components/sections/news/NewsAuthorCard.d.ts.map +0 -0
  634. /package/{types → lib}/components/sections/news/NewsFooter.d.ts +0 -0
  635. /package/{types → lib}/components/sections/news/NewsFooter.d.ts.map +0 -0
  636. /package/{types → lib}/components/sections/news/NewsImages.d.ts +0 -0
  637. /package/{types → lib}/components/sections/news/NewsImages.d.ts.map +0 -0
  638. /package/{types → lib}/components/sections/news/NewsIntro.d.ts +0 -0
  639. /package/{types → lib}/components/sections/news/NewsIntro.d.ts.map +0 -0
  640. /package/{types → lib}/components/sections/news/NewsList.d.ts +0 -0
  641. /package/{types → lib}/components/sections/news/NewsList.d.ts.map +0 -0
  642. /package/{types → lib}/components/sections/news/NewsOverview.d.ts +0 -0
  643. /package/{types → lib}/components/sections/news/NewsOverview.d.ts.map +0 -0
  644. /package/{types → lib}/components/sections/news/NewsTable.d.ts +0 -0
  645. /package/{types → lib}/components/sections/news/NewsTable.d.ts.map +0 -0
  646. /package/{types → lib}/components/sections/news/NewsText.d.ts +0 -0
  647. /package/{types → lib}/components/sections/news/NewsText.d.ts.map +0 -0
  648. /package/{types → lib}/components/sections/news/NewsVideo.d.ts +0 -0
  649. /package/{types → lib}/components/sections/news/NewsVideo.d.ts.map +0 -0
  650. /package/{types → lib}/components/sections/pois/PointOfInterestDetail.d.ts +0 -0
  651. /package/{types → lib}/components/sections/pois/PointOfInterestDetail.d.ts.map +0 -0
  652. /package/{types → lib}/components/sections/pois/PointOfInterestMap.d.ts +0 -0
  653. /package/{types → lib}/components/sections/pois/PointOfInterestMap.d.ts.map +0 -0
  654. /package/{types → lib}/components/sections/pois/PointOfInterestOverview.d.ts +0 -0
  655. /package/{types → lib}/components/sections/pois/PointOfInterestOverview.d.ts.map +0 -0
  656. /package/{types → lib}/components/typography/Copy.d.ts +0 -0
  657. /package/{types → lib}/components/typography/Copy.d.ts.map +0 -0
  658. /package/{types → lib}/components/typography/Heading.d.ts +0 -0
  659. /package/{types → lib}/components/typography/Heading.d.ts.map +0 -0
  660. /package/{types → lib}/components/typography/Link.d.ts +0 -0
  661. /package/{types → lib}/components/typography/Link.d.ts.map +0 -0
  662. /package/{types → lib}/utils/LibThemeProvider.d.ts +0 -0
  663. /package/{types → lib}/utils/LibThemeProvider.d.ts.map +0 -0
  664. /package/{types → lib}/utils/arrays.d.ts +0 -0
  665. /package/{types → lib}/utils/arrays.d.ts.map +0 -0
  666. /package/{types → lib}/utils/backgroundImage.d.ts +0 -0
  667. /package/{types → lib}/utils/backgroundImage.d.ts.map +0 -0
  668. /package/{types → lib}/utils/clamp.d.ts +0 -0
  669. /package/{types → lib}/utils/clamp.d.ts.map +0 -0
  670. /package/{types → lib}/utils/concat.d.ts +0 -0
  671. /package/{types → lib}/utils/concat.d.ts.map +0 -0
  672. /package/{types → lib}/utils/cookie-consent/cookie.d.ts +0 -0
  673. /package/{types → lib}/utils/cookie-consent/cookie.d.ts.map +0 -0
  674. /package/{types → lib}/utils/cookie-consent/mutations.d.ts +0 -0
  675. /package/{types → lib}/utils/cookie-consent/mutations.d.ts.map +0 -0
  676. /package/{types → lib}/utils/cookie-consent/useCookieConsent.d.ts +0 -0
  677. /package/{types → lib}/utils/cookie-consent/useCookieConsent.d.ts.map +0 -0
  678. /package/{types → lib}/utils/dataURI.d.ts +0 -0
  679. /package/{types → lib}/utils/dataURI.d.ts.map +0 -0
  680. /package/{types → lib}/utils/escape.d.ts +0 -0
  681. /package/{types → lib}/utils/escape.d.ts.map +0 -0
  682. /package/{types → lib}/utils/filters.d.ts +0 -0
  683. /package/{types → lib}/utils/filters.d.ts.map +0 -0
  684. /package/{types → lib}/utils/fontLoading.d.ts +0 -0
  685. /package/{types → lib}/utils/fontLoading.d.ts.map +0 -0
  686. /package/{types → lib}/utils/formFieldText.d.ts +0 -0
  687. /package/{types → lib}/utils/formFieldText.d.ts.map +0 -0
  688. /package/{types → lib}/utils/getLinkIcon.d.ts +0 -0
  689. /package/{types → lib}/utils/getLinkIcon.d.ts.map +0 -0
  690. /package/{types → lib}/utils/hexRgbConverter.d.ts +0 -0
  691. /package/{types → lib}/utils/hexRgbConverter.d.ts.map +0 -0
  692. /package/{types → lib}/utils/menuHooks.d.ts +0 -0
  693. /package/{types → lib}/utils/menuHooks.d.ts.map +0 -0
  694. /package/{types → lib}/utils/navigation.d.ts +0 -0
  695. /package/{types → lib}/utils/navigation.d.ts.map +0 -0
  696. /package/{types → lib}/utils/statusFormatter.d.ts +0 -0
  697. /package/{types → lib}/utils/statusFormatter.d.ts.map +0 -0
  698. /package/{types → lib}/utils/storyHelpers.d.ts +0 -0
  699. /package/{types → lib}/utils/storyHelpers.d.ts.map +0 -0
  700. /package/{types → lib}/utils/structuredData.d.ts +0 -0
  701. /package/{types → lib}/utils/structuredData.d.ts.map +0 -0
  702. /package/{types → lib}/utils/types.d.ts +0 -0
  703. /package/{types → lib}/utils/types.d.ts.map +0 -0
  704. /package/{types → lib}/utils/urlParams.d.ts +0 -0
  705. /package/{types → lib}/utils/urlParams.d.ts.map +0 -0
  706. /package/{types → lib}/utils/useArray.d.ts +0 -0
  707. /package/{types → lib}/utils/useArray.d.ts.map +0 -0
  708. /package/{types → lib}/utils/useDebounce.d.ts +0 -0
  709. /package/{types → lib}/utils/useDebounce.d.ts.map +0 -0
  710. /package/{types → lib}/utils/useFontsLoaded.d.ts +0 -0
  711. /package/{types → lib}/utils/useFontsLoaded.d.ts.map +0 -0
  712. /package/{types → lib}/utils/useGeolocation.d.ts +0 -0
  713. /package/{types → lib}/utils/useGeolocation.d.ts.map +0 -0
  714. /package/{types → lib}/utils/useIE.d.ts +0 -0
  715. /package/{types → lib}/utils/useIE.d.ts.map +0 -0
  716. /package/{types → lib}/utils/useImgPreload.d.ts +0 -0
  717. /package/{types → lib}/utils/useImgPreload.d.ts.map +0 -0
  718. /package/{types → lib}/utils/useInterval.d.ts +0 -0
  719. /package/{types → lib}/utils/useInterval.d.ts.map +0 -0
  720. /package/{types → lib}/utils/useItemHeight.d.ts +0 -0
  721. /package/{types → lib}/utils/useItemHeight.d.ts.map +0 -0
  722. /package/{types → lib}/utils/useLazyInput.d.ts +0 -0
  723. /package/{types → lib}/utils/useLazyInput.d.ts.map +0 -0
  724. /package/{types → lib}/utils/useLeafletMap.d.ts +0 -0
  725. /package/{types → lib}/utils/useLeafletMap.d.ts.map +0 -0
  726. /package/{types → lib}/utils/useMounted.d.ts +0 -0
  727. /package/{types → lib}/utils/useMounted.d.ts.map +0 -0
  728. /package/{types → lib}/utils/useObserverSupport.d.ts +0 -0
  729. /package/{types → lib}/utils/useObserverSupport.d.ts.map +0 -0
  730. /package/{types → lib}/utils/usePageScroll.d.ts +0 -0
  731. /package/{types → lib}/utils/usePageScroll.d.ts.map +0 -0
  732. /package/{types → lib}/utils/useParams.d.ts +0 -0
  733. /package/{types → lib}/utils/useParams.d.ts.map +0 -0
  734. /package/{types → lib}/utils/usePoster.d.ts +0 -0
  735. /package/{types → lib}/utils/usePoster.d.ts.map +0 -0
  736. /package/{types → lib}/utils/usePrevious.d.ts +0 -0
  737. /package/{types → lib}/utils/usePrevious.d.ts.map +0 -0
  738. /package/{types → lib}/utils/useResizeThrottle.d.ts +0 -0
  739. /package/{types → lib}/utils/useResizeThrottle.d.ts.map +0 -0
  740. /package/{types → lib}/utils/useScroll.d.ts +0 -0
  741. /package/{types → lib}/utils/useScroll.d.ts.map +0 -0
  742. /package/{types → lib}/utils/useScrollIntoView.d.ts +0 -0
  743. /package/{types → lib}/utils/useScrollIntoView.d.ts.map +0 -0
  744. /package/{types → lib}/utils/useScrollThrottle.d.ts +0 -0
  745. /package/{types → lib}/utils/useScrollThrottle.d.ts.map +0 -0
  746. /package/{types → lib}/utils/useScrollTo.d.ts +0 -0
  747. /package/{types → lib}/utils/useScrollTo.d.ts.map +0 -0
  748. /package/{types → lib}/utils/useTimeout.d.ts +0 -0
  749. /package/{types → lib}/utils/useTimeout.d.ts.map +0 -0
  750. /package/{types → lib}/utils/useTouch.d.ts +0 -0
  751. /package/{types → lib}/utils/useTouch.d.ts.map +0 -0
  752. /package/{types → lib}/utils/useUpdateEffect.d.ts +0 -0
  753. /package/{types → lib}/utils/useUpdateEffect.d.ts.map +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"sections.js","sources":["../src/utils/filters.ts","../src/components/sections/Accordion.tsx","../src/utils/structuredData.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/sections/form/renderer/fieldGroupRenderer.tsx","../src/components/sections/form/validators/fieldValidator.ts","../src/components/sections/form/validators/areaValidator.ts","../src/components/sections/form/validators/selectValidator.ts","../src/components/sections/form/validators/datepickerValidator.ts","../src/components/sections/form/validators/locationValidator.ts","../src/components/sections/form/validators/fieldGroupValidator.ts","../src/components/sections/form/validators/uploadValidator.ts","../src/components/sections/form/DynamicForm.tsx","../src/components/sections/form/renderer/fieldRenderer.tsx","../src/components/sections/form/renderer/areaRenderer.tsx","../src/components/sections/form/renderer/datepickerRenderer.tsx","../src/components/sections/form/renderer/locationRenderer.tsx","../src/components/sections/form/renderer/selectRenderer.tsx","../src/components/sections/form/renderer/uploadRenderer.tsx","../src/components/sections/NewsletterForm.tsx","../src/components/sections/events/EventOverview.tsx","../src/components/sections/events/EventList.tsx","../src/components/sections/events/EventDetail.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/header/Header.tsx","../src/components/sections/IconList.tsx","../src/components/sections/IndexList.tsx","../src/components/sections/Intro.tsx","../src/components/sections/Map.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/blocks/JobCard.tsx","../src/utils/escape.ts","../src/components/sections/jobs/JobList.tsx","../src/components/sections/jobs/JobArticle.tsx","../src/components/sections/pois/PointOfInterestDetail.tsx","../src/components/sections/pois/PointOfInterestOverview.tsx","../src/components/sections/pois/PointOfInterestMap.tsx"],"sourcesContent":["export const distinct = <T>(value: T, index: number, array: T[]) => {\n return array.indexOf(value) === index;\n};\n","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 React from 'react';\nimport { JsonLd } from 'react-schemaorg';\nimport { MapLocation } from 'components/sections/Map';\nimport { FAQPage, JobPosting, LocalBusiness, Place } from 'schema-dts';\nimport { OrganizationData } from 'components/sections/jobs/JobArticle';\nimport { distinct } from './filters';\nimport { JobLocation } from 'components/blocks/JobCard';\n\nexport const generateLocalBusiness = (locations: MapLocation[]) => {\n return locations?.map(\n ({ position, address, contact, companyName, image }, i) => {\n if (!companyName) return '';\n return (\n <JsonLd<LocalBusiness>\n key={i}\n item={{\n '@context': 'https://schema.org',\n '@type': 'LocalBusiness',\n name: companyName,\n\n geo: {\n '@type': 'GeoCoordinates',\n name: 'Coordinates',\n latitude: position[0],\n longitude: position[1],\n },\n\n address: {\n '@type': 'PostalAddress',\n streetAddress: address?.street,\n addressLocality: address?.city,\n addressRegion: address?.city,\n postalCode: address?.postalCode,\n addressCountry: address?.country,\n },\n\n image: image || [],\n\n telephone: `${contact?.telephone?.label}`,\n\n email: `${contact?.email?.label}`,\n }}\n />\n );\n }\n );\n};\n\nexport const generateFAQ = (\n items: {\n label?: string;\n text?: string;\n aside?: string;\n hasColumns?: boolean;\n }[]\n) => {\n return (\n <JsonLd<FAQPage>\n item={{\n '@context': 'https://schema.org',\n '@type': 'FAQPage',\n mainEntity: items.map(({ label, text }) => {\n return {\n '@type': 'Question',\n name: label,\n acceptedAnswer: {\n '@type': 'Answer',\n text: text,\n },\n };\n }),\n }}\n />\n );\n};\n\nexport type StructuredEmploymentType =\n | 'FULL_TIME'\n | 'PART_TIME'\n | 'CONTRACTOR'\n | 'TEMPORARY'\n | 'INTERN'\n | 'VOLUNTEER'\n | 'PER_DIEM'\n | 'OTHER';\n\nexport const generateJob = ({\n jobTitle,\n jobDesc,\n organization,\n directApply,\n locations,\n employmentTypes,\n datePosted,\n}: {\n jobTitle: string;\n jobDesc?: string;\n organization?: OrganizationData;\n directApply?: boolean;\n locations?: JobLocation[];\n employmentTypes?: StructuredEmploymentType[];\n datePosted?: Date;\n}) => {\n return (\n <JsonLd<JobPosting>\n item={{\n '@context': 'https://schema.org',\n '@type': 'JobPosting',\n title: jobTitle,\n description: jobDesc,\n datePosted: datePosted?.toISOString(),\n employmentType: employmentTypes?.filter(distinct),\n hiringOrganization: {\n '@type': 'Organization',\n name: organization?.name,\n url: organization?.url\n ? encodeURIComponent(organization?.url)\n : '',\n logo: organization?.logo,\n telephone: organization?.telephone,\n email: organization?.email,\n address: organization?.address?.streetAddress\n ? {\n '@type': 'PostalAddress',\n streetAddress:\n organization?.address?.streetAddress,\n addressLocality:\n organization?.address?.addressLocality,\n postalCode: organization?.address?.postalCode,\n addressCountry:\n organization?.address?.addressCountry,\n }\n : undefined,\n },\n jobLocation: locations?.map<Place>((loc) => ({\n '@type': 'Place',\n address: {\n '@type': 'PostalAddress',\n addressLocality: loc.addressLocality || loc.name,\n streetAddress: loc.streetAddress,\n addressRegion: loc.addressRegion,\n postalCode: loc.postalCode,\n addressCountry: loc.addressCountry,\n },\n })),\n directApply: directApply,\n }}\n />\n );\n};\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, useContext } from 'react';\nimport styled, { ThemeContext } from 'styled-components';\n\nimport {\n getColors as color,\n getGlobals as global,\n mq,\n spacings,\n} 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 { 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 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?: (isInverted?: boolean) => React.ReactNode;\n /** Function to inject custom secondary button */\n secondaryAction?: (isInverted?: boolean) => 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 theme = useContext(ThemeContext);\n const isInverted = bgMode === 'inverted';\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? color(theme).sectionBg.dark\n : color(theme).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={primaryAction && primaryAction(isInverted)}\n secondary={\n secondaryAction && secondaryAction(isInverted)\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 from 'react';\nimport styled from 'styled-components';\n\nimport RadioButton from 'components/fields/Radio';\nimport { FieldGenerationProps, FieldGroup } from '../DynamicForm';\nimport FieldWrapper from 'components/fields/FormField';\nimport { spacings } from 'utils/styles';\nimport Checkbox from 'components/fields/Checkbox';\n\nconst FieldSet = styled.fieldset`\n display: block;\n border: none;\n background: none;\n outline: none;\n padding: 0;\n margin-left: 0;\n margin-right: 0;\n text-align: left;\n`;\n\nconst Fields = styled.div`\n & > * + * {\n margin-top: ${spacings.nudge}px;\n }\n`;\n\nexport const renderRadioGroupField = ({\n key,\n field,\n value,\n error,\n isTouched,\n isInverted,\n info,\n setField,\n}: FieldGenerationProps<FieldGroup>) => {\n const group = field;\n const groupData = value as string;\n\n return (\n <FieldSet key={key}>\n {key && (\n <FieldWrapper.Head\n isInverted={isInverted}\n label={key}\n isRequired={field.isRequired}\n />\n )}\n <Fields>\n {group?.fields?.map((field, fi) => (\n <RadioButton\n key={fi}\n enableMemo\n name={key}\n value={field.text}\n label={field.text}\n isInverted={isInverted}\n isSelected={\n field.text ? groupData === field.text : false\n }\n onChange={(e) => {\n if (field.text) {\n setField({\n key,\n value: e.currentTarget.value,\n });\n }\n }}\n />\n ))}\n </Fields>\n {isTouched && error && (\n <FieldWrapper.Messages\n errorMessage={error}\n infoMessage={info}\n />\n )}\n </FieldSet>\n );\n};\n\nexport const renderCheckboxGroupField = ({\n field,\n key,\n isInverted,\n value,\n isTouched,\n error,\n info,\n setTouched,\n validateField,\n setField,\n}: FieldGenerationProps<FieldGroup>) => {\n const group = field;\n const groupData = value as string[];\n\n return (\n <FieldSet key={key}>\n {key && (\n <FieldWrapper.Head\n isInverted={isInverted}\n label={key}\n isRequired={field.isRequired}\n />\n )}\n\n <Fields>\n {group?.fields?.map((field, ci) => (\n <Checkbox\n key={ci}\n enableMemo\n isInverted={isInverted}\n onChange={(ev) => {\n const value = ev.currentTarget.value;\n\n // add key to form data array if not exists. Otherwise remove it\n if (value) {\n const cIndex = groupData.indexOf(value);\n if (cIndex === -1) {\n groupData.push(value);\n } else {\n groupData.splice(cIndex, 1);\n }\n // set formik values\n setField({\n key,\n value: groupData,\n });\n setTouched(key, true);\n validateField(key);\n }\n }}\n isSelected={\n field.text\n ? groupData.indexOf(field.text) !== -1\n : false\n }\n name={key}\n value={field.text}\n label={field.text}\n />\n ))}\n </Fields>\n {isTouched && error && (\n <FieldWrapper.Messages\n errorMessage={error}\n infoMessage={info}\n />\n )}\n </FieldSet>\n );\n};\n","import { Field } from '../DynamicForm';\n\nconst fieldValidator = async (key: string, value: string, config: Field) => {\n const inputType = config.inputType;\n let error = '';\n\n if (config.isRequired && !value) {\n error = config.errorMsg || 'Required field';\n }\n\n switch (inputType) {\n case 'email':\n if (\n value &&\n !/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$/i.test(value)\n ) {\n error = config.errorMsg || 'Invalid Mail format';\n }\n break;\n case 'tel':\n if (value && /[A-Z]/gi.test(value)) {\n error = config.errorMsg || 'Ungültige Telefonnummer';\n }\n break;\n case 'number':\n if (value && !/^[+]?\\d+([.]\\d+)?$/gm.test(value as string)) {\n error = config.errorMsg || 'Zahlenformat ungültig';\n }\n break;\n }\n\n return error;\n};\n\nexport default fieldValidator;\n","import { Area } from '../DynamicForm';\n\nconst areaValidator = async (key: string, value: string, config: Area) => {\n let error = '';\n\n if (config.isRequired && !value) {\n error = config.errorMsg || 'Required field';\n }\n\n return error;\n};\n\nexport default areaValidator;\n","import { Select } from '../DynamicForm';\n\nconst selectValidator = async (\n key: string,\n selectedItem: string,\n config: Select\n) => {\n let error = '';\n\n if (config.isRequired && !selectedItem) {\n error = config.errorMsg || 'Required field';\n }\n\n return error;\n};\n\nexport default selectValidator;\n","import { Datepicker } from '../DynamicForm';\n\nconst datepickerValidator = async (\n key: string,\n value: [Date | null, Date | null],\n config: Datepicker\n) => {\n let error = '';\n const single = config.singleSelect;\n\n if (config.isRequired && !value) {\n error = single\n ? config.singleDateError || 'Please submit date!'\n : config.multiDateError || 'Please submit start- and enddate!';\n } else if (config.isRequired && single && !value[0]) {\n error = config.singleDateError || 'Please submit date!';\n } else if (config.isRequired && !single && (!value[0] || !value[1])) {\n error = config.multiDateError || 'Please submit start- and enddate!';\n }\n\n return error;\n};\n\nexport default datepickerValidator;\n","import { LocationData } from 'components/fields/LocationField';\nimport { Location } from '../DynamicForm';\n\nconst locationValidator = async (\n key: string,\n value: LocationData,\n config: Location\n) => {\n let error = '';\n\n if (\n config.isRequired &&\n !value.description &&\n !value.position?.[0] &&\n !value.position?.[1]\n ) {\n error = config.errorMsg || 'Please submit location info!';\n }\n\n return error;\n};\n\nexport default locationValidator;\n","import { FieldGroup } from '../DynamicForm';\n\nconst fieldGroupValidator = async (\n key: string,\n value: Array<string> | string,\n config: FieldGroup\n) => {\n const type = config.groupType;\n let error = '';\n\n if (type === 'Checkbox') {\n const selectValues = value as string[];\n if (config.isRequired && (!selectValues || selectValues?.length < 1)) {\n error = config.errorMsg || 'Please select at least one item!';\n }\n } else if (type === 'Radio') {\n if (config.isRequired && !value) {\n error = config.errorMsg || 'Selection required';\n }\n }\n return error;\n};\n\nexport default fieldGroupValidator;\n","import { FileUpload } from '../DynamicForm';\n\nconst uploadValidator = async (\n key: string,\n files: Array<File>,\n config: FileUpload\n) => {\n let error = '';\n\n if (config.isRequired && (!files || files?.length < 1)) {\n error = config.errorMsg || 'Please submit at least one file!';\n }\n\n return error;\n};\n\nexport default uploadValidator;\n","import React, { FC, useCallback, useEffect, useRef, useState } from 'react';\nimport styled, { DefaultTheme } from 'styled-components';\n\nimport { getColors as color, mq, spacings } from 'utils/styles';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport { Field, FormikErrors, useFormik } from 'formik';\nimport Wrapper from 'components/base/Wrapper';\nimport Actions from 'components/blocks/Actions';\nimport Button from 'components/buttons/Button';\n\nimport { LocationData } from 'components/fields/LocationField';\n\n/** Field Renderer */\nimport renderLocationField from './renderer/locationRenderer';\nimport renderDatepickerField from './renderer/datepickerRenderer';\nimport {\n renderCheckboxGroupField,\n renderRadioGroupField,\n} from './renderer/fieldGroupRenderer';\nimport renderAreaField from './renderer/areaRenderer';\nimport renderField from './renderer/fieldRenderer';\nimport renderSelectField from './renderer/selectRenderer';\nimport renderUploadField from './renderer/uploadRenderer';\nimport fieldValidator from './validators/fieldValidator';\nimport areaValidator from './validators/areaValidator';\nimport selectValidator from './validators/selectValidator';\nimport datepickerValidator from './validators/datepickerValidator';\nimport locationValidator from './validators/locationValidator';\nimport fieldGroupValidator from './validators/fieldGroupValidator';\nimport uploadValidator from './validators/uploadValidator';\nimport Copy from 'components/typography/Copy';\n\nconst StyledSection = styled(Section)`\n overflow: visible;\n`;\n\nconst Form = styled.form`\n display: flex;\n flex-direction: column;\n justify-content: center;\n\n @media ${mq.semilarge} {\n flex-direction: row;\n }\n`;\n\nconst FieldContainer = styled.div`\n flex: 1 1 0;\n text-align: center;\n\n & + & {\n margin-top: ${spacings.nudge * 3}px;\n }\n\n & > * + * {\n margin-top: ${spacings.nudge * 3}px;\n }\n\n @media ${mq.semilarge} {\n max-width: 610px;\n }\n`;\n\nconst FormFooter = styled.div`\n margin-top: ${spacings.spacer}px;\n`;\n\nconst Status = styled(Copy)`\n text-align: left;\n margin: 0 auto;\n\n @media ${mq.semilarge} {\n max-width: 610px;\n }\n`;\n\nconst ActionContainer = styled.div`\n width: 100%;\n margin: 0 auto;\n margin-top: ${spacings.spacer * 1.5}px;\n text-align: right;\n\n @media ${mq.semilarge} {\n max-width: 610px;\n }\n`;\n\nexport interface FormStructure {\n [key: string]:\n | Field\n | Area\n | Select\n | Datepicker\n | Location\n | FieldGroup\n | FileUpload;\n}\n\nexport interface FormField {\n isRequired?: boolean;\n}\n\nexport interface Field extends FormField {\n type: 'Field';\n inputType?: 'text' | 'number' | 'email' | 'password' | 'tel';\n initialValue?: string;\n placeholder?: string;\n info?: string;\n validate?: (key: string, value: string, config: Field) => Promise<string>;\n errorMsg?: string;\n}\n\nexport interface Area extends FormField {\n type: 'Area';\n initialValue?: string;\n placeholder?: string;\n info?: string;\n validate?: (key: string, value: string, config: Area) => Promise<string>;\n errorMsg?: string;\n}\n\nexport interface Select extends FormField {\n type: 'Select';\n initialOption?: string;\n placeholder?: string;\n dropdownItems: {\n label?: string;\n value?: Record<string, string>;\n }[];\n info?: string;\n validate?: (\n key: string,\n selectedItem: string,\n config: Select\n ) => Promise<string>;\n indicator?: (props: {\n isOpen: boolean;\n isDisabled?: boolean;\n }) => React.ReactNode;\n errorMsg?: string;\n}\n\nexport interface Datepicker extends FormField {\n type: 'Datepicker';\n initialDates?: [Date, Date];\n placeholder?: string;\n minDate?: Date;\n maxDate?: Date;\n singleSelect?: boolean;\n info?: string;\n customIcon?: (props: {\n isInverted?: boolean;\n singleSelect?: boolean;\n }) => React.ReactNode;\n\n singleDateError?: string;\n multiDateError?: string;\n nextCtrlUrl?: React.ReactNode;\n prevCtrlUrl?: React.ReactNode;\n validate?: (\n key: string,\n value: [Date | null, Date | null],\n config: Datepicker\n ) => Promise<string>;\n deleteAction?: (\n handleClick?: (\n e: React.SyntheticEvent<HTMLButtonElement, Event>\n ) => void\n ) => React.ReactNode;\n submitAction?: (\n handleClick?: (\n e: React.SyntheticEvent<HTMLButtonElement, Event>\n ) => void\n ) => React.ReactNode;\n}\n\nexport interface Location extends FormField {\n type: 'Location';\n zoom?: number;\n initialMapCenter?: [number, number];\n placeholder?: string;\n info?: string;\n errorMsg?: string;\n customToggle?: (props: {\n isInverted?: boolean;\n viewState?: 'desc' | 'map';\n handleClick?: () => void;\n }) => React.ReactNode;\n customLocationControl?: (props: {\n isInverted?: boolean;\n handleClick?: () => void;\n }) => React.ReactNode;\n customResetControl?: (props: {\n isInverted?: boolean;\n handleClick?: () => void;\n }) => React.ReactNode;\n validate?: (\n key: string,\n value: LocationData,\n config: Location\n ) => Promise<string>;\n toggleLabel?: string;\n trackLocationLabel?: string;\n}\n\nexport interface FieldGroup extends FormField {\n type: 'FieldGroup';\n groupType: 'Radio' | 'Checkbox';\n fields: Array<{ initialChecked?: boolean; text?: string }>;\n validate?: (\n key: string,\n value: Array<string> | string,\n config: FieldGroup\n ) => Promise<string>;\n errorMsg?: string;\n infoMsg?: string;\n}\n\nexport interface FileUpload extends FormField {\n type: 'Upload';\n addBtnLabel?: string;\n removeBtnLabel?: string;\n info?: string;\n acceptedFormats?: string;\n customUploadIcon?: (isInverted?: boolean) => React.ReactNode;\n customDeleteIcon?: (isInverted?: boolean) => React.ReactNode;\n validate?: (\n key: string,\n value: Array<File>,\n config: FileUpload\n ) => Promise<string>;\n errorMsg?: string;\n}\n\nexport interface FormData {\n [key: string]: FormDataTypes | string;\n}\n\nexport type FormDataTypes =\n | string\n | boolean\n | Record<string, string>\n | Array<string>\n | [Date | null, Date | null]\n | Array<File>\n | LocationData;\n\ntype FieldTypes =\n | Field\n | Area\n | Select\n | Datepicker\n | Location\n | FieldGroup\n | FileUpload;\n\nexport interface FieldGenerationProps<T extends FieldTypes> {\n field: T;\n value: FormDataTypes;\n error: string;\n info?: string;\n isTouched: boolean;\n key: string;\n isInverted: boolean;\n hasBg: boolean;\n theme: DefaultTheme;\n setField: (props: {\n key: string;\n value: any;\n shouldValidate?: boolean;\n }) => Promise<void | FormikErrors<FormData>>;\n validateField: (\n name: string\n ) => Promise<string | undefined> | Promise<void>;\n setTouched: (\n field: string,\n touched?: boolean | undefined,\n shouldValidate?: boolean | undefined\n ) => Promise<void> | Promise<FormikErrors<FormData>>;\n handleChange: {\n (e: React.ChangeEvent<any>): void;\n <T_1 = string | React.ChangeEvent<any>>(\n field: T_1\n ): T_1 extends React.ChangeEvent<any>\n ? void\n : (e: string | React.ChangeEvent<any>) => void;\n };\n handleBlur: {\n (e: React.FocusEvent<any>): void;\n <T = any>(fieldOrEvent: T): T extends string ? (e: any) => void : void;\n };\n validateOnBlur?: boolean;\n validateOnChange?: boolean;\n}\n\nexport type FormValues = FormData & {\n targetEmails: string[];\n subjectLine: string;\n};\n\nexport interface SubmitResponse {\n message?: string;\n isError?: boolean;\n}\n\nconst DynamicForm: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Field definitions */\n fields?: FormStructure;\n\n /** Callback on form submit */\n onSubmit?: (values: FormValues) => Promise<SubmitResponse>;\n\n /** Function to inject custom submit button */\n submitAction?: (props: {\n isInverted?: boolean;\n handleSubmit?: () => Promise<any>;\n isSubmitting?: boolean;\n }) => React.ReactNode;\n\n /** List of target emails */\n targetEmails?: string[];\n\n /** E-Mail subject */\n subjectLine?: string;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n\n /** Functions to inject custom field components (React nodes) */\n definitions?: {\n field?: (props: FieldGenerationProps<Field>) => React.ReactNode;\n area?: (props: FieldGenerationProps<Area>) => React.ReactNode;\n select?: (props: FieldGenerationProps<Select>) => React.ReactNode;\n datepicker?: (\n props: FieldGenerationProps<Datepicker>\n ) => React.ReactNode;\n location?: (props: FieldGenerationProps<Location>) => React.ReactNode;\n checkbox?: (props: FieldGenerationProps<FieldGroup>) => React.ReactNode;\n radio?: (props: FieldGenerationProps<FieldGroup>) => React.ReactNode;\n upload?: (props: FieldGenerationProps<FileUpload>) => React.ReactNode;\n };\n}> = ({\n anchorId,\n fields,\n onSubmit,\n submitAction,\n definitions,\n subjectLine,\n targetEmails,\n bgMode,\n}) => {\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full' || isInverted;\n\n const [submitReponse, setSubmitResponse] = useState<SubmitResponse>();\n\n // generate initial data and setup yup validation definition\n const initalData: FormData = {};\n\n for (const key in fields) {\n switch (fields[key].type) {\n case 'Field':\n initalData[key] = (fields[key] as Field).initialValue || '';\n break;\n case 'Area':\n initalData[key] = (fields[key] as Area).initialValue || '';\n break;\n case 'Select':\n initalData[key] = (fields[key] as Select).initialOption || '';\n break;\n case 'Datepicker':\n initalData[key] = (fields[key] as Datepicker).initialDates || [\n null,\n null,\n ];\n break;\n case 'Location': {\n initalData[key] = {\n description: '',\n position: [0, 0],\n };\n break;\n }\n case 'Upload':\n initalData[key] = [];\n break;\n case 'FieldGroup': {\n const group = fields[key] as FieldGroup;\n const type = (fields[key] as FieldGroup).groupType;\n if (type === 'Checkbox') {\n const initalArray: string[] = [];\n group.fields.forEach((field) => {\n if (field.initialChecked && field.text)\n initalArray.push(field.text);\n });\n initalData[key] = initalArray;\n } else if (type === 'Radio') {\n initalData[key] = '';\n group.fields.every((field) => {\n if (field.initialChecked && field.text) {\n initalData[key] = field.text;\n return false;\n }\n return true;\n });\n }\n break;\n }\n }\n }\n\n const validation = async (values: FormData) => {\n const errors: Partial<FormData> = {};\n\n // search for errors and set them\n for (const key in fields) {\n switch (fields[key].type) {\n case 'Field': {\n const config = fields[key] as Field;\n const value = values[key] as string;\n\n // custom validation\n if (config.validate) {\n const error = await config.validate(key, value, config);\n if (error) errors[key] = error;\n break;\n }\n\n // default\n const error = await fieldValidator(key, value, config);\n if (error) errors[key] = error;\n break;\n }\n\n case 'Area': {\n const config = fields[key] as Area;\n const value = values[key] as string;\n\n // custom validation\n if (config.validate) {\n const error = await config.validate(key, value, config);\n if (error) errors[key] = error;\n break;\n }\n\n // default\n const error = await areaValidator(key, value, config);\n if (error) errors[key] = error;\n break;\n }\n\n case 'Select': {\n const config = fields[key] as Select;\n const value = values[key] as string;\n\n // custom validation\n if (config.validate) {\n const error = await config.validate(key, value, config);\n if (error) errors[key] = error;\n break;\n }\n\n // default\n const error = await selectValidator(key, value, config);\n if (error) errors[key] = error;\n break;\n }\n\n case 'Datepicker': {\n const config = fields[key] as Datepicker;\n const value = values[key] as [Date | null, Date | null];\n\n // custom validation\n if (config.validate) {\n const error = await config.validate(key, value, config);\n if (error) errors[key] = error;\n break;\n }\n\n // default\n const error = await datepickerValidator(key, value, config);\n if (error) errors[key] = error;\n break;\n }\n\n case 'Location': {\n const config = fields[key] as Location;\n const value = values[key] as LocationData;\n\n // custom validation\n if (config.validate) {\n const error = await config.validate(key, value, config);\n if (error) errors[key] = error;\n break;\n }\n\n // default\n const error = await locationValidator(key, value, config);\n if (error) errors[key] = error;\n break;\n }\n\n case 'FieldGroup': {\n const config = fields[key] as FieldGroup;\n const value = values[key] as Array<string> | string;\n\n // custom validation\n if (config.validate) {\n const error = await config.validate(key, value, config);\n if (error) errors[key] = error;\n break;\n }\n\n // default\n const error = await fieldGroupValidator(key, value, config);\n if (error) errors[key] = error;\n break;\n }\n\n case 'Upload': {\n const config = fields[key] as FileUpload;\n const files = values[key] as File[];\n\n // custom validation\n if (config.validate) {\n const error = await config.validate(key, files, config);\n if (error) errors[key] = error;\n break;\n }\n\n // default\n const error = await uploadValidator(key, files, config);\n if (error) errors[key] = error;\n break;\n }\n }\n }\n\n return errors;\n };\n\n // formik hook\n const {\n handleSubmit,\n handleChange,\n handleBlur,\n setFieldTouched,\n setSubmitting,\n validateField,\n submitForm,\n setValues,\n isSubmitting,\n touched,\n values,\n errors,\n dirty,\n validateOnBlur,\n validateOnChange,\n } = useFormik<FormData>({\n initialValues: {\n ...initalData,\n } as FormData,\n\n onSubmit: async (values, helpers) => {\n const valuesAndMails = {\n ...values,\n targetEmails: targetEmails || [],\n subjectLine: subjectLine || '',\n };\n\n if (!onSubmit) {\n setSubmitting(false);\n return;\n }\n\n const response = await onSubmit(valuesAndMails);\n helpers.resetForm({ values });\n setSubmitResponse(response);\n\n if (response.isError) {\n setSubmitting(false);\n }\n },\n validateOnBlur: true,\n validateOnChange: true,\n validate: validation,\n });\n\n // save last react state\n const latestValuesRef = useRef<FormData>({ ...initalData } as FormData);\n const { theme } = useLibTheme();\n\n // rewrite setFieldValue to prevent loadash feature of Formik: https://github.com/jaredpalmer/formik/issues/2262\n const setField = useCallback(\n (props: {\n key: string;\n value: any;\n prevValues: FormData;\n shouldValidate?: boolean;\n }) => {\n return setValues(\n { ...latestValuesRef.current, [props.key]: props.value },\n props.shouldValidate\n );\n },\n [setValues]\n );\n\n const fieldKeys = fields && Object.keys(fields);\n\n useEffect(() => {\n latestValuesRef.current = { ...values };\n }, [values]);\n\n return (\n <StyledSection\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? color(theme).sectionBg.dark\n : bgMode\n ? color(theme).sectionBg.medium\n : color(theme).sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper addWhitespace>\n <Form noValidate onSubmit={handleSubmit}>\n <FieldContainer>\n {fields &&\n fieldKeys?.map((label, i) => {\n const props = {\n index: i,\n field: fields[label],\n key: label,\n value: values[label],\n error: errors[label],\n isTouched: touched[label] || false,\n isInverted: isInverted,\n hasBg: hasBg,\n setField: setField,\n setTouched: setFieldTouched,\n validateField: validateField,\n handleChange: handleChange,\n handleBlur: handleBlur,\n validateOnBlur,\n validateOnChange,\n theme: theme,\n } as FieldGenerationProps<any>;\n\n switch (fields[label].type) {\n case 'Field': {\n if (definitions?.field) {\n return definitions.field(props);\n } else {\n return renderField(props);\n }\n }\n\n case 'Area': {\n if (definitions?.area) {\n return definitions.area(props);\n } else {\n return renderAreaField(props);\n }\n }\n\n case 'Datepicker': {\n if (definitions?.datepicker) {\n return definitions.datepicker(\n props\n );\n } else {\n return renderDatepickerField(props);\n }\n }\n\n case 'Location': {\n if (definitions?.location) {\n return definitions.location(props);\n } else {\n return renderLocationField(props);\n }\n }\n\n case 'FieldGroup': {\n if (\n (fields[label] as FieldGroup)\n .groupType === 'Checkbox'\n ) {\n if (definitions?.checkbox) {\n return definitions.checkbox(\n props\n );\n } else {\n return renderCheckboxGroupField(\n props\n );\n }\n } else {\n if (definitions?.radio) {\n return definitions.radio(props);\n } else {\n return renderRadioGroupField(\n props\n );\n }\n }\n }\n\n case 'Select': {\n if (definitions?.select) {\n return definitions.select(props);\n } else {\n return renderSelectField(props);\n }\n }\n\n case 'Upload': {\n if (definitions?.upload) {\n return definitions.upload(props);\n } else {\n return renderUploadField(props);\n }\n }\n default:\n return null;\n }\n })}\n </FieldContainer>\n </Form>\n {(fields || submitReponse?.message) && (\n <FormFooter>\n {submitReponse?.message && !dirty && (\n <Status\n textColor={\n submitReponse?.isError\n ? color(theme).error\n : isInverted\n ? color(theme).text.copyInverted\n : color(theme).text.copy\n }\n >\n {submitReponse.message || ''}\n </Status>\n )}\n {fields && (\n <ActionContainer>\n <Actions\n primary={\n submitAction ? (\n submitAction({\n isInverted,\n isSubmitting,\n handleSubmit: submitForm,\n })\n ) : (\n <Button.View\n as=\"button\"\n onClick={submitForm}\n {...{\n type: 'submit',\n }}\n >\n <Button.Label>\n Send mail\n </Button.Label>\n </Button.View>\n )\n }\n />\n </ActionContainer>\n )}\n </FormFooter>\n )}\n </Wrapper>\n </StyledSection>\n );\n};\n\nexport const DynamicFormComponent = DynamicForm;\nexport default withLibTheme(DynamicForm);\n","import React from 'react';\n\nimport Textfield from 'components/fields/Textfield';\nimport { Field, FieldGenerationProps } from '../DynamicForm';\n\nconst renderField = ({\n field,\n key,\n value,\n error,\n isTouched,\n handleChange,\n handleBlur,\n isInverted,\n}: FieldGenerationProps<Field>) => (\n <Textfield\n key={key}\n enableMemo\n label={`${key}${field.isRequired ? ' *' : ''}`}\n placeholder={field.placeholder}\n name={`['${key}']`}\n type={field.inputType}\n isInverted={isInverted}\n value={value as string}\n onChange={handleChange}\n onBlur={handleBlur}\n infoMessage={field.info}\n errorMessage={error && isTouched ? error : undefined}\n />\n);\n\nexport default renderField;\n","import React from 'react';\n\nimport Textarea from 'components/fields/Textarea';\nimport { Area, FieldGenerationProps } from '../DynamicForm';\n\nconst renderAreaField = ({\n field,\n key,\n value,\n error,\n isTouched,\n isInverted,\n handleChange,\n handleBlur,\n}: FieldGenerationProps<Area>) => (\n <Textarea\n key={key}\n enableMemo\n label={`${key}${field.isRequired ? ' *' : ''}`}\n placeholder={field.placeholder}\n name={`['${key}']`}\n value={value as string}\n isInverted={isInverted}\n onChange={handleChange}\n onBlur={handleBlur}\n infoMessage={field.info}\n errorMessage={error && isTouched ? error : undefined}\n />\n);\n\nexport default renderAreaField;\n","import React from 'react';\nimport DatepickerCmp from 'components/fields/Datepicker';\nimport { Datepicker, FieldGenerationProps } from '../DynamicForm';\nimport ButtonGhost from 'components/buttons/ButtonGhost';\nimport Button from 'components/buttons/Button';\n\nconst renderDatepickerField = ({\n key,\n field,\n value,\n error,\n isTouched,\n isInverted,\n setField,\n setTouched,\n validateField,\n}: FieldGenerationProps<Datepicker>) => {\n const dates = value as [Date | null, Date | null];\n\n const handleSubmit = async (start?: Date | null, end?: Date | null) => {\n await setTouched(key, true);\n await setField({\n key,\n value: [start || null, end || null],\n });\n validateField(key);\n };\n\n return (\n <DatepickerCmp\n key={key}\n enableMemo\n onSubmit={handleSubmit}\n onDataChange={handleSubmit}\n values={[dates?.[0] as Date, dates?.[1] as Date]}\n label={`${key}${field.isRequired ? ' *' : ''}`}\n placeholder={field.placeholder}\n singleSelect={field.singleSelect}\n infoMessage={field.info}\n errorMessage={error && isTouched ? error : undefined}\n name={key}\n customIcon={field?.customIcon}\n isInverted={isInverted}\n minDate={field.minDate}\n maxDate={field.maxDate}\n deleteAction={(handleReset) =>\n field?.deleteAction ? (\n field.deleteAction(handleReset)\n ) : (\n <ButtonGhost.View onClick={handleReset}>\n delete\n </ButtonGhost.View>\n )\n }\n submitAction={(handleSubmit) =>\n field?.submitAction ? (\n field.submitAction(handleSubmit)\n ) : (\n <Button.View onClick={handleSubmit}>submit</Button.View>\n )\n }\n nextCtrlUrl={field.nextCtrlUrl}\n prevCtrlUrl={field.prevCtrlUrl}\n />\n );\n};\n\nexport default renderDatepickerField;\n","import React from 'react';\n\nimport LocationField, { LocationData } from 'components/fields/LocationField';\nimport { FieldGenerationProps } from '../DynamicForm';\nimport { Location } from '../DynamicForm';\n\nconst renderLocationField = ({\n key,\n field,\n value,\n error,\n isTouched,\n isInverted,\n setField,\n}: FieldGenerationProps<Location>) => {\n const locationData = value as LocationData;\n const mappedData = {\n ...locationData,\n position:\n !locationData?.position?.[0] && !locationData?.position?.[1]\n ? undefined\n : locationData.position,\n };\n\n const handleChange = (location: LocationData) => {\n setField({\n key,\n value: { ...location },\n shouldValidate: true,\n });\n };\n\n return (\n <LocationField\n key={key}\n enableMemo\n name={`['${key}']`}\n label={`${key}${field.isRequired ? ' *' : ''}`}\n placeholder={field.placeholder}\n initialMapCenter={field.initialMapCenter}\n zoom={field.zoom}\n isInverted={isInverted}\n infoMessage={field.info}\n errorMessage={error && isTouched ? error : undefined}\n value={mappedData}\n onChange={handleChange}\n customLocationControl={field.customLocationControl}\n customToggle={field.customToggle}\n customResetControl={field.customResetControl}\n toggleLabel={field.toggleLabel}\n trackLocationLabel={field.trackLocationLabel}\n />\n );\n};\n\nexport default renderLocationField;\n","import React from 'react';\n\nimport SelectDropdown from 'components/fields/SelectDropdown';\nimport { Select, FieldGenerationProps } from '../DynamicForm';\n\nconst renderSelectField = ({\n field,\n key,\n value,\n error,\n isTouched,\n isInverted,\n setField,\n setTouched,\n validateField,\n validateOnChange,\n validateOnBlur,\n}: FieldGenerationProps<Select>) => {\n const selectedItem = value as string;\n\n return (\n <SelectDropdown\n key={key}\n enableMemo\n label={`${key}${field.isRequired ? ' *' : ''}`}\n name={key}\n placeholder={field.placeholder}\n errorMessage={error && isTouched ? error : undefined}\n items={field.dropdownItems\n ?.filter((item) => item.label)\n ?.map((item) => ({\n label: item.label || '',\n value: item.value || {},\n }))}\n selectedItem={selectedItem}\n onChange={async (selectedOption) => {\n setField({ key, value: selectedOption });\n await setTouched(key, true);\n if (validateOnChange) validateField(key);\n }}\n onBlur={() => setTouched(key, true, validateOnBlur)}\n indicator={field.indicator}\n isInverted={isInverted}\n />\n );\n};\n\nexport default renderSelectField;\n","import FileUploadCmp from 'components/fields/FileUpload';\nimport React from 'react';\n\nimport { FileUpload, FieldGenerationProps } from '../DynamicForm';\n\nconst renderUploadField = ({\n field,\n key,\n error,\n isTouched,\n isInverted,\n setField,\n}: FieldGenerationProps<FileUpload>) => (\n <FileUploadCmp\n key={key}\n enableMemo\n label={`${key}${field.isRequired ? ' *' : ''}`}\n name={key}\n infoMessage={field.info}\n uploadLabel={field.addBtnLabel}\n errorMessage={error && isTouched ? error : undefined}\n acceptedFormats={field.acceptedFormats}\n onUploadFiles={(files) => {\n setField({ key, value: files });\n }}\n customUploadIcon={field.customUploadIcon}\n customDeleteIcon={field.customDeleteIcon}\n isInverted={isInverted}\n />\n);\n\nexport default renderUploadField;\n","import React, { FC, useCallback, useRef } from 'react';\nimport styled, { DefaultTheme } from 'styled-components';\n\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport { getColors as color, mq, spacings } from 'utils/styles';\nimport Wrapper from 'components/base/Wrapper';\nimport Textfield from 'components/fields/Textfield';\nimport { FormikErrors, useFormik } from 'formik';\nimport Actions from 'components/blocks/Actions';\nimport Button from 'components/buttons/Button';\n\nconst Form = styled.form`\n display: flex;\n flex-direction: column;\n justify-content: center;\n\n @media ${mq.semilarge} {\n flex-direction: row;\n }\n`;\n\nconst FieldContainer = styled.div`\n flex: 1 1 0;\n text-align: center;\n\n & + & {\n margin-top: ${spacings.nudge * 3}px;\n }\n\n & > * + * {\n margin-top: ${spacings.nudge * 3}px;\n }\n\n @media ${mq.semilarge} {\n max-width: 590px;\n\n & + & {\n margin-top: 0;\n }\n\n &:first-child {\n padding-right: ${spacings.nudge * 3}px;\n }\n\n &:last-child {\n padding-left: ${spacings.nudge * 3}px;\n }\n }\n`;\n\nconst ActionContainer = styled.div`\n width: 100%;\n max-width: 590px;\n\n margin: 0 auto;\n margin-top: ${spacings.spacer * 2}px;\n\n text-align: center;\n`;\n\nexport interface FieldGenerationProps {\n field: NewsletterField;\n value: string;\n error: string;\n info?: string;\n isTouched: boolean;\n key: string;\n isInverted: boolean;\n theme: DefaultTheme;\n setField: (\n field: string,\n value: any,\n shouldValidate?: boolean | undefined\n ) => Promise<void> | Promise<FormikErrors<FormData>>;\n validateField: (\n name: string\n ) => Promise<string | undefined> | Promise<void>;\n setTouched: (\n field: string,\n touched?: boolean | undefined,\n shouldValidate?: boolean | undefined\n ) => Promise<void> | Promise<FormikErrors<FormData>>;\n handleChange: {\n (e: React.ChangeEvent<any>): void;\n <T_1 = string | React.ChangeEvent<any>>(\n field: T_1\n ): T_1 extends React.ChangeEvent<any>\n ? void\n : (e: string | React.ChangeEvent<any>) => void;\n };\n handleBlur: {\n (e: React.FocusEvent<any>): void;\n <T = any>(fieldOrEvent: T): T extends string ? (e: any) => void : void;\n };\n validateOnBlur?: boolean;\n validateOnChange?: boolean;\n}\n\nexport interface NewsletterFormStructure {\n [key: string]: NewsletterField;\n}\n\nexport interface FormData {\n [key: string]: string;\n}\n\nexport interface NewsletterField {\n inputType?: 'text' | 'number' | 'email' | 'password' | 'tel';\n isRequired?: boolean;\n label?: string;\n errorMsg?: string;\n initialValue?: string;\n placeholder?: string;\n info?: string;\n validate?: (\n key: string,\n value: string,\n config: NewsletterField\n ) => Promise<string>;\n}\n\nconst NewsletterForm: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Structure to define fields of newsletter form */\n fields?: NewsletterFormStructure;\n\n /** Function to inject custom field definition */\n customField?: (props: FieldGenerationProps) => React.ReactNode;\n\n /** HTML form element action */\n action?: string;\n\n /** HTML form element method */\n method?: string;\n\n /** Form submission callback */\n onSubmit?: (values: FormData, element: HTMLFormElement) => Promise<void>;\n\n /** Function to inject custom submit button */\n submitAction?: (props: {\n isInverted?: boolean;\n handleSubmit?: () => Promise<any>;\n isDisabled?: boolean;\n }) => React.ReactNode;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n}> = ({\n anchorId,\n bgMode,\n fields,\n customField,\n action,\n method,\n submitAction,\n onSubmit,\n}) => {\n const { theme } = useLibTheme();\n const formRef = useRef<HTMLFormElement>(null);\n const isInverted = bgMode === 'inverted';\n\n // generate initial data and setup yup validation definition\n const initialData: FormData = {};\n\n for (const key in fields) {\n initialData[key] = fields[key].initialValue || '';\n }\n\n const validation = async (values: FormData) => {\n const errors: Partial<FormData> = {};\n\n // search for errors and set them\n for (const key in fields) {\n const config = fields[key];\n const inputType = config.inputType;\n\n // default\n if (fields[key].isRequired && !values[key]) {\n errors[key] = fields[key].errorMsg || 'Required field';\n }\n\n // custom validation\n if (config.validate) {\n const error = await config.validate(\n key,\n values[key] as string,\n config\n );\n if (error) errors[key] = error;\n break;\n }\n\n switch (inputType) {\n case 'email':\n if (\n values[key] &&\n !/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$/i.test(\n values[key] as string\n )\n ) {\n errors[key] =\n fields[key].errorMsg || 'Invalid Mail format';\n }\n break;\n case 'tel':\n if (values[key] && /[A-Z]/gi.test(values[key] as string)) {\n errors[key] =\n fields[key].errorMsg || 'Ungültige Telefonnummer';\n }\n break;\n case 'number':\n if (\n values[key] &&\n !/^[+]?\\d+([.]\\d+)?$/gm.test(values[key] as string)\n ) {\n errors[key] =\n fields[key].errorMsg || 'Zahlenformat ungültig';\n }\n break;\n }\n }\n\n return errors;\n };\n\n // formik hook\n const {\n handleSubmit,\n handleChange,\n handleBlur,\n setFieldTouched,\n setSubmitting,\n validateField,\n submitForm,\n setValues,\n isSubmitting,\n touched,\n values,\n errors,\n dirty,\n validateOnBlur,\n validateOnChange,\n } = useFormik<FormData>({\n initialValues: {\n ...initialData,\n } as FormData,\n\n onSubmit: async (values) => {\n if (!formRef.current) return;\n\n if (action && method) {\n formRef.current.submit();\n } else {\n onSubmit && (await onSubmit(values, formRef.current));\n }\n\n setSubmitting(false);\n },\n validateOnBlur: true,\n validateOnChange: true,\n validate: validation,\n });\n\n // rewrite setFieldValue to prevent loadash feature of Formik: https://github.com/jaredpalmer/formik/issues/2262\n const setField = useCallback(\n async (key: string, value: any, shouldValidate?: boolean) => {\n return setValues({ ...values, [key]: value }, shouldValidate);\n },\n [setValues, values]\n );\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? color(theme).sectionBg.dark\n : bgMode\n ? color(theme).sectionBg.medium\n : color(theme).sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper addWhitespace>\n <Form\n ref={formRef}\n action={action}\n method={method}\n onSubmit={handleSubmit}\n >\n <FieldContainer>\n {fields &&\n Object.keys(fields).map((key, i) => {\n const generationProps = {\n index: i,\n field: fields[key],\n key: key,\n value: values[key],\n error: errors[key],\n isTouched: touched[key] || false,\n isInverted: isInverted,\n setField: setField,\n setTouched: setFieldTouched,\n validateField: validateField,\n handleChange: handleChange,\n handleBlur: handleBlur,\n validateOnBlur,\n validateOnChange,\n theme: theme,\n } as FieldGenerationProps;\n\n return customField\n ? customField(generationProps)\n : generateTextField(generationProps);\n })}\n </FieldContainer>\n </Form>\n {fields && (\n <ActionContainer>\n <Actions\n primary={\n submitAction ? (\n submitAction({\n isInverted,\n isDisabled: isSubmitting || !dirty,\n handleSubmit: submitForm,\n })\n ) : (\n <Button.View\n as=\"button\"\n onClick={submitForm}\n isDisabled={isSubmitting || !dirty}\n {...{\n type: 'submit',\n }}\n >\n <Button.Label>send</Button.Label>\n </Button.View>\n )\n }\n />\n </ActionContainer>\n )}\n </Wrapper>\n </Section>\n );\n};\n\nconst generateTextField = ({\n key,\n field,\n isInverted,\n value,\n handleChange,\n handleBlur,\n error,\n isTouched,\n}: FieldGenerationProps) => (\n <Textfield\n key={key}\n label={`${field.label || key}${field.isRequired ? '*' : ''}`}\n placeholder={field.placeholder}\n name={`${key}`}\n isInverted={isInverted}\n value={value as string}\n onChange={handleChange}\n onBlur={handleBlur}\n infoMessage={field.info}\n errorMessage={error && isTouched ? error : undefined}\n />\n);\n\nexport const NewsletterFormComponent = NewsletterForm;\nexport default withLibTheme(NewsletterForm);\n","import Filter from 'components/base/icons/Filter';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport EventBlock, { EventProps } from 'components/blocks/EventBlock';\nimport Tag, { TagProps } from 'components/blocks/Tag';\nimport Pointer from 'components/buttons/Pointer';\nimport Copy from 'components/typography/Copy';\nimport React, { useCallback, useEffect, useMemo } from 'react';\nimport styled, { DefaultTheme } from 'styled-components';\nimport { isValidArray } from 'utils/arrays';\nimport { concat } from 'utils/concat';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport StatusFormatter from 'utils/statusFormatter';\nimport { getColors as color, mq, spacings } from 'utils/styles';\nimport { deleteUrlParam, getUrlParams, setUrlParam } from 'utils/urlParams';\nimport useMounted from 'utils/useMounted';\nimport { useObserverSupport } from 'utils/useObserverSupport';\nimport { useScrollTo } from 'utils/useScrollTo';\nimport useUpdateEffect from 'utils/useUpdateEffect';\n\nconst TagContainer = styled.div`\n margin-top: -${spacings.nudge}px;\n margin-left: -${spacings.nudge}px;\n\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n\n &:not(:only-child) {\n margin-bottom: ${spacings.nudge * 6}px;\n }\n`;\n\nconst TagWrapper = styled.div`\n padding-top: ${spacings.nudge}px;\n padding-left: ${spacings.nudge}px;\n`;\n\nconst Events = styled.ul<{ hasBg?: boolean }>`\n list-style-type: none;\n margin: 0;\n padding: 0;\n\n & > * + * {\n border-top: 1px solid\n ${({ theme, hasBg }) =>\n hasBg\n ? color(theme).elementBg.light\n : color(theme).elementBg.medium};\n }\n\n & > *:first-of-type {\n border-top: 1px solid\n ${({ theme, hasBg }) =>\n hasBg\n ? color(theme).elementBg.light\n : color(theme).elementBg.medium};\n }\n\n & > *:last-of-type {\n border-bottom: 1px solid\n ${({ theme, hasBg }) =>\n hasBg\n ? color(theme).elementBg.light\n : color(theme).elementBg.medium};\n }\n`;\n\nconst FilterIcon = styled(Copy)`\n display: flex;\n flex-direction: row;\n align-items: center;\n\n padding: ${spacings.nudge / 2}px ${spacings.nudge}px 0 0;\n\n & > * + * {\n margin-left: ${spacings.nudge}px;\n }\n`;\n\nconst EventItem = styled.li`\n padding: ${spacings.nudge * 3}px 0;\n`;\n\nconst ListFooter = styled.div`\n margin-top: ${spacings.nudge * 6}px;\n text-align: center;\n\n @media ${mq.medium} {\n text-align: left;\n }\n`;\n\nconst ShowMore = styled.span<{ itemCount?: number }>`\n display: ${({ itemCount }) =>\n itemCount && itemCount > 2 ? 'block' : 'none'};\n`;\n\nexport const getEventFilterParams = (\n url: string,\n theme: DefaultTheme,\n tags: string[] = []\n) => {\n if (!url || !theme) return '';\n if (!isValidArray(tags, false)) return url;\n\n const filterName = theme.globals.sections.eventFilterName;\n if (!filterName) return url;\n\n try {\n const validUrl = new URL(url);\n const newParams = new URLSearchParams(validUrl.search);\n newParams.set(filterName, encodeURIComponent(tags.join(',')));\n\n return `${url}?${newParams.toString()}`;\n } catch (err) {\n return `${url}?${filterName}=${encodeURIComponent(tags.join(','))}`;\n }\n};\n\nexport type EventItem = Omit<\n EventProps,\n 'customTag' | 'isInverted' | 'onTagClick' | 'text'\n> & { address?: string };\n\nconst EventOverview: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array of event item settings */\n events?: EventItem[];\n\n /** Tags for events filtering */\n tags?: string[];\n\n /** Initial data. If not defined the component tries to collect this from URL params */\n initial?: {\n activeTags?: string[];\n visibleRows?: number;\n };\n\n /** Text for load more toggle. Only visible if browser doesn't support IntersectionObserver. */\n showMoreText?: string;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n\n /**\n * Callback function to handle tag click outside of component\n * If no callback is defined filtering is controlled on client\n * */\n onTagClick?: (tag: TagProps, insideList?: boolean) => void;\n\n /** Function to inject custom tag node */\n customTag?: (props: {\n key: React.Key;\n name: string;\n isInverted?: boolean;\n isActive?: boolean;\n clickHandler?: (ev?: React.SyntheticEvent<HTMLElement>) => void;\n }) => React.ReactNode;\n}> = ({\n tags,\n events,\n bgMode,\n anchorId,\n initial,\n showMoreText,\n onTagClick,\n customTag,\n}) => {\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n\n const { colors, globals } = useLibTheme();\n const filterName = globals.sections.eventFilterName;\n\n const [selectedTags, setSelectedTags] = React.useState<string[]>(\n initial?.activeTags || []\n );\n const [itemsPerRow] = React.useState(1);\n const [visibleRows, setVisibleRows] = React.useState(\n initial?.visibleRows || 3\n );\n\n const targetRef = React.useRef<HTMLDivElement>(null);\n const observerSupported = useObserverSupport();\n const isMounted = useMounted();\n\n const eventCount = events?.length || 0;\n const setNewPos = useScrollTo(800);\n\n const getFilters = useCallback(() => {\n const tags: string[] = [];\n\n const filters = getUrlParams()[filterName];\n if (filters) {\n const tagsFilter = filters?.split(',');\n if (isValidArray(tagsFilter, false)) {\n tags.push(...tagsFilter);\n }\n }\n return tags;\n }, [filterName]);\n\n useEffect(() => {\n // if initial data is defined exit hook\n if (initial) return;\n\n // if no initial data provied try to find needed params in URL\n const paramTags = getFilters();\n\n if (isValidArray(paramTags, false)) {\n setSelectedTags(paramTags);\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [getFilters, initial]);\n\n useEffect(() => {\n if (!initial || isMounted) return;\n\n // set inital data into URL\n setUrlParam('rows', initial?.visibleRows || 3);\n\n if (isValidArray(initial?.activeTags, false)) {\n setUrlParam(filterName, initial?.activeTags?.join(','));\n } else {\n deleteUrlParam(filterName);\n }\n }, [filterName, initial, isMounted]);\n\n useUpdateEffect(() => {\n setUrlParam('rows', visibleRows);\n }, [visibleRows]);\n\n useUpdateEffect(() => {\n if (onTagClick || !isValidArray(selectedTags)) return;\n\n // set filters to URL params\n if (selectedTags.length > 0) {\n setUrlParam(filterName, selectedTags.join(','));\n } else {\n deleteUrlParam(filterName);\n }\n }, [selectedTags]);\n\n const handleTagClick = (tag: TagProps, enableToggling = true) => {\n setSelectedTags((prev) => {\n const prevCopy = [...prev];\n const itemIndex = tag.name ? prev.indexOf(tag.name) : -1;\n\n if (itemIndex === -1 && tag.name) {\n return [...prevCopy, tag.name];\n }\n if (enableToggling) {\n prevCopy.splice(itemIndex, 1);\n return prevCopy;\n }\n return prev;\n });\n setVisibleRows(3);\n };\n\n const filteredEvents = useMemo(() => {\n const tagFilterFn = (item: EventItem) => {\n if (!isValidArray(selectedTags, false)) return true;\n if (!item.tags) return false;\n\n let hasTags = false;\n for (let i = 0; i < item.tags.length; i++) {\n if (selectedTags.indexOf(item.tags[i].name || '') !== -1) {\n hasTags = true;\n break;\n }\n }\n return hasTags;\n };\n\n let filtered = isValidArray(events) ? [...events] : [];\n\n // adding filter\n filtered = filtered?.filter(tagFilterFn);\n\n return filtered;\n }, [events, selectedTags]);\n\n const visibleEvents = useMemo(() => {\n return (\n filteredEvents?.filter((_, i) => i < visibleRows * itemsPerRow) ||\n []\n );\n }, [filteredEvents, itemsPerRow, visibleRows]);\n\n useEffect(() => {\n // cancel if intersection observers are not supported\n if (!observerSupported) return;\n\n const element = targetRef.current;\n let observer: IntersectionObserver;\n\n if (element) {\n const options = {\n rootMargin: '0px 0px 100px 0px',\n threshold: 0,\n };\n\n observer = new IntersectionObserver((entries) => {\n const entry = entries[0];\n if (entry?.isIntersecting) {\n // on bottom of the wrapper load more events\n if (\n visibleRows <\n Math.ceil(filteredEvents.length / itemsPerRow)\n ) {\n setVisibleRows((prev) => prev + 1);\n }\n }\n }, options);\n observer.observe(element);\n }\n\n return () => {\n if (observer) observer.disconnect();\n };\n }, [\n itemsPerRow,\n eventCount,\n visibleRows,\n observerSupported,\n filteredEvents.length,\n ]);\n\n const filteredTags = useMemo(() => {\n return tags?.filter((tag) => tag);\n }, [tags]);\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 : 'transparent'\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper addWhitespace>\n {isValidArray(filteredTags, false) && (\n <TagContainer>\n <FilterIcon\n size=\"small\"\n type=\"copy\"\n isInverted={isInverted}\n >\n <Filter />\n <span>Filter</span>\n </FilterIcon>\n {filteredTags.map((tag, i) => (\n <TagWrapper key={i}>\n {customTag ? (\n customTag({\n key: i,\n name: tag,\n isInverted: isInverted,\n isActive:\n selectedTags.indexOf(tag) !== -1,\n clickHandler: (ev) => {\n ev?.preventDefault();\n if (!onTagClick) {\n handleTagClick({ name: tag });\n } else onTagClick({ name: tag });\n },\n })\n ) : (\n <Tag\n isInverted={isInverted}\n onClick={(ev) => {\n ev?.preventDefault();\n if (!onTagClick) {\n handleTagClick({ name: tag });\n } else\n onTagClick(\n { name: tag },\n false\n );\n }}\n isActive={\n selectedTags.indexOf(tag) !== -1\n }\n >\n {tag}\n </Tag>\n )}\n </TagWrapper>\n ))}\n </TagContainer>\n )}\n <Events hasBg={hasBg}>\n {visibleEvents.map((item, i) => {\n let timespan = '';\n\n if (item.date) {\n const formatter = new StatusFormatter(\n item.date.getTime(),\n '',\n globals.sections.eventDateFormat(item.date),\n globals.sections.eventTimeFormat(item.date),\n globals.sections.eventLocaleKey\n );\n\n timespan = formatter.getFormattedTimespan(\n globals.sections.eventTimespanFormat(\n item.date,\n item.duration\n ),\n item.duration\n );\n }\n\n const text = concat([timespan, item.address], ' | ');\n\n return (\n <EventItem key={`${i}_event_${item.title}`}>\n <EventBlock\n {...item}\n text={text}\n tags={item.tags?.map((tag) => ({\n name: tag.name,\n }))}\n isInverted={isInverted}\n onTagClick={(tag) => {\n // scroll back to top\n setNewPos(0);\n if (!onTagClick) {\n // if no callback is defined handle filtering on client side inside the component\n handleTagClick(\n { name: tag.name },\n false\n );\n } else {\n onTagClick(\n { name: tag.name },\n true\n );\n }\n }}\n customTag={customTag}\n />\n </EventItem>\n );\n })}\n </Events>\n <div ref={targetRef} />\n {!observerSupported && (\n <ListFooter>\n {events && events.length > 0 && (\n <Copy\n type=\"copy\"\n size=\"medium\"\n isInverted={isInverted}\n >\n <ShowMore\n itemCount={events.length}\n onClick={(ev) => {\n ev.preventDefault();\n if (\n visibleRows <\n Math.ceil(\n filteredEvents.length /\n itemsPerRow\n )\n ) {\n setVisibleRows((prev) => prev + 1);\n }\n }}\n >\n {visibleRows <\n filteredEvents.length / itemsPerRow && (\n <Pointer.View\n as=\"button\"\n isInverted={isInverted}\n >\n <Pointer.Label>\n {showMoreText ||\n 'mehr anzeigen'}\n </Pointer.Label>\n </Pointer.View>\n )}\n </ShowMore>\n </Copy>\n )}\n </ListFooter>\n )}\n </Wrapper>\n </Section>\n );\n};\n\nexport const EventOverviewComponent = EventOverview;\nexport default withLibTheme(EventOverview);\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 EventBlock, { EventProps } from 'components/blocks/EventBlock';\nimport { getColors as color, spacings } from 'utils/styles';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { LinkProps } from 'components/typography/Link';\nimport StatusFormatter from 'utils/statusFormatter';\nimport { concat } from 'utils/concat';\nimport { getEventFilterParams } from './EventOverview';\n\nconst List = styled.ul<{ hasBg?: boolean }>`\n list-style: none;\n margin: 0;\n padding: 0;\n\n & > * + * {\n border-top: 1px solid\n ${({ theme, hasBg }) =>\n hasBg\n ? color(theme).elementBg.light\n : color(theme).elementBg.medium};\n }\n\n & > *:first-of-type {\n border-top: 1px solid\n ${({ theme, hasBg }) =>\n hasBg\n ? color(theme).elementBg.light\n : color(theme).elementBg.medium};\n }\n\n & > *:last-of-type {\n border-bottom: 1px solid\n ${({ theme, hasBg }) =>\n hasBg\n ? color(theme).elementBg.light\n : color(theme).elementBg.medium};\n }\n`;\n\nconst ListItem = styled.li`\n padding: ${spacings.nudge * 3}px 0;\n`;\n\nexport type EventItem = Omit<\n EventProps,\n 'customTag' | 'isInverted' | 'onTagClick' | 'text'\n> & { address?: string };\n\nconst EventList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array of event item settings */\n events?: EventItem[];\n\n /** Section background */\n bgMode?: 'inverted' | 'full';\n\n /** Function to inject custom tag node */\n customTag?: (props: {\n key: React.Key;\n name: string;\n isInverted?: boolean;\n isActive?: boolean;\n link?: LinkProps;\n }) => React.ReactNode;\n}> = ({ anchorId, events, bgMode, customTag }) => {\n const { colors, globals, theme } = 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 : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper addWhitespace>\n <List hasBg={hasBg}>\n {events?.map((event, i) => {\n let timespan = '';\n\n if (event.date) {\n const formatter = new StatusFormatter(\n event.date.getTime(),\n '',\n globals.sections.eventDateFormat(event.date),\n globals.sections.eventTimeFormat(event.date),\n globals.sections.eventLocaleKey\n );\n\n timespan = formatter.getFormattedTimespan(\n globals.sections.eventTimespanFormat(\n event.date,\n event.duration\n ),\n event.duration\n );\n }\n\n const text = concat([timespan, event.address], ' | ');\n\n return (\n <ListItem key={i}>\n <EventBlock\n {...event}\n tags={event.tags?.map((tag) => {\n let tagHref: string | undefined =\n undefined;\n\n if (tag.name && tag.link?.href) {\n tagHref = getEventFilterParams(\n tag.link.href,\n theme,\n [tag.name]\n );\n }\n\n return {\n name: tag.name,\n link: tag.link?.href\n ? {\n ...tag.link,\n href: tagHref,\n }\n : undefined,\n };\n })}\n isInverted={isInverted}\n text={text}\n customTag={customTag}\n />\n </ListItem>\n );\n })}\n </List>\n </Wrapper>\n </Section>\n );\n};\n\nexport const EventListComponent = EventList;\nexport default withLibTheme(EventList);\n","import React, { useMemo } from 'react';\nimport styled from 'styled-components';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport { EventProps } from 'components/blocks/EventBlock';\nimport Image from 'components/blocks/Image';\nimport Tag from 'components/blocks/Tag';\nimport Copy from 'components/typography/Copy';\nimport Heading from 'components/typography/Heading';\nimport { LinkProps } from 'components/typography/Link';\nimport { mq, spacings } from 'utils/styles';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Grid from 'components/base/Grid';\nimport StatusFormatter from 'utils/statusFormatter';\nimport InfoList from 'components/blocks/InfoList';\nimport { isValidArray } from 'utils/arrays';\n\nconst StyledImage = styled(Image)`\n &:not(:last-child) {\n margin-bottom: ${spacings.spacer}px;\n }\n`;\n\nconst TagContainer = styled.div`\n max-width: 880px;\n margin-top: -${spacings.nudge}px;\n margin-left: -${spacings.nudge}px;\n\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n`;\n\nconst TagWrapper = styled.div`\n padding-top: ${spacings.nudge}px;\n padding-left: ${spacings.nudge}px;\n`;\n\nconst EventTitle = styled(Heading)`\n max-width: 880px;\n\n &:not(:first-child) {\n margin-top: ${spacings.nudge * 3}px;\n }\n\n @media ${mq.semilarge} {\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2; /* number of lines to show */\n line-clamp: 2;\n -webkit-box-orient: vertical;\n }\n`;\n\nconst EventDateTime = styled(Copy)`\n max-width: 880px;\n /* overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap; */\n\n &:not(:first-child) {\n margin-top: ${spacings.nudge * 3}px;\n }\n`;\n\nconst EventAddress = styled(Copy)`\n max-width: 880px;\n\n &:not(:first-child) {\n margin-top: ${spacings.nudge * 3}px;\n }\n\n ${EventDateTime} + & {\n margin-top: ${spacings.nudge}px;\n }\n\n @media ${mq.semilarge} {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n`;\n\nconst EventText = styled(Copy)`\n max-width: 880px;\n\n &:not(:first-child) {\n margin-top: ${spacings.nudge * 3}px;\n }\n`;\n\nexport type DetailEventProps = Omit<\n EventProps,\n 'customTag' | 'isInverted' | 'onTagClick' | 'link'\n>;\n\nexport interface EventInfoGroup {\n title?: string;\n items: EventInfo[];\n}\n\nexport interface EventInfo {\n /** icon injection function */\n icon?: (isInverted?: boolean) => React.ReactNode;\n /** Event info text (richtText) */\n text?: string;\n}\n\nconst EventDetail: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array of event item settings */\n event: DetailEventProps & { address?: string; abstract?: string };\n\n /** Additional event infos */\n infos?: EventInfoGroup[];\n\n /** Section background */\n bgMode?: 'inverted' | 'full';\n\n /** Function to inject custom tag node */\n customTag?: (props: {\n key: React.Key;\n name: string;\n isInverted?: boolean;\n isActive?: boolean;\n link?: LinkProps;\n }) => React.ReactNode;\n}> = ({ anchorId, event, infos, bgMode, customTag }) => {\n const { colors, globals } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n const hasInfos = useMemo(() => {\n return isValidArray(\n infos?.filter((info) => isValidArray(info.items, false)),\n false\n );\n }, [infos]);\n\n let publishedAt = '';\n let timespan = '';\n\n if (event?.date) {\n const formatter = new StatusFormatter(\n event.date.getTime(),\n '',\n globals.sections.eventDateFormat(event.date),\n globals.sections.eventTimeFormat(event.date),\n globals.sections.eventLocaleKey\n );\n publishedAt = formatter.getFormattedDate();\n\n timespan = formatter.getFormattedTimespan(\n globals.sections.eventTimespanFormat(event.date, event.duration),\n event.duration\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 {event.image?.small && (\n <StyledImage\n {...event.image}\n coverSpace\n allowEdgeRadius\n isInverted={isInverted}\n />\n )}\n <Grid.Row\n gutter={spacings.nudge * 5}\n semilarge={{ gutter: spacings.spacer }}\n >\n <Grid.Col semilarge={{ span: hasInfos ? 5.7 / 8 : 1 }}>\n {event.tags && (\n <TagContainer>\n {event.tags.map((tag, i) => (\n <TagWrapper key={'tag_' + i}>\n {customTag ? (\n customTag({\n key: `headtag-${i}`,\n name: tag.name || '',\n isInverted: isInverted,\n isActive: false,\n link: tag.link,\n })\n ) : (\n <Tag\n link={tag.link}\n isInverted={isInverted}\n >\n {tag.name}\n </Tag>\n )}\n </TagWrapper>\n ))}\n </TagContainer>\n )}\n {event.title && (\n <EventTitle\n size=\"heading-2\"\n isInverted={isInverted}\n >\n {event.title}\n </EventTitle>\n )}\n {publishedAt && (\n <EventDateTime size=\"big\" type=\"copy-b\">\n {publishedAt || ''}\n {publishedAt && timespan ? ' | ' : ''}\n {timespan}\n </EventDateTime>\n )}\n {event.address && (\n <EventAddress\n size=\"big\"\n type=\"copy\"\n innerHTML={event.address}\n />\n )}\n {event.abstract && (\n <EventText\n size=\"medium\"\n type=\"copy-b\"\n isInverted={isInverted}\n >\n {event.abstract}\n </EventText>\n )}\n {event.text && (\n <EventText\n size=\"medium\"\n isInverted={isInverted}\n innerHTML={event.text}\n />\n )}\n </Grid.Col>\n {hasInfos && (\n <Grid.Col semilarge={{ span: 2.3 / 8 }}>\n <InfoList isInverted={isInverted} items={infos} />\n </Grid.Col>\n )}\n </Grid.Row>\n </Wrapper>\n </Section>\n );\n};\n\nexport const EventDetailComponent = EventDetail;\nexport default withLibTheme(EventDetail);\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 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?: (isInverted?: boolean) => 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 data-sheet=\"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 && <Action>{action(isInverted)}</Action>}\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?: FeatureProps[];\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, { FC } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { CalloutTag } from 'components/typography/Callout';\nimport { mq, spacings, withRange } from 'utils/styles';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport HeaderKenBurns from './HeaderKenBurns';\nimport HeaderPoster from './HeaderPoster';\nimport Actions from 'components/blocks/Actions';\nimport HeaderVideo from './HeaderVideo';\nimport Copy from 'components/typography/Copy';\nimport Heading from 'components/typography/Heading';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport { ImageProps } from 'components/blocks/Image';\nimport {\n generateNavbarIdent as genIdent,\n getFullNavbarHeights as getNavHeight,\n} from '../navigation/Navigation';\n\nconst Poster: FC<{\n isInverted?: boolean;\n videoUrl?: string;\n images?: Omit<ImageProps, 'ratios' | 'coverSpace'>[];\n focus?: HeaderFocus;\n kenBurnsZoom?: number;\n kenBurnsZoomPoint?: [number, number];\n kenBurnsInterval?: number;\n onImageChange?: (image?: Omit<ImageProps, 'ratios' | 'coverSpace'>) => void;\n className?: string;\n children?: React.ReactNode;\n}> = ({\n isInverted,\n videoUrl,\n images,\n focus,\n kenBurnsZoom,\n kenBurnsZoomPoint,\n kenBurnsInterval,\n onImageChange,\n className,\n children,\n}) => {\n switch (true) {\n case !!videoUrl: {\n return (\n <HeaderVideo\n isInverted={isInverted}\n videoUrl={videoUrl}\n focus={focus}\n placeholderImg={images?.[0]}\n className={className}\n >\n {children}\n </HeaderVideo>\n );\n }\n\n case images && images.length > 1: {\n return (\n <HeaderKenBurns\n images={images || []}\n zoom={kenBurnsZoom}\n zoomPoint={kenBurnsZoomPoint}\n interval={kenBurnsInterval}\n onImageChange={onImageChange}\n className={className}\n >\n {children}\n </HeaderKenBurns>\n );\n }\n\n // single image\n case images && images.length === 1: {\n return (\n <HeaderPoster\n isInverted={isInverted}\n bgImage={images?.[0]}\n focus={focus}\n className={className}\n >\n {children}\n </HeaderPoster>\n );\n }\n\n default: {\n return <div>{children}</div>;\n }\n }\n};\n\nconst genHeightStyles = (isFull: boolean) => css`\n // Doing some crazy shit to calculate curent navbar height in CSS\n ${({ theme }) => {\n // navbar main only\n const mainIdent = genIdent({\n pageFlow: 'beforeContent',\n hasMain: true,\n });\n\n // navbar main and top\n const mainTopIdent = genIdent({\n pageFlow: 'beforeContent',\n hasMain: true,\n hasTop: true,\n });\n\n // navbar main and bottom\n const mainBottomIdent = genIdent({\n pageFlow: 'beforeContent',\n hasMain: true,\n hasBottom: true,\n });\n\n // full navbar with all bars\n const fullIdent = genIdent({\n pageFlow: 'beforeContent',\n hasTop: true,\n hasMain: true,\n hasBottom: true,\n });\n\n const navMainHeight = getNavHeight(theme, mainIdent).large;\n const navMainTopHeight = getNavHeight(theme, mainTopIdent).large;\n const navMainBottomHeight = getNavHeight(theme, mainBottomIdent).large;\n const navFullHeight = getNavHeight(theme, fullIdent).large;\n\n const mapToSelector = (idents: string[]) => {\n return idents.map((id) => `[data-navbar-ident*='${id}']`).join('');\n };\n\n const refHeight = isFull ? '100vh' : '80vh';\n\n return css`\n & > ${StyledPoster} {\n min-height: 500px;\n height: ${refHeight};\n }\n\n // with main navbar element\n header${mapToSelector(mainIdent.split('-'))} + & {\n & > ${StyledPoster} {\n height: calc(${refHeight} - ${navMainHeight[0]}px);\n }\n }\n\n // with main and top navbar elements\n header${mapToSelector(mainTopIdent.split('-'))} + & {\n & > ${StyledPoster} {\n height: calc(${refHeight} - ${navMainTopHeight[0]}px);\n }\n }\n\n // with main and bottom navbar elements\n header${mapToSelector(mainBottomIdent.split('-'))} + & {\n & > ${StyledPoster} {\n height: calc(${refHeight} - ${navMainBottomHeight[0]}px);\n }\n }\n\n // with all navbar elements\n header${mapToSelector(fullIdent.split('-'))} + & {\n & > ${StyledPoster} {\n height: calc(${refHeight} - ${navFullHeight[0]}px);\n }\n }\n\n @media ${mq.semilarge} {\n // with main navbar element\n header${mapToSelector(mainIdent.split('-'))} + & {\n & > ${StyledPoster} {\n height: calc(${refHeight} - ${navMainHeight[1]}px);\n }\n }\n\n // with main and top navbar elements\n header${mapToSelector(mainTopIdent.split('-'))} + & {\n & > ${StyledPoster} {\n height: calc(${refHeight} - ${navMainTopHeight[1]}px);\n }\n }\n\n // with main and bottom navbar elements\n header${mapToSelector(mainBottomIdent.split('-'))} + & {\n & > ${StyledPoster} {\n height: calc(\n ${refHeight} - ${navMainBottomHeight[1]}px\n );\n }\n }\n\n // with all navbar elements\n header${mapToSelector(fullIdent.split('-'))} + & {\n & > ${StyledPoster} {\n height: calc(${refHeight} - ${navFullHeight[1]}px);\n }\n }\n }\n `;\n }}\n`;\n\nconst HeaderSection = styled(Section)`\n position: relative;\n ${genHeightStyles(true)}\n\n header + & {\n ${withRange([0], 'padding-top')}\n ${withRange([0], 'margin-top')}\n }\n`;\n\nconst HeaderSectionSmall = styled(Section)`\n position: relative;\n ${genHeightStyles(false)}\n\n header + & {\n ${withRange([0], 'padding-top')}\n ${withRange([0], 'margin-top')}\n }\n`;\n\nconst StyledPoster = styled(Poster)`\n position: relative;\n height: 100vh;\n max-height: 1300px;\n max-width: ${spacings.wrapperLarge}px;\n margin: 0 auto;\n`;\n\nconst Overlay = styled.div<{ bgValue?: string; textOnImage?: boolean }>`\n display: ${({ textOnImage }) => (textOnImage ? 'block' : 'none')};\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background: ${({ bgValue }) => bgValue && bgValue};\n z-index: 2;\n\n @media ${mq.medium} {\n display: block;\n }\n`;\n\nconst Content = styled.div<{ isCentered?: boolean; textOnImage?: boolean }>`\n display: none;\n max-width: ${spacings.wrapper}px;\n margin: 0 auto;\n\n ${({ textOnImage, isCentered }) =>\n textOnImage &&\n css`\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\n align-items: ${isCentered && 'center'};\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: ${spacings.spacer}px;\n z-index: 2;\n\n & > * {\n margin-top: ${spacings.spacer}px;\n max-width: 880px;\n }\n `}\n\n @media ${mq.medium} {\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\n align-items: ${({ isCentered }) => isCentered && 'center'};\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: ${spacings.spacer * 2}px;\n z-index: 2;\n\n & > * {\n margin-top: ${spacings.spacer}px;\n max-width: 880px;\n }\n }\n`;\n\nconst ContentMobile = styled.div`\n padding: ${spacings.spacer}px ${spacings.nudge * 2}px;\n\n & > * + * {\n margin-top: ${spacings.spacer}px;\n }\n\n @media ${mq.medium} {\n display: none;\n }\n`;\n\nconst Title = styled(Heading)<{ isCentered?: boolean }>`\n text-align: ${({ isCentered }) => isCentered && 'center'};\n\n @media ${mq.medium} {\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 3; /* number of lines to show */\n line-clamp: 3;\n -webkit-box-orient: vertical;\n }\n`;\n\nconst Text = styled(Copy)<{ isCentered?: boolean }>`\n text-align: ${({ isCentered }) => isCentered && 'center'};\n\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 4; /* number of lines to show */\n line-clamp: 4;\n -webkit-box-orient: vertical;\n`;\n\nconst StyledActions = styled(Actions)<{ isCentered?: boolean }>`\n @media ${mq.medium} {\n display: block;\n text-align: ${({ isCentered }) => isCentered && 'center'};\n }\n`;\n\nexport type HeaderSize = 'full' | 'small';\nexport type HeaderImage = Omit<ImageProps, 'ratios' | 'coverSpace'> & {\n zoomPoint?: [number, number];\n zoom?: number;\n};\nexport type HeaderFocus = [\n 'left' | 'center' | 'right',\n 'top' | 'center' | 'bottom'\n];\n\nconst Header: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Header image height size (full=100vh, small=80vh) */\n size?: HeaderSize;\n\n /** Focus point of header image / video */\n focusPoint?: HeaderFocus;\n\n /** Center content */\n isCentered?: boolean;\n\n /** Header title on image */\n title?: string;\n\n /** Header title HTML tag type (h2, h3, h4...) */\n titleAs?: CalloutTag;\n\n /** Header text on image */\n text?: string;\n\n /** Force text on image on all screen widths */\n textOnImage?: boolean;\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 /** Array of image settings */\n images?: HeaderImage[];\n\n /** CSS value of custom image overlay to help seperate the text from the background */\n customImgOverlay?: string;\n\n /** URL to header video. First image in images array can be used as fallback */\n videoUrl?: string;\n\n /** Ken burns effect zoom */\n kenBurnsZoom?: number;\n\n /** Global zoom point for all images with ken burns effect. x and y values in the range from 0 - 1 */\n kenBurnsZoomPoint?: [number, number];\n\n /** Time between each image in ken burns mode */\n kenBurnsInterval?: number;\n\n /** Callback called on image change */\n onImageChange?: (image?: Omit<ImageProps, 'ratios' | 'coverSpace'>) => void;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n}> = ({\n anchorId,\n size = 'full',\n focusPoint = ['center', 'center'],\n isCentered,\n title,\n titleAs,\n text,\n primaryAction,\n secondaryAction,\n videoUrl,\n images,\n customImgOverlay,\n kenBurnsZoom = 1.08,\n kenBurnsZoomPoint = [0.5, 0.5],\n kenBurnsInterval = 10000,\n onImageChange,\n bgMode,\n textOnImage,\n}) => {\n const { globals, colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const hasContent = title || text || primaryAction || secondaryAction;\n\n const overlay = hasContent\n ? customImgOverlay || globals.sections.imageTextGradient\n : undefined;\n\n const Section = size === 'full' ? HeaderSection : HeaderSectionSmall;\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, true)}\n >\n <StyledPoster\n isInverted={isInverted}\n images={images}\n videoUrl={videoUrl}\n kenBurnsInterval={kenBurnsInterval}\n kenBurnsZoom={kenBurnsZoom}\n kenBurnsZoomPoint={kenBurnsZoomPoint}\n onImageChange={onImageChange}\n focus={focusPoint}\n >\n {hasContent && (\n <React.Fragment>\n <Overlay bgValue={overlay} textOnImage={textOnImage} />\n <Content\n isCentered={isCentered}\n textOnImage={textOnImage}\n >\n {title && (\n <Title\n isInverted\n size=\"heading-1\"\n isCentered={isCentered}\n renderAs={titleAs}\n innerHTML={title}\n />\n )}\n {text && (\n <Text\n isInverted\n isCentered={isCentered}\n type=\"copy-b\"\n size=\"big\"\n innerHTML={text}\n />\n )}\n {(primaryAction || secondaryAction) && (\n <StyledActions\n isCentered={isCentered}\n primary={\n primaryAction && primaryAction(true)\n }\n secondary={\n secondaryAction && secondaryAction(true)\n }\n />\n )}\n </Content>\n </React.Fragment>\n )}\n </StyledPoster>\n {hasContent && !textOnImage && (\n <ContentMobile>\n {title && (\n <Title\n size=\"heading-1\"\n isCentered={isCentered}\n renderAs={titleAs}\n innerHTML={title}\n isInverted={isInverted}\n />\n )}\n {text && (\n <Text\n type=\"copy-b\"\n size=\"big\"\n isCentered={isCentered}\n innerHTML={text}\n isInverted={isInverted}\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 </ContentMobile>\n )}\n </Section>\n );\n};\n\nexport const HeaderComponent = Header;\nexport default withLibTheme(Header);\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 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?: (isInverted?: boolean) => React.ReactNode;\n\n /** Function to inject custom secondary button */\n secondaryAction?: (isInverted?: boolean) => 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 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 '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 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 Heading from 'components/typography/Heading';\nimport React, { useContext } from 'react';\nimport styled, { ThemeContext } from 'styled-components';\nimport { getColors as color, mq, spacings, withRange } from 'utils/styles';\nimport { withLibTheme } from 'utils/LibThemeProvider';\n\nconst View = styled.div`\n text-align: center;\n\n & > * {\n margin: 0 auto;\n }\n\n @media ${mq.semilarge} {\n text-align: left;\n\n & > * {\n margin: 0;\n }\n }\n`;\n\nconst Icon = styled.img`\n display: block;\n max-width: 140px;\n max-height: 140px;\n\n margin-bottom: ${spacings.nudge * 2}px;\n`;\n\nconst NumberContainer = styled.div<{ height: number }>`\n max-width: max-content;\n min-height: 90px;\n\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: flex-start;\n\n @media ${mq.semilarge} {\n min-height: 100px;\n }\n\n /* margin-bottom: ${spacings.nudge * 2}px; */\n\n @media ${mq.large} {\n min-height: 120px;\n }\n`;\n\nconst Number = styled(Callout)<{ isInverted?: boolean; stringLength: number }>`\n max-height: 140px;\n ${({ stringLength }) =>\n stringLength <= 6\n ? withRange([72, 120], 'font-size')\n : stringLength >= 10\n ? withRange([33, 42], 'font-size')\n : withRange([52, 72], 'font-size')}\n\n color: ${({ isInverted, theme }) =>\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n`;\n\nconst Label = styled(Heading)`\n max-width: 80%;\n`;\n\nconst IconBlock: React.FC<{\n icon?: { src: string; alt?: string };\n number?: string;\n label?: string;\n isInverted?: boolean;\n}> = ({ icon, label, number, isInverted }) => {\n const theme = useContext(ThemeContext);\n\n const stringLength = number ? number.length : 0;\n\n return (\n <View>\n {icon && <Icon src={icon.src} alt={icon.alt} />}\n <NumberContainer height={0}>\n <Number\n renderAs=\"div\"\n stringLength={stringLength}\n isInverted={isInverted}\n >\n {number}\n </Number>\n </NumberContainer>\n <Label\n size=\"super\"\n textColor={\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default\n }\n >\n {label}\n </Label>\n </View>\n );\n};\n\nconst ContentContainer = styled.div`\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n justify-content: space-between;\n flex-wrap: wrap;\n\n margin: -${spacings.spacer}px;\n margin-top: -${spacings.spacer * 2}px;\n\n @media ${mq.semilarge} {\n margin-top: -${spacings.spacer}px;\n }\n\n & > * {\n padding: ${spacings.spacer}px;\n padding-top: ${spacings.spacer * 2}px;\n\n @media ${mq.semilarge} {\n padding-top: ${spacings.spacer}px;\n }\n\n flex-basis: 100%;\n\n @media ${mq.semilarge} {\n flex: 0 0 50%;\n }\n\n @media ${mq.large} {\n flex: 0 1 33.33%;\n }\n }\n`;\n\nconst NumberList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n items?: {\n icon?: { src: string; alt?: string };\n number?: string;\n label?: string;\n }[];\n bgMode?: 'full' | 'inverted';\n}> = ({ anchorId, items, bgMode }) => {\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 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 <ContentContainer>\n {items?.map((item, i) => {\n return (\n <IconBlock\n {...item}\n key={i}\n isInverted={isInverted}\n />\n );\n })}\n </ContentContainer>\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 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?: (isInverted?: boolean) => React.ReactNode;\n\n /** Function to inject custom secondary button */\n secondaryAction?: (isInverted?: boolean) => 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 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 <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 <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 </Section>\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 playIcon?: React.ReactNode;\n bgMode?: 'full' | 'inverted' | 'splitted';\n}> = ({\n anchorId,\n bgMode,\n bgImage,\n embedId,\n playIcon,\n consentText,\n consentAction,\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 />\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 ClockFilled from 'components/base/icons/ClockFilled';\nimport LocationPin from 'components/base/icons/LocationPin';\nimport Copy from 'components/typography/Copy';\nimport Heading from 'components/typography/Heading';\nimport Link, { LinkProps } from 'components/typography/Link';\nimport React from 'react';\nimport styled, { css } from 'styled-components';\nimport { isValidArray } from 'utils/arrays';\nimport { StructuredEmploymentType } from 'utils/structuredData';\nimport { getColors as color, getGlobals, mq, spacings } from 'utils/styles';\n\nconst View = styled.div<{\n isInverted?: boolean;\n hasBg?: boolean;\n clickable?: boolean;\n}>`\n position: relative;\n color: ${({ theme }) => color(theme).primary.default};\n background: ${({ theme, hasBg, isInverted }) =>\n isInverted\n ? color(theme).elementBg.medium\n : hasBg\n ? color(theme).elementBg.light\n : color(theme).elementBg.medium};\n\n padding: ${spacings.spacer}px;\n\n border-radius: ${({ theme }) => getGlobals(theme).sections.edgeRadius};\n\n ${({ clickable, isInverted }) =>\n clickable &&\n css`\n transition: all 0.2s ease-in-out;\n cursor: pointer;\n\n &:hover {\n box-shadow: 0px 2px 6px\n ${isInverted\n ? 'rgba(255, 255, 255, 0.7)'\n : 'rgba(0, 0, 0, 0.35)'};\n\n color: ${({ theme }) => color(theme).primary.hover};\n }\n\n &:focus {\n box-shadow: 0px 2px 6px\n ${isInverted\n ? 'rgba(255, 255, 255, 0.7)'\n : 'rgba(0, 0, 0, 0.3)'};\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n box-shadow: none;\n }\n\n &:active {\n box-shadow: 0px 2px 6px\n ${isInverted\n ? 'rgba(255, 255, 255, 0.7)'\n : 'rgba(0, 0, 0, 0.3)'};\n }\n `}\n\n @media ${mq.medium} {\n min-height: 440px;\n\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n align-items: flex-start;\n }\n`;\n\nconst JobInfos = styled(Copy)`\n &:not(:first-child) {\n margin-top: ${spacings.nudge * 4}px;\n }\n\n color: ${({ theme }) => color(theme).primary.default};\n\n ${View}:hover & {\n color: ${({ theme }) => color(theme).primary.hover};\n }\n`;\n\nconst Info = styled.div`\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 & + & {\n margin-top: ${spacings.nudge * 3}px;\n }\n\n & > * + * {\n margin-left: ${spacings.nudge * 2}px;\n }\n`;\n\nconst Icon = styled.div`\n display: flex;\n align-items: center;\n\n & > * {\n height: 32px;\n width: 32px;\n }\n`;\n\nconst MainLabel = styled.div`\n display: flex;\n align-items: center;\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\nexport interface JobLocation {\n name?: string;\n description?: string;\n streetAddress?: string;\n addressLocality?: string;\n addressRegion?: string;\n postalCode?: string;\n addressCountry?: string;\n}\n\nexport interface JobCardProps {\n /** Invert text and background color */\n isInverted?: boolean;\n\n /** For use on light backgrounds */\n hasBackground?: boolean;\n\n /** Job card title (richtext) */\n jobTitle: string;\n\n /** The employment type (important for structured data) */\n employmentTypes?: Array<{\n name: string;\n type: StructuredEmploymentType;\n }>;\n\n /** Injection function for job time model icon */\n modelIcon?: () => React.ReactNode;\n\n /** List of job locations */\n locations?: JobLocation[];\n\n /** Total amount all locations */\n totalLocations?: number;\n\n /** Label to show if all location selected */\n allLocationsLabel?: string;\n\n /** Injection function for job location icon */\n locationIcon?: () => React.ReactNode;\n\n /** Job card link */\n link?: LinkProps;\n}\n\nconst JobCard = React.forwardRef<\n HTMLDivElement,\n JobCardProps & {\n className?: string;\n }\n>(\n (\n {\n isInverted,\n hasBackground,\n jobTitle,\n employmentTypes,\n locations,\n totalLocations,\n allLocationsLabel,\n modelIcon,\n locationIcon,\n className,\n link,\n },\n ref\n ) => {\n const hasEmploymentType = isValidArray(employmentTypes, false);\n const validLocations = locations?.filter((loc) => loc.name);\n const hasLocations = isValidArray(validLocations, false);\n\n let locationText = '';\n\n if (hasLocations) {\n if (\n totalLocations !== undefined &&\n validLocations.length >= totalLocations &&\n allLocationsLabel\n ) {\n locationText = allLocationsLabel;\n } else {\n locationText = validLocations\n .map((loc) => loc.name)\n ?.join(', ');\n }\n }\n\n return (\n <View\n ref={ref}\n isInverted={isInverted}\n hasBg={hasBackground}\n className={className}\n clickable={!!link}\n >\n <Heading\n textColor=\"inherit\"\n size=\"heading-2\"\n data-sheet=\"title\"\n innerHTML={jobTitle}\n hyphens\n />\n {(hasEmploymentType || hasLocations) && (\n <JobInfos type=\"copy-b\" data-sheet=\"info\">\n {hasEmploymentType && (\n <Info>\n <Icon>\n {modelIcon ? modelIcon() : <ClockFilled />}\n </Icon>\n <MainLabel>\n {employmentTypes\n ?.filter((type) => type.name)\n .map((type) => type.name)\n ?.join(', ')}\n </MainLabel>\n </Info>\n )}\n {hasLocations && (\n <Info>\n <Icon>\n {locationIcon ? (\n locationIcon()\n ) : (\n <LocationPin />\n )}\n </Icon>\n <MainLabel>{locationText}</MainLabel>\n </Info>\n )}\n </JobInfos>\n )}\n {link && (\n <ViewLink\n {...link}\n ariaLabel={link?.href ? jobTitle : undefined}\n />\n )}\n </View>\n );\n }\n);\n\nJobCard.displayName = 'JobCard';\n\nexport default JobCard;\n","export const escapeRegExp = (value: string) => {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'); // $& means the whole matched string\n};\n","import React, { useCallback, useEffect } from 'react';\nimport styled from 'styled-components';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport JobCard, { JobCardProps } from 'components/blocks/JobCard';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { useEqualSheetHeight } from 'utils/useEqualSheetHeight';\nimport { mq, spacings } from 'utils/styles';\nimport FilterField from 'components/fields/FilterField';\nimport { isValidArray } from 'utils/arrays';\nimport useUpdateEffect from 'utils/useUpdateEffect';\nimport { escapeRegExp } from 'utils/escape';\nimport { deleteUrlParam, getUrlParams, setUrlParam } from 'utils/urlParams';\nimport useMounted from 'utils/useMounted';\n\nconst List = styled.ul`\n display: flex;\n flex-wrap: wrap;\n list-style: none;\n margin: 0;\n padding: 0;\n\n margin-top: -${spacings.nudge * 2}px;\n margin-left: -${spacings.nudge * 2}px;\n\n @media ${mq.medium} {\n margin-top: -${spacings.spacer}px;\n margin-left: -${spacings.spacer}px;\n }\n`;\n\nconst Item = styled.li`\n flex: 0 1 100%;\n max-width: 100%;\n margin: 0;\n\n padding-top: ${spacings.nudge * 2}px;\n padding-left: ${spacings.nudge * 2}px;\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 33.33%;\n max-width: 33.33%;\n }\n`;\n\nconst Filter = styled(FilterField)`\n margin-top: ${spacings.nudge}px;\n margin-bottom: ${spacings.nudge * 5}px;\n\n min-width: 50%;\n`;\n\nexport interface CardProps extends JobCardProps {\n id: string;\n}\n\nexport type JobItem = Omit<\n CardProps,\n | 'isInverted'\n | 'hasBackground'\n | 'modelIcon'\n | 'locationIcon'\n | 'totalLocations'\n | 'allLocationsLabel'\n>;\n\nconst jobExactTitleFilter = (filterQuery: string) => (value: JobItem) => {\n const regex = new RegExp(filterQuery);\n return regex.test(value.jobTitle);\n};\n\nconst jobSoftTitleFilter = (filterQuery: string) => (value: JobItem) => {\n const preparedQuery = filterQuery.toLowerCase().replace(/\\s/g, '');\n const perparedJobTitle = value.jobTitle.toLowerCase().replace(/\\s/g, '');\n\n const regex = new RegExp(preparedQuery);\n return regex.test(perparedJobTitle);\n};\n\nconst jobLocationNameFilter = (filterQuery: string) => (value: JobItem) => {\n if (!isValidArray(value.locations, false)) return false;\n\n const preparedQuery = filterQuery.toLowerCase().replace(/\\s/g, '');\n const regex = new RegExp(preparedQuery);\n\n const result = value.locations.find((location) => {\n const preparedName = location.name?.toLowerCase().replace(/\\s/g, '');\n\n return regex.test(preparedName || '');\n });\n\n return !!result;\n};\n\nconst jobTypesFilter = (filterQuery: string) => (value: JobItem) => {\n if (!isValidArray(value?.employmentTypes, false)) return false;\n\n const preparedQuery = filterQuery.toLowerCase().replace(/\\s/g, '');\n const regex = new RegExp(preparedQuery);\n\n return !!value.employmentTypes.find((type) => {\n if (!type.name) return false;\n const preparedText = type.name.toLowerCase().replace(/\\s/g, '');\n return regex.test(preparedText);\n });\n};\n\nconst removeMatchIntersections = (array: FilterMatch[], item?: JobItem[]) => {\n if (!item) return [];\n return item?.filter(\n (m) => !array.find((prioItem) => prioItem.item.id === m.id)\n );\n};\n\ninterface FilterMatch {\n item: JobItem;\n priority: number;\n}\n\nconst filterJobs = (filterQuery: string, jobs: JobItem[]) => {\n const prioList: FilterMatch[] = [];\n if (\n !isValidArray(\n jobs?.filter((job) => job.jobTitle !== undefined),\n false\n )\n ) {\n return prioList;\n }\n\n // PRIO 1 Filter: Exact name\n const exactNameMatches = jobs?.filter(jobExactTitleFilter(filterQuery));\n if (isValidArray(exactNameMatches, false)) {\n prioList.push(\n ...exactNameMatches.map((match) => ({\n item: match,\n priority: 1,\n }))\n );\n }\n\n // PRIO 2 Filter: Name\n const nameMatches = removeMatchIntersections(\n prioList,\n jobs?.filter(jobSoftTitleFilter(filterQuery))\n );\n if (isValidArray(nameMatches, false)) {\n prioList.push(\n ...nameMatches.map((match) => ({\n item: match,\n priority: 2,\n }))\n );\n }\n\n // PRIO 3 Filter: Location\n const locationNameMatches = removeMatchIntersections(\n prioList,\n jobs?.filter(jobLocationNameFilter(filterQuery))\n );\n if (isValidArray(locationNameMatches, false)) {\n prioList.push(\n ...locationNameMatches.map((match) => ({\n item: match,\n priority: 3,\n }))\n );\n }\n\n // PRIO 4 Filter: Job Type\n const typeMatches = removeMatchIntersections(\n prioList,\n jobs?.filter(jobTypesFilter(filterQuery))\n );\n\n if (isValidArray(typeMatches, false)) {\n prioList.push(\n ...typeMatches.map((match) => ({\n item: match,\n priority: 4,\n }))\n );\n }\n\n return prioList;\n};\n\nconst JobList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array of job item settings */\n jobs?: JobItem[];\n\n /** Total amount all locations */\n totalJobLocations?: number;\n\n /** Label to show if all location selected */\n allJobLocationsLabel?: string;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n\n /** Injection function for job time model icon */\n modelIcon?: () => React.ReactNode;\n\n /** Injection function for job location icon */\n locationIcon?: () => React.ReactNode;\n\n /** Initial filter query on component render */\n initialFilterQuery?: string;\n\n /** Filter placeholder */\n filterPlaceholder?: string;\n\n /** Show filter input field */\n hasFilter?: boolean;\n\n /** Injection function for filter submit icon */\n filterSubmitIcon?: (isInverted?: boolean) => React.ReactNode;\n\n /** Injection function for filter reset icon */\n filterClearIcon?: (isInverted?: boolean) => React.ReactNode;\n}> = ({\n anchorId,\n jobs,\n bgMode,\n modelIcon,\n locationIcon,\n totalJobLocations,\n allJobLocationsLabel,\n initialFilterQuery,\n filterPlaceholder,\n hasFilter,\n filterSubmitIcon,\n filterClearIcon,\n}) => {\n const { colors, globals } = useLibTheme();\n const filterName = globals.sections.jobFilterName;\n\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n\n const jobCount = jobs?.length || 0;\n\n const { sheetRefs: cardRefs } = useEqualSheetHeight<HTMLDivElement>({\n listLength: jobCount,\n identifiers: ['[data-sheet=\"title\"]', '[data-sheet=\"info\"]'],\n responsive: {\n small: 1,\n semilarge: 2,\n large: 3,\n },\n });\n\n const [filterQuery, setFilterQuery] = React.useState<string>(\n initialFilterQuery || ''\n );\n const isMounted = useMounted();\n\n const jobMatches: FilterMatch[] = React.useMemo(() => {\n const queryParts =\n filterQuery !== undefined\n ? filterQuery.split(' ').map((part) => part.trim())\n : [''];\n const searchMatches: Array<{\n match: FilterMatch;\n intersections: number;\n }> = [];\n\n // tracking matches of each query part\n for (const part of queryParts) {\n const matches = filterJobs(escapeRegExp(part), jobs || []);\n\n for (const match of matches) {\n const intersectionIndex = searchMatches.findIndex(\n (sItem) => sItem.match.item.id === match.item.id\n );\n\n if (intersectionIndex !== -1) {\n searchMatches[intersectionIndex].intersections += 1;\n } else {\n searchMatches.push({\n match,\n intersections: 1,\n });\n }\n }\n }\n\n // filter search matches by intersections so only matches with results for all search parts are shown\n return searchMatches\n .filter((m) => m.intersections >= queryParts.length)\n .map<FilterMatch>((m) => ({\n ...m.match,\n }));\n }, [filterQuery, jobs]);\n\n const getFilter = useCallback(() => {\n return getUrlParams()[filterName];\n }, [filterName]);\n\n useEffect(() => {\n const urlFilter = getFilter();\n\n if (\n urlFilter !== undefined &&\n urlFilter !== null &&\n typeof urlFilter === 'string'\n ) {\n setFilterQuery(urlFilter);\n }\n }, [getFilter]);\n\n useEffect(() => {\n if (isMounted) return;\n\n // set inital data into URL\n if (filterQuery) {\n setUrlParam(filterName, filterQuery);\n } else {\n deleteUrlParam(filterName);\n }\n }, [filterName, filterQuery, isMounted]);\n\n useUpdateEffect(() => {\n // set filters to URL params\n if (filterQuery) {\n setUrlParam(filterName, filterQuery);\n } else {\n deleteUrlParam(filterName);\n }\n }, [filterQuery]);\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, true)}\n >\n <Wrapper addWhitespace>\n {hasFilter && (\n <Filter\n placeholder={filterPlaceholder || 'Suche'}\n value={filterQuery}\n initialValue={initialFilterQuery}\n onSubmit={setFilterQuery}\n isInverted={isInverted}\n submitIcon={filterSubmitIcon}\n clearIcon={filterClearIcon}\n />\n )}\n <List>\n {jobMatches\n ?.sort((a, b) => a.priority - b.priority)\n .map((match, i) => (\n <Item key={i}>\n <JobCard\n ref={cardRefs[i]}\n {...match.item}\n isInverted={isInverted}\n hasBackground={hasBg}\n modelIcon={modelIcon}\n locationIcon={locationIcon}\n totalLocations={totalJobLocations}\n allLocationsLabel={allJobLocationsLabel}\n />\n </Item>\n ))}\n </List>\n </Wrapper>\n </Section>\n );\n};\n\nexport const JobListComponent = JobList;\nexport default withLibTheme(JobList);\n","import ClockFilled from 'components/base/icons/ClockFilled';\nimport LocationPin from 'components/base/icons/LocationPin';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Actions from 'components/blocks/Actions';\nimport { JobCardProps } from 'components/blocks/JobCard';\nimport Copy from 'components/typography/Copy';\nimport Heading from 'components/typography/Heading';\nimport React from 'react';\nimport styled from 'styled-components';\nimport { isValidArray } from 'utils/arrays';\nimport { concat } from 'utils/concat';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { generateJob, StructuredEmploymentType } from 'utils/structuredData';\nimport { spacings } from 'utils/styles';\n\nconst ArticleHead = styled.div`\n & + * {\n margin-top: ${spacings.spacer}px;\n }\n`;\n\nconst JobInfos = styled(Copy)`\n &:not(:first-child) {\n margin-top: ${spacings.spacer}px;\n }\n`;\n\nconst Info = styled.div`\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 & + & {\n margin-top: ${spacings.nudge * 3}px;\n }\n\n & > * + * {\n margin-left: ${spacings.nudge * 2}px;\n }\n`;\n\nconst Icon = styled.span`\n display: flex;\n align-items: center;\n\n & > * {\n height: 32px;\n width: 32px;\n }\n`;\n\nconst MainLabel = styled.span`\n display: flex;\n align-items: center;\n`;\n\nconst Text = styled(Copy)`\n & + & {\n margin-top: ${spacings.nudge * 3}px;\n }\n`;\n\nconst StyledActions = styled(Actions)`\n margin-top: ${spacings.spacer}px;\n`;\n\nexport interface OrganizationData {\n name?: string;\n url?: string;\n logo?: string;\n telephone?: string;\n email?: string;\n address?: {\n streetAddress?: string;\n addressLocality?: string;\n postalCode?: string;\n addressCountry?: string;\n };\n}\n\nexport type JobArticleProps = Omit<\n JobCardProps,\n 'isInverted' | 'hasBackground' | 'link'\n> & {\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Abstract text which summarizes the job */\n abstract?: string;\n\n /** Text that describes the job (richtext) */\n description?: string;\n\n /** The hiring organization (important for structured data) */\n organization?: OrganizationData;\n\n /** The date of posting the job tender (important for structured data) */\n datePosted?: Date;\n\n /** Function to inject primary action */\n primaryAction?: (isInverted?: boolean) => React.ReactNode;\n\n /** Function to inject secondary action */\n secondaryAction?: (isInverted?: boolean) => React.ReactNode;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n};\n\nconst JobArticle: React.FC<JobArticleProps> = ({\n anchorId,\n bgMode,\n jobTitle,\n employmentTypes,\n locations,\n totalLocations,\n allLocationsLabel,\n modelIcon,\n locationIcon,\n abstract,\n description,\n organization,\n datePosted,\n primaryAction,\n secondaryAction,\n}) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const hasEmploymentType = isValidArray(employmentTypes, false);\n const validLocations = locations?.filter((loc) => loc.name);\n const hasLocations = isValidArray(validLocations, false);\n\n let locationText = '';\n\n if (hasLocations) {\n if (\n totalLocations !== undefined &&\n validLocations.length >= totalLocations\n ) {\n locationText = allLocationsLabel || '';\n } else {\n locationText = validLocations.map((loc) => loc.name)?.join(', ');\n }\n }\n\n const jsonLd = {\n jobTitle, // title\n locations, // jobLocation\n jobDesc: concat([abstract, description], ' - '), // description\n organization: organization, // hiringOrganization\n directApply: primaryAction || secondaryAction ? true : false, // directApply\n employmentTypes:\n (employmentTypes\n ?.filter((el) => el.type)\n .map((el) => el.type) as StructuredEmploymentType[]) || [],\n datePosted, // datePosted\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, true)}\n >\n {generateJob(jsonLd)}\n <Wrapper clampWidth=\"small\" addWhitespace>\n <ArticleHead>\n <Heading\n size=\"heading-2\"\n innerHTML={jobTitle}\n isInverted={isInverted}\n />\n {(hasEmploymentType || hasLocations) && (\n <JobInfos\n type=\"copy-b\"\n data-sheet=\"info\"\n isInverted={isInverted}\n >\n {hasEmploymentType && (\n <Info>\n <Icon>\n {modelIcon ? (\n modelIcon()\n ) : (\n <ClockFilled />\n )}\n </Icon>\n <MainLabel>\n {employmentTypes\n ?.filter((type) => type.name)\n .map((type) => type.name)\n ?.join(', ')}\n </MainLabel>\n </Info>\n )}\n\n {hasLocations && (\n <Info>\n <Icon>\n {locationIcon ? (\n locationIcon()\n ) : (\n <LocationPin />\n )}\n </Icon>\n <MainLabel>{locationText}</MainLabel>\n </Info>\n )}\n </JobInfos>\n )}\n </ArticleHead>\n {abstract && (\n <Text type=\"copy-b\" isInverted={isInverted}>\n {abstract}\n </Text>\n )}\n {description && (\n <Text innerHTML={description} isInverted={isInverted} />\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 JobArticleComponent = JobArticle;\nexport default withLibTheme(JobArticle);\n","import React, { useMemo } from 'react';\nimport styled 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 Copy from 'components/typography/Copy';\nimport Heading from 'components/typography/Heading';\nimport { spacings } from 'utils/styles';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Grid from 'components/base/Grid';\nimport InfoList, { InfoGroup } from 'components/blocks/InfoList';\nimport POIFacts from 'components/blocks/POIFacts';\nimport { isValidArray } from 'utils/arrays';\n\nconst StyledImage = styled(Image)`\n &:not(:last-child) {\n margin-bottom: ${spacings.spacer}px;\n }\n`;\n\nconst Facts = styled(POIFacts)`\n max-width: 880px;\n`;\n\nconst PoiTitle = styled(Heading)`\n max-width: 880px;\n\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2; /* number of lines to show */\n line-clamp: 2;\n -webkit-box-orient: vertical;\n\n &:not(:first-child) {\n margin-top: ${spacings.nudge * 3}px;\n }\n`;\n\nconst PoiText = styled(Copy)`\n max-width: 880px;\n\n &:not(:first-child) {\n margin-top: ${spacings.nudge * 3}px;\n }\n`;\n\nconst PointOfInterestDetail: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** POI image */\n image?: Omit<ImageProps, 'coverSpace'>;\n\n /** POI title */\n title?: string;\n\n /** POI intro text */\n intro?: string;\n\n /** POI text (richtext) */\n text?: string;\n\n /** Array of POI facts */\n facts?: string[];\n\n /** Additional POI infos */\n infos?: InfoGroup[];\n\n /** Section background */\n bgMode?: 'inverted' | 'full';\n\n /** Function to inject custom feature node */\n customFact?: (props: {\n key: React.Key;\n name: string;\n isInverted?: boolean;\n }) => React.ReactNode;\n}> = ({\n anchorId,\n image,\n title,\n intro,\n text,\n facts,\n infos,\n bgMode,\n customFact,\n}) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n const hasInfos = useMemo(() => {\n return isValidArray(\n infos?.filter((info) => isValidArray(info.items, false)),\n false\n );\n }, [infos]);\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 {image?.small && (\n <StyledImage\n {...image}\n coverSpace\n allowEdgeRadius\n isInverted={isInverted}\n />\n )}\n <Grid.Row\n gutter={spacings.nudge * 5}\n semilarge={{ gutter: spacings.spacer }}\n >\n <Grid.Col semilarge={{ span: hasInfos ? 5.7 / 8 : 1 }}>\n {title && (\n <PoiTitle size=\"heading-2\" isInverted={isInverted}>\n {title}\n </PoiTitle>\n )}\n {isValidArray(facts, false) && (\n <Facts\n isInverted={isInverted}\n facts={facts}\n customFact={customFact}\n />\n )}\n {intro && (\n <PoiText\n size=\"medium\"\n type=\"copy-b\"\n isInverted={isInverted}\n innerHTML={intro}\n />\n )}\n {text && (\n <PoiText\n size=\"medium\"\n isInverted={isInverted}\n innerHTML={text}\n />\n )}\n </Grid.Col>\n {hasInfos && (\n <Grid.Col semilarge={{ span: 2.3 / 8 }}>\n <InfoList isInverted={isInverted} items={infos} />\n </Grid.Col>\n )}\n </Grid.Row>\n </Wrapper>\n </Section>\n );\n};\n\nexport const PointOfInterestDetailComponent = PointOfInterestDetail;\nexport default withLibTheme(PointOfInterestDetail);\n","import Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport { Info } from 'components/blocks/InfoList';\nimport POICard, { POICardProps } from 'components/blocks/POICard';\nimport FilterField from 'components/fields/FilterField';\nimport useUpdateEffect from 'utils/useUpdateEffect';\nimport React, { useCallback, useEffect, useState } from 'react';\nimport styled from 'styled-components';\nimport { isValidArray } from 'utils/arrays';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { mq, spacings } from 'utils/styles';\nimport { escapeRegExp } from 'utils/escape';\nimport useMounted from 'utils/useMounted';\nimport { deleteUrlParam, getUrlParams, setUrlParam } from 'utils/urlParams';\n\nconst Content = styled.div`\n & > * + * {\n margin-top: ${spacings.nudge * 5}px;\n }\n\n @media ${mq.large} {\n & > * + * {\n margin-top: ${spacings.nudge * 3}px;\n }\n }\n`;\n\nconst Filter = styled(FilterField)`\n // margin to show prevent section overflow outline\n margin-top: 2px;\n\n &:not(:last-child) {\n margin-bottom: ${spacings.nudge * 5}px;\n }\n`;\n\nconst poiExactNameFilter =\n (filterQuery: string) => (value: PointOfInterestOverviewItem) => {\n const regex = new RegExp(filterQuery);\n return regex.test(value.name);\n };\n\nconst poiSoftNameFilter =\n (filterQuery: string) => (value: PointOfInterestOverviewItem) => {\n const preparedQuery = filterQuery.toLowerCase().replace(/\\s/g, '');\n const preparedName = value.name.toLowerCase().replace(/\\s/g, '');\n\n const regex = new RegExp(preparedQuery);\n return regex.test(preparedName);\n };\n\nconst poiFactFilter =\n (filterQuery: string) => (value: PointOfInterestOverviewItem) => {\n if (!isValidArray(value.facts, false)) return false;\n\n const preparedQuery = filterQuery.toLowerCase().replace(/\\s/g, '');\n const regex = new RegExp(preparedQuery);\n\n const result = value.facts.find((fact) => {\n const preparedFact = fact.toLowerCase().replace(/\\s/g, '');\n return regex.test(preparedFact);\n });\n\n return !!result;\n };\n\nconst poiInfoFilter =\n (filterQuery: string) => (value: PointOfInterestOverviewItem) => {\n if (!isValidArray(value?.infos, false)) return false;\n\n const preparedQuery = filterQuery.toLowerCase().replace(/\\s/g, '');\n const regex = new RegExp(preparedQuery);\n\n return !!value.infos.find((info) => {\n if (!info.text) return false;\n const preparedText = info.text.toLowerCase().replace(/\\s/g, '');\n return regex.test(preparedText);\n });\n };\n\nconst poiDescriptionFilter =\n (filterQuery: string) => (value: PointOfInterestOverviewItem) => {\n if (!value.shortDescription) return false;\n\n const preparedQuery = filterQuery.toLowerCase().replace(/\\s/g, '');\n const preparedDesc = value.shortDescription\n .toLowerCase()\n .replace(/\\s/g, '');\n\n const regex = new RegExp(preparedQuery);\n return regex.test(preparedDesc);\n };\n\nconst removeMatchIntersections = (\n array: FilterMatch[],\n item?: PointOfInterestOverviewItem[]\n) => {\n if (!item) return [];\n return item?.filter(\n (m) => !array.find((prioItem) => prioItem.item.id === m.id)\n );\n};\n\nconst filterPois = (\n filterQuery: string,\n pois: PointOfInterestOverviewItem[]\n) => {\n const prioList: FilterMatch[] = [];\n if (\n !isValidArray(\n pois?.filter((poi) => poi.id !== undefined),\n false\n )\n ) {\n return prioList;\n }\n\n // PRIO 1 Filter: Exact name\n const exactNameMatches = pois?.filter(poiExactNameFilter(filterQuery));\n if (isValidArray(exactNameMatches, false)) {\n prioList.push(\n ...exactNameMatches.map((match) => ({\n item: match,\n priority: 1,\n }))\n );\n }\n\n // PRIO 2 Filter: Name\n const nameMatches = removeMatchIntersections(\n prioList,\n pois?.filter(poiSoftNameFilter(filterQuery))\n );\n\n if (isValidArray(nameMatches, false)) {\n prioList.push(\n ...nameMatches.map((match) => ({\n item: match,\n priority: 2,\n }))\n );\n }\n\n // PRIO 3 Filter: Facts\n const factMatches = removeMatchIntersections(\n prioList,\n pois?.filter(poiFactFilter(filterQuery))\n );\n\n if (isValidArray(factMatches, false)) {\n prioList.push(\n ...factMatches.map((match) => ({\n item: match,\n priority: 3,\n }))\n );\n }\n\n // PRIO 4 Filter: Description\n const infoMatches = removeMatchIntersections(\n prioList,\n pois?.filter(poiInfoFilter(filterQuery))\n );\n\n if (isValidArray(infoMatches, false)) {\n prioList.push(\n ...infoMatches.map((match) => ({\n item: match,\n priority: 4,\n }))\n );\n }\n\n // PRIO 5 Filter: Description\n const descMatches = removeMatchIntersections(\n prioList,\n pois?.filter(poiDescriptionFilter(filterQuery))\n );\n\n if (isValidArray(descMatches, false)) {\n prioList.push(\n ...descMatches.map((match) => ({\n item: match,\n priority: 5,\n }))\n );\n }\n\n return prioList;\n};\n\ninterface CardProps extends POICardProps {\n id: string;\n infos?: Array<Info & { allowFiltering?: boolean }>;\n}\n\nexport type PointOfInterestOverviewItem = Omit<CardProps, 'isInverted'>;\n\ninterface FilterMatch {\n item: PointOfInterestOverviewItem;\n priority: number;\n}\n\nconst PointOfInterestOverview: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array of POI card settings */\n pois?: PointOfInterestOverviewItem[];\n\n /** Enable/Disable filtering */\n enableFiltering?: boolean;\n\n /** Initial filter query on component render */\n initialFilterQuery?: string;\n\n /** Placeholder for filter input */\n filterPlaceholder?: string;\n\n /** Injection function for filter submit icon */\n filterSubmitIcon?: (isInverted?: boolean) => React.ReactNode;\n\n /** Injection function for filter reset icon */\n filterClearIcon?: (isInverted?: boolean) => React.ReactNode;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n}> = ({\n anchorId,\n bgMode,\n pois,\n enableFiltering,\n initialFilterQuery,\n filterPlaceholder = 'Filter',\n filterSubmitIcon,\n filterClearIcon,\n}) => {\n const { colors, globals } = useLibTheme();\n const filterName = globals.sections.poiFilterName;\n\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n\n const [filterQuery, setFilterQuery] = useState<string>(\n initialFilterQuery || ''\n );\n const isMounted = useMounted();\n\n const poiMatches: FilterMatch[] = React.useMemo(() => {\n const queryParts = filterQuery.split(' ').map((part) => part.trim());\n const searchMatches: Array<{\n match: FilterMatch;\n intersections: number;\n }> = [];\n\n // tracking matches of each query part\n for (const part of queryParts) {\n const matches = filterPois(escapeRegExp(part), pois || []);\n\n for (const match of matches) {\n const intersectionIndex = searchMatches.findIndex(\n (sItem) => sItem.match.item.id === match.item.id\n );\n\n if (intersectionIndex !== -1) {\n searchMatches[intersectionIndex].intersections += 1;\n } else {\n searchMatches.push({\n match,\n intersections: 1,\n });\n }\n }\n }\n\n // filter search matches by intersections so only matches with results for all search parts are shown\n return searchMatches\n .filter((m) => m.intersections >= queryParts.length)\n .map<FilterMatch>((m) => ({\n ...m.match,\n }));\n }, [filterQuery, pois]);\n\n const getFilter = useCallback(() => {\n return getUrlParams()[filterName];\n }, [filterName]);\n\n useEffect(() => {\n const urlFilter = getFilter();\n\n if (\n urlFilter !== undefined &&\n urlFilter !== null &&\n typeof urlFilter === 'string'\n ) {\n setFilterQuery(urlFilter);\n }\n }, [getFilter]);\n\n useEffect(() => {\n if (isMounted) return;\n\n // set inital data into URL\n if (filterQuery) {\n setUrlParam(filterName, filterQuery);\n } else {\n deleteUrlParam(filterName);\n }\n }, [filterName, filterQuery, isMounted]);\n\n useUpdateEffect(() => {\n // set filters to URL params\n if (filterQuery) {\n setUrlParam(filterName, filterQuery);\n } else {\n deleteUrlParam(filterName);\n }\n }, [filterQuery]);\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 {enableFiltering && (\n <Filter\n value={filterQuery}\n initialValue={initialFilterQuery}\n placeholder={filterPlaceholder}\n onSubmit={setFilterQuery}\n submitIcon={filterSubmitIcon}\n clearIcon={filterClearIcon}\n isInverted={isInverted}\n />\n )}\n <Content>\n {poiMatches\n ?.sort((a, b) => a.priority - b.priority)\n ?.map((poi, i) => (\n <POICard\n key={i}\n {...poi.item}\n isInverted={isInverted}\n />\n ))}\n </Content>\n </Wrapper>\n </Section>\n );\n};\n\nexport const PointOfInterestOverviewComponent = PointOfInterestOverview;\nexport default withLibTheme(PointOfInterestOverview);\n","import React, { FC, useEffect, useMemo, useState } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport Section from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport useLeafletMap, { LeafletMapMarker } from 'utils/useLeafletMap';\nimport { mq, withRange, getColors as color, spacings } from 'utils/styles';\nimport {\n generateNavbarIdent as genIdent,\n getFullNavbarHeights as getNavHeight,\n} from '../navigation/Navigation';\nimport { getSVGDataImg as getSVGData } from 'utils/dataURI';\nimport LocationPin from 'components/base/icons/LocationPin';\nimport Copy from 'components/typography/Copy';\nimport { isValidArray } from 'utils/arrays';\nimport POIFacts from 'components/blocks/POIFacts';\nimport InfoList, { Info } from 'components/blocks/InfoList';\nimport useGeolocation from 'utils/useGeolocation';\nimport CurrentLocation from 'components/base/icons/CurrentLocation';\nimport Cross from 'components/base/icons/Cross';\nimport MyLocation from 'components/base/icons/MyLocation';\n\nconst genHeightStyles = () => css`\n // Doing some crazy shit to calculate curent navbar height in CSS\n ${({ theme }) => {\n // navbar main only\n const mainIdent = genIdent({\n pageFlow: 'beforeContent',\n hasMain: true,\n });\n\n // navbar main and top\n const mainTopIdent = genIdent({\n pageFlow: 'beforeContent',\n hasMain: true,\n hasTop: true,\n });\n\n // navbar main and bottom\n const mainBottomIdent = genIdent({\n pageFlow: 'beforeContent',\n hasMain: true,\n hasBottom: true,\n });\n\n // full navbar with all bars\n const fullIdent = genIdent({\n pageFlow: 'beforeContent',\n hasTop: true,\n hasMain: true,\n hasBottom: true,\n });\n\n const navMainHeight = getNavHeight(theme, mainIdent).large;\n const navMainTopHeight = getNavHeight(theme, mainTopIdent).large;\n const navMainBottomHeight = getNavHeight(theme, mainBottomIdent).large;\n const navFullHeight = getNavHeight(theme, fullIdent).large;\n\n const mapToSelector = (idents: string[]) => {\n return idents.map((id) => `[data-navbar-ident*='${id}']`).join('');\n };\n\n const refHeight = '100vh';\n\n return css`\n ${Map} {\n height: ${refHeight};\n }\n\n // with main navbar element\n header${mapToSelector(mainIdent.split('-'))} ~ & {\n ${Map} {\n height: calc(${refHeight} - ${navMainHeight[0]}px);\n }\n }\n\n // with main and top navbar elements\n header${mapToSelector(mainTopIdent.split('-'))} ~ & {\n ${Map} {\n height: calc(${refHeight} - ${navMainTopHeight[0]}px);\n }\n }\n\n // with main and bottom navbar elements\n header${mapToSelector(mainBottomIdent.split('-'))} ~ & {\n ${Map} {\n height: calc(${refHeight} - ${navMainBottomHeight[0]}px);\n }\n }\n\n // with all navbar elements\n header${mapToSelector(fullIdent.split('-'))} ~ & {\n ${Map} {\n height: calc(${refHeight} - ${navFullHeight[0]}px);\n }\n }\n\n @media ${mq.semilarge} {\n // with main navbar element\n header${mapToSelector(mainIdent.split('-'))} ~ & {\n ${Map} {\n height: calc(${refHeight} - ${navMainHeight[1]}px);\n }\n }\n\n // with main and top navbar elements\n header${mapToSelector(mainTopIdent.split('-'))} ~ & {\n ${Map} {\n height: calc(${refHeight} - ${navMainTopHeight[1]}px);\n }\n }\n\n // with main and bottom navbar elements\n header${mapToSelector(mainBottomIdent.split('-'))} ~ & {\n ${Map} {\n height: calc(\n ${refHeight} - ${navMainBottomHeight[1]}px\n );\n }\n }\n\n // with all navbar elements\n header${mapToSelector(fullIdent.split('-'))} ~ & {\n ${Map} {\n height: calc(${refHeight} - ${navFullHeight[1]}px);\n }\n }\n }\n `;\n }}\n`;\n\nconst PoiMapSection = styled(Section)<{ isLarge?: boolean }>`\n position: relative;\n ${({ isLarge }) => isLarge && genHeightStyles()}\n\n header + & {\n ${withRange([0], 'padding-top')}\n ${withRange([0], 'margin-top')}\n }\n`;\n\nconst MapContainer = styled.div`\n position: relative;\n`;\n\nconst Map = styled.div<{ isLarge?: boolean }>`\n min-height: 360px;\n height: 360px;\n max-height: 1300px;\n z-index: 0;\n\n @media ${mq.medium} {\n height: 600px;\n min-height: 600px;\n }\n`;\n\nconst RequestGeolocationBtn = styled.button`\n position: absolute;\n top: ${spacings.nudge * 2}px;\n left: ${spacings.nudge * 2}px;\n\n background-color: transparent;\n border: none;\n padding: ${spacings.nudge}px;\n cursor: pointer;\n\n transition: transform 0.2s ease-in-out, opacity 0.2s ease-in-out;\n\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n opacity: 0.6;\n }\n }\n\n &:focus {\n outline: 2px solid ${({ theme }) => color(theme).primary.default};\n transform: scale(1.012);\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n }\n\n &:active {\n transform: scale(0.95);\n }\n\n & > * {\n width: 30px;\n height: 30px;\n }\n`;\n\nconst CardStage = styled.div`\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 10;\n\n display: flex;\n align-items: flex-end;\n justify-content: flex-end;\n\n pointer-events: all;\n background-color: rgba(255, 255, 255, 0.8);\n\n @media ${mq.medium} {\n position: absolute;\n background-color: transparent;\n padding: ${spacings.nudge * 2}px;\n padding-bottom: ${spacings.nudge * 3}px;\n\n pointer-events: none;\n }\n`;\n\nconst MapCardView = styled.div`\n max-height: 100%;\n width: 100%;\n padding: ${spacings.nudge * 2}px;\n overflow: auto;\n\n background: ${({ theme }) => color(theme).elementBg.light};\n box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.3);\n pointer-events: all;\n border-radius: 8px;\n\n & > * + * {\n margin-top: ${spacings.nudge * 3}px;\n }\n\n @media ${mq.medium} {\n max-width: 400px;\n }\n`;\n\nconst MapCardHeader = styled.header`\n display: flex;\n align-items: center;\n`;\n\nconst CloseBtn = styled.button`\n display: inline-block;\n border: none;\n background-color: transparent;\n cursor: pointer;\n margin-left: auto;\n padding: ${spacings.nudge}px;\n\n transition: transform 0.2s ease-in-out, opacity 0.2s ease-in-out;\n\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n opacity: 0.6;\n }\n }\n\n &:focus {\n outline: 2px solid ${({ theme }) => color(theme).primary.default};\n transform: scale(1.012);\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n }\n\n &:active {\n transform: scale(0.95);\n }\n`;\n\nconst MapCard: FC<{\n name?: string;\n facts?: string[];\n description?: string;\n infos?: Info[];\n\n action?: React.ReactNode;\n onClose?: () => void;\n customFact?: (props: { key: React.Key; name: string }) => React.ReactNode;\n customClose?: React.ReactNode;\n\n className?: string;\n}> = ({\n name,\n facts,\n description,\n infos,\n action,\n customFact,\n customClose,\n onClose,\n className,\n}) => {\n const { colors } = useLibTheme();\n\n return (\n <MapCardView className={className}>\n <MapCardHeader>\n {name && (\n <Copy type=\"copy-b\" size=\"big\">\n {name}\n </Copy>\n )}\n <CloseBtn onClick={onClose}>\n {customClose || <Cross iconColor={colors.text.default} />}\n </CloseBtn>\n </MapCardHeader>\n {isValidArray(facts, false) && (\n <POIFacts facts={facts} customFact={customFact} />\n )}\n {description && (\n <Copy type=\"copy\" size=\"small\" innerHTML={description} />\n )}\n {isValidArray(infos, false) && (\n <InfoList\n items={[\n {\n items: infos,\n },\n ]}\n />\n )}\n {action && action}\n </MapCardView>\n );\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 MapPOI {\n /** Unique ID */\n id: string;\n\n /** Latitude and Longitude of item position */\n position: [number, number];\n\n /** Marker icon settings */\n icon?: LocationIcon;\n\n /** POI name */\n name?: string;\n\n /** POI short description text */\n description?: string;\n\n /** Array of POI facts */\n facts?: string[];\n\n /** Array of additional POI informations */\n infos?: Info[];\n\n /** Function to inject custom action node */\n action?: React.ReactNode;\n}\n\nconst PointOfInterestMap: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Size mode */\n size?: 'default' | 'large';\n\n /** Array of POI card settings */\n pois?: MapPOI[];\n\n /** Use geolocation for own position */\n showOwnPosition?: 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 /** Min map zoom */\n minZoom?: number;\n\n /** Max map zoom */\n maxZoom?: number;\n\n /** Zoom if map jumps to location */\n flyToZoom?: number;\n\n /** Initial location */\n initialPointOfInterest?: string;\n\n /** Show all markers on first load */\n allMarkersOnInit?: boolean;\n\n /** Restrict map to bounds of markers area */\n restrictToMarkersArea?: boolean;\n\n /** Map container padding for show all markers */\n fitBoundsPadding?: [number, number];\n\n /** Function to inject custom fact node into MapCard */\n customFact?: (props: { key: React.Key; name: string }) => React.ReactNode;\n\n /** Custom current position marker */\n currentPosMarker?: LocationIcon;\n\n /** Custom card close icon */\n customCardClose?: React.ReactNode;\n\n /** Custom icon for my location request button */\n customLocationRequest?: React.ReactNode;\n}> = ({\n anchorId,\n size,\n pois,\n initialPointOfInterest = '',\n provider,\n attribution,\n center = [51.505, -0.09],\n zoom = 5,\n fitBoundsPadding,\n allMarkersOnInit = false,\n restrictToMarkersArea = true,\n showOwnPosition,\n flyToZoom,\n customFact,\n currentPosMarker,\n customCardClose,\n customLocationRequest,\n}) => {\n const isLarge = size === 'large';\n const { colors } = useLibTheme();\n\n const [activePoiId, setActivePoiId] = useState<string>(\n initialPointOfInterest || ''\n );\n const [isDirty, setIsDirty] = useState<boolean>(false);\n const activePOI = useMemo(() => {\n return pois?.find((poi) => poi.id === activePoiId);\n }, [activePoiId, pois]);\n\n const {\n isSupported: isGeolocationSupported,\n location,\n reset: resetGeolocation,\n // error,\n } = useGeolocation(true, false);\n\n const mapMarkers = useMemo(() => {\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\n // marker of own position\n const defaultPosMarker: LocationIcon = {\n size: [24, 24],\n anchor: [12, 12],\n sizeActive: [24, 24],\n anchorActive: [12, 12],\n url: getSVGData(<CurrentLocation iconColor=\"#5383EC\" />),\n };\n\n const markers: LeafletMapMarker[] =\n pois\n ?.filter((poi) => poi.id !== undefined)\n ?.map(({ id, position, icon }) => ({\n id,\n position,\n icon: icon || defaultMarker,\n isInteractive: true,\n })) || [];\n\n if (\n isGeolocationSupported &&\n location?.coords.latitude &&\n location?.coords.longitude\n ) {\n markers.push({\n id: 'my-current-position-123456789',\n position: [location.coords.latitude, location.coords.longitude],\n icon: currentPosMarker || defaultPosMarker,\n });\n }\n\n return markers;\n }, [\n currentPosMarker,\n isGeolocationSupported,\n location?.coords.latitude,\n location?.coords.longitude,\n pois,\n ]);\n\n const {\n isLoaded,\n setContainer: setMapContainer,\n flyToActive,\n showAllMarkers,\n flyToPosition,\n getCurrentZoom,\n } = useLeafletMap({\n url: provider,\n attribution,\n center,\n zoom,\n activeMarkerId: activePoiId,\n markers: mapMarkers,\n fitBoundsPadding,\n restrictToMarkersArea,\n showZoomControls: true,\n zoomControlPosition: 'bottomleft',\n onMarkerClick: (markerId) => {\n setActivePoiId((prev) => {\n if (prev === markerId) {\n return '';\n }\n return markerId;\n });\n },\n });\n\n useEffect(() => {\n if (isLoaded && !isDirty) {\n if (allMarkersOnInit) showAllMarkers();\n } else {\n const currentZoom = getCurrentZoom();\n let zoom = flyToZoom;\n if (flyToZoom !== undefined && currentZoom > flyToZoom) {\n zoom = currentZoom;\n }\n\n flyToActive(zoom);\n }\n }, [\n activePoiId,\n allMarkersOnInit,\n flyToActive,\n flyToZoom,\n getCurrentZoom,\n initialPointOfInterest,\n isDirty,\n isLoaded,\n showAllMarkers,\n ]);\n\n useEffect(() => {\n if (!isDirty && activePoiId !== initialPointOfInterest) {\n setIsDirty(true);\n }\n }, [activePoiId, initialPointOfInterest, isDirty]);\n\n const handleLocationRequest = async () => {\n if (location?.coords?.latitude && location?.coords?.longitude) {\n const currentZoom = getCurrentZoom();\n let zoom = flyToZoom;\n if (flyToZoom !== undefined && currentZoom > flyToZoom) {\n zoom = currentZoom;\n }\n\n flyToPosition(\n [location.coords.latitude, location.coords.longitude],\n zoom\n );\n } else {\n try {\n const position = await resetGeolocation();\n if (position) showAllMarkers();\n } catch (err) {\n // console.log(err);\n }\n }\n };\n\n return (\n <PoiMapSection\n anchorId={anchorId}\n bgColor=\"image\"\n bgMode=\"full\"\n isLarge={isLarge}\n >\n <Wrapper clampWidth={isLarge ? 'large' : 'normal'}>\n <MapContainer>\n <Map ref={setMapContainer} isLarge={size === 'large'} />\n {showOwnPosition && (\n <RequestGeolocationBtn onClick={handleLocationRequest}>\n {customLocationRequest || (\n <MyLocation iconColor={colors.text.default} />\n )}\n </RequestGeolocationBtn>\n )}\n {activePOI && activePOI.name && (\n <CardStage\n onClick={(ev) => {\n if (ev.target !== ev.currentTarget) return;\n setActivePoiId('');\n }}\n >\n <MapCard\n {...activePOI}\n onClose={() => setActivePoiId('')}\n customFact={customFact}\n customClose={customCardClose}\n />\n </CardStage>\n )}\n </MapContainer>\n </Wrapper>\n </PoiMapSection>\n );\n};\n\nexport const PointOfInterestMapComponent = PointOfInterestMap;\nexport default withLibTheme(PointOfInterestMap);\n"],"names":["distinct","value","index","array","indexOf","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","JsonLd","item","mainEntity","map","name","acceptedAnswer","generateFAQ","Wrapper","addWhitespace","Grid","Row","Col","i","key","concat","prev","copy","__spreadArray","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","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","useContext","ThemeContext","isCentered","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$1","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","FieldSet","fieldset","Fields","fieldValidator","config","__awaiter","inputType","error","isRequired","errorMsg","test","areaValidator","selectValidator","selectedItem","datepickerValidator","single","singleSelect","singleDateError","multiDateError","locationValidator","position","fieldGroupValidator","groupType","selectValues","uploadValidator","files","StyledSection","Form","form","FieldContainer","FormFooter","Status","ActionContainer","DynamicForm$1","fields","onSubmit","submitAction","definitions","subjectLine","targetEmails","submitReponse","setSubmitResponse","initalData","initialOption","initialDates","group","initalArray_1","forEach","field","initialChecked","every","useFormik","initialValues","values","helpers","valuesAndMails","setSubmitting","response","sent","resetForm","isError","validateOnBlur","validateOnChange","validate","errors","error_1","error_2","error_3","error_4","error_5","error_6","error_7","handleSubmit","handleChange","handleBlur","setFieldTouched","validateField","submitForm","setValues","isSubmitting","touched","dirty","latestValuesRef","setField","useCallback","props","shouldValidate","fieldKeys","Object","keys","noValidate","isTouched","setTouched","Textfield","enableMemo","placeholder","onChange","onBlur","infoMessage","info","errorMessage","renderField","area","Textarea","renderAreaField","datepicker","dates","start","end","DatepickerCmp","onDataChange","minDate","maxDate","deleteAction","handleReset","ButtonGhost","Button","nextCtrlUrl","prevCtrlUrl","renderDatepickerField","location","locationData","mappedData","LocationField","initialMapCenter","zoom","customLocationControl","customToggle","customResetControl","toggleLabel","trackLocationLabel","renderLocationField","checkbox","groupData","FieldWrapper","Head","ci","Checkbox","cIndex","Messages","renderCheckboxGroupField","radio","fi","RadioButton","e","renderRadioGroupField","select","SelectDropdown","dropdownItems","filter","selectedOption","indicator","renderSelectField","upload","FileUploadCmp","uploadLabel","addBtnLabel","acceptedFormats","onUploadFiles","customUploadIcon","customDeleteIcon","renderUploadField","message","copyInverted","as","Label","generateTextField","NewsletterForm$1","customField","action","method","formRef","initialData","submit","generationProps","isDisabled","TagContainer","TagWrapper","Events","FilterIcon","EventItem","ListFooter","ShowMore","itemCount","EventOverview$1","tags","events","initial","showMoreText","onTagClick","customTag","globals","filterName","eventFilterName","activeTags","selectedTags","setSelectedTags","visibleRows","setVisibleRows","targetRef","observerSupported","useObserverSupport","isMounted","useMounted","eventCount","setNewPos","useScrollTo","getFilters","filters","getUrlParams","tagsFilter","split","isValidArray","apply","paramTags","setUrlParam","join","deleteUrlParam","useUpdateEffect","handleTagClick","tag","enableToggling","prevCopy","itemIndex","filteredEvents","useMemo","filtered","hasTags","visibleEvents","_","element","entry","ceil","disconnect","filteredTags","Filter","isActive","clickHandler","preventDefault","Tag","timespan","eventDateFormat","eventTimeFormat","eventLocaleKey","getFormattedTimespan","eventTimespanFormat","duration","address","EventBlock","Pointer","EventList$1","event","tagHref","url","validUrl","URL","newParams","URLSearchParams","search","set","encodeURIComponent","toString","err","getEventFilterParams","EventTitle","Heading","EventDateTime","EventAddress","EventText","EventDetail$1","infos","hasInfos","publishedAt","formatter","allowEdgeRadius","abstract","InfoList","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","features","featureCount","isHalf","halign","feature","Gallery$1","images","isFull","genHeightStyles","mainIdent","genIdent","pageFlow","hasMain","mainTopIdent","hasTop","mainBottomIdent","hasBottom","fullIdent","navMainHeight","getNavHeight","getFullNavbarHeights","navMainTopHeight","navMainBottomHeight","navFullHeight","mapToSelector","idents","id","refHeight","StyledPoster","HeaderSection","HeaderSectionSmall","videoUrl","focus","kenBurnsZoom","kenBurnsZoomPoint","kenBurnsInterval","onImageChange","children","HeaderVideo","placeholderImg","HeaderKenBurns","zoomPoint","interval","HeaderPoster","bgImage","wrapperLarge","Overlay","textOnImage","bgValue","ContentMobile","Header$1","focusPoint","customImgOverlay","overlay","Fragment","ItemContainer","Items","isVisible","Item","ItemLink","IconList$1","toggle","showLessText","enableToggle","showMore","setShowMore","handleToggleClick","ratio","isToggled","additionalProps","IndexLink","LinkLabel","IconWrapper","IndexList$1","scrollToOffset","setTargetPos","useMediaQueries","topOffset","setTopOffset","handleLinkClick","getAttribute","getElementById","top","scrollY","hash","history","pushState","header","querySelector","navbarIdent","getNavbarState","navbarHeights","ArrowDown","isStackable","clampAbstract","clampText","MapSection","MapContainer","gridWidth","wrapperWhitespace","xxlarge","CardWrapper","CardContainer","seperation","padding","InfoCardView","CardHeader","ContactList","ContactListLink","AddressContainer","CompanyInfo","companyName","street","postalCode","city","country","Desc","LocationInfoCard","addressIcon","addressIconContent","LocationPin","phoneIconContent","telephone","Phone","mailIconContent","email","Mail","Controls","FylToCtrlContainer","button","Map$2","provider","attribution","center","flyToZoom","initialLocation","locations","allMarkersOnInit","fitBoundsPadding","flyToControl","controlNext","controlPrev","activeLocationId","setActiveLocationId","isDirty","setIsDirty","activeLocation","find","l","defaultMarker","anchor","sizeActive","anchorActive","getSVGData","getSVGDataImg","useLeafletMap","activeMarkerId","markers","isInteractive","onMarkerClick","isLoaded","setMapContainer","setContainer","flyToActive","showAllMarkers","goToNext","currentIndex","findIndex","newIndex","goToPrevious","geo","latitude","longitude","streetAddress","addressLocality","addressRegion","addressCountry","generateLocalBusiness","stopPropagation","move","Icons","ArrowRightGhost","TitleIcon","NavBlock","customTitleIcon","NavList$1","NumberContainer","Number","Callout","stringLength","IconBlock","number","height","ContentContainer","NumberList$1","section","Parallax","hAlign","contentWidth","Container","figure","verticallyCentered","imageTextGradientCentered","Intro","Poster$1","horizontallyCentered","maxTitleLines","maxTextLines","ItemList","ItemBlock","ListHead","Price","PriceBlock","price","PriceList$1","isHighlighted","PriceTag","hasBackground","mode","PriceTable$1","priceTagCount","Source","Quote$1","source","citeUrl","cite","ImageWrapper","SimpleImage$1","Cards","FollowUs","InstagramIcon","SocialWall$1","hashTag","followUs","socialIcon","Instagram","TableWrapper","Table$1","tableItems","TableBlock","Figure","Video","VideoBlock","isSplitted","mapToTeaserBgMode","preventSplit","Teaser$1","video","hasVideo","urls","viewRef","setLoaded","isVideoActive","setVideoActive","isObserverSupported","viewEl","muted","autoPlay","loop","onCanPlayThrough","aspectRatios","titleHyphens","getGridColOfContent","WideVideo","WideImage","TeaserWide$1","TimelineBlock","isSwitched","TimelineText","ItemTitle","ItemTextBlock","Timeline$1","targetRefs","setTargetRefs","observerRef","activeItem","setActiveItem","t","Array","fill","createRef","embedId","playIcon","consentText","consentAction","VideoCard","VideoContainer","VideoControls","RawVideo$1","videoUrls","autoplay","isStarted","setIsStarted","controls","Play","JobInfos","JobCard","jobTitle","employmentTypes","totalLocations","allLocationsLabel","modelIcon","locationIcon","hasEmploymentType","validLocations","loc","hasLocations","locationText","hyphens","ClockFilled","escapeRegExp","replace","FilterField","removeMatchIntersections","m","prioItem","filterJobs","filterQuery","jobs","prioList","job","exactNameMatches","RegExp","jobExactTitleFilter","match","priority","nameMatches","preparedQuery","toLowerCase","perparedJobTitle","jobSoftTitleFilter","locationNameMatches","regex","preparedName","jobLocationNameFilter","typeMatches","preparedText","jobTypesFilter","JobList$1","totalJobLocations","allJobLocationsLabel","initialFilterQuery","filterPlaceholder","hasFilter","filterSubmitIcon","filterClearIcon","jobFilterName","jobCount","setFilterQuery","jobMatches","queryParts","part","trim","searchMatches","queryParts_1","_i","intersectionIndex","sItem","intersections","matches_1","getFilter","urlFilter","submitIcon","clearIcon","sort","a","b","ArticleHead","JobArticle$1","organization","datePosted","jsonLd","jobDesc","directApply","el","toISOString","employmentType","hiringOrganization","logo","jobLocation","generateJob","Facts","POIFacts","PoiTitle","PoiText","PointOfInterestDetail$1","customFact","filterPois","pois","poi","poiExactNameFilter","poiSoftNameFilter","factMatches","preparedFact","poiFactFilter","infoMatches","poiInfoFilter","descMatches","shortDescription","preparedDesc","poiDescriptionFilter","PointOfInterestOverview$1","enableFiltering","poiFilterName","poiMatches","POICard","PoiMapSection","isLarge","Map","RequestGeolocationBtn","CardStage","MapCardView","MapCardHeader","CloseBtn","MapCard","customClose","onClose","Cross","PointOfInterestMap$1","initialPointOfInterest","restrictToMarkersArea","showOwnPosition","currentPosMarker","customCardClose","customLocationRequest","activePoiId","setActivePoiId","activePOI","_j","useGeolocation","isGeolocationSupported","isSupported","resetGeolocation","mapMarkers","defaultPosMarker","CurrentLocation","coords","_k","showZoomControls","zoomControlPosition","markerId","flyToPosition","getCurrentZoom","currentZoom","zoom_1","zoom_2","MyLocation","moveRatio","direction","setIsLoaded","yTransform","setYTransform","cRef","setContainerRef","parallaxRef","isNaN","prevEl","previousElementSibling","bgIdent","dataset","stackIdent","setAttribute","handleScroll","containerPos","transform"],"mappings":"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"}