@blateral/b.kit 2.4.2 → 2.5.0-beta.1.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 (845) hide show
  1. package/cjs/Actions-c7b16449.js +2 -0
  2. package/cjs/Actions-c7b16449.js.map +1 -0
  3. package/cjs/Bdot-5f8e0450.js +2 -0
  4. package/cjs/Bdot-5f8e0450.js.map +1 -0
  5. package/cjs/Button-51ea72b7.js +2 -0
  6. package/cjs/Button-51ea72b7.js.map +1 -0
  7. package/cjs/ButtonGhost-628bbd60.js +2 -0
  8. package/cjs/ButtonGhost-628bbd60.js.map +1 -0
  9. package/cjs/Callout-5dd16679.js +2 -0
  10. package/cjs/Callout-5dd16679.js.map +1 -0
  11. package/cjs/Checkbox-1c34c7e6.js +2 -0
  12. package/cjs/Checkbox-1c34c7e6.js.map +1 -0
  13. package/cjs/ClockFilled-2483aa4a.js +2 -0
  14. package/cjs/ClockFilled-2483aa4a.js.map +1 -0
  15. package/cjs/Control-08d09950.js +2 -0
  16. package/cjs/Control-08d09950.js.map +1 -0
  17. package/cjs/Copy-ea6ab025.js +2 -0
  18. package/cjs/Copy-ea6ab025.js.map +1 -0
  19. package/cjs/EventBlock-d191a8ae.js +2 -0
  20. package/cjs/EventBlock-d191a8ae.js.map +1 -0
  21. package/cjs/Filter-d6d90b8b.js +2 -0
  22. package/cjs/Filter-d6d90b8b.js.map +1 -0
  23. package/cjs/FilterField-b1547fb4.js +2 -0
  24. package/cjs/FilterField-b1547fb4.js.map +1 -0
  25. package/cjs/Grid-6f4f99bc.js +2 -0
  26. package/cjs/Grid-6f4f99bc.js.map +1 -0
  27. package/cjs/Image-c72f7a80.js +2 -0
  28. package/cjs/Image-c72f7a80.js.map +1 -0
  29. package/cjs/InfoList-71d3388a.js +2 -0
  30. package/cjs/InfoList-71d3388a.js.map +1 -0
  31. package/cjs/LanguageSwitcher-8fdd22ba.js +2 -0
  32. package/cjs/LanguageSwitcher-8fdd22ba.js.map +1 -0
  33. package/cjs/LibThemeProvider-4823de57.js +2 -0
  34. package/cjs/LibThemeProvider-4823de57.js.map +1 -0
  35. package/cjs/Link-5a6f1633.js +2 -0
  36. package/cjs/Link-5a6f1633.js.map +1 -0
  37. package/cjs/Navigation-ca78100c.js +2 -0
  38. package/cjs/Navigation-ca78100c.js.map +1 -0
  39. package/cjs/POICard-e46f9041.js +2 -0
  40. package/cjs/POICard-e46f9041.js.map +1 -0
  41. package/cjs/Pointer-fde7b548.js +2 -0
  42. package/cjs/Pointer-fde7b548.js.map +1 -0
  43. package/cjs/Section-e8e8cf81.js +2 -0
  44. package/cjs/Section-e8e8cf81.js.map +1 -0
  45. package/cjs/SocialList-1d5f75a8.js +2 -0
  46. package/cjs/SocialList-1d5f75a8.js.map +1 -0
  47. package/cjs/TableBlock-007f8e34.js +2 -0
  48. package/cjs/TableBlock-007f8e34.js.map +1 -0
  49. package/cjs/Tag-9238cf0c.js +2 -0
  50. package/cjs/Tag-9238cf0c.js.map +1 -0
  51. package/cjs/Textarea-485efa2d.js +2 -0
  52. package/cjs/Textarea-485efa2d.js.map +1 -0
  53. package/cjs/Textfield-56996c98.js +2 -0
  54. package/cjs/Textfield-56996c98.js.map +1 -0
  55. package/cjs/VideoBlock-a7d6ff7d.js +2 -0
  56. package/cjs/VideoBlock-a7d6ff7d.js.map +1 -0
  57. package/cjs/VideoCard-d48a37fe.js +2 -0
  58. package/cjs/VideoCard-d48a37fe.js.map +1 -0
  59. package/cjs/Wrapper-ff6854d7.js +2 -0
  60. package/cjs/Wrapper-ff6854d7.js.map +1 -0
  61. package/cjs/arrays-c272ed59.js +2 -0
  62. package/cjs/arrays-c272ed59.js.map +1 -0
  63. package/cjs/base.js +2 -0
  64. package/cjs/base.js.map +1 -0
  65. package/cjs/blocks.js +2 -0
  66. package/cjs/blocks.js.map +1 -0
  67. package/cjs/buttons.js +2 -0
  68. package/cjs/buttons.js.map +1 -0
  69. package/cjs/clamp-bd21d587.js +2 -0
  70. package/cjs/clamp-bd21d587.js.map +1 -0
  71. package/cjs/concat-f387d848.js +2 -0
  72. package/cjs/concat-f387d848.js.map +1 -0
  73. package/cjs/cookies.js +2 -0
  74. package/cjs/cookies.js.map +1 -0
  75. package/cjs/escape-1ef8dd83.js +2 -0
  76. package/cjs/escape-1ef8dd83.js.map +1 -0
  77. package/cjs/fields.js +2 -0
  78. package/cjs/fields.js.map +1 -0
  79. package/cjs/footer.js +2 -0
  80. package/cjs/footer.js.map +1 -0
  81. package/cjs/headers.js +2 -0
  82. package/cjs/headers.js.map +1 -0
  83. package/cjs/hexRgbConverter-91b28aea.js +2 -0
  84. package/cjs/hexRgbConverter-91b28aea.js.map +1 -0
  85. package/cjs/hooks.js +2 -0
  86. package/cjs/hooks.js.map +1 -0
  87. package/cjs/icons.js +2 -0
  88. package/cjs/icons.js.map +1 -0
  89. package/cjs/index.js +2 -0
  90. package/cjs/index.js.map +1 -0
  91. package/cjs/navigation-389b22e2.js +2 -0
  92. package/cjs/navigation-389b22e2.js.map +1 -0
  93. package/cjs/navigation.js +2 -0
  94. package/cjs/navigation.js.map +1 -0
  95. package/cjs/sections.dynamicform.js +2 -0
  96. package/cjs/sections.dynamicform.js.map +1 -0
  97. package/cjs/sections.events.js +2 -0
  98. package/cjs/sections.events.js.map +1 -0
  99. package/cjs/sections.forms.js +2 -0
  100. package/cjs/sections.forms.js.map +1 -0
  101. package/cjs/sections.jobs.js +2 -0
  102. package/cjs/sections.jobs.js.map +1 -0
  103. package/cjs/sections.js +2 -0
  104. package/cjs/sections.js.map +1 -0
  105. package/cjs/sections.news.js +2 -0
  106. package/cjs/sections.news.js.map +1 -0
  107. package/cjs/sections.pois.js +2 -0
  108. package/cjs/sections.pois.js.map +1 -0
  109. package/cjs/statusFormatter-0393122b.js +2 -0
  110. package/cjs/statusFormatter-0393122b.js.map +1 -0
  111. package/cjs/structuredData-0b1278a9.js +2 -0
  112. package/cjs/structuredData-0b1278a9.js.map +1 -0
  113. package/cjs/styles-3a495a2d.js +2 -0
  114. package/cjs/styles-3a495a2d.js.map +1 -0
  115. package/cjs/typography.js +2 -0
  116. package/cjs/typography.js.map +1 -0
  117. package/cjs/urlParams-7525f638.js +2 -0
  118. package/cjs/urlParams-7525f638.js.map +1 -0
  119. package/cjs/useCookieConsent-1af2af74.js +2 -0
  120. package/cjs/useCookieConsent-1af2af74.js.map +1 -0
  121. package/cjs/useEqualSheetHeight-8f92c912.js +2 -0
  122. package/cjs/useEqualSheetHeight-8f92c912.js.map +1 -0
  123. package/cjs/useGeolocation-d8946470.js +2 -0
  124. package/cjs/useGeolocation-d8946470.js.map +1 -0
  125. package/cjs/useLazyInput-0b912584.js +2 -0
  126. package/cjs/useLazyInput-0b912584.js.map +1 -0
  127. package/cjs/useLeafletMap-2e608b01.js +2 -0
  128. package/cjs/useLeafletMap-2e608b01.js.map +1 -0
  129. package/cjs/useMediaQuery-0bd70e6a.js +2 -0
  130. package/cjs/useMediaQuery-0bd70e6a.js.map +1 -0
  131. package/cjs/useMounted-0bba9869.js +2 -0
  132. package/cjs/useMounted-0bba9869.js.map +1 -0
  133. package/cjs/useObserverSupport-5ab320dd.js +2 -0
  134. package/cjs/useObserverSupport-5ab320dd.js.map +1 -0
  135. package/cjs/useScrollTo-fdd665da.js +2 -0
  136. package/cjs/useScrollTo-fdd665da.js.map +1 -0
  137. package/cjs/useUpdateEffect-4d233e2c.js +2 -0
  138. package/cjs/useUpdateEffect-4d233e2c.js.map +1 -0
  139. package/esm/Actions-21372b3a.js +57 -0
  140. package/esm/Actions-21372b3a.js.map +1 -0
  141. package/esm/Bdot-4db38753.js +24 -0
  142. package/esm/Bdot-4db38753.js.map +1 -0
  143. package/esm/Button-f9279013.js +115 -0
  144. package/esm/Button-f9279013.js.map +1 -0
  145. package/esm/ButtonGhost-ae2e97a2.js +112 -0
  146. package/esm/ButtonGhost-ae2e97a2.js.map +1 -0
  147. package/esm/Callout-a926194d.js +99 -0
  148. package/esm/Callout-a926194d.js.map +1 -0
  149. package/esm/Checkbox-dd12facd.js +135 -0
  150. package/esm/Checkbox-dd12facd.js.map +1 -0
  151. package/esm/ClockFilled-62515a8f.js +1793 -0
  152. package/esm/ClockFilled-62515a8f.js.map +1 -0
  153. package/esm/Control-2d605e12.js +52 -0
  154. package/esm/Control-2d605e12.js.map +1 -0
  155. package/esm/Copy-a28aeb61.js +270 -0
  156. package/esm/Copy-a28aeb61.js.map +1 -0
  157. package/esm/EventBlock-41d68d0a.js +136 -0
  158. package/esm/EventBlock-41d68d0a.js.map +1 -0
  159. package/esm/Filter-2b5f5e53.js +32 -0
  160. package/esm/Filter-2b5f5e53.js.map +1 -0
  161. package/esm/FilterField-7805bdb4.js +129 -0
  162. package/esm/FilterField-7805bdb4.js.map +1 -0
  163. package/esm/Grid-5eec127f.js +203 -0
  164. package/esm/Grid-5eec127f.js.map +1 -0
  165. package/esm/Image-dc2b33c1.js +193 -0
  166. package/esm/Image-dc2b33c1.js.map +1 -0
  167. package/esm/InfoList-5c4586ed.js +74 -0
  168. package/esm/InfoList-5c4586ed.js.map +1 -0
  169. package/esm/LanguageSwitcher-3fa20077.js +70 -0
  170. package/esm/LanguageSwitcher-3fa20077.js.map +1 -0
  171. package/esm/LibThemeProvider-52555ac9.js +115 -0
  172. package/esm/LibThemeProvider-52555ac9.js.map +1 -0
  173. package/esm/Link-3fd9c9b8.js +60 -0
  174. package/esm/Link-3fd9c9b8.js.map +1 -0
  175. package/esm/Navigation-3ded0cfc.js +1713 -0
  176. package/esm/Navigation-3ded0cfc.js.map +1 -0
  177. package/esm/POICard-96ec71d8.js +116 -0
  178. package/esm/POICard-96ec71d8.js.map +1 -0
  179. package/esm/Pointer-5c77b1f1.js +111 -0
  180. package/esm/Pointer-5c77b1f1.js.map +1 -0
  181. package/esm/Section-b76e6909.js +185 -0
  182. package/esm/Section-b76e6909.js.map +1 -0
  183. package/esm/SocialList-402b8f20.js +61 -0
  184. package/esm/SocialList-402b8f20.js.map +1 -0
  185. package/esm/TableBlock-cc49e089.js +159 -0
  186. package/esm/TableBlock-cc49e089.js.map +1 -0
  187. package/esm/Tag-ac51e916.js +67 -0
  188. package/esm/Tag-ac51e916.js.map +1 -0
  189. package/esm/Textarea-380665db.js +4598 -0
  190. package/esm/Textarea-380665db.js.map +1 -0
  191. package/esm/Textfield-d2f201a9.js +202 -0
  192. package/esm/Textfield-d2f201a9.js.map +1 -0
  193. package/esm/VideoBlock-5fe94711.js +260 -0
  194. package/esm/VideoBlock-5fe94711.js.map +1 -0
  195. package/esm/VideoCard-784c2a51.js +160 -0
  196. package/esm/VideoCard-784c2a51.js.map +1 -0
  197. package/esm/Wrapper-90dccc89.js +45 -0
  198. package/esm/Wrapper-90dccc89.js.map +1 -0
  199. package/esm/arrays-65b644ef.js +17 -0
  200. package/esm/arrays-65b644ef.js.map +1 -0
  201. package/esm/base.js +12 -0
  202. package/esm/base.js.map +1 -0
  203. package/esm/blocks.js +23 -0
  204. package/esm/blocks.js.map +1 -0
  205. package/esm/buttons.js +12 -0
  206. package/esm/buttons.js.map +1 -0
  207. package/esm/clamp-12d37b65.js +10 -0
  208. package/esm/clamp-12d37b65.js.map +1 -0
  209. package/esm/concat-ab3c66f2.js +40 -0
  210. package/esm/concat-ab3c66f2.js.map +1 -0
  211. package/esm/cookies.js +269 -0
  212. package/esm/cookies.js.map +1 -0
  213. package/esm/escape-cbff9c25.js +6 -0
  214. package/esm/escape-cbff9c25.js.map +1 -0
  215. package/esm/fields.js +191 -0
  216. package/esm/fields.js.map +1 -0
  217. package/esm/footer.js +302 -0
  218. package/esm/footer.js.map +1 -0
  219. package/esm/headers.js +639 -0
  220. package/esm/headers.js.map +1 -0
  221. package/esm/hexRgbConverter-edb91624.js +36 -0
  222. package/esm/hexRgbConverter-edb91624.js.map +1 -0
  223. package/esm/hooks.js +372 -0
  224. package/esm/hooks.js.map +1 -0
  225. package/esm/icons.js +70 -0
  226. package/esm/icons.js.map +1 -0
  227. package/esm/index.js +7 -0
  228. package/esm/index.js.map +1 -0
  229. package/esm/navigation-ada7fd84.js +82 -0
  230. package/esm/navigation-ada7fd84.js.map +1 -0
  231. package/esm/navigation.js +159 -0
  232. package/esm/navigation.js.map +1 -0
  233. package/esm/sections.dynamicform.js +1144 -0
  234. package/esm/sections.dynamicform.js.map +1 -0
  235. package/esm/sections.events.js +623 -0
  236. package/esm/sections.events.js.map +1 -0
  237. package/esm/sections.forms.js +283 -0
  238. package/esm/sections.forms.js.map +1 -0
  239. package/esm/sections.jobs.js +509 -0
  240. package/esm/sections.jobs.js.map +1 -0
  241. package/esm/sections.js +3740 -0
  242. package/esm/sections.js.map +1 -0
  243. package/esm/sections.news.js +1024 -0
  244. package/esm/sections.news.js.map +1 -0
  245. package/esm/sections.pois.js +720 -0
  246. package/esm/sections.pois.js.map +1 -0
  247. package/esm/statusFormatter-9be0fbff.js +255 -0
  248. package/esm/statusFormatter-9be0fbff.js.map +1 -0
  249. package/esm/structuredData-abf610d8.js +117 -0
  250. package/esm/structuredData-abf610d8.js.map +1 -0
  251. package/esm/styles-da982973.js +467 -0
  252. package/esm/styles-da982973.js.map +1 -0
  253. package/esm/typography.js +11 -0
  254. package/esm/typography.js.map +1 -0
  255. package/esm/urlParams-9cfdaf71.js +51 -0
  256. package/esm/urlParams-9cfdaf71.js.map +1 -0
  257. package/esm/useCookieConsent-0fc8667c.js +339 -0
  258. package/esm/useCookieConsent-0fc8667c.js.map +1 -0
  259. package/esm/useEqualSheetHeight-4030635e.js +199 -0
  260. package/esm/useEqualSheetHeight-4030635e.js.map +1 -0
  261. package/esm/useGeolocation-f9f073cc.js +95 -0
  262. package/esm/useGeolocation-f9f073cc.js.map +1 -0
  263. package/esm/useLazyInput-16a0b633.js +85 -0
  264. package/esm/useLazyInput-16a0b633.js.map +1 -0
  265. package/esm/useLeafletMap-84170d32.js +300 -0
  266. package/esm/useLeafletMap-84170d32.js.map +1 -0
  267. package/esm/useMediaQuery-b08dda62.js +159 -0
  268. package/esm/useMediaQuery-b08dda62.js.map +1 -0
  269. package/esm/useMounted-1e4cc87b.js +12 -0
  270. package/esm/useMounted-1e4cc87b.js.map +1 -0
  271. package/esm/useObserverSupport-02bce7f5.js +19 -0
  272. package/esm/useObserverSupport-02bce7f5.js.map +1 -0
  273. package/esm/useScrollTo-70af34bf.js +57 -0
  274. package/esm/useScrollTo-70af34bf.js.map +1 -0
  275. package/esm/useUpdateEffect-824c0c84.js +18 -0
  276. package/esm/useUpdateEffect-824c0c84.js.map +1 -0
  277. package/lib/base/package.json +7 -0
  278. package/lib/blocks/package.json +7 -0
  279. package/lib/buttons/package.json +7 -0
  280. package/lib/cookies/package.json +7 -0
  281. package/lib/fields/package.json +7 -0
  282. package/lib/footer/package.json +7 -0
  283. package/lib/headers/package.json +7 -0
  284. package/lib/hooks/package.json +7 -0
  285. package/lib/icons/package.json +7 -0
  286. package/lib/navigation/package.json +7 -0
  287. package/lib/sections/package.json +7 -0
  288. package/lib/sections.dynamicform/package.json +7 -0
  289. package/lib/sections.events/package.json +7 -0
  290. package/lib/sections.forms/package.json +7 -0
  291. package/lib/sections.jobs/package.json +7 -0
  292. package/lib/sections.news/package.json +7 -0
  293. package/lib/sections.pois/package.json +7 -0
  294. package/lib/typography/package.json +7 -0
  295. package/package.json +10 -6
  296. package/types/base.d.ts +5 -0
  297. package/types/base.d.ts.map +1 -0
  298. package/types/blocks.d.ts +16 -0
  299. package/types/blocks.d.ts.map +1 -0
  300. package/types/buttons.d.ts +6 -0
  301. package/types/buttons.d.ts.map +1 -0
  302. package/types/components/sections/navigation/menu/variations/MenuFlyout.d.ts.map +1 -0
  303. package/types/components/sections/navigation/menu/variations/MenuLarge.d.ts.map +1 -0
  304. package/types/cookies.d.ts +2 -0
  305. package/types/cookies.d.ts.map +1 -0
  306. package/types/fields.d.ts +14 -0
  307. package/types/fields.d.ts.map +1 -0
  308. package/types/footer.d.ts +5 -0
  309. package/types/footer.d.ts.map +1 -0
  310. package/types/headers.d.ts +5 -0
  311. package/types/headers.d.ts.map +1 -0
  312. package/types/hooks.d.ts +37 -0
  313. package/types/hooks.d.ts.map +1 -0
  314. package/types/icons.d.ts +3 -0
  315. package/types/icons.d.ts.map +1 -0
  316. package/types/index.d.ts +18 -0
  317. package/types/index.d.ts.map +1 -0
  318. package/types/navigation.d.ts +10 -0
  319. package/types/navigation.d.ts.map +1 -0
  320. package/types/sections.d.ts +32 -0
  321. package/types/sections.d.ts.map +1 -0
  322. package/types/sections.dynamicform.d.ts +2 -0
  323. package/types/sections.dynamicform.d.ts.map +1 -0
  324. package/types/sections.events.d.ts +4 -0
  325. package/types/sections.events.d.ts.map +1 -0
  326. package/types/sections.forms.d.ts +2 -0
  327. package/types/sections.forms.d.ts.map +1 -0
  328. package/types/sections.jobs.d.ts +3 -0
  329. package/types/sections.jobs.d.ts.map +1 -0
  330. package/types/sections.news.d.ts +10 -0
  331. package/types/sections.news.d.ts.map +1 -0
  332. package/types/sections.pois.d.ts +4 -0
  333. package/types/sections.pois.d.ts.map +1 -0
  334. package/types/typography.d.ts +6 -0
  335. package/types/typography.d.ts.map +1 -0
  336. package/lib/components/sections/navigation/menu/variations/MenuFlyout.d.ts.map +0 -1
  337. package/lib/components/sections/navigation/menu/variations/MenuLarge.d.ts.map +0 -1
  338. package/lib/index.d.ts +0 -158
  339. package/lib/index.d.ts.map +0 -1
  340. package/lib/index.es.js +0 -2
  341. package/lib/index.es.js.map +0 -1
  342. package/lib/index.js +0 -2
  343. package/lib/index.js.map +0 -1
  344. /package/{lib → types}/components/base/Grid.d.ts +0 -0
  345. /package/{lib → types}/components/base/Grid.d.ts.map +0 -0
  346. /package/{lib → types}/components/base/Section.d.ts +0 -0
  347. /package/{lib → types}/components/base/Section.d.ts.map +0 -0
  348. /package/{lib → types}/components/base/Wrapper.d.ts +0 -0
  349. /package/{lib → types}/components/base/Wrapper.d.ts.map +0 -0
  350. /package/{lib → types}/components/base/icons/AngleDown.d.ts +0 -0
  351. /package/{lib → types}/components/base/icons/AngleDown.d.ts.map +0 -0
  352. /package/{lib → types}/components/base/icons/AngleLeft.d.ts +0 -0
  353. /package/{lib → types}/components/base/icons/AngleLeft.d.ts.map +0 -0
  354. /package/{lib → types}/components/base/icons/AngleRight.d.ts +0 -0
  355. /package/{lib → types}/components/base/icons/AngleRight.d.ts.map +0 -0
  356. /package/{lib → types}/components/base/icons/AngleUp.d.ts +0 -0
  357. /package/{lib → types}/components/base/icons/AngleUp.d.ts.map +0 -0
  358. /package/{lib → types}/components/base/icons/ArrowDown.d.ts +0 -0
  359. /package/{lib → types}/components/base/icons/ArrowDown.d.ts.map +0 -0
  360. /package/{lib → types}/components/base/icons/ArrowLeft.d.ts +0 -0
  361. /package/{lib → types}/components/base/icons/ArrowLeft.d.ts.map +0 -0
  362. /package/{lib → types}/components/base/icons/ArrowLeftGhost.d.ts +0 -0
  363. /package/{lib → types}/components/base/icons/ArrowLeftGhost.d.ts.map +0 -0
  364. /package/{lib → types}/components/base/icons/ArrowLeftRight.d.ts +0 -0
  365. /package/{lib → types}/components/base/icons/ArrowLeftRight.d.ts.map +0 -0
  366. /package/{lib → types}/components/base/icons/ArrowRight.d.ts +0 -0
  367. /package/{lib → types}/components/base/icons/ArrowRight.d.ts.map +0 -0
  368. /package/{lib → types}/components/base/icons/ArrowRightGhost.d.ts +0 -0
  369. /package/{lib → types}/components/base/icons/ArrowRightGhost.d.ts.map +0 -0
  370. /package/{lib → types}/components/base/icons/ArrowUp.d.ts +0 -0
  371. /package/{lib → types}/components/base/icons/ArrowUp.d.ts.map +0 -0
  372. /package/{lib → types}/components/base/icons/BoxArrowUpRight.d.ts +0 -0
  373. /package/{lib → types}/components/base/icons/BoxArrowUpRight.d.ts.map +0 -0
  374. /package/{lib → types}/components/base/icons/CalendarToday.d.ts +0 -0
  375. /package/{lib → types}/components/base/icons/CalendarToday.d.ts.map +0 -0
  376. /package/{lib → types}/components/base/icons/Category.d.ts +0 -0
  377. /package/{lib → types}/components/base/icons/Category.d.ts.map +0 -0
  378. /package/{lib → types}/components/base/icons/Check.d.ts +0 -0
  379. /package/{lib → types}/components/base/icons/Check.d.ts.map +0 -0
  380. /package/{lib → types}/components/base/icons/Clock.d.ts +0 -0
  381. /package/{lib → types}/components/base/icons/Clock.d.ts.map +0 -0
  382. /package/{lib → types}/components/base/icons/ClockFilled.d.ts +0 -0
  383. /package/{lib → types}/components/base/icons/ClockFilled.d.ts.map +0 -0
  384. /package/{lib → types}/components/base/icons/Computer.d.ts +0 -0
  385. /package/{lib → types}/components/base/icons/Computer.d.ts.map +0 -0
  386. /package/{lib → types}/components/base/icons/Cross.d.ts +0 -0
  387. /package/{lib → types}/components/base/icons/Cross.d.ts.map +0 -0
  388. /package/{lib → types}/components/base/icons/CrossSmall.d.ts +0 -0
  389. /package/{lib → types}/components/base/icons/CrossSmall.d.ts.map +0 -0
  390. /package/{lib → types}/components/base/icons/CurrentLocation.d.ts +0 -0
  391. /package/{lib → types}/components/base/icons/CurrentLocation.d.ts.map +0 -0
  392. /package/{lib → types}/components/base/icons/DateRange.d.ts +0 -0
  393. /package/{lib → types}/components/base/icons/DateRange.d.ts.map +0 -0
  394. /package/{lib → types}/components/base/icons/DeleteForever.d.ts +0 -0
  395. /package/{lib → types}/components/base/icons/DeleteForever.d.ts.map +0 -0
  396. /package/{lib → types}/components/base/icons/External.d.ts +0 -0
  397. /package/{lib → types}/components/base/icons/External.d.ts.map +0 -0
  398. /package/{lib → types}/components/base/icons/Filter.d.ts +0 -0
  399. /package/{lib → types}/components/base/icons/Filter.d.ts.map +0 -0
  400. /package/{lib → types}/components/base/icons/FlyTo.d.ts +0 -0
  401. /package/{lib → types}/components/base/icons/FlyTo.d.ts.map +0 -0
  402. /package/{lib → types}/components/base/icons/Icons.d.ts +0 -0
  403. /package/{lib → types}/components/base/icons/Icons.d.ts.map +0 -0
  404. /package/{lib → types}/components/base/icons/Info.d.ts +0 -0
  405. /package/{lib → types}/components/base/icons/Info.d.ts.map +0 -0
  406. /package/{lib → types}/components/base/icons/Language.d.ts +0 -0
  407. /package/{lib → types}/components/base/icons/Language.d.ts.map +0 -0
  408. /package/{lib → types}/components/base/icons/LocationPin.d.ts +0 -0
  409. /package/{lib → types}/components/base/icons/LocationPin.d.ts.map +0 -0
  410. /package/{lib → types}/components/base/icons/LocationSearch.d.ts +0 -0
  411. /package/{lib → types}/components/base/icons/LocationSearch.d.ts.map +0 -0
  412. /package/{lib → types}/components/base/icons/Magnifier.d.ts +0 -0
  413. /package/{lib → types}/components/base/icons/Magnifier.d.ts.map +0 -0
  414. /package/{lib → types}/components/base/icons/Mail.d.ts +0 -0
  415. /package/{lib → types}/components/base/icons/Mail.d.ts.map +0 -0
  416. /package/{lib → types}/components/base/icons/Map.d.ts +0 -0
  417. /package/{lib → types}/components/base/icons/Map.d.ts.map +0 -0
  418. /package/{lib → types}/components/base/icons/MenuBurger.d.ts +0 -0
  419. /package/{lib → types}/components/base/icons/MenuBurger.d.ts.map +0 -0
  420. /package/{lib → types}/components/base/icons/Minus.d.ts +0 -0
  421. /package/{lib → types}/components/base/icons/Minus.d.ts.map +0 -0
  422. /package/{lib → types}/components/base/icons/Money.d.ts +0 -0
  423. /package/{lib → types}/components/base/icons/Money.d.ts.map +0 -0
  424. /package/{lib → types}/components/base/icons/MyLocation.d.ts +0 -0
  425. /package/{lib → types}/components/base/icons/MyLocation.d.ts.map +0 -0
  426. /package/{lib → types}/components/base/icons/Person.d.ts +0 -0
  427. /package/{lib → types}/components/base/icons/Person.d.ts.map +0 -0
  428. /package/{lib → types}/components/base/icons/Phone.d.ts +0 -0
  429. /package/{lib → types}/components/base/icons/Phone.d.ts.map +0 -0
  430. /package/{lib → types}/components/base/icons/Place.d.ts +0 -0
  431. /package/{lib → types}/components/base/icons/Place.d.ts.map +0 -0
  432. /package/{lib → types}/components/base/icons/Play.d.ts +0 -0
  433. /package/{lib → types}/components/base/icons/Play.d.ts.map +0 -0
  434. /package/{lib → types}/components/base/icons/Plus.d.ts +0 -0
  435. /package/{lib → types}/components/base/icons/Plus.d.ts.map +0 -0
  436. /package/{lib → types}/components/base/icons/Route.d.ts +0 -0
  437. /package/{lib → types}/components/base/icons/Route.d.ts.map +0 -0
  438. /package/{lib → types}/components/base/icons/Star.d.ts +0 -0
  439. /package/{lib → types}/components/base/icons/Star.d.ts.map +0 -0
  440. /package/{lib → types}/components/base/icons/ToggleOff.d.ts +0 -0
  441. /package/{lib → types}/components/base/icons/ToggleOff.d.ts.map +0 -0
  442. /package/{lib → types}/components/base/icons/ToggleOn.d.ts +0 -0
  443. /package/{lib → types}/components/base/icons/ToggleOn.d.ts.map +0 -0
  444. /package/{lib → types}/components/base/icons/UnfoldMore.d.ts +0 -0
  445. /package/{lib → types}/components/base/icons/UnfoldMore.d.ts.map +0 -0
  446. /package/{lib → types}/components/base/icons/files/Excel.d.ts +0 -0
  447. /package/{lib → types}/components/base/icons/files/Excel.d.ts.map +0 -0
  448. /package/{lib → types}/components/base/icons/files/Image.d.ts +0 -0
  449. /package/{lib → types}/components/base/icons/files/Image.d.ts.map +0 -0
  450. /package/{lib → types}/components/base/icons/files/Pdf.d.ts +0 -0
  451. /package/{lib → types}/components/base/icons/files/Pdf.d.ts.map +0 -0
  452. /package/{lib → types}/components/base/icons/files/PowerPoint.d.ts +0 -0
  453. /package/{lib → types}/components/base/icons/files/PowerPoint.d.ts.map +0 -0
  454. /package/{lib → types}/components/base/icons/files/UploadFile.d.ts +0 -0
  455. /package/{lib → types}/components/base/icons/files/UploadFile.d.ts.map +0 -0
  456. /package/{lib → types}/components/base/icons/files/Word.d.ts +0 -0
  457. /package/{lib → types}/components/base/icons/files/Word.d.ts.map +0 -0
  458. /package/{lib → types}/components/base/icons/files/Zip.d.ts +0 -0
  459. /package/{lib → types}/components/base/icons/files/Zip.d.ts.map +0 -0
  460. /package/{lib → types}/components/base/icons/socials/Facebook.d.ts +0 -0
  461. /package/{lib → types}/components/base/icons/socials/Facebook.d.ts.map +0 -0
  462. /package/{lib → types}/components/base/icons/socials/Instagram.d.ts +0 -0
  463. /package/{lib → types}/components/base/icons/socials/Instagram.d.ts.map +0 -0
  464. /package/{lib → types}/components/base/icons/socials/LinkedIn.d.ts +0 -0
  465. /package/{lib → types}/components/base/icons/socials/LinkedIn.d.ts.map +0 -0
  466. /package/{lib → types}/components/base/icons/socials/Twitter.d.ts +0 -0
  467. /package/{lib → types}/components/base/icons/socials/Twitter.d.ts.map +0 -0
  468. /package/{lib → types}/components/base/icons/socials/Xing.d.ts +0 -0
  469. /package/{lib → types}/components/base/icons/socials/Xing.d.ts.map +0 -0
  470. /package/{lib → types}/components/base/icons/socials/Youtube.d.ts +0 -0
  471. /package/{lib → types}/components/base/icons/socials/Youtube.d.ts.map +0 -0
  472. /package/{lib → types}/components/base/nl2br.d.ts +0 -0
  473. /package/{lib → types}/components/base/nl2br.d.ts.map +0 -0
  474. /package/{lib → types}/components/blocks/Actions.d.ts +0 -0
  475. /package/{lib → types}/components/blocks/Actions.d.ts.map +0 -0
  476. /package/{lib → types}/components/blocks/Alert.d.ts +0 -0
  477. /package/{lib → types}/components/blocks/Alert.d.ts.map +0 -0
  478. /package/{lib → types}/components/blocks/Bdot.d.ts +0 -0
  479. /package/{lib → types}/components/blocks/Bdot.d.ts.map +0 -0
  480. /package/{lib → types}/components/blocks/CookieConsent.d.ts +0 -0
  481. /package/{lib → types}/components/blocks/CookieConsent.d.ts.map +0 -0
  482. /package/{lib → types}/components/blocks/EventBlock.d.ts +0 -0
  483. /package/{lib → types}/components/blocks/EventBlock.d.ts.map +0 -0
  484. /package/{lib → types}/components/blocks/Fact.d.ts +0 -0
  485. /package/{lib → types}/components/blocks/Fact.d.ts.map +0 -0
  486. /package/{lib → types}/components/blocks/Feature.d.ts +0 -0
  487. /package/{lib → types}/components/blocks/Feature.d.ts.map +0 -0
  488. /package/{lib → types}/components/blocks/Image.d.ts +0 -0
  489. /package/{lib → types}/components/blocks/Image.d.ts.map +0 -0
  490. /package/{lib → types}/components/blocks/InfoList.d.ts +0 -0
  491. /package/{lib → types}/components/blocks/InfoList.d.ts.map +0 -0
  492. /package/{lib → types}/components/blocks/IntroBlock.d.ts +0 -0
  493. /package/{lib → types}/components/blocks/IntroBlock.d.ts.map +0 -0
  494. /package/{lib → types}/components/blocks/JobCard.d.ts +0 -0
  495. /package/{lib → types}/components/blocks/JobCard.d.ts.map +0 -0
  496. /package/{lib → types}/components/blocks/LanguageSwitcher.d.ts +0 -0
  497. /package/{lib → types}/components/blocks/LanguageSwitcher.d.ts.map +0 -0
  498. /package/{lib → types}/components/blocks/NavBlock.d.ts +0 -0
  499. /package/{lib → types}/components/blocks/NavBlock.d.ts.map +0 -0
  500. /package/{lib → types}/components/blocks/NewsCard.d.ts +0 -0
  501. /package/{lib → types}/components/blocks/NewsCard.d.ts.map +0 -0
  502. /package/{lib → types}/components/blocks/POICard.d.ts +0 -0
  503. /package/{lib → types}/components/blocks/POICard.d.ts.map +0 -0
  504. /package/{lib → types}/components/blocks/POIFacts.d.ts +0 -0
  505. /package/{lib → types}/components/blocks/POIFacts.d.ts.map +0 -0
  506. /package/{lib → types}/components/blocks/PriceTag.d.ts +0 -0
  507. /package/{lib → types}/components/blocks/PriceTag.d.ts.map +0 -0
  508. /package/{lib → types}/components/blocks/PromotionCard.d.ts +0 -0
  509. /package/{lib → types}/components/blocks/PromotionCard.d.ts.map +0 -0
  510. /package/{lib → types}/components/blocks/SocialList.d.ts +0 -0
  511. /package/{lib → types}/components/blocks/SocialList.d.ts.map +0 -0
  512. /package/{lib → types}/components/blocks/TableBlock.d.ts +0 -0
  513. /package/{lib → types}/components/blocks/TableBlock.d.ts.map +0 -0
  514. /package/{lib → types}/components/blocks/Tag.d.ts +0 -0
  515. /package/{lib → types}/components/blocks/Tag.d.ts.map +0 -0
  516. /package/{lib → types}/components/blocks/Title.d.ts +0 -0
  517. /package/{lib → types}/components/blocks/Title.d.ts.map +0 -0
  518. /package/{lib → types}/components/blocks/VideoBlock.d.ts +0 -0
  519. /package/{lib → types}/components/blocks/VideoBlock.d.ts.map +0 -0
  520. /package/{lib → types}/components/blocks/VideoCard.d.ts +0 -0
  521. /package/{lib → types}/components/blocks/VideoCard.d.ts.map +0 -0
  522. /package/{lib → types}/components/buttons/Button.d.ts +0 -0
  523. /package/{lib → types}/components/buttons/Button.d.ts.map +0 -0
  524. /package/{lib → types}/components/buttons/ButtonGhost.d.ts +0 -0
  525. /package/{lib → types}/components/buttons/ButtonGhost.d.ts.map +0 -0
  526. /package/{lib → types}/components/buttons/Control.d.ts +0 -0
  527. /package/{lib → types}/components/buttons/Control.d.ts.map +0 -0
  528. /package/{lib → types}/components/buttons/Pointer.d.ts +0 -0
  529. /package/{lib → types}/components/buttons/Pointer.d.ts.map +0 -0
  530. /package/{lib → types}/components/debug/DebugLines.d.ts +0 -0
  531. /package/{lib → types}/components/debug/DebugLines.d.ts.map +0 -0
  532. /package/{lib → types}/components/examples/hooks/ArrayHookExample.d.ts +0 -0
  533. /package/{lib → types}/components/examples/hooks/ArrayHookExample.d.ts.map +0 -0
  534. /package/{lib → types}/components/examples/hooks/IntervalHookExample.d.ts +0 -0
  535. /package/{lib → types}/components/examples/hooks/IntervalHookExample.d.ts.map +0 -0
  536. /package/{lib → types}/components/fields/Checkbox.d.ts +0 -0
  537. /package/{lib → types}/components/fields/Checkbox.d.ts.map +0 -0
  538. /package/{lib → types}/components/fields/CompactForm.d.ts +0 -0
  539. /package/{lib → types}/components/fields/CompactForm.d.ts.map +0 -0
  540. /package/{lib → types}/components/fields/Datepicker.d.ts +0 -0
  541. /package/{lib → types}/components/fields/Datepicker.d.ts.map +0 -0
  542. /package/{lib → types}/components/fields/FileUpload.d.ts +0 -0
  543. /package/{lib → types}/components/fields/FileUpload.d.ts.map +0 -0
  544. /package/{lib → types}/components/fields/FilterField.d.ts +0 -0
  545. /package/{lib → types}/components/fields/FilterField.d.ts.map +0 -0
  546. /package/{lib → types}/components/fields/FormField.d.ts +0 -0
  547. /package/{lib → types}/components/fields/FormField.d.ts.map +0 -0
  548. /package/{lib → types}/components/fields/LocationField.d.ts +0 -0
  549. /package/{lib → types}/components/fields/LocationField.d.ts.map +0 -0
  550. /package/{lib → types}/components/fields/Radio.d.ts +0 -0
  551. /package/{lib → types}/components/fields/Radio.d.ts.map +0 -0
  552. /package/{lib → types}/components/fields/SearchInput.d.ts +0 -0
  553. /package/{lib → types}/components/fields/SearchInput.d.ts.map +0 -0
  554. /package/{lib → types}/components/fields/SelectDropdown.d.ts +0 -0
  555. /package/{lib → types}/components/fields/SelectDropdown.d.ts.map +0 -0
  556. /package/{lib → types}/components/fields/Textarea.d.ts +0 -0
  557. /package/{lib → types}/components/fields/Textarea.d.ts.map +0 -0
  558. /package/{lib → types}/components/fields/Textfield.d.ts +0 -0
  559. /package/{lib → types}/components/fields/Textfield.d.ts.map +0 -0
  560. /package/{lib → types}/components/sections/Accordion.d.ts +0 -0
  561. /package/{lib → types}/components/sections/Accordion.d.ts.map +0 -0
  562. /package/{lib → types}/components/sections/AlertList.d.ts +0 -0
  563. /package/{lib → types}/components/sections/AlertList.d.ts.map +0 -0
  564. /package/{lib → types}/components/sections/Article.d.ts +0 -0
  565. /package/{lib → types}/components/sections/Article.d.ts.map +0 -0
  566. /package/{lib → types}/components/sections/CallToAction.d.ts +0 -0
  567. /package/{lib → types}/components/sections/CallToAction.d.ts.map +0 -0
  568. /package/{lib → types}/components/sections/CardList.d.ts +0 -0
  569. /package/{lib → types}/components/sections/CardList.d.ts.map +0 -0
  570. /package/{lib → types}/components/sections/ComparisonSlider.d.ts +0 -0
  571. /package/{lib → types}/components/sections/ComparisonSlider.d.ts.map +0 -0
  572. /package/{lib → types}/components/sections/CrossPromotion.d.ts +0 -0
  573. /package/{lib → types}/components/sections/CrossPromotion.d.ts.map +0 -0
  574. /package/{lib → types}/components/sections/FactGrid.d.ts +0 -0
  575. /package/{lib → types}/components/sections/FactGrid.d.ts.map +0 -0
  576. /package/{lib → types}/components/sections/FactList.d.ts +0 -0
  577. /package/{lib → types}/components/sections/FactList.d.ts.map +0 -0
  578. /package/{lib → types}/components/sections/FeatureList.d.ts +0 -0
  579. /package/{lib → types}/components/sections/FeatureList.d.ts.map +0 -0
  580. /package/{lib → types}/components/sections/Gallery.d.ts +0 -0
  581. /package/{lib → types}/components/sections/Gallery.d.ts.map +0 -0
  582. /package/{lib → types}/components/sections/IconList.d.ts +0 -0
  583. /package/{lib → types}/components/sections/IconList.d.ts.map +0 -0
  584. /package/{lib → types}/components/sections/IndexList.d.ts +0 -0
  585. /package/{lib → types}/components/sections/IndexList.d.ts.map +0 -0
  586. /package/{lib → types}/components/sections/Intro.d.ts +0 -0
  587. /package/{lib → types}/components/sections/Intro.d.ts.map +0 -0
  588. /package/{lib → types}/components/sections/Map.d.ts +0 -0
  589. /package/{lib → types}/components/sections/Map.d.ts.map +0 -0
  590. /package/{lib → types}/components/sections/NavList.d.ts +0 -0
  591. /package/{lib → types}/components/sections/NavList.d.ts.map +0 -0
  592. /package/{lib → types}/components/sections/NewsletterForm.d.ts +0 -0
  593. /package/{lib → types}/components/sections/NewsletterForm.d.ts.map +0 -0
  594. /package/{lib → types}/components/sections/NumberList.d.ts +0 -0
  595. /package/{lib → types}/components/sections/NumberList.d.ts.map +0 -0
  596. /package/{lib → types}/components/sections/ParallaxBackground.d.ts +0 -0
  597. /package/{lib → types}/components/sections/ParallaxBackground.d.ts.map +0 -0
  598. /package/{lib → types}/components/sections/Poster.d.ts +0 -0
  599. /package/{lib → types}/components/sections/Poster.d.ts.map +0 -0
  600. /package/{lib → types}/components/sections/PriceList.d.ts +0 -0
  601. /package/{lib → types}/components/sections/PriceList.d.ts.map +0 -0
  602. /package/{lib → types}/components/sections/PriceTable.d.ts +0 -0
  603. /package/{lib → types}/components/sections/PriceTable.d.ts.map +0 -0
  604. /package/{lib → types}/components/sections/Quote.d.ts +0 -0
  605. /package/{lib → types}/components/sections/Quote.d.ts.map +0 -0
  606. /package/{lib → types}/components/sections/RawVideo.d.ts +0 -0
  607. /package/{lib → types}/components/sections/RawVideo.d.ts.map +0 -0
  608. /package/{lib → types}/components/sections/SimpleImage.d.ts +0 -0
  609. /package/{lib → types}/components/sections/SimpleImage.d.ts.map +0 -0
  610. /package/{lib → types}/components/sections/SocialWall.d.ts +0 -0
  611. /package/{lib → types}/components/sections/SocialWall.d.ts.map +0 -0
  612. /package/{lib → types}/components/sections/Table.d.ts +0 -0
  613. /package/{lib → types}/components/sections/Table.d.ts.map +0 -0
  614. /package/{lib → types}/components/sections/Teaser.d.ts +0 -0
  615. /package/{lib → types}/components/sections/Teaser.d.ts.map +0 -0
  616. /package/{lib → types}/components/sections/TeaserWide.d.ts +0 -0
  617. /package/{lib → types}/components/sections/TeaserWide.d.ts.map +0 -0
  618. /package/{lib → types}/components/sections/Timeline.d.ts +0 -0
  619. /package/{lib → types}/components/sections/Timeline.d.ts.map +0 -0
  620. /package/{lib → types}/components/sections/Video.d.ts +0 -0
  621. /package/{lib → types}/components/sections/Video.d.ts.map +0 -0
  622. /package/{lib → types}/components/sections/events/EventDetail.d.ts +0 -0
  623. /package/{lib → types}/components/sections/events/EventDetail.d.ts.map +0 -0
  624. /package/{lib → types}/components/sections/events/EventList.d.ts +0 -0
  625. /package/{lib → types}/components/sections/events/EventList.d.ts.map +0 -0
  626. /package/{lib → types}/components/sections/events/EventOverview.d.ts +0 -0
  627. /package/{lib → types}/components/sections/events/EventOverview.d.ts.map +0 -0
  628. /package/{lib → types}/components/sections/footer/Footer.d.ts +0 -0
  629. /package/{lib → types}/components/sections/footer/Footer.d.ts.map +0 -0
  630. /package/{lib → types}/components/sections/footer/partials/FooterBottomBar.d.ts +0 -0
  631. /package/{lib → types}/components/sections/footer/partials/FooterBottomBar.d.ts.map +0 -0
  632. /package/{lib → types}/components/sections/footer/partials/FooterColumn.d.ts +0 -0
  633. /package/{lib → types}/components/sections/footer/partials/FooterColumn.d.ts.map +0 -0
  634. /package/{lib → types}/components/sections/footer/partials/index.d.ts +0 -0
  635. /package/{lib → types}/components/sections/footer/partials/index.d.ts.map +0 -0
  636. /package/{lib → types}/components/sections/footer/skeletons/FooterArticle.d.ts +0 -0
  637. /package/{lib → types}/components/sections/footer/skeletons/FooterArticle.d.ts.map +0 -0
  638. /package/{lib → types}/components/sections/footer/skeletons/FooterBottomGrid.d.ts +0 -0
  639. /package/{lib → types}/components/sections/footer/skeletons/FooterBottomGrid.d.ts.map +0 -0
  640. /package/{lib → types}/components/sections/footer/skeletons/index.d.ts +0 -0
  641. /package/{lib → types}/components/sections/footer/skeletons/index.d.ts.map +0 -0
  642. /package/{lib → types}/components/sections/form/DynamicForm.d.ts +0 -0
  643. /package/{lib → types}/components/sections/form/DynamicForm.d.ts.map +0 -0
  644. /package/{lib → types}/components/sections/form/renderer/areaRenderer.d.ts +0 -0
  645. /package/{lib → types}/components/sections/form/renderer/areaRenderer.d.ts.map +0 -0
  646. /package/{lib → types}/components/sections/form/renderer/datepickerRenderer.d.ts +0 -0
  647. /package/{lib → types}/components/sections/form/renderer/datepickerRenderer.d.ts.map +0 -0
  648. /package/{lib → types}/components/sections/form/renderer/fieldGroupRenderer.d.ts +0 -0
  649. /package/{lib → types}/components/sections/form/renderer/fieldGroupRenderer.d.ts.map +0 -0
  650. /package/{lib → types}/components/sections/form/renderer/fieldRenderer.d.ts +0 -0
  651. /package/{lib → types}/components/sections/form/renderer/fieldRenderer.d.ts.map +0 -0
  652. /package/{lib → types}/components/sections/form/renderer/locationRenderer.d.ts +0 -0
  653. /package/{lib → types}/components/sections/form/renderer/locationRenderer.d.ts.map +0 -0
  654. /package/{lib → types}/components/sections/form/renderer/selectRenderer.d.ts +0 -0
  655. /package/{lib → types}/components/sections/form/renderer/selectRenderer.d.ts.map +0 -0
  656. /package/{lib → types}/components/sections/form/renderer/uploadRenderer.d.ts +0 -0
  657. /package/{lib → types}/components/sections/form/renderer/uploadRenderer.d.ts.map +0 -0
  658. /package/{lib → types}/components/sections/form/validators/areaValidator.d.ts +0 -0
  659. /package/{lib → types}/components/sections/form/validators/areaValidator.d.ts.map +0 -0
  660. /package/{lib → types}/components/sections/form/validators/datepickerValidator.d.ts +0 -0
  661. /package/{lib → types}/components/sections/form/validators/datepickerValidator.d.ts.map +0 -0
  662. /package/{lib → types}/components/sections/form/validators/fieldGroupValidator.d.ts +0 -0
  663. /package/{lib → types}/components/sections/form/validators/fieldGroupValidator.d.ts.map +0 -0
  664. /package/{lib → types}/components/sections/form/validators/fieldValidator.d.ts +0 -0
  665. /package/{lib → types}/components/sections/form/validators/fieldValidator.d.ts.map +0 -0
  666. /package/{lib → types}/components/sections/form/validators/locationValidator.d.ts +0 -0
  667. /package/{lib → types}/components/sections/form/validators/locationValidator.d.ts.map +0 -0
  668. /package/{lib → types}/components/sections/form/validators/selectValidator.d.ts +0 -0
  669. /package/{lib → types}/components/sections/form/validators/selectValidator.d.ts.map +0 -0
  670. /package/{lib → types}/components/sections/form/validators/uploadValidator.d.ts +0 -0
  671. /package/{lib → types}/components/sections/form/validators/uploadValidator.d.ts.map +0 -0
  672. /package/{lib → types}/components/sections/header/Header.d.ts +0 -0
  673. /package/{lib → types}/components/sections/header/Header.d.ts.map +0 -0
  674. /package/{lib → types}/components/sections/header/HeaderKenBurns.d.ts +0 -0
  675. /package/{lib → types}/components/sections/header/HeaderKenBurns.d.ts.map +0 -0
  676. /package/{lib → types}/components/sections/header/HeaderPoster.d.ts +0 -0
  677. /package/{lib → types}/components/sections/header/HeaderPoster.d.ts.map +0 -0
  678. /package/{lib → types}/components/sections/header/HeaderVideo.d.ts +0 -0
  679. /package/{lib → types}/components/sections/header/HeaderVideo.d.ts.map +0 -0
  680. /package/{lib → types}/components/sections/jobs/JobArticle.d.ts +0 -0
  681. /package/{lib → types}/components/sections/jobs/JobArticle.d.ts.map +0 -0
  682. /package/{lib → types}/components/sections/jobs/JobList.d.ts +0 -0
  683. /package/{lib → types}/components/sections/jobs/JobList.d.ts.map +0 -0
  684. /package/{lib → types}/components/sections/navigation/NavBar.d.ts +0 -0
  685. /package/{lib → types}/components/sections/navigation/NavBar.d.ts.map +0 -0
  686. /package/{lib → types}/components/sections/navigation/Navigation.d.ts +0 -0
  687. /package/{lib → types}/components/sections/navigation/Navigation.d.ts.map +0 -0
  688. /package/{lib → types}/components/sections/navigation/menu/Menu.d.ts +0 -0
  689. /package/{lib → types}/components/sections/navigation/menu/Menu.d.ts.map +0 -0
  690. /package/{lib → types}/components/sections/navigation/menu/variations/MenuFlyout.d.ts +0 -0
  691. /package/{lib → types}/components/sections/navigation/menu/variations/MenuLarge.d.ts +0 -0
  692. /package/{lib → types}/components/sections/navigation/partials/MenuFooter.d.ts +0 -0
  693. /package/{lib → types}/components/sections/navigation/partials/MenuFooter.d.ts.map +0 -0
  694. /package/{lib → types}/components/sections/navigation/partials/MenuHeader.d.ts +0 -0
  695. /package/{lib → types}/components/sections/navigation/partials/MenuHeader.d.ts.map +0 -0
  696. /package/{lib → types}/components/sections/navigation/partials/NavBarBottom.d.ts +0 -0
  697. /package/{lib → types}/components/sections/navigation/partials/NavBarBottom.d.ts.map +0 -0
  698. /package/{lib → types}/components/sections/navigation/partials/NavBarMain.d.ts +0 -0
  699. /package/{lib → types}/components/sections/navigation/partials/NavBarMain.d.ts.map +0 -0
  700. /package/{lib → types}/components/sections/navigation/partials/NavBarTop.d.ts +0 -0
  701. /package/{lib → types}/components/sections/navigation/partials/NavBarTop.d.ts.map +0 -0
  702. /package/{lib → types}/components/sections/navigation/partials/index.d.ts +0 -0
  703. /package/{lib → types}/components/sections/navigation/partials/index.d.ts.map +0 -0
  704. /package/{lib → types}/components/sections/navigation/skeletons/BarBreadCrumbs.d.ts +0 -0
  705. /package/{lib → types}/components/sections/navigation/skeletons/BarBreadCrumbs.d.ts.map +0 -0
  706. /package/{lib → types}/components/sections/navigation/skeletons/BarColumn.d.ts +0 -0
  707. /package/{lib → types}/components/sections/navigation/skeletons/BarColumn.d.ts.map +0 -0
  708. /package/{lib → types}/components/sections/navigation/skeletons/BarLogo.d.ts +0 -0
  709. /package/{lib → types}/components/sections/navigation/skeletons/BarLogo.d.ts.map +0 -0
  710. /package/{lib → types}/components/sections/navigation/skeletons/BarMenuToggle.d.ts +0 -0
  711. /package/{lib → types}/components/sections/navigation/skeletons/BarMenuToggle.d.ts.map +0 -0
  712. /package/{lib → types}/components/sections/navigation/skeletons/BarNavList.d.ts +0 -0
  713. /package/{lib → types}/components/sections/navigation/skeletons/BarNavList.d.ts.map +0 -0
  714. /package/{lib → types}/components/sections/navigation/skeletons/index.d.ts +0 -0
  715. /package/{lib → types}/components/sections/navigation/skeletons/index.d.ts.map +0 -0
  716. /package/{lib → types}/components/sections/news/NewsAuthorCard.d.ts +0 -0
  717. /package/{lib → types}/components/sections/news/NewsAuthorCard.d.ts.map +0 -0
  718. /package/{lib → types}/components/sections/news/NewsFooter.d.ts +0 -0
  719. /package/{lib → types}/components/sections/news/NewsFooter.d.ts.map +0 -0
  720. /package/{lib → types}/components/sections/news/NewsImages.d.ts +0 -0
  721. /package/{lib → types}/components/sections/news/NewsImages.d.ts.map +0 -0
  722. /package/{lib → types}/components/sections/news/NewsIntro.d.ts +0 -0
  723. /package/{lib → types}/components/sections/news/NewsIntro.d.ts.map +0 -0
  724. /package/{lib → types}/components/sections/news/NewsList.d.ts +0 -0
  725. /package/{lib → types}/components/sections/news/NewsList.d.ts.map +0 -0
  726. /package/{lib → types}/components/sections/news/NewsOverview.d.ts +0 -0
  727. /package/{lib → types}/components/sections/news/NewsOverview.d.ts.map +0 -0
  728. /package/{lib → types}/components/sections/news/NewsTable.d.ts +0 -0
  729. /package/{lib → types}/components/sections/news/NewsTable.d.ts.map +0 -0
  730. /package/{lib → types}/components/sections/news/NewsText.d.ts +0 -0
  731. /package/{lib → types}/components/sections/news/NewsText.d.ts.map +0 -0
  732. /package/{lib → types}/components/sections/news/NewsVideo.d.ts +0 -0
  733. /package/{lib → types}/components/sections/news/NewsVideo.d.ts.map +0 -0
  734. /package/{lib → types}/components/sections/pois/PointOfInterestDetail.d.ts +0 -0
  735. /package/{lib → types}/components/sections/pois/PointOfInterestDetail.d.ts.map +0 -0
  736. /package/{lib → types}/components/sections/pois/PointOfInterestMap.d.ts +0 -0
  737. /package/{lib → types}/components/sections/pois/PointOfInterestMap.d.ts.map +0 -0
  738. /package/{lib → types}/components/sections/pois/PointOfInterestOverview.d.ts +0 -0
  739. /package/{lib → types}/components/sections/pois/PointOfInterestOverview.d.ts.map +0 -0
  740. /package/{lib → types}/components/typography/Callout.d.ts +0 -0
  741. /package/{lib → types}/components/typography/Callout.d.ts.map +0 -0
  742. /package/{lib → types}/components/typography/Copy.d.ts +0 -0
  743. /package/{lib → types}/components/typography/Copy.d.ts.map +0 -0
  744. /package/{lib → types}/components/typography/Heading.d.ts +0 -0
  745. /package/{lib → types}/components/typography/Heading.d.ts.map +0 -0
  746. /package/{lib → types}/components/typography/Link.d.ts +0 -0
  747. /package/{lib → types}/components/typography/Link.d.ts.map +0 -0
  748. /package/{lib → types}/utils/LibThemeProvider.d.ts +0 -0
  749. /package/{lib → types}/utils/LibThemeProvider.d.ts.map +0 -0
  750. /package/{lib → types}/utils/arrays.d.ts +0 -0
  751. /package/{lib → types}/utils/arrays.d.ts.map +0 -0
  752. /package/{lib → types}/utils/backgroundImage.d.ts +0 -0
  753. /package/{lib → types}/utils/backgroundImage.d.ts.map +0 -0
  754. /package/{lib → types}/utils/clamp.d.ts +0 -0
  755. /package/{lib → types}/utils/clamp.d.ts.map +0 -0
  756. /package/{lib → types}/utils/concat.d.ts +0 -0
  757. /package/{lib → types}/utils/concat.d.ts.map +0 -0
  758. /package/{lib → types}/utils/cookie-consent/cookie.d.ts +0 -0
  759. /package/{lib → types}/utils/cookie-consent/cookie.d.ts.map +0 -0
  760. /package/{lib → types}/utils/cookie-consent/mutations.d.ts +0 -0
  761. /package/{lib → types}/utils/cookie-consent/mutations.d.ts.map +0 -0
  762. /package/{lib → types}/utils/cookie-consent/useCookieConsent.d.ts +0 -0
  763. /package/{lib → types}/utils/cookie-consent/useCookieConsent.d.ts.map +0 -0
  764. /package/{lib → types}/utils/dataURI.d.ts +0 -0
  765. /package/{lib → types}/utils/dataURI.d.ts.map +0 -0
  766. /package/{lib → types}/utils/escape.d.ts +0 -0
  767. /package/{lib → types}/utils/escape.d.ts.map +0 -0
  768. /package/{lib → types}/utils/filters.d.ts +0 -0
  769. /package/{lib → types}/utils/filters.d.ts.map +0 -0
  770. /package/{lib → types}/utils/fontLoading.d.ts +0 -0
  771. /package/{lib → types}/utils/fontLoading.d.ts.map +0 -0
  772. /package/{lib → types}/utils/formFieldText.d.ts +0 -0
  773. /package/{lib → types}/utils/formFieldText.d.ts.map +0 -0
  774. /package/{lib → types}/utils/getLinkIcon.d.ts +0 -0
  775. /package/{lib → types}/utils/getLinkIcon.d.ts.map +0 -0
  776. /package/{lib → types}/utils/hexRgbConverter.d.ts +0 -0
  777. /package/{lib → types}/utils/hexRgbConverter.d.ts.map +0 -0
  778. /package/{lib → types}/utils/menuHooks.d.ts +0 -0
  779. /package/{lib → types}/utils/menuHooks.d.ts.map +0 -0
  780. /package/{lib → types}/utils/navigation.d.ts +0 -0
  781. /package/{lib → types}/utils/navigation.d.ts.map +0 -0
  782. /package/{lib → types}/utils/statusFormatter.d.ts +0 -0
  783. /package/{lib → types}/utils/statusFormatter.d.ts.map +0 -0
  784. /package/{lib → types}/utils/storyHelpers.d.ts +0 -0
  785. /package/{lib → types}/utils/storyHelpers.d.ts.map +0 -0
  786. /package/{lib → types}/utils/structuredData.d.ts +0 -0
  787. /package/{lib → types}/utils/structuredData.d.ts.map +0 -0
  788. /package/{lib → types}/utils/styles.d.ts +0 -0
  789. /package/{lib → types}/utils/styles.d.ts.map +0 -0
  790. /package/{lib → types}/utils/types.d.ts +0 -0
  791. /package/{lib → types}/utils/types.d.ts.map +0 -0
  792. /package/{lib → types}/utils/urlParams.d.ts +0 -0
  793. /package/{lib → types}/utils/urlParams.d.ts.map +0 -0
  794. /package/{lib → types}/utils/useArray.d.ts +0 -0
  795. /package/{lib → types}/utils/useArray.d.ts.map +0 -0
  796. /package/{lib → types}/utils/useDebounce.d.ts +0 -0
  797. /package/{lib → types}/utils/useDebounce.d.ts.map +0 -0
  798. /package/{lib → types}/utils/useEqualSheetHeight.d.ts +0 -0
  799. /package/{lib → types}/utils/useEqualSheetHeight.d.ts.map +0 -0
  800. /package/{lib → types}/utils/useFontsLoaded.d.ts +0 -0
  801. /package/{lib → types}/utils/useFontsLoaded.d.ts.map +0 -0
  802. /package/{lib → types}/utils/useGeolocation.d.ts +0 -0
  803. /package/{lib → types}/utils/useGeolocation.d.ts.map +0 -0
  804. /package/{lib → types}/utils/useIE.d.ts +0 -0
  805. /package/{lib → types}/utils/useIE.d.ts.map +0 -0
  806. /package/{lib → types}/utils/useImgPreload.d.ts +0 -0
  807. /package/{lib → types}/utils/useImgPreload.d.ts.map +0 -0
  808. /package/{lib → types}/utils/useInterval.d.ts +0 -0
  809. /package/{lib → types}/utils/useInterval.d.ts.map +0 -0
  810. /package/{lib → types}/utils/useItemHeight.d.ts +0 -0
  811. /package/{lib → types}/utils/useItemHeight.d.ts.map +0 -0
  812. /package/{lib → types}/utils/useLazyInput.d.ts +0 -0
  813. /package/{lib → types}/utils/useLazyInput.d.ts.map +0 -0
  814. /package/{lib → types}/utils/useLeafletMap.d.ts +0 -0
  815. /package/{lib → types}/utils/useLeafletMap.d.ts.map +0 -0
  816. /package/{lib → types}/utils/useMediaQuery.d.ts +0 -0
  817. /package/{lib → types}/utils/useMediaQuery.d.ts.map +0 -0
  818. /package/{lib → types}/utils/useMounted.d.ts +0 -0
  819. /package/{lib → types}/utils/useMounted.d.ts.map +0 -0
  820. /package/{lib → types}/utils/useObserverSupport.d.ts +0 -0
  821. /package/{lib → types}/utils/useObserverSupport.d.ts.map +0 -0
  822. /package/{lib → types}/utils/usePageScroll.d.ts +0 -0
  823. /package/{lib → types}/utils/usePageScroll.d.ts.map +0 -0
  824. /package/{lib → types}/utils/useParams.d.ts +0 -0
  825. /package/{lib → types}/utils/useParams.d.ts.map +0 -0
  826. /package/{lib → types}/utils/usePoster.d.ts +0 -0
  827. /package/{lib → types}/utils/usePoster.d.ts.map +0 -0
  828. /package/{lib → types}/utils/usePrevious.d.ts +0 -0
  829. /package/{lib → types}/utils/usePrevious.d.ts.map +0 -0
  830. /package/{lib → types}/utils/useResizeThrottle.d.ts +0 -0
  831. /package/{lib → types}/utils/useResizeThrottle.d.ts.map +0 -0
  832. /package/{lib → types}/utils/useScroll.d.ts +0 -0
  833. /package/{lib → types}/utils/useScroll.d.ts.map +0 -0
  834. /package/{lib → types}/utils/useScrollIntoView.d.ts +0 -0
  835. /package/{lib → types}/utils/useScrollIntoView.d.ts.map +0 -0
  836. /package/{lib → types}/utils/useScrollThrottle.d.ts +0 -0
  837. /package/{lib → types}/utils/useScrollThrottle.d.ts.map +0 -0
  838. /package/{lib → types}/utils/useScrollTo.d.ts +0 -0
  839. /package/{lib → types}/utils/useScrollTo.d.ts.map +0 -0
  840. /package/{lib → types}/utils/useTimeout.d.ts +0 -0
  841. /package/{lib → types}/utils/useTimeout.d.ts.map +0 -0
  842. /package/{lib → types}/utils/useTouch.d.ts +0 -0
  843. /package/{lib → types}/utils/useTouch.d.ts.map +0 -0
  844. /package/{lib → types}/utils/useUpdateEffect.d.ts +0 -0
  845. /package/{lib → types}/utils/useUpdateEffect.d.ts.map +0 -0
package/lib/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../node_modules/tslib/tslib.es6.js","../src/components/base/icons/CalendarToday.tsx","../src/utils/useScroll.ts","../src/components/base/icons/DateRange.tsx","../src/components/base/icons/ArrowUp.tsx","../src/components/base/icons/ArrowDown.tsx","../src/components/base/icons/ArrowRight.tsx","../src/components/base/icons/ArrowRightGhost.tsx","../src/components/base/icons/ArrowLeft.tsx","../src/components/base/icons/ArrowLeftGhost.tsx","../src/components/base/icons/ArrowLeftRight.tsx","../src/components/base/icons/AngleUp.tsx","../src/components/base/icons/AngleDown.tsx","../src/components/base/icons/AngleLeft.tsx","../src/components/base/icons/AngleRight.tsx","../src/components/base/icons/UnfoldMore.tsx","../src/components/base/icons/files/UploadFile.tsx","../src/components/base/icons/files/Excel.tsx","../src/components/base/icons/files/Image.tsx","../src/components/base/icons/files/Pdf.tsx","../src/components/base/icons/files/PowerPoint.tsx","../src/components/base/icons/files/Word.tsx","../src/components/base/icons/files/Zip.tsx","../src/components/base/icons/External.tsx","../src/components/base/icons/BoxArrowUpRight.tsx","../src/components/base/icons/socials/Facebook.tsx","../src/components/base/icons/socials/Instagram.tsx","../src/components/base/icons/socials/LinkedIn.tsx","../src/components/base/icons/socials/Twitter.tsx","../src/components/base/icons/socials/Xing.tsx","../src/components/base/icons/socials/Youtube.tsx","../src/components/base/icons/Mail.tsx","../src/components/base/icons/Phone.tsx","../src/components/base/icons/Play.tsx","../src/components/base/icons/MenuBurger.tsx","../src/components/base/icons/Language.tsx","../src/components/base/icons/Cross.tsx","../src/components/base/icons/CrossSmall.tsx","../src/components/base/icons/Check.tsx","../src/components/base/icons/Clock.tsx","../src/components/base/icons/Info.tsx","../src/components/base/icons/FlyTo.tsx","../src/components/base/icons/LocationPin.tsx","../src/components/base/icons/Place.tsx","../src/components/base/icons/MyLocation.tsx","../src/components/base/icons/Map.tsx","../src/components/base/icons/Money.tsx","../src/components/base/icons/Computer.tsx","../src/components/base/icons/Route.tsx","../src/components/base/icons/Star.tsx","../src/components/base/icons/Plus.tsx","../src/components/base/icons/Minus.tsx","../src/components/base/icons/DeleteForever.tsx","../src/components/base/icons/Person.tsx","../src/components/base/icons/Category.tsx","../src/components/base/icons/CurrentLocation.tsx","../src/components/base/icons/ToggleOn.tsx","../src/components/base/icons/ToggleOff.tsx","../src/components/base/icons/LocationSearch.tsx","../src/components/base/icons/ClockFilled.tsx","../src/utils/dataURI.ts","../src/utils/styles.tsx","../src/utils/useMediaQuery.ts","../src/utils/useFontsLoaded.ts","../src/utils/useResizeThrottle.ts","../src/utils/useEqualSheetHeight.ts","../src/utils/cookie-consent/cookie.ts","../src/utils/useIE.ts","../src/utils/useScrollTo.ts","../src/utils/usePoster.ts","../src/utils/useTouch.ts","../src/utils/useUpdateEffect.ts","../src/utils/useMounted.ts","../src/utils/useTimeout.ts","../src/utils/useDebounce.ts","../src/utils/useScrollThrottle.ts","../src/utils/useLazyInput.ts","../src/utils/clamp.ts","../src/utils/hexRgbConverter.ts","../src/utils/navigation.ts","../src/utils/arrays.ts","../src/utils/concat.ts","../src/utils/useLeafletMap.tsx","../src/utils/useParams.ts","../src/utils/useGeolocation.ts","../src/utils/useObserverSupport.ts","../src/utils/urlParams.ts","../src/utils/cookie-consent/useCookieConsent.tsx","../src/utils/cookie-consent/mutations.ts","../src/utils/LibThemeProvider.tsx","../src/components/base/Section.tsx","../src/components/base/Wrapper.tsx","../src/components/typography/Heading.tsx","../src/components/typography/Copy.tsx","../src/utils/filters.ts","../src/components/base/Grid.tsx","../src/components/sections/Accordion.tsx","../src/utils/structuredData.tsx","../src/components/typography/Link.tsx","../src/utils/statusFormatter.ts","../src/components/blocks/Alert.tsx","../src/components/sections/AlertList.tsx","../src/components/blocks/Title.tsx","../src/components/blocks/Actions.tsx","../src/components/sections/Article.tsx","../src/components/blocks/Image.tsx","../src/components/blocks/IntroBlock.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/buttons/Button.tsx","../src/components/fields/FormField.tsx","../src/utils/formFieldText.ts","../src/components/fields/LocationField.tsx","../node_modules/date-fns/esm/_lib/toInteger/index.js","../node_modules/date-fns/esm/_lib/requiredArgs/index.js","../node_modules/date-fns/esm/toDate/index.js","../node_modules/date-fns/esm/addMilliseconds/index.js","../node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","../node_modules/date-fns/esm/isDate/index.js","../node_modules/date-fns/esm/isValid/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","../node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","../node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","../node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","../node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","../node_modules/date-fns/esm/locale/en-US/index.js","../node_modules/date-fns/esm/subMilliseconds/index.js","../node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","../node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","../node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","../node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","../node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","../node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","../node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","../node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","../node_modules/date-fns/esm/_lib/format/formatters/index.js","../node_modules/date-fns/esm/_lib/getUTCWeek/index.js","../node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","../node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","../node_modules/date-fns/esm/_lib/format/longFormatters/index.js","../node_modules/date-fns/esm/_lib/protectedTokens/index.js","../node_modules/date-fns/esm/format/index.js","../node_modules/date-fns/esm/isEqual/index.js","../node_modules/date-fns/esm/locale/de/_lib/formatDistance/index.js","../node_modules/date-fns/esm/locale/de/_lib/formatLong/index.js","../node_modules/date-fns/esm/locale/de/_lib/formatRelative/index.js","../node_modules/date-fns/esm/locale/de/_lib/localize/index.js","../node_modules/date-fns/esm/locale/de/_lib/match/index.js","../node_modules/date-fns/esm/locale/de/index.js","../src/components/buttons/ButtonGhost.tsx","../src/components/fields/Datepicker.tsx","../node_modules/date-fns/esm/isBefore/index.js","../src/components/fields/Radio.tsx","../src/components/fields/Checkbox.tsx","../src/components/sections/form/renderer/fieldGroupRenderer.tsx","../src/components/fields/Textarea.tsx","../src/components/fields/Textfield.tsx","../src/components/fields/SelectDropdown.tsx","../src/components/fields/FileUpload.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/blocks/Tag.tsx","../src/components/blocks/EventBlock.tsx","../src/components/base/icons/Filter.tsx","../src/components/buttons/Pointer.tsx","../src/components/sections/events/EventOverview.tsx","../src/components/sections/events/EventList.tsx","../src/components/blocks/InfoList.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/utils/usePageScroll.ts","../src/components/sections/Gallery.tsx","../src/components/sections/header/HeaderKenBurns.tsx","../src/components/sections/header/HeaderPoster.tsx","../src/components/sections/header/HeaderVideo.tsx","../src/components/sections/navigation/skeletons/BarBreadCrumbs.tsx","../src/components/sections/navigation/skeletons/BarColumn.tsx","../src/components/sections/navigation/skeletons/BarLogo.tsx","../src/components/sections/navigation/skeletons/BarMenuToggle.tsx","../src/components/sections/navigation/skeletons/BarNavList.tsx","../src/components/blocks/LanguageSwitcher.tsx","../src/components/sections/navigation/partials/MenuHeader.tsx","../src/components/sections/navigation/menu/variations/MenuFlyout.tsx","../src/components/sections/navigation/menu/Menu.tsx","../src/components/sections/navigation/NavBar.tsx","../src/components/sections/navigation/Navigation.tsx","../src/components/sections/header/Header.tsx","../src/components/sections/IconList.tsx","../src/components/sections/IndexList.tsx","../src/components/sections/Intro.tsx","../src/components/buttons/Control.tsx","../src/components/sections/Map.tsx","../src/components/blocks/NavBlock.tsx","../src/components/sections/NavList.tsx","../src/components/sections/news/NewsAuthorCard.tsx","../src/components/blocks/NewsCard.tsx","../src/components/sections/news/NewsOverview.tsx","../src/components/sections/news/NewsFooter.tsx","../src/components/sections/news/NewsImages.tsx","../src/components/sections/news/NewsIntro.tsx","../src/components/sections/news/NewsList.tsx","../src/components/blocks/TableBlock.tsx","../src/components/sections/news/NewsTable.tsx","../src/components/sections/news/NewsText.tsx","../src/components/blocks/VideoCard.tsx","../src/components/sections/news/NewsVideo.tsx","../src/components/typography/Callout.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/blocks/VideoBlock.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/components/base/icons/Magnifier.tsx","../src/components/fields/FilterField.tsx","../src/utils/escape.ts","../src/components/sections/jobs/JobList.tsx","../src/components/sections/jobs/JobArticle.tsx","../src/components/blocks/POIFacts.tsx","../src/components/sections/pois/PointOfInterestDetail.tsx","../src/components/blocks/POICard.tsx","../src/components/sections/pois/PointOfInterestOverview.tsx","../src/components/sections/pois/PointOfInterestMap.tsx","../src/components/fields/CompactForm.tsx","../src/components/fields/SearchInput.tsx","../src/components/blocks/Bdot.tsx","../src/components/blocks/CookieConsent.tsx","../src/components/blocks/SocialList.tsx","../src/components/sections/navigation/partials/MenuFooter.tsx","../src/components/sections/navigation/partials/NavBarBottom.tsx","../src/components/sections/navigation/partials/NavBarMain.tsx","../src/components/sections/navigation/partials/NavBarTop.tsx","../src/components/sections/footer/skeletons/FooterBottomGrid.tsx","../src/components/sections/footer/partials/FooterBottomBar.tsx","../src/components/sections/footer/Footer.tsx","../src/components/sections/footer/skeletons/FooterArticle.tsx","../src/components/sections/footer/partials/FooterColumn.tsx","../src/utils/menuHooks.ts","../src/utils/backgroundImage.ts","../src/utils/getLinkIcon.ts","../src/utils/fontLoading.tsx","../src/utils/useArray.ts","../src/utils/useImgPreload.ts","../src/utils/useInterval.ts","../src/utils/useItemHeight.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst CalendarToday: React.FC<{\n iconColor?: string;\n className?: string;\n ariaHidden?: boolean;\n}> = ({ iconColor = 'currentColor', className, ariaHidden = true }) => (\n <SVG\n viewBox=\"0 0 20 22\"\n width=\"20\"\n height=\"22\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n aria-hidden={ariaHidden}\n >\n <path\n d=\"M18 2h-1V0h-2v2H5V0H3v2H2C.9 2 0 2.9 0 4v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2Zm0 18H2V9h16v11Zm0-13H2V4h16v3Z\"\n fill={iconColor}\n />\n </SVG>\n);\n\nexport default CalendarToday;\n","import { useEffect, useRef, useState } from 'react';\n\nexport enum ScrollDirection {\n UP,\n DOWN,\n}\n\nexport const useScroll = ({\n initialTopOffset = 0,\n onLeftOffset,\n onEnterOffset,\n}: {\n initialTopOffset?: number;\n onLeftOffset?: () => void;\n onEnterOffset?: () => void;\n}) => {\n const [topOffset, setTopOffset] = useState<number>(initialTopOffset);\n const [isTop, setIsTop] = useState<boolean>(true);\n const [isInOffset, setIsInOffset] = useState<boolean>(true);\n const [scrollDirection, setScrollDirection] = useState<ScrollDirection>(\n ScrollDirection.DOWN\n );\n const lastScrollPos = useRef<number>(0);\n\n useEffect(() => {\n if (typeof window === 'undefined') return;\n const handleScroll = () => {\n setIsTop(window.pageYOffset <= 1);\n setIsInOffset(window.pageYOffset <= 1 + topOffset);\n\n if (lastScrollPos.current) {\n // check if top offset is left\n if (\n window.pageYOffset > 1 + topOffset &&\n lastScrollPos.current <= 1 + topOffset\n ) {\n onLeftOffset && onLeftOffset();\n }\n\n // check if top offset was joined\n if (\n window.pageYOffset <= 1 + topOffset &&\n lastScrollPos.current > 1 + topOffset\n ) {\n onEnterOffset && onEnterOffset();\n }\n\n setScrollDirection((prev) => {\n if (window.pageYOffset <= 1) return ScrollDirection.DOWN;\n return window.pageYOffset > lastScrollPos.current\n ? ScrollDirection.DOWN\n : window.pageYOffset < lastScrollPos.current\n ? ScrollDirection.UP\n : prev;\n });\n }\n lastScrollPos.current = window.pageYOffset;\n };\n\n handleScroll();\n window.addEventListener('scroll', handleScroll);\n\n return () => {\n window.removeEventListener('scroll', handleScroll);\n };\n }, [\n lastScrollPos,\n onLeftOffset,\n onEnterOffset,\n scrollDirection,\n topOffset,\n ]);\n\n return {\n isTop,\n isInOffset,\n scrollDirection,\n setTopOffset,\n topOffset,\n };\n};\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst DateRange: React.FC<{\n iconColor?: string;\n className?: string;\n ariaHidden?: boolean;\n}> = ({ iconColor = 'currentColor', className, ariaHidden = true }) => (\n <SVG\n viewBox=\"0 0 18 20\"\n width=\"18\"\n height=\"20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n aria-hidden={ariaHidden}\n >\n <path\n d=\"M4 9h2v2H4V9Zm14-5v14c0 1.1-.9 2-2 2H2a2 2 0 0 1-2-2L.01 4C.01 2.9.89 2 2 2h1V0h2v2h8V0h2v2h1c1.1 0 2 .9 2 2ZM2 6h14V4H2v2Zm14 12V8H2v10h14Zm-4-7h2V9h-2v2Zm-4 0h2V9H8v2Z\"\n fill={iconColor}\n />\n </SVG>\n);\n\nexport default DateRange;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst ArrowUp: React.FC<{\n iconColor?: string;\n className?: string;\n ariaHidden?: boolean;\n}> = ({ iconColor = 'currentColor', className, ariaHidden = true }) => (\n <SVG\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n className={className}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden={ariaHidden}\n >\n <path d=\"M11 7.99V20h2V7.99h3L12 4 8 7.99h3Z\" fill={iconColor} />\n </SVG>\n);\n\nexport default ArrowUp;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst ArrowDown: React.FC<{\n iconColor?: string;\n className?: string;\n ariaHidden?: boolean;\n}> = ({ iconColor = 'currentColor', className, ariaHidden = true }) => (\n <SVG\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n className={className}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden={ariaHidden}\n >\n <path d=\"M13 16.01V4h-2v12.01H8L12 20l4-3.99h-3Z\" fill={iconColor} />\n </SVG>\n);\n\nexport default ArrowDown;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst ArrowRight: React.FC<{\n iconColor?: string;\n className?: string;\n ariaHidden?: boolean;\n}> = ({ iconColor = 'currentColor', className, ariaHidden = true }) => (\n <SVG\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n className={className}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden={ariaHidden}\n >\n <path d=\"M16.01 11H4v2h12.01v3L20 12l-3.99-4v3Z\" fill={iconColor} />\n </SVG>\n);\n\nexport default ArrowRight;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst ArrowRightGhost: React.FC<{\n iconColor?: string;\n className?: string;\n ariaHidden?: boolean;\n}> = ({ iconColor = 'currentColor', className, ariaHidden = true }) => (\n <SVG\n width=\"58\"\n height=\"58\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n aria-hidden={ariaHidden}\n >\n <path\n d=\"M4 12c0-4.41 3.59-8 8-8s8 3.59 8 8-3.59 8-8 8-8-3.59-8-8Zm-2 0c0 5.52 4.48 10 10 10s10-4.48 10-10S17.52 2 12 2 2 6.48 2 12Zm10-1H8v2h4v3l4-4-4-4v3Z\"\n fill={iconColor}\n />\n </SVG>\n);\n\nexport default ArrowRightGhost;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst ArrowLeft: React.FC<{\n iconColor?: string;\n className?: string;\n ariaHidden?: boolean;\n}> = ({ iconColor = 'currentColor', className, ariaHidden = true }) => (\n <SVG\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n className={className}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden={ariaHidden}\n >\n <path d=\"M7.99 13H20v-2H7.99V8L4 12l3.99 4v-3Z\" fill={iconColor} />\n </SVG>\n);\n\nexport default ArrowLeft;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst ArrowLeftGhost: React.FC<{\n iconColor?: string;\n className?: string;\n ariaHidden?: boolean;\n}> = ({ iconColor = 'currentColor', className, ariaHidden = true }) => (\n <SVG\n width=\"58\"\n height=\"58\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n aria-hidden={ariaHidden}\n >\n <path\n d=\"M20 12c0 4.41-3.59 8-8 8s-8-3.59-8-8 3.59-8 8-8 8 3.59 8 8Zm2 0c0-5.52-4.48-10-10-10S2 6.48 2 12s4.48 10 10 10 10-4.48 10-10Zm-10 1h4v-2h-4V8l-4 4 4 4v-3Z\"\n fill={iconColor}\n />\n </SVG>\n);\n\nexport default ArrowLeftGhost;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst ArrowLeftRight: React.FC<{\n iconColor?: string;\n className?: string;\n ariaHidden?: boolean;\n}> = ({ iconColor = 'currentColor', className, ariaHidden = true }) => (\n <SVG\n width=\"25\"\n height=\"24\"\n viewBox=\"0 0 25 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n aria-hidden={ariaHidden}\n >\n <path d=\"M17.01 11H5v2h12.01v3L21 12l-3.99-4v3Z\" fill={iconColor} />\n <g clipPath=\"url(#a)\">\n <path d=\"M7.99 13H20v-2H7.99V8L4 12l3.99 4v-3Z\" fill={iconColor} />\n </g>\n </SVG>\n);\n\nexport default ArrowLeftRight;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst AngleUp: React.FC<{\n iconColor?: string;\n className?: string;\n ariaHidden?: boolean;\n}> = ({ iconColor = 'currentColor', className, ariaHidden = true }) => (\n <SVG\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n aria-hidden={ariaHidden}\n >\n <path\n d=\"m12 8-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14l-6-6Z\"\n fill={iconColor}\n />\n </SVG>\n);\n\nexport default AngleUp;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst AngleDown: React.FC<{\n iconColor?: string;\n className?: string;\n ariaHidden?: boolean;\n}> = ({ iconColor = 'currentColor', className, ariaHidden = true }) => (\n <SVG\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n aria-hidden={ariaHidden}\n >\n <path\n d=\"M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6-1.41-1.41Z\"\n fill={iconColor}\n />\n </SVG>\n);\n\nexport default AngleDown;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst AngleLeft: React.FC<{\n iconColor?: string;\n className?: string;\n ariaHidden?: boolean;\n}> = ({ iconColor = 'currentColor', className, ariaHidden = true }) => (\n <SVG\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n aria-hidden={ariaHidden}\n >\n <path\n d=\"M15.41 7.41 14 6l-6 6 6 6 1.41-1.41L10.83 12l4.58-4.59Z\"\n fill={iconColor}\n />\n </SVG>\n);\n\nexport default AngleLeft;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst AngleRight: React.FC<{\n iconColor?: string;\n ariaHidden?: boolean;\n className?: string;\n}> = ({ iconColor = 'currentColor', ariaHidden = true, className }) => (\n <SVG\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n aria-hidden={ariaHidden}\n >\n <path\n d=\"M10 6 8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6-6-6Z\"\n fill={iconColor}\n />\n </SVG>\n);\n\nexport default AngleRight;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst UnfoldMore: React.FC<{\n iconColor?: string;\n className?: string;\n ariaHidden?: boolean;\n}> = ({ iconColor = 'currentColor', className, ariaHidden = true }) => (\n <SVG\n viewBox=\"0 0 10 18\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"10\"\n height=\"18\"\n fill=\"none\"\n aria-hidden={ariaHidden}\n className={className}\n >\n <path\n fill={iconColor}\n d=\"M5 2.83 8.17 6l1.41-1.41L5 0 .41 4.59 1.83 6 5 2.83Zm0 12.34L1.83 12 .42 13.41 5 18l4.59-4.59L8.17 12 5 15.17Z\"\n />\n </SVG>\n);\n\nexport default UnfoldMore;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst UploadFile: React.FC<{\n iconColor?: string;\n className?: string;\n ariaHidden?: boolean;\n}> = ({ iconColor = 'currentColor', className, ariaHidden = true }) => (\n <SVG\n viewBox=\"0 0 16 20\"\n width=\"16\"\n height=\"20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n aria-hidden={ariaHidden}\n >\n <path\n d=\"M10 0H2C.9 0 .01.9.01 2L0 18c0 1.1.89 2 1.99 2H14c1.1 0 2-.9 2-2V6l-6-6Zm4 18H2V2h7v5h5v11ZM4 13.01l1.41 1.41L7 12.84V17h2v-4.16l1.59 1.59L12 13.01 8.01 9 4 13.01Z\"\n fill={iconColor}\n />\n </SVG>\n);\n\nexport default UploadFile;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst Excel: React.FC<{\n className?: string;\n iconColor?: string;\n ariaHidden?: boolean;\n}> = ({ className, iconColor = 'currentColor', ariaHidden = true }) => (\n <SVG\n viewBox=\"0 0 21 24\"\n className={className}\n width=\"21\"\n height=\"24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden={ariaHidden}\n >\n <g clipPath=\"url(#a)\">\n <path\n d=\"M19.66 5.09c.25.25.465.589.644 1.017.178.429.267.822.267 1.179v15.428c0 .357-.125.661-.375.911a1.24 1.24 0 0 1-.91.375h-18a1.24 1.24 0 0 1-.911-.375 1.24 1.24 0 0 1-.375-.91V1.284C0 .93.125.626.375.376S.929 0 1.285 0h12c.358 0 .75.09 1.18.268.428.178.767.393 1.017.643l4.179 4.178ZM13.715 1.82v5.036h5.036c-.09-.259-.188-.442-.295-.549l-4.192-4.192c-.107-.107-.29-.205-.549-.295Zm5.143 20.465V8.57h-5.571a1.24 1.24 0 0 1-.911-.375 1.24 1.24 0 0 1-.375-.91V1.714H1.714v20.572h17.143Zm-12.2-3.134 2.597-3.79-2.53-3.643h-.912v-1.433h3.884v1.433H8.68l1.42 2.13c.097.106.173.209.227.307a.464.464 0 0 1 .067.134h.027l.026-.04a6.027 6.027 0 0 0 .255-.402l1.38-2.13h-.992v-1.432h3.737v1.433h-.897l-2.612 3.777 2.571 3.656h.911v1.42h-3.897v-1.42h1.018l-1.433-2.157a8.961 8.961 0 0 0-.087-.113 3.315 3.315 0 0 1-.08-.107.76.76 0 0 1-.061-.1.461.461 0 0 1-.067-.135h-.027c-.009 0-.024.018-.047.054a3.125 3.125 0 0 0-.1.18c-.045.085-.09.159-.134.221l-1.38 2.157H9.51v1.42H5.746v-1.42h.91Z\"\n fill={iconColor}\n />\n </g>\n <defs>\n <clipPath id=\"a\">\n <path fill=\"#fff\" d=\"M0 0h20.571v24H0z\" />\n </clipPath>\n </defs>\n </SVG>\n);\n\nexport default Excel;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst Image: React.FC<{\n className?: string;\n iconColor?: string;\n ariaHidden?: boolean;\n}> = ({ className, iconColor = 'currentColor', ariaHidden = true }) => (\n <SVG\n viewBox=\"0 0 21 24\"\n className={className}\n width=\"21\"\n height=\"24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden={ariaHidden}\n >\n <g clipPath=\"url(#a)\">\n <path\n d=\"M19.66 5.09c.25.25.465.589.644 1.017.178.429.267.822.267 1.179v15.428c0 .357-.125.661-.375.911a1.24 1.24 0 0 1-.91.375h-18a1.24 1.24 0 0 1-.911-.375 1.24 1.24 0 0 1-.375-.91V1.284C0 .93.125.626.375.376S.929 0 1.285 0h12c.358 0 .75.09 1.18.268.428.178.767.393 1.017.643l4.179 4.178ZM13.715 1.82v5.036h5.036c-.09-.259-.188-.442-.295-.549l-4.192-4.192c-.107-.107-.29-.205-.549-.295Zm5.143 20.465V8.57h-5.571a1.24 1.24 0 0 1-.911-.375 1.24 1.24 0 0 1-.375-.91V1.714H1.714v20.572h17.143Zm-1.714-6v4.285H3.429V18L6 15.429l1.714 1.714L12.857 12l4.286 4.286ZM7.82 12.964c-.5.5-1.107.75-1.821.75a2.48 2.48 0 0 1-1.821-.75 2.48 2.48 0 0 1-.75-1.821c0-.714.25-1.322.75-1.822s1.107-.75 1.821-.75 1.321.25 1.821.75.75 1.108.75 1.822a2.48 2.48 0 0 1-.75 1.821Z\"\n fill={iconColor}\n />\n </g>\n <defs>\n <clipPath id=\"a\">\n <path fill=\"#fff\" d=\"M0 0h20.571v24H0z\" />\n </clipPath>\n </defs>\n </SVG>\n);\n\nexport default Image;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst Pdf: React.FC<{\n className?: string;\n iconColor?: string;\n ariaHidden?: boolean;\n}> = ({ className, iconColor = 'currentColor', ariaHidden = true }) => (\n <SVG\n viewBox=\"0 0 21 24\"\n className={className}\n width=\"21\"\n height=\"24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden={ariaHidden}\n >\n <g clipPath=\"url(#a)\">\n <path\n d=\"M19.66 5.09c.25.25.465.589.644 1.017.178.429.267.822.267 1.179v15.428c0 .357-.125.661-.375.911a1.24 1.24 0 0 1-.91.375h-18a1.24 1.24 0 0 1-.911-.375 1.24 1.24 0 0 1-.375-.91V1.284C0 .93.125.626.375.376S.929 0 1.285 0h12c.358 0 .75.09 1.18.268.428.178.767.393 1.017.643l4.179 4.178ZM13.715 1.82v5.036h5.036c-.09-.259-.188-.442-.295-.549l-4.192-4.192c-.107-.107-.29-.205-.549-.295Zm5.143 20.465V8.57h-5.571a1.24 1.24 0 0 1-.911-.375 1.24 1.24 0 0 1-.375-.91V1.714H1.714v20.572h17.143Zm-6.884-7.942c.295.232.67.482 1.125.75A13.27 13.27 0 0 1 14.665 15c1.313 0 2.103.219 2.37.656.144.197.152.429.027.697 0 .009-.004.017-.013.026l-.027.027v.014c-.053.339-.37.509-.95.509-.43 0-.942-.09-1.54-.268a9.767 9.767 0 0 1-1.742-.71c-1.973.214-3.723.585-5.25 1.111-1.366 2.34-2.446 3.51-3.24 3.51a.779.779 0 0 1-.376-.094l-.321-.161a1.389 1.389 0 0 0-.08-.067c-.09-.09-.117-.25-.081-.482.08-.357.33-.766.75-1.226.42-.46 1.009-.89 1.768-1.292.125-.08.228-.054.308.08.018.018.027.036.027.054.464-.759.942-1.639 1.433-2.639.607-1.214 1.071-2.383 1.393-3.508A10.826 10.826 0 0 1 8.712 9.1c-.058-.692-.029-1.26.087-1.707.098-.357.286-.536.563-.536H9.656c.206 0 .362.067.469.201.16.188.2.491.12.91a.29.29 0 0 1-.053.108.35.35 0 0 1 .013.107v.402c-.018 1.098-.08 1.955-.187 2.571.49 1.464 1.143 2.527 1.955 3.188ZM4.26 19.848c.464-.214 1.076-.92 1.835-2.116a7.64 7.64 0 0 0-1.172 1.125c-.326.393-.547.723-.663.991Zm5.33-12.321c-.134.375-.143.964-.027 1.768.01-.063.04-.26.094-.59 0-.026.031-.218.094-.576a.302.302 0 0 1 .054-.107c-.01-.009-.014-.018-.014-.026a.103.103 0 0 1-.013-.04.771.771 0 0 0-.174-.483c0 .01-.005.018-.014.027v.027Zm-1.66 8.852a19.643 19.643 0 0 1 3.803-1.084 2.036 2.036 0 0 1-.174-.128 2.378 2.378 0 0 1-.214-.18c-.679-.599-1.246-1.384-1.701-2.357-.241.767-.612 1.647-1.112 2.638-.268.5-.469.87-.602 1.111Zm8.651-.214c-.214-.214-.839-.321-1.875-.321.679.25 1.232.375 1.661.375a1.3 1.3 0 0 0 .241-.014c0-.009-.009-.022-.027-.04Z\"\n fill={iconColor}\n />\n </g>\n <defs>\n <clipPath id=\"a\">\n <path fill=\"#fff\" d=\"M0 0h20.571v24H0z\" />\n </clipPath>\n </defs>\n </SVG>\n);\n\nexport default Pdf;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst PowerPoint: React.FC<{\n className?: string;\n iconColor?: string;\n ariaHidden?: boolean;\n}> = ({ className, iconColor = 'currentColor', ariaHidden = true }) => (\n <SVG\n viewBox=\"0 0 21 24\"\n className={className}\n width=\"21\"\n height=\"24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden={ariaHidden}\n >\n <g clipPath=\"url(#a)\">\n <path\n d=\"M19.66 5.09c.25.25.465.589.644 1.017.178.429.267.822.267 1.179v15.428c0 .357-.125.661-.375.911a1.24 1.24 0 0 1-.91.375h-18a1.24 1.24 0 0 1-.911-.375 1.24 1.24 0 0 1-.375-.91V1.284C0 .93.125.626.375.376S.929 0 1.285 0h12c.358 0 .75.09 1.18.268.428.178.767.393 1.017.643l4.179 4.178ZM13.715 1.82v5.036h5.036c-.09-.259-.188-.442-.295-.549l-4.192-4.192c-.107-.107-.29-.205-.549-.295Zm5.143 20.465V8.57h-5.571a1.24 1.24 0 0 1-.911-.375 1.24 1.24 0 0 1-.375-.91V1.714H1.714v20.572h17.143ZM6.804 19.152v-7.433H5.57v-1.433H10.5c.732 0 1.313.085 1.741.254.563.241 1.009.63 1.34 1.165.33.536.495 1.165.495 1.889 0 .732-.176 1.384-.53 1.955-.352.572-.827.96-1.425 1.165-.376.134-.902.201-1.58.201H8.704v2.237h1.246v1.42H5.57v-1.42h1.233Zm3.495-3.75c.42 0 .768-.067 1.045-.201.553-.277.83-.813.83-1.607 0-.732-.25-1.246-.75-1.54-.277-.161-.647-.242-1.111-.242H8.704v3.59H10.3Z\"\n fill={iconColor}\n />\n </g>\n <defs>\n <clipPath id=\"a\">\n <path fill=\"#fff\" d=\"M0 0h20.571v24H0z\" />\n </clipPath>\n </defs>\n </SVG>\n);\n\nexport default PowerPoint;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst Word: React.FC<{\n className?: string;\n iconColor?: string;\n ariaHidden?: boolean;\n}> = ({ className, iconColor = 'currentColor', ariaHidden = true }) => (\n <SVG\n viewBox=\"0 0 21 24\"\n className={className}\n width=\"21\"\n height=\"24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden={ariaHidden}\n >\n <g clipPath=\"url(#a)\">\n <path\n d=\"M19.66 5.09c.25.25.465.589.644 1.017.178.429.267.822.267 1.179v15.428c0 .357-.125.661-.375.911a1.24 1.24 0 0 1-.91.375h-18a1.24 1.24 0 0 1-.911-.375 1.24 1.24 0 0 1-.375-.91V1.284C0 .93.125.626.375.376S.929 0 1.285 0h12c.358 0 .75.09 1.18.268.428.178.767.393 1.017.643l4.179 4.178ZM13.715 1.82v5.036h5.036c-.09-.259-.188-.442-.295-.549l-4.192-4.192c-.107-.107-.29-.205-.549-.295Zm5.143 20.465V8.57h-5.571a1.24 1.24 0 0 1-.911-.375 1.24 1.24 0 0 1-.375-.91V1.714H1.714v20.572h17.143Zm-11.719-12v1.433H5.933l1.326 5.866c.045.178.076.384.094.616l.026.281h.054l.054-.281.046-.288c.023-.138.043-.248.06-.328l1.93-7.3h1.526l1.929 7.3c.018.08.04.192.067.335l.053.28a.46.46 0 0 0 .014.088l.02.107c.004.031.006.06.006.087h.054l.027-.281c.018-.232.049-.438.094-.616l1.325-5.866h-1.205v-1.433h4.018v1.433h-.938l-2.196 8.852h-2.13l-1.714-6.495a2.16 2.16 0 0 1-.073-.348 2.63 2.63 0 0 0-.047-.268l-.04-.322h-.054c0 .072-.009.179-.027.322a2.858 2.858 0 0 1-.134.616L8.384 20.57h-2.13L4.058 11.72h-.937v-1.433h4.017Z\"\n fill={iconColor}\n />\n </g>\n <defs>\n <clipPath id=\"a\">\n <path fill=\"#fff\" d=\"M0 0h20.571v24H0z\" />\n </clipPath>\n </defs>\n </SVG>\n);\n\nexport default Word;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst Zip: React.FC<{\n className?: string;\n iconColor?: string;\n ariaHidden?: boolean;\n}> = ({ className, iconColor = 'currentColor', ariaHidden = true }) => (\n <SVG\n viewBox=\"0 0 21 24\"\n className={className}\n width=\"21\"\n height=\"24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden={ariaHidden}\n >\n <g clipPath=\"url(#a)\">\n <path\n d=\"M6.857 5.143V3.429h1.714v1.714H6.857Zm1.714 1.714V5.143h1.715v1.714H8.57ZM6.857 8.571V6.857h1.714v1.714H6.857Zm1.714 1.715V8.57h1.715v1.715H8.57Zm11.09-5.197c.25.25.464.59.643 1.018.178.429.267.822.267 1.179v15.428c0 .357-.125.661-.375.911a1.24 1.24 0 0 1-.91.375h-18a1.24 1.24 0 0 1-.911-.375 1.24 1.24 0 0 1-.375-.91V1.284C0 .93.125.626.375.376S.929 0 1.285 0h12c.358 0 .75.09 1.18.268.428.178.767.393 1.017.643l4.179 4.178Zm-5.947-3.268v5.036h5.036c-.09-.259-.188-.442-.295-.549l-4.192-4.192c-.107-.107-.29-.205-.549-.295Zm5.143 20.465V8.57h-5.571a1.24 1.24 0 0 1-.911-.375 1.24 1.24 0 0 1-.375-.91V1.714h-1.714V3.43H8.57V1.714H1.714v20.572h17.143Zm-8.397-9.657 1.433 4.675c.071.24.107.473.107.696 0 .741-.324 1.355-.971 1.841-.647.487-1.466.73-2.458.73-.99 0-1.81-.243-2.457-.73-.647-.486-.971-1.1-.971-1.841 0-.223.036-.455.107-.696.188-.563.723-2.33 1.607-5.304v-1.714h1.714V12H9.63a.853.853 0 0 1 .83.63Zm-3.107 5.974c.339.17.745.254 1.218.254.474 0 .878-.085 1.212-.254.335-.17.503-.37.503-.603 0-.232-.168-.433-.503-.603-.334-.17-.738-.254-1.212-.254-.473 0-.877.085-1.212.254-.334.17-.502.37-.502.603 0 .232.165.433.496.603Z\"\n fill={iconColor}\n />\n </g>\n <defs>\n <clipPath id=\"a\">\n <path fill=\"#fff\" d=\"M0 0h20.571v24H0z\" />\n </clipPath>\n </defs>\n </SVG>\n);\n\nexport default Zip;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst External: React.FC<{\n iconColor?: string;\n className?: string;\n ariaHidden?: boolean;\n}> = ({ iconColor = 'currentColor', className, ariaHidden = true }) => (\n <SVG\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n className={className}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden={ariaHidden}\n >\n <path\n d=\"M19 19H5V5h7V3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14c1.1 0 2-.9 2-2v-7h-2v7ZM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7Z\"\n fill={iconColor}\n />\n </SVG>\n);\n\nexport default External;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst BoxArrowUpRight: React.FC<{\n iconColor?: string;\n className?: string;\n ariaHidden?: boolean;\n}> = ({ iconColor = 'currentColor', className, ariaHidden = true }) => (\n <SVG\n viewBox=\"0 0 14 16\"\n width=\"21\"\n height=\"24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n aria-hidden={ariaHidden}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M7.556 3.063a.437.437 0 0 0-.437-.438H1.313A1.313 1.313 0 0 0 0 3.938v8.75A1.313 1.313 0 0 0 1.313 14h8.75a1.313 1.313 0 0 0 1.312-1.313V6.881a.438.438 0 0 0-.875 0v5.806a.438.438 0 0 1-.438.438h-8.75a.438.438 0 0 1-.437-.438v-8.75a.438.438 0 0 1 .438-.437h5.806a.437.437 0 0 0 .438-.438Z\"\n fill={iconColor}\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M14 .437A.438.438 0 0 0 13.562 0H9.189a.437.437 0 0 0 0 .875h3.319L5.378 8.002a.438.438 0 0 0 .62.62l7.127-7.128v3.318a.437.437 0 1 0 .875 0V.437Z\"\n fill={iconColor}\n />\n </SVG>\n);\n\nexport default BoxArrowUpRight;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst Facebook: React.FC<{\n iconColor?: string;\n className?: string;\n ariaHidden?: boolean;\n}> = ({ iconColor = 'currentColor', className, ariaHidden = true }) => (\n <SVG\n width=\"30\"\n height=\"30\"\n viewBox=\"0 0 30 30\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n aria-hidden={ariaHidden}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M26.6012 0H3.32515C1.48872 0 0 1.48872 0 3.32515V26.6012c0 1.8364 1.48872 3.3252 3.32515 3.3252H14.9832v.0053h4.9877v-.0053h6.6303c1.8364 0 3.3252-1.4888 3.3252-3.3252V3.32515C29.9264 1.48872 28.4376 0 26.6012 0zm-6.6303 29.9264V18.2937h4.9877V13.306h-4.9877V9.98081c0-.91821.7444-1.66257 1.6626-1.66257h3.3251V3.33051h-4.1564c-3.2138 0-5.819 2.60526-5.819 5.81902V13.306H11.658v4.9877h3.3252v11.6327h4.9877z\"\n fill={iconColor}\n />\n </SVG>\n);\n\nexport default Facebook;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst Instagram: React.FC<{\n iconColor?: string;\n className?: string;\n ariaHidden?: boolean;\n}> = ({ iconColor = 'currentColor', className, ariaHidden = true }) => (\n <SVG\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n aria-hidden={ariaHidden}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M5.683 21.798C7.153 21.996 9.115 22 12 22c2.885 0 4.848-.004 6.317-.202 1.412-.19 2.066-.524 2.511-.97.446-.445.78-1.099.97-2.51.198-1.47.202-3.433.202-6.318s-.004-4.848-.202-6.317c-.19-1.412-.524-2.066-.97-2.511-.445-.446-1.099-.78-2.51-.97C16.847 2.004 14.884 2 12 2s-4.848.004-6.317.202c-1.412.19-2.066.524-2.511.97-.446.445-.78 1.099-.97 2.51C2.004 7.153 2 9.116 2 12s.004 4.848.202 6.317c.19 1.412.524 2.066.97 2.511.445.446 1.099.78 2.51.97ZM1.757 1.758C0 3.514 0 6.342 0 12c0 5.657 0 8.485 1.757 10.243C3.515 24 6.343 24 12 24s8.485 0 10.243-1.757C24 20.485 24 17.657 24 12s0-8.485-1.757-10.243C20.485 0 17.657 0 12 0S3.515 0 1.757 1.757Z\"\n fill={iconColor}\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M12 16a4 4 0 1 0 0-8 4 4 0 0 0 0 8Zm0 2a6 6 0 1 0 0-12 6 6 0 0 0 0 12Z\"\n fill={iconColor}\n />\n <path\n d=\"M19.969 5.625a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Z\"\n fill={iconColor}\n />\n </SVG>\n);\n\nexport default Instagram;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst LinkedIn: React.FC<{\n iconColor?: string;\n className?: string;\n ariaHidden?: boolean;\n}> = ({ iconColor = 'currentColor', className, ariaHidden = true }) => (\n <SVG\n width=\"30\"\n height=\"30\"\n viewBox=\"0 0 30 30\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n aria-hidden={ariaHidden}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M29.9752 3.32515C29.9752 1.48872 28.4865 0 26.65 0H3.37398C1.53755 0 .04883 1.48872.04883 3.32515V26.6012c0 1.8364 1.48872 3.3252 3.32515 3.3252H26.65c1.8365 0 3.3252-1.4888 3.3252-3.3252V3.32515zM25.7835 16.9523v8.8116h-4.6386v-8.1965c0-1.2855-1.0421-2.3276-2.3276-2.3276-1.2802 0-2.311 1.0475-2.311 2.3276v8.1965h-4.6386V11.8482h4.6386v1.8454c.7981-1.2968 2.444-2.1613 3.8572-2.1613 2.9934 0 5.42 2.4266 5.42 5.42zM6.487 9.24675c1.54261 0 2.79313-1.25053 2.79313-2.79313 0-1.54619-1.24693-2.80975-2.79313-2.80975-1.55178 0-2.80975 1.25797-2.80975 2.80975 0 1.5462 1.26356 2.79313 2.80975 2.79313zM8.77571 11.855v13.9157H4.17037V11.855h4.60534z\"\n fill={iconColor}\n />\n </SVG>\n);\n\nexport default LinkedIn;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst Twitter: React.FC<{\n iconColor?: string;\n className?: string;\n ariaHidden?: boolean;\n}> = ({ iconColor = 'currentColor', className, ariaHidden = true }) => (\n <SVG\n width=\"30\"\n height=\"30\"\n viewBox=\"0 0 30 30\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n aria-hidden={ariaHidden}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M26.6735 0H3.39742C1.56099 0 .07227 1.48872.07227 3.32515V26.6012c0 1.8364 1.48872 3.3252 3.32515 3.3252H26.6735c1.8364 0 3.3251-1.4888 3.3251-3.3252V3.32515C29.9986 1.48872 28.5099 0 26.6735 0zm.0131 8.17421c-.4157.88117-1.3467 1.6792-2.1448 2.34419-.1163 7.6811-5.0209 12.9349-12.3529 13.2674-3.02588.133-5.20385-.8313-7.11582-2.045 2.22785.3492 4.98772-.532 6.48402-1.7956-2.19457-.2327-3.47475-1.3466-4.08991-3.1256.63178.0998 1.29681.0665 1.89534-.0499-1.97847-.665-3.39166-1.8953-3.45816-4.4557.54865.266 1.13055.4988 1.89534.5487-1.4797-.8479-2.56037-3.9237-1.31344-5.95204 2.1946 2.41073 4.83813 4.37254 9.17743 4.63854-1.0973-4.65517 5.0708-7.18228 7.6478-4.07327 1.0973-.19951 1.9785-.59853 2.843-1.06405-.3491 1.06405-1.0308 1.84546-1.862 2.44399.8978-.11638 1.7124-.33252 2.3941-.68166z\"\n fill={iconColor}\n />\n </SVG>\n);\n\nexport default Twitter;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst Xing: React.FC<{\n iconColor?: string;\n className?: string;\n ariaHidden?: boolean;\n}> = ({ iconColor = 'currentColor', className, ariaHidden = true }) => (\n <SVG\n width=\"30\"\n height=\"30\"\n viewBox=\"0 0 30 30\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n aria-hidden={ariaHidden}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M3.04732 0C1.38475 0 .05469 1.33006.05469 2.99264V26.9337c0 1.6626 1.33006 2.9927 2.99263 2.9927H26.9884c1.6626 0 2.9926-1.3301 2.9926-2.9927V2.99264C29.981 1.33006 28.651 0 26.9884 0H3.04732zM21.782 3.33051h3.3917c.1995 0 .3657.06651.4323.21614.0997.14963.0997.33251 0 .5154L18.1742 17.2296l4.7384 8.6454c.0997.1829.0997.3658 0 .5154-.0831.133-.2328.2162-.4157.2162h-3.375c-.5154 0-.7814-.3492-.931-.6484l-4.7716-8.7452c.2327-.4156 7.4649-13.23408 7.4649-13.23408.1829-.33252.3991-.64841.8978-.64841zM10.1943 7.91799H6.85251c-.21613 0-.38239.08313-.46552.21614-.09975.18288-.0665.33251.01663.5154l2.2611 3.94027-3.55791 6.3012c-.0665.1829-.0665.3824 0 .5154.08313.1496.23276.2327.43227.2327h3.3584c.5154 0 .74816-.3325.93104-.6484 0 0 3.47478-6.1681 3.62438-6.4009L11.142 8.5664c-.1663-.31589-.4323-.64841-.9477-.64841z\"\n fill={iconColor}\n />\n </SVG>\n);\n\nexport default Xing;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst Youtube: React.FC<{\n iconColor?: string;\n className?: string;\n ariaHidden?: boolean;\n}> = ({ iconColor = 'currentColor', className, ariaHidden = true }) => (\n <SVG\n width=\"43\"\n height=\"30\"\n viewBox=\"0 0 43 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n aria-hidden={ariaHidden}\n >\n <path\n d=\"M17.19523 20.52408l11.27986-5.95252-11.27986-6.02397zM21.49983 0c2.61017 0 5.13098.03571 7.56251.10715 2.43154.07142 4.21437.14682 5.34859.22619l1.70128.09523c.01554 0 .14756.0119.39616.03572.2486.0238.42723.04762.53599.07142.10876.02382.29134.05953.54766.10715.25641.04762.4778.11111.66424.19048s.40397.18253.65257.30952c.2486.12698.48937.28174.72243.46428s.4583.39286.67583.63095c.09322.09524.21366.24206.36122.44047.14765.19841.3729.6627.67591 1.39282.30293.73016.50878 1.5317.61754 2.40476.1243 1.0159.22138 2.0992.29135 3.25.06987 1.15082.11262 2.05163.12816 2.70235v4.19049c.01553 2.30161-.1243 4.60314-.4195 6.90476-.10877.87298-.30294 1.66266-.58261 2.36903s-.52827 1.19444-.74579 1.46428l-.32628.40476c-.21752.23806-.44277.44838-.67583.63097-.23306.1825-.47384.3333-.72243.45233s-.46612.21823-.65257.29767c-.18644.07935-.40783.14282-.66424.1904-.25632.04766-.44276.08339-.55925.10718-.11657.02378-.2952.04766-.53608.07145-.24078.02379-.36894.03573-.38448.03573-3.89976.30152-8.77055.45233-14.61202.45233-3.21612-.03177-6.00888-.0833-8.37826-.15476s-3.92688-.13097-4.67267-.17854l-1.14195-.09524-.83899-.09525c-.55932-.07935-.9827-.1587-1.2701-.23815-.28744-.07935-.68362-.24596-1.18856-.49991-.50495-.25404-.94382-.57944-1.31671-.97621-.09323-.09524-.21363-.2421-.36123-.44049-.1476-.19838-.37288-.66266-.67585-1.39282s-.50883-1.53178-.6176-2.40476c-.1243-1.01589-.2214-2.0992-.2913-3.25-.06992-1.15081-.11264-2.05162-.12818-2.70234V13.3809c-.01554-2.30162.12429-4.60315.4195-6.90477.10876-.87302.30296-1.66266.58263-2.36903.27966-.70635.52825-1.19444.74576-1.46427l.32628-.40477c.21752-.23809.4428-.4484.67585-.63094s.47387-.33731.72246-.46429c.24859-.12699.4661-.23016.65255-.30952.18644-.07937.40784-.14286.6642-.19048.25635-.04762.4389-.08333.54767-.10714.10876-.02381.28743-.04762.53602-.07143.24858-.02381.38065-.03571.39619-.03571 3.89976-.28572 8.77046-.42857 14.61202-.42857z\"\n clipRule=\"evenodd\"\n fillRule=\"evenodd\"\n fill={iconColor}\n />\n </SVG>\n);\n\nexport default Youtube;\n","import React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst Mail: React.FC<{\n iconColor?: string;\n className?: string;\n ariaHidden?: boolean;\n}> = ({ iconColor = 'currentColor', className, ariaHidden = true }) => (\n <SVG\n viewBox=\"0 0 20 16\"\n width=\"21\"\n height=\"24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n aria-hidden={ariaHidden}\n >\n <path\n d=\"M20 2c0-1.1-.9-2-2-2H2C.9 0 0 .9 0 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V2Zm-2 0-8 5-8-5h16Zm0 12H2V4l8 5 8-5v10Z\"\n fill={iconColor}\n />\n </SVG>\n);\n\nexport default Mail;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst Phone: React.FC<{\n iconColor?: string;\n ariaHidden?: boolean;\n className?: string;\n}> = ({ iconColor = 'currentColor', ariaHidden = true, className }) => (\n <SVG\n viewBox=\"0 0 18 18\"\n width=\"18\"\n height=\"18\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden={ariaHidden}\n className={className}\n >\n <path\n d=\"M3.54 2c.06.89.21 1.76.45 2.59l-1.2 1.2c-.41-1.2-.67-2.47-.76-3.79h1.51Zm9.86 12.02c.85.24 1.72.39 2.6.45v1.49c-1.32-.09-2.59-.35-3.8-.75l1.2-1.19ZM4.5 0H1C.45 0 0 .45 0 1c0 9.39 7.61 17 17 17 .55 0 1-.45 1-1v-3.49c0-.55-.45-1-1-1-1.24 0-2.45-.2-3.57-.57a.84.84 0 0 0-.31-.05c-.26 0-.51.1-.71.29l-2.2 2.2a15.149 15.149 0 0 1-6.59-6.59l2.2-2.2c.28-.28.36-.67.25-1.02A11.36 11.36 0 0 1 5.5 1c0-.55-.45-1-1-1Z\"\n fill={iconColor}\n />\n </SVG>\n);\n\nexport default Phone;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst Play: React.FC<{\n iconColor?: string;\n className?: string;\n ariaHidden?: boolean;\n}> = ({ iconColor = 'currentColor', className, ariaHidden = true }) => (\n <SVG\n viewBox=\"0 0 80 80\"\n width=\"80\"\n height=\"80\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden={ariaHidden}\n className={className}\n >\n <g>\n <path\n d=\"M31.925 58.028 55.962 40 31.925 21.972v36.056ZM40 0c11.017 0 20.438 3.912 28.263 11.737C76.088 19.562 80 28.983 80 40c0 11.017-3.912 20.438-11.737 28.263C60.438 76.088 51.017 80 40 80c-11.017 0-20.438-3.912-28.263-11.737C3.912 60.438 0 51.017 0 40c0-11.017 3.912-20.438 11.737-28.263C19.562 3.912 28.983 0 40 0Z\"\n fill={iconColor}\n />\n <path\n d=\"M31.925 58.028 55.962 40 31.925 21.972v36.056Z\"\n fill=\"#fff\"\n />\n </g>\n </SVG>\n);\n\nexport default Play;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst MenuBurger: React.FC<{\n iconColor?: string;\n ariaHidden?: boolean;\n className?: string;\n}> = ({ iconColor = 'currentColor', ariaHidden = true, className }) => (\n <SVG\n width=\"30\"\n height=\"30\"\n viewBox=\"0 0 24 24\"\n className={className}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden={ariaHidden}\n >\n <path\n d=\"M3 18h18v-2H3v2Zm0-5h18v-2H3v2Zm0-7v2h18V6H3Z\"\n fill={iconColor}\n />\n </SVG>\n);\n\nexport default MenuBurger;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst LanguageIcon: React.FC<{\n iconColor?: string;\n className?: string;\n ariaHidden?: boolean;\n}> = ({ iconColor = 'currentColor', className, ariaHidden = true }) => (\n <SVG\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n className={className}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden={ariaHidden}\n >\n <path\n d=\"M7.994 1.333A6.663 6.663 0 0 0 1.333 8c0 3.68 2.98 6.667 6.66 6.667A6.67 6.67 0 0 0 14.666 8a6.67 6.67 0 0 0-6.673-6.667Zm4.62 4h-1.967a10.432 10.432 0 0 0-.92-2.373 5.353 5.353 0 0 1 2.886 2.373ZM8 2.693c.553.8.987 1.687 1.274 2.64H6.726c.286-.953.72-1.84 1.273-2.64Zm-5.16 6.64A5.495 5.495 0 0 1 2.667 8c0-.46.067-.907.173-1.333h2.253C5.04 7.107 5 7.547 5 8c0 .454.04.893.093 1.334H2.84Zm.547 1.334h1.967c.213.833.52 1.633.92 2.373a5.325 5.325 0 0 1-2.887-2.373Zm1.967-5.333H3.387A5.325 5.325 0 0 1 6.274 2.96c-.4.74-.707 1.54-.92 2.373ZM8 13.306a9.39 9.39 0 0 1-1.273-2.64h2.546A9.39 9.39 0 0 1 8 13.307Zm1.56-3.973H6.44c-.06-.44-.107-.88-.107-1.334 0-.453.047-.9.107-1.333h3.12c.06.433.107.88.107 1.333 0 .454-.047.893-.107 1.334Zm.167 3.706c.4-.74.707-1.54.92-2.373h1.966a5.353 5.353 0 0 1-2.886 2.373Zm1.18-3.706C10.96 8.894 11 8.454 11 8c0-.453-.04-.893-.093-1.333h2.253c.107.426.174.873.174 1.333 0 .46-.067.907-.174 1.334h-2.253Z\"\n fill={iconColor}\n />\n </SVG>\n);\n\nexport default LanguageIcon;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst Cross: React.FC<{\n iconColor?: string;\n ariaHidden?: boolean;\n className?: string;\n}> = ({ iconColor = 'currentColor', ariaHidden = true, className }) => (\n <SVG\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 24 24\"\n aria-hidden={ariaHidden}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n >\n <path\n d=\"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z\"\n fill={iconColor}\n />\n </SVG>\n);\n\nexport default Cross;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst CrossSmall: React.FC<{\n iconColor?: string;\n className?: string;\n ariaHidden?: boolean;\n}> = ({ iconColor = 'currentColor', className, ariaHidden = true }) => (\n <SVG\n width=\"15\"\n height=\"15\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n aria-hidden={ariaHidden}\n >\n <path\n d=\"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z\"\n fill={iconColor}\n />\n </SVG>\n);\n\nexport default CrossSmall;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst Check: React.FC<{\n iconColor?: string;\n className?: string;\n ariaHidden?: boolean;\n}> = ({ iconColor = 'currentColor', ariaHidden = true, className }) => (\n <SVG\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n aria-hidden={ariaHidden}\n >\n <path\n d=\"M9 16.17 4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41L9 16.17Z\"\n fill={iconColor}\n />\n </SVG>\n);\n\nexport default Check;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst Clock: React.FC<{\n iconColor?: string;\n className?: string;\n ariaHidden?: boolean;\n}> = ({ iconColor = 'currentColor', className, ariaHidden = true }) => (\n <SVG\n width=\"24\"\n height=\"24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n className={className}\n aria-hidden={ariaHidden}\n >\n <path\n d=\"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2ZM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8Z\"\n fill={iconColor}\n />\n <path d=\"M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67V7Z\" fill={iconColor} />\n </SVG>\n);\n\nexport default Clock;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst Info: React.FC<{\n iconColor?: string;\n className?: string;\n ariaHidden?: boolean;\n}> = ({ iconColor = 'currentColor', className, ariaHidden = true }) => (\n <SVG\n viewBox=\"0 0 24 24\"\n width=\"24\"\n height=\"24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n aria-hidden={ariaHidden}\n >\n <path\n d=\"M11 7h2v2h-2V7Zm0 4h2v6h-2v-6Zm1-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2Zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8Z\"\n fill={iconColor}\n />\n </SVG>\n);\n\nexport default Info;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst FlyTo: React.FC<{\n iconColor?: string;\n className?: string;\n ariaHidden?: boolean;\n}> = ({ iconColor = 'currentColor', className, ariaHidden = true }) => (\n <SVG\n width=\"52\"\n height=\"52\"\n viewBox=\"0 0 52 52\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n aria-hidden={ariaHidden}\n >\n <path\n d=\"M26 31.8229c1.5347 0 2.8889-.5868 4.0625-1.7604S31.8229 27.5347 31.8229 26s-.5868-2.8889-1.7604-4.0625S27.5347 20.1771 26 20.1771s-2.8889.5868-4.0625 1.7604S20.1771 24.4653 20.1771 26s.5868 2.8889 1.7604 4.0625S24.4653 31.8229 26 31.8229zm0-17.3333c3.1597 0 5.868 1.1284 8.125 3.3854 2.257 2.257 3.3854 4.9653 3.3854 8.125s-1.1284 5.868-3.3854 8.125c-2.257 2.257-4.9653 3.3854-8.125 3.3854s-5.868-1.1284-8.125-3.3854c-2.257-2.257-3.3854-4.9653-3.3854-8.125s1.1284-5.868 3.3854-8.125c2.257-2.257 4.9653-3.3854 8.125-3.3854zm20.1771 31.6875V34.6667H52v11.5104c0 1.5347-.5868 2.8889-1.7604 4.0625S47.7118 52 46.1771 52H34.6667v-5.8229h11.5104zm0-46.1771c1.5347 0 2.8889.5868 4.0625 1.76042C51.4132 2.93403 52 4.28819 52 5.82292V17.3333h-5.8229V5.82292H34.6667V0h11.5104zM5.82292 5.82292V17.3333H0V5.82292c0-1.53473.5868-2.88889 1.76042-4.0625C2.93403.5868 4.28819 0 5.82292 0H17.3333v5.82292H5.82292zm0 28.84378v11.5104H17.3333V52H5.82292c-1.53473 0-2.88889-.5868-4.0625-1.7604C.5868 49.066 0 47.7118 0 46.1771V34.6667h5.82292z\"\n fill={iconColor}\n />\n </SVG>\n);\n\nexport default FlyTo;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst LocationPin: React.FC<{\n iconColor?: string;\n className?: string;\n ariaHidden?: boolean;\n}> = ({ iconColor = 'currentColor', className, ariaHidden = true }) => (\n <SVG\n viewBox=\"0 0 24 24\"\n width=\"24\"\n height=\"24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n aria-hidden={ariaHidden}\n >\n <path\n d=\"M12 2C8.13 2 5 5.13 5 9c0 1.74.5 3.37 1.41 4.84.95 1.54 2.2 2.86 3.16 4.4.47.75.81 1.45 1.17 2.26.26.55.47 1.5 1.26 1.5s1-.95 1.25-1.5c.37-.81.7-1.51 1.17-2.26.96-1.53 2.21-2.85 3.16-4.4C18.5 12.37 19 10.74 19 9c0-3.87-3.13-7-7-7Zm0 9.75a2.5 2.5 0 0 1 0-5 2.5 2.5 0 0 1 0 5Z\"\n fill={iconColor}\n />\n </SVG>\n);\n\nexport default LocationPin;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst Place: React.FC<{\n iconColor?: string;\n ariaHidden?: boolean;\n className?: string;\n}> = ({ ariaHidden = true, iconColor = 'currentColor', className }) => (\n <SVG\n viewBox=\"0 0 16 20\"\n width=\"16\"\n height=\"20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden={ariaHidden}\n className={className}\n >\n <path\n d=\"M8 10c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2Zm6-1.8C14 4.57 11.35 2 8 2S2 4.57 2 8.2c0 2.34 1.95 5.44 6 9.14 4.05-3.7 6-6.8 6-9.14ZM8 0c4.2 0 8 3.22 8 8.2 0 3.32-2.67 7.25-8 11.8-5.33-4.55-8-8.48-8-11.8C0 3.22 3.8 0 8 0Z\"\n fill={iconColor}\n />\n </SVG>\n);\n\nexport default Place;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst MyLocation: React.FC<{\n iconColor?: string;\n ariaHidden?: boolean;\n className?: string;\n}> = ({ iconColor = 'currentColor', ariaHidden = true, className }) => (\n <SVG\n viewBox=\"0 0 22 22\"\n width=\"22\"\n height=\"22\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden={ariaHidden}\n className={className}\n >\n <path\n d=\"M11 7c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4Zm8.94 3A8.994 8.994 0 0 0 12 2.06V0h-2v2.06A8.994 8.994 0 0 0 2.06 10H0v2h2.06A8.994 8.994 0 0 0 10 19.94V22h2v-2.06A8.994 8.994 0 0 0 19.94 12H22v-2h-2.06ZM11 18c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7Z\"\n fill={iconColor}\n />\n </SVG>\n);\n\nexport default MyLocation;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst Map: React.FC<{\n iconColor?: string;\n ariaHidden?: boolean;\n className?: string;\n}> = ({ ariaHidden = true, iconColor = 'currentColor', className }) => (\n <SVG\n viewBox=\"0 0 18 18\"\n width=\"18\"\n height=\"18\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden={ariaHidden}\n className={className}\n >\n <path\n d=\"m17.5 0-.16.03L12 2.1 6 0 .36 1.9c-.21.07-.36.25-.36.48V17.5c0 .28.22.5.5.5l.16-.03L6 15.9l6 2.1 5.64-1.9c.21-.07.36-.25.36-.48V.5c0-.28-.22-.5-.5-.5ZM7 2.47l4 1.4v11.66l-4-1.4V2.47Zm-5 .99 3-1.01v11.7l-3 1.16V3.46Zm14 11.08-3 1.01V3.86l3-1.16v11.84Z\"\n fill={iconColor}\n />\n </SVG>\n);\n\nexport default Map;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst Money: React.FC<{\n iconColor?: string;\n ariaHidden?: boolean;\n className?: string;\n}> = ({ ariaHidden = true, iconColor = 'currentColor', className }) => (\n <SVG\n viewBox=\"0 0 20 16\"\n width=\"20\"\n height=\"16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden={ariaHidden}\n className={className}\n >\n <path\n d=\"M13 12h3c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1h-3c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1Zm1-6h1v4h-1V6Zm-7 6h3c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1H7c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1Zm1-6h1v4H8V6ZM3 4h2v8H3V4ZM0 0v16h20V0H0Zm18 14H2V2h16v12Z\"\n fill={iconColor}\n />\n </SVG>\n);\n\nexport default Money;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst Computer: React.FC<{\n iconColor?: string;\n ariaHidden?: boolean;\n className?: string;\n}> = ({ iconColor = 'currentColor', ariaHidden = true, className }) => (\n <SVG\n viewBox=\"0 0 24 16\"\n width=\"24\"\n height=\"16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden={ariaHidden}\n className={className}\n >\n <path\n d=\"M20 14c1.1 0 1.99-.9 1.99-2L22 2c0-1.1-.9-2-2-2H4C2.9 0 2 .9 2 2v10c0 1.1.9 2 2 2H0v2h24v-2h-4ZM4 2h16v10H4V2Z\"\n fill={iconColor}\n />\n </SVG>\n);\n\nexport default Computer;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst Route: React.FC<{\n iconColor?: string;\n className?: string;\n ariaHidden?: boolean;\n}> = ({ iconColor = 'currentColor', className, ariaHidden = true }) => (\n <SVG\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n aria-hidden={ariaHidden}\n >\n <path\n d=\"M14 10H9c-.6 0-1 .4-1 1v4h2v-3h4v2.5l3.5-3.5L14 7.5V10Zm-2-9C5.9 1 1 5.9 1 12s4.9 11 11 11 11-4.9 11-11S18.1 1 12 1Zm7.73 11.58-7.19 7.22c-.35.27-.79.27-1.15 0L4.2 12.58a.932.932 0 0 1 0-1.16l7.19-7.22c.35-.27.79-.27 1.15 0l7.19 7.22c.36.27.36.8 0 1.16Z\"\n fill={iconColor}\n />\n </SVG>\n);\n\nexport default Route;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst Star: React.FC<{\n iconColor?: string;\n className?: string;\n ariaHidden?: boolean;\n}> = ({ iconColor = 'currentColor', className, ariaHidden = true }) => (\n <SVG\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n aria-hidden={ariaHidden}\n >\n <path\n d=\"M12 17.27 18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27Z\"\n fill={iconColor}\n />\n </SVG>\n);\n\nexport default Star;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst Plus: React.FC<{\n iconColor?: string;\n className?: string;\n ariaHidden?: boolean;\n}> = ({ iconColor = 'currentColor', className, ariaHidden = true }) => (\n <SVG\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n aria-hidden={ariaHidden}\n >\n <path d=\"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2Z\" fill={iconColor} />\n </SVG>\n);\n\nexport default Plus;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst Minus: React.FC<{\n iconColor?: string;\n className?: string;\n ariaHidden?: boolean;\n}> = ({ iconColor = 'currentColor', className, ariaHidden = true }) => (\n <SVG\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n aria-hidden={ariaHidden}\n >\n <path d=\"M19 13H5v-2h14v2Z\" fill={iconColor} />\n </SVG>\n);\n\nexport default Minus;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst DeleteForever: React.FC<{\n iconColor?: string;\n ariaHidden?: boolean;\n className?: string;\n}> = ({ iconColor = 'currentColor', ariaHidden = true, className }) => (\n <SVG\n viewBox=\"0 0 14 18\"\n width=\"14\"\n height=\"18\"\n fill=\"none\"\n aria-hidden={ariaHidden}\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n >\n <path\n d=\"M9.12 7.47 7 9.59 4.87 7.47 3.46 8.88 5.59 11l-2.12 2.12 1.41 1.41L7 12.41l2.12 2.12 1.41-1.41L8.41 11l2.12-2.12-1.41-1.41ZM10.5 1l-1-1h-5l-1 1H0v2h14V1h-3.5ZM1 16c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V4H1v12ZM3 6h8v10H3V6Z\"\n fill={iconColor}\n />\n </SVG>\n);\n\nexport default DeleteForever;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst Person: React.FC<{\n iconColor?: string;\n ariaHidden?: boolean;\n className?: string;\n}> = ({ ariaHidden = true, iconColor = 'currentColor', className }) => (\n <SVG\n viewBox=\"0 0 16 16\"\n width=\"16\"\n height=\"16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden={ariaHidden}\n className={className}\n >\n <path\n d=\"M8 2c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2Zm0 10c2.7 0 5.8 1.29 6 2H2c.23-.72 3.31-2 6-2ZM8 0C5.79 0 4 1.79 4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4Zm0 10c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4Z\"\n fill={iconColor}\n />\n </SVG>\n);\n\nexport default Person;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst Category: React.FC<{\n iconColor?: string;\n ariaHidden?: boolean;\n className?: string;\n}> = ({ ariaHidden = true, iconColor = 'currentColor', className }) => (\n <SVG\n viewBox=\"0 0 19 20\"\n width=\"19\"\n height=\"20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden={ariaHidden}\n className={className}\n >\n <path\n d=\"M9 0 3.5 9h11L9 0Zm0 3.84L10.93 7H7.06L9 3.84ZM14.5 11c-2.49 0-4.5 2.01-4.5 4.5s2.01 4.5 4.5 4.5 4.5-2.01 4.5-4.5-2.01-4.5-4.5-4.5Zm0 7a2.5 2.5 0 0 1 0-5 2.5 2.5 0 0 1 0 5ZM0 19.5h8v-8H0v8Zm2-6h4v4H2v-4Z\"\n fill={iconColor}\n />\n </SVG>\n);\n\nexport default Category;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst CurrentLocation: React.FC<{\n iconColor?: string;\n className?: string;\n ariaHidden?: boolean;\n}> = ({ iconColor = 'currentColor', className, ariaHidden = true }) => (\n <SVG\n viewBox=\"0 0 24 24\"\n width=\"24\"\n height=\"24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden={ariaHidden}\n className={className}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M12 20a8 8 0 1 0 0-16 8 8 0 0 0 0 16Zm0 4c6.627 0 12-5.373 12-12S18.627 0 12 0 0 5.373 0 12s5.373 12 12 12Z\"\n fill={iconColor}\n fillOpacity=\".5\"\n />\n <path d=\"M18 12a6 6 0 1 1-12 0 6 6 0 0 1 12 0Z\" fill={iconColor} />\n </SVG>\n);\n\nexport default CurrentLocation;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst ToggleOn: React.FC<{\n iconColor?: string;\n className?: string;\n ariaHidden?: boolean;\n}> = ({ iconColor = 'currentColor', ariaHidden = true, className }) => (\n <SVG\n viewBox=\"0 0 22 12\"\n width=\"22\"\n height=\"12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden={ariaHidden}\n className={className}\n >\n <path\n d=\"M16 0H6C2.69 0 0 2.69 0 6s2.69 6 6 6h10c3.31 0 6-2.69 6-6s-2.69-6-6-6Zm0 10H6c-2.21 0-4-1.79-4-4s1.79-4 4-4h10c2.21 0 4 1.79 4 4s-1.79 4-4 4Zm0-7c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3Z\"\n fill={iconColor}\n />\n </SVG>\n);\n\nexport default ToggleOn;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst ToggleOff: React.FC<{\n iconColor?: string;\n className?: string;\n ariaHidden?: boolean;\n}> = ({ iconColor = 'currentColor', ariaHidden = true, className }) => (\n <SVG\n viewBox=\"0 0 22 12\"\n width=\"22\"\n height=\"12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden={ariaHidden}\n className={className}\n >\n <path\n d=\"M16 0H6C2.69 0 0 2.69 0 6s2.69 6 6 6h10c3.31 0 6-2.69 6-6s-2.69-6-6-6Zm0 10H6c-2.21 0-4-1.79-4-4s1.79-4 4-4h10c2.21 0 4 1.79 4 4s-1.79 4-4 4ZM6 3C4.34 3 3 4.34 3 6s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3Z\"\n fill={iconColor}\n />\n </SVG>\n);\n\nexport default ToggleOff;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst LocationSearch: React.FC<{\n iconColor?: string;\n className?: string;\n ariaHidden?: boolean;\n}> = ({ iconColor = 'currentColor', className, ariaHidden = true }) => (\n <SVG\n viewBox=\"0 0 24 24\"\n width=\"24\"\n height=\"24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden={ariaHidden}\n className={className}\n >\n <g>\n <path\n d=\"M20.94 11A8.994 8.994 0 0 0 13 3.06V1h-2v2.06A8.994 8.994 0 0 0 3.06 11H1v2h2.06A8.994 8.994 0 0 0 11 20.94V23h2v-2.06A8.994 8.994 0 0 0 20.94 13H23v-2h-2.06ZM12 19c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7Z\"\n fill={iconColor}\n />\n </g>\n </SVG>\n);\n\nexport default LocationSearch;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst ClockFilled: React.FC<{\n iconColor?: string;\n className?: string;\n ariaHidden?: boolean;\n}> = ({ iconColor = 'currentColor', className, ariaHidden = true }) => (\n <SVG\n viewBox=\"0 0 28 28\"\n width=\"28\"\n height=\"28\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n aria-hidden={ariaHidden}\n >\n <path\n d=\"M14 .667C6.667.667.667 6.667.667 14s6 13.333 13.333 13.333 13.333-6 13.333-13.333S21.333.667 14 .667ZM19.6 19.6l-6.933-4.267v-8h2v6.934l6 3.6L19.6 19.6Z\"\n fill={iconColor}\n />\n </SVG>\n);\n\nexport default ClockFilled;\n","import React from 'react';\nimport { renderToString } from 'react-dom/server';\n\nexport const getSVGDataImg = (\n svg: React.ReactElement,\n encode = true\n): string => {\n let svgString = '';\n if (!svg) return '';\n\n if (typeof svg === 'string') {\n svgString = svg;\n } else {\n svgString = renderToString(svg);\n }\n\n if (!encode) return `data:image/svg+xml;utf8,${svgString}`;\n\n if (typeof window !== 'undefined') {\n return `data:image/svg+xml;base64,${btoa(svgString)}`;\n } else {\n const baseString = Buffer.from(svgString).toString('base64');\n return `data:image/svg+xml;base64,${baseString}`;\n }\n};\n","/* eslint-disable react/display-name */\nimport * as Icons from 'components/base/icons/Icons';\nimport React from 'react';\n\nimport { css, DefaultTheme } from 'styled-components';\nimport { getSVGDataImg as getSVGData } from 'utils/dataURI';\nimport { CookieTypes } from './cookie-consent/useCookieConsent';\nimport { XOR } from './types';\n\nexport type MediaQueryType =\n | 'small'\n | 'medium'\n | 'semilarge'\n | 'large'\n | 'xlarge'\n | 'xxlarge';\n\nexport const mq: { [key in Exclude<MediaQueryType, 'small'>]: string } = {\n medium: '(min-width: 40em)', // 640 px\n semilarge: '(min-width: 52em)', // 832 px\n large: '(min-width: 64em)', // 1024 px\n xlarge: '(min-width: 90em)', // 1440 px\n xxlarge: '(min-width: 150em)', // 2400 px\n};\n\nexport const spacings = {\n nudge: 8,\n spacer: 32,\n wrapperSmall: 1000,\n wrapper: 1440,\n wrapperLarge: 2400,\n};\n\n/***** Range Helper *****/\nexport const getSizeByRange = (range: [number, number]): string =>\n `calc(${range[0]}px + (${range[1]} - ${range[0]}) * ((100vw - 300px) / (${spacings.wrapper} - 320)));`;\n\nexport const withRange = (range: [number, number?], property: string) => {\n if (!property) return '';\n const min = range[0];\n const max = range[1];\n\n if (max !== undefined) {\n return `\n ${property}: ${min}px;\n ${property}: ${getSizeByRange(range as [number, number])};\n\n @media ${mq.xlarge} {\n ${property}: ${max}px;\n }\n `;\n } else {\n return `\n ${property}: ${min}px;\n `;\n }\n};\n\n/**\n * Generate css attributes to style text color with plain color or gradient\n * @param fallbackColor\n * @param gradient\n */\nexport const styleTextColor = (fallbackColor?: string, gradient?: string) => {\n if (gradient) {\n return css`\n color: ${fallbackColor};\n\n @supports (-webkit-text-stroke: thin) {\n padding-top: 2px;\n background: ${gradient};\n background-clip: text;\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n }\n `;\n } else {\n return css`\n color: ${fallbackColor};\n `;\n }\n};\n\n/***** Color Types *****/\ninterface ColorOptions {\n default: string;\n inverted: string;\n hover: string;\n invertedHover: string;\n}\n\nexport type ColorOptionsType = keyof ColorOptions;\n\nexport interface Colors {\n text: {\n default: string;\n inverted: string;\n error: string;\n errorInverted: string;\n heading: string;\n headingInverted: string;\n copy: string;\n copyInverted: string;\n subtile: string;\n subtileInverted: string;\n };\n sectionBg: {\n light: string;\n medium: string;\n dark: string;\n };\n elementBg: {\n light: string;\n lightHover: string;\n medium: string;\n mediumHover: string;\n dark: string;\n darkHover: string;\n };\n primary: ColorOptions;\n secondary: ColorOptions;\n error: string;\n errorInverted: string;\n}\n\nexport type ColorType = keyof Colors;\n\n/***** Font Types *****/\nexport interface FontProps {\n family: string;\n weight?: string;\n style?: string;\n lineHeight?: string;\n letterSpacing?: string;\n size: [number, number?];\n textTransform?: string;\n textDecoration?: string;\n color?: string;\n colorInverted?: string;\n colorGradient?: string;\n colorGradientInverted?: string;\n}\n\nexport type FontPropsType = keyof FontProps;\n\nexport interface FontOptions {\n small: FontProps;\n medium: FontProps;\n big: FontProps;\n}\n\nexport interface CalloutFontOptions {\n small: FontProps;\n medium: FontProps;\n mediumBold: FontProps;\n big: FontProps;\n}\n\nexport type FontOptionType = keyof FontOptions;\nexport type CalloutFontOptionType = keyof CalloutFontOptions;\n\nexport interface Fonts {\n copy: FontOptions;\n 'copy-i': FontOptions;\n 'copy-b': FontOptions;\n super: FontProps;\n 'heading-1': FontProps;\n 'heading-2': FontProps;\n 'heading-3': FontProps;\n 'heading-4': FontProps;\n callout: CalloutFontOptions;\n link: {\n color: string;\n colorInverted: string;\n colorHover: string;\n colorHoverInverted: string;\n textTransform?: string;\n textDecoration?: string;\n };\n navigation: {\n featured: FontProps;\n main: FontProps;\n sub: FontProps;\n secondary: FontProps;\n };\n}\n\nexport type FontType = keyof Fonts;\n\n/**\n * Base font styles for all font types\n */\nexport type FontBase = FontProps;\n\n/***** Colors *****/\nconst defaultColors: Colors = {\n text: {\n default: '#333333',\n inverted: '#FAFAFA',\n error: '#FF2D2D',\n errorInverted: '#FF2D2D',\n heading: '#333333',\n headingInverted: '#FFFFFF',\n copy: '#333333',\n copyInverted: '#FFFFFF',\n subtile: '#878787',\n subtileInverted: '#878787',\n },\n sectionBg: {\n light: 'transparent',\n medium: '#F0F0F0',\n dark: '#000000',\n },\n elementBg: {\n light: '#FFFFFF',\n lightHover: '#FFDEDE',\n medium: '#DBDBDB',\n mediumHover: '#E0B5B5',\n dark: '#393434',\n darkHover: '#653434',\n },\n primary: {\n default: '#7749F8',\n inverted: '#A88AFB',\n hover: '#42278F',\n invertedHover: '#D2C1FF',\n },\n secondary: {\n default: '#6C757D',\n inverted: '#C5BEE0',\n hover: '#3b4045',\n invertedHover: '#BCB7C9',\n },\n error: '#FF2D2D',\n errorInverted: '#FF2D2D',\n};\n\n/***** Fonts *****/\nconst copyBase: FontProps = {\n family: '\"Roboto\", Roboto-fallback, Helvetica, sans-serif',\n weight: '400',\n style: 'normal',\n lineHeight: '1.5',\n letterSpacing: '0',\n size: [16],\n textTransform: '',\n color: defaultColors.text.copy,\n colorInverted: defaultColors.text.copyInverted,\n};\n\nconst headingBase: FontProps = {\n family: '\"Roboto\", Roboto-fallback, Helvetica, sans-serif',\n weight: '700',\n style: 'normal',\n lineHeight: '1.17',\n letterSpacing: '0',\n size: [56],\n color: defaultColors.text.heading,\n colorInverted: defaultColors.text.headingInverted,\n};\n\nconst defaultFonts: Fonts = {\n copy: {\n small: {\n ...copyBase,\n lineHeight: '1.42',\n size: [14],\n },\n medium: {\n ...copyBase,\n lineHeight: '1.5',\n size: [16],\n },\n big: {\n ...copyBase,\n lineHeight: '1.2',\n size: [20],\n },\n },\n 'copy-i': {\n small: {\n ...copyBase,\n style: 'italic',\n lineHeight: '1.42',\n size: [14],\n },\n medium: {\n ...copyBase,\n style: 'italic',\n lineHeight: '1.5',\n size: [16],\n },\n big: {\n ...copyBase,\n style: 'italic',\n lineHeight: '1.2',\n size: [20],\n },\n },\n 'copy-b': {\n small: {\n ...copyBase,\n weight: '700',\n lineHeight: '1.42',\n size: [14],\n },\n medium: {\n ...copyBase,\n weight: '700',\n lineHeight: '1.5',\n size: [16],\n },\n big: {\n ...copyBase,\n weight: '700',\n lineHeight: '1.2',\n size: [20],\n },\n },\n super: {\n ...headingBase,\n lineHeight: '1.43',\n size: [16],\n },\n 'heading-1': headingBase,\n 'heading-2': {\n ...headingBase,\n size: [40],\n lineHeight: '1.17',\n },\n 'heading-3': {\n ...headingBase,\n size: [32],\n lineHeight: '1.17',\n },\n 'heading-4': {\n ...headingBase,\n size: [24],\n lineHeight: '1.17',\n },\n callout: {\n small: {\n ...headingBase,\n lineHeight: '1.5',\n weight: '300',\n size: [32],\n },\n medium: {\n ...headingBase,\n weight: '300',\n lineHeight: '1.17',\n size: [72],\n },\n mediumBold: {\n ...headingBase,\n weight: '700',\n lineHeight: '1.17',\n size: [72],\n },\n big: {\n ...headingBase,\n weight: '300',\n lineHeight: '1.17',\n size: [76],\n },\n },\n link: {\n color: '#2441DA',\n colorHover: '#122278',\n colorInverted: '#fff',\n colorHoverInverted: '#C8C8C8',\n },\n navigation: {\n featured: {\n ...copyBase,\n weight: '700',\n lineHeight: '1.5',\n size: [16],\n },\n main: {\n ...copyBase,\n weight: '700',\n lineHeight: '1.5',\n size: [16],\n },\n sub: {\n ...copyBase,\n weight: '700',\n lineHeight: '1.5',\n size: [16],\n },\n secondary: {\n ...copyBase,\n weight: '700',\n lineHeight: '1.5',\n size: [16],\n },\n },\n};\n\n/***** Global Settings *****/\nexport type NavBarHeights = {\n small: number;\n large: number;\n};\n\ninterface LinkIcon {\n isExternal?: boolean;\n /** Patterns of Href value to show this icon (e.g. .svg, .png) */\n patterns: string[];\n /** Icon scale factor. 1 is default */\n scale?: (props: { type?: keyof Fonts; size?: FontOptionType }) => number;\n /** Set vertical alignment of icon in text */\n vAlign?:\n | 'bottom'\n | 'baseline'\n | 'middle'\n | 'top'\n | 'text-top'\n | 'text-bottom'\n | 'super'\n | 'sub';\n}\n\nexport interface LinkUrlIcon extends LinkIcon {\n // icon (e.g. URL, base64 or icon font char)\n iconUrl: (isInverted?: boolean) => string;\n}\n\nexport interface LinkFontIcon extends LinkIcon {\n /** Define font family for icon font */\n iconFont: string;\n /** Define icon font character */\n iconChar: string;\n}\n\nexport interface GlobalSettings {\n sections: {\n /** Paddings and Margins for seperating each section */\n seperation: {\n forcePadding: boolean;\n padding: {\n default: [number, number?];\n stackable: [number, number?];\n };\n margin: {\n default: [number, number?];\n stackable: [number, number?];\n };\n };\n\n /** Radius of image and card edges */\n edgeRadius: string | null;\n\n /** Customnize gradient for all text on image background gradients */\n imageTextGradient: string;\n\n /** Customnize gradient for all text on image background gradients if text is centered */\n imageTextGradientCentered?: string;\n\n /** Show placeholder background unitl image has been loaded */\n imagePlaceholderBg: {\n default: string;\n inverted: string;\n };\n\n /** Date and Time Formats for all news sections */\n newsDateFormat: (date: Date) => string;\n newsTimeFormat: (date: Date) => string;\n newsLocaleKey: 'de' | 'en';\n\n /** Date and Time Formats for all event sections */\n eventDateFormat: (date: Date) => string;\n eventTimeFormat: (date: Date) => string;\n eventTimespanFormat: (start: Date, duration?: number) => string;\n eventLocaleKey: 'de' | 'en';\n\n /** Date and Time Formats for Datepickers */\n datepickerLocaleKey: 'de' | 'en';\n datepickerDateFormat: string;\n\n /** Filters */\n newsFilterName: string;\n eventFilterName: string;\n jobFilterName: string;\n poiFilterName: string;\n };\n cookie: {\n name: string;\n types: CookieTypes;\n lifetime: number;\n\n /** Date and Time Formats for cookie consent */\n consentDateFormat: (date: Date) => string;\n consentTimeFormat: (date: Date) => string;\n consentLocaleKey: 'de' | 'en';\n consentStatusFormat: string;\n\n videoCookieTypeRestrictions: string[];\n };\n navigation: {\n /** Settings of top navigation bar */\n navBar: {\n /**\n * Heights of top bar.\n * Array values are like: [mobile, desktop]\n * Top navbar is hidden if value equal 0\n */\n topHeight: {\n small: [number, number?];\n large: [number, number?];\n };\n /**\n * Heights of main bar.\n * Array values are like: [mobile, desktop]\n */\n mainHeight: {\n small: [number, number?];\n large: [number, number?];\n };\n /**\n * Heights of bottom bar.\n * Array values are like: [mobile, desktop]\n */\n bottomHeight: {\n small: [number, number?];\n large: [number, number?];\n };\n };\n menu: {\n /**\n * Heights of menu header.\n * Array values are like: [mobile, desktop]\n * Menu header is hidden if value equal 0\n */\n headerHeight: {\n small: [number, number?];\n large: [number, number?];\n };\n };\n };\n icons: {\n /** Icon setup for link/download lists */\n // linkIcons: {\n // default: (isInverted?: boolean) => React.ReactNode;\n // variations: Array<LinkIcon>;\n // };\n linkIcons: Array<XOR<LinkUrlIcon, LinkFontIcon>>;\n };\n}\n\nconst getLinkIconScale = (props: {\n type?: keyof Fonts;\n size?: FontOptionType;\n}) => {\n if (\n props.type === 'copy' ||\n props.type === 'copy-b' ||\n props.type === 'copy-i'\n ) {\n if (props.size === 'medium') return 0.8;\n if (props.size === 'small') return 0.7;\n if (props.size === 'big') return 0.9;\n }\n return 0.8;\n};\n\nconst defaultGlobalSettings: GlobalSettings = {\n sections: {\n seperation: {\n forcePadding: false,\n padding: {\n default: [spacings.nudge * 5, spacings.nudge * 10],\n stackable: [spacings.spacer],\n },\n margin: {\n default: [spacings.nudge * 5, spacings.nudge * 10],\n stackable: [spacings.spacer],\n },\n },\n edgeRadius: null,\n imageTextGradient: `\n linear-gradient(\n 0deg,\n rgba(0, 0, 0, 0.6) 0%,\n rgba(0, 0, 0, 0.4) 30%,\n rgba(0, 0, 0, 0.1) 60%,\n rgba(0, 0, 0, 0) 100%\n );\n `,\n imageTextGradientCentered: `linear-gradient(\n 0deg,\n rgba(0, 0, 0, 0.4) 0%,\n rgba(0, 0, 0, 0.3) 30%,\n rgba(0, 0, 0, 0.2) 60%,\n rgba(0, 0, 0, 0.15) 100%\n );`,\n imagePlaceholderBg: {\n default: '#e2e2e2',\n inverted: '#1e1c1f',\n },\n newsDateFormat: () => 'dd.mm.yy',\n newsTimeFormat: () => 'hh:mm',\n newsLocaleKey: 'de',\n eventDateFormat: () => 'ddd, dd.mm.yyyy',\n eventTimeFormat: () => 'hh:mm',\n eventTimespanFormat: () => '<START><SEP><END> Uhr',\n eventLocaleKey: 'de',\n datepickerLocaleKey: 'de',\n datepickerDateFormat: 'dd.MM.yyyy',\n\n newsFilterName: 'newsFilter',\n eventFilterName: 'eventFilter',\n jobFilterName: 'jobFilter',\n poiFilterName: 'poiFilter',\n },\n cookie: {\n name: 'cookie-consent-v2',\n lifetime: 365,\n types: {\n essentials: {\n isAccepted: true,\n isEditable: false,\n label: 'Essentielle Funktionen',\n },\n analytics: {\n isAccepted: false,\n isEditable: true,\n label: 'Analyse & Marketing',\n },\n functionals: {\n isAccepted: false,\n isEditable: true,\n label: 'Funktionelle Erweiterungen',\n },\n },\n consentDateFormat: () => 'dd.mm.yy',\n consentTimeFormat: () => 'hh:mm',\n consentLocaleKey: 'de',\n consentStatusFormat: 'Cookie aktualisiert am <DATE> um <TIME> Uhr',\n\n videoCookieTypeRestrictions: ['functionals'],\n },\n navigation: {\n navBar: {\n topHeight: {\n small: [0, 40],\n large: [30, 40],\n },\n mainHeight: {\n small: [80, 90],\n large: [100, 120],\n },\n bottomHeight: {\n small: [0, 40],\n large: [30, 40],\n },\n },\n menu: {\n headerHeight: {\n small: [210],\n large: [210],\n },\n },\n },\n icons: {\n linkIcons: [\n {\n iconUrl: (isInverted) =>\n getSVGData(\n <Icons.BoxArrowUpRight\n iconColor={\n isInverted\n ? defaultFonts.link.colorInverted\n : defaultFonts.link.color\n }\n />\n ),\n patterns: [], // default link icon\n isExternal: true,\n scale: getLinkIconScale,\n },\n {\n iconUrl: (isInverted) =>\n getSVGData(\n <Icons.Mail\n iconColor={\n isInverted\n ? defaultFonts.link.colorInverted\n : defaultFonts.link.color\n }\n />\n ),\n patterns: ['mailto:'],\n scale: getLinkIconScale,\n },\n {\n iconUrl: (isInverted) =>\n getSVGData(\n <Icons.Phone\n iconColor={\n isInverted\n ? defaultFonts.link.colorInverted\n : defaultFonts.link.color\n }\n />\n ),\n patterns: ['tel:'],\n scale: getLinkIconScale,\n },\n {\n iconUrl: (isInverted) =>\n getSVGData(\n <Icons.Pdf\n iconColor={\n isInverted\n ? defaultFonts.link.colorInverted\n : defaultFonts.link.color\n }\n />\n ),\n patterns: ['.pdf'],\n scale: getLinkIconScale,\n },\n {\n iconUrl: (isInverted) =>\n getSVGData(\n <Icons.Word\n iconColor={\n isInverted\n ? defaultFonts.link.colorInverted\n : defaultFonts.link.color\n }\n />\n ),\n patterns: ['.docx'],\n scale: getLinkIconScale,\n },\n {\n iconUrl: (isInverted) =>\n getSVGData(\n <Icons.Excel\n iconColor={\n isInverted\n ? defaultFonts.link.colorInverted\n : defaultFonts.link.color\n }\n />\n ),\n patterns: ['.xlsx'],\n scale: getLinkIconScale,\n },\n {\n iconUrl: (isInverted) =>\n getSVGData(\n <Icons.PowerPoint\n iconColor={\n isInverted\n ? defaultFonts.link.colorInverted\n : defaultFonts.link.color\n }\n />\n ),\n patterns: ['.pptx'],\n scale: getLinkIconScale,\n },\n {\n iconUrl: (isInverted) =>\n getSVGData(\n <Icons.Image\n iconColor={\n isInverted\n ? defaultFonts.link.colorInverted\n : defaultFonts.link.color\n }\n />\n ),\n patterns: ['.jpg', '.jpeg', '.png', '.svg'],\n scale: getLinkIconScale,\n },\n {\n iconUrl: (isInverted) =>\n getSVGData(\n <Icons.Zip\n iconColor={\n isInverted\n ? defaultFonts.link.colorInverted\n : defaultFonts.link.color\n }\n />\n ),\n patterns: ['.zip', '.tar'],\n scale: getLinkIconScale,\n },\n ],\n },\n};\n\n/***** Theme Helper *****/\nexport const baseTheme: DefaultTheme = {\n colors: { ...defaultColors },\n fonts: { types: { ...defaultFonts } },\n globals: { ...defaultGlobalSettings },\n};\n\nexport const getTheme = (theme?: DefaultTheme) => {\n return theme && theme.colors && theme.fonts && theme.globals\n ? theme\n : baseTheme;\n};\n\nexport const getColors = (theme?: DefaultTheme) => {\n return theme && theme.colors ? theme.colors : baseTheme.colors;\n};\n\nexport const getFonts = (theme?: DefaultTheme) => {\n return theme && theme.fonts?.types\n ? theme.fonts.types\n : baseTheme.fonts.types;\n};\n\nexport const getGlobals = (theme?: DefaultTheme) => {\n return theme && theme.globals ? theme.globals : baseTheme.globals;\n};\n","import { useEffect, useMemo, useState } from 'react';\nimport { MediaQueryType, mq } from './styles';\n\nexport const isBrowser =\n typeof window !== 'undefined' && typeof window.document !== 'undefined';\n\n// *****************\n// useBreakpoint\n// *****************\nconst checkMq = (cmq: MediaQueryType, checkMqs: MediaQueryType[]) => {\n return (\n isBrowser &&\n (checkMqs.length <= 0 || checkMqs.indexOf(cmq) > -1) &&\n (cmq !== 'small' ? window.matchMedia(mq[cmq]).matches : true)\n );\n};\n\nexport const getMediaQuery = (checkMqs: MediaQueryType[]): MediaQueryType => {\n if (checkMq('xxlarge', checkMqs)) {\n return 'xxlarge';\n } else if (checkMq('xlarge', checkMqs)) {\n return 'xlarge';\n } else if (checkMq('large', checkMqs)) {\n return 'large';\n } else if (checkMq('semilarge', checkMqs)) {\n return 'semilarge';\n } else if (checkMq('medium', checkMqs)) {\n return 'medium';\n } else {\n return 'small';\n }\n};\n\nexport const getMediaQueries = (): { [key in MediaQueryType]: boolean } => {\n return {\n small: true,\n medium: window.matchMedia(mq['medium']).matches,\n semilarge: window.matchMedia(mq['semilarge']).matches,\n large: window.matchMedia(mq['large']).matches,\n xlarge: window.matchMedia(mq['xlarge']).matches,\n xxlarge: window.matchMedia(mq['xxlarge']).matches,\n };\n};\n\nconst isEqual = (\n currentMqs: { [key in MediaQueryType]: boolean },\n newMqs: { [key in MediaQueryType]: boolean }\n) => {\n let isDifferent = false;\n\n for (const key in mq) {\n if (currentMqs[key] !== newMqs[key]) {\n isDifferent = true;\n break;\n }\n }\n\n return !isDifferent;\n};\n\nexport const useMediaQueries = () => {\n const [mediaQueries, setMediaQueries] = useState<\n { [key in MediaQueryType]: boolean }\n >({\n small: true,\n medium: false,\n semilarge: false,\n large: false,\n xlarge: false,\n xxlarge: false,\n });\n\n useEffect(() => {\n const handleResize = () => {\n const newMediaQueries = getMediaQueries();\n setMediaQueries((prev) => {\n if (!isEqual(prev, newMediaQueries)) {\n return newMediaQueries;\n } else return prev;\n });\n };\n\n window.addEventListener('resize', handleResize);\n setMediaQueries(getMediaQueries());\n\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n return mediaQueries;\n};\n\nexport const useMediaQuery = (mqs?: MediaQueryType[]) => {\n const checkMqs = useMemo(() => mqs || [], [mqs]);\n const [mediaQuery, setMediaQuery] = useState<MediaQueryType | undefined>();\n\n useEffect(() => {\n const handleResize = () => {\n const newMediaQuery = getMediaQuery(checkMqs);\n\n if (newMediaQuery !== mediaQuery) {\n setMediaQuery(newMediaQuery);\n }\n };\n\n window.addEventListener('resize', handleResize);\n setMediaQuery(getMediaQuery(checkMqs));\n\n return () => window.removeEventListener('resize', handleResize);\n }, [checkMqs, mediaQuery]);\n\n return mediaQuery;\n};\n\nexport interface MediaQueries {\n [key: string]: string;\n}\n\nexport const useDynamicMediaQueries = <QueryMap extends MediaQueries>(\n mq: QueryMap\n) => {\n const [mediaQueries, setMediaQueries] = useState<\n { [key in keyof QueryMap]: boolean }\n >(() => {\n return Object.keys(mq).reduce((acc, current) => {\n const copy = { ...acc };\n copy[current] = false;\n return copy;\n }, {}) as Record<keyof QueryMap, boolean>;\n });\n\n useEffect(() => {\n const getMq = () => {\n const newQueryState = {};\n\n for (const key in mq) {\n newQueryState[key as string] = window.matchMedia(\n mq[key]\n ).matches;\n }\n return newQueryState as Record<keyof QueryMap, boolean>;\n };\n\n const setQueries = (newQueries: Record<keyof QueryMap, boolean>) => {\n setMediaQueries((prev) => {\n for (const key in newQueries) {\n if (prev[key] === undefined) return newQueries;\n if (newQueries[key] !== prev[key]) {\n return newQueries;\n }\n }\n return prev;\n });\n };\n\n const handleResize = () => {\n setQueries(getMq());\n };\n\n window.addEventListener('resize', handleResize);\n setQueries(getMq());\n\n return () => window.removeEventListener('resize', handleResize);\n }, [mq, mediaQueries]);\n\n return mediaQueries;\n};\n","import { useEffect, useState } from 'react';\n\nexport const useFontsLoaded = () => {\n const [allFontsLoaded, setFontLoaded] = useState<boolean | undefined>(\n false\n );\n\n useEffect(() => {\n const waitForFonts = () => {\n (document as any)?.fonts?.ready?.then(() => {\n setFontLoaded(true);\n });\n };\n\n if ((document as any).fonts === undefined) setFontLoaded(undefined);\n else waitForFonts();\n }, []);\n\n return allFontsLoaded;\n};\n","import { useEffect, useRef, useState } from 'react';\n\nexport interface ResizeState {\n clientWidth: number;\n clientHeight: number;\n innerHeight: number;\n innerWidth: number;\n}\n\nconst useResizeThrottle = (\n timeout = 0,\n callback?: (state: ResizeState) => void\n) => {\n const [throttledState, setThrottledState] =\n useState<ResizeState | null>(null);\n\n const timeoutRef = useRef<number>(-1);\n const lastState = useRef<ResizeState>({\n clientWidth: 0,\n clientHeight: 0,\n innerHeight: 0,\n innerWidth: 0,\n });\n\n const updateResizeState = () => {\n if (typeof window === 'undefined' || typeof document === 'undefined') {\n return;\n }\n\n lastState.current = {\n clientWidth: document.documentElement.clientWidth,\n clientHeight: document.documentElement.clientHeight,\n innerHeight: window.innerHeight,\n innerWidth: window.innerWidth,\n };\n };\n\n useEffect(() => {\n if (typeof window === 'undefined') return;\n\n const handleResize = () => {\n updateResizeState();\n\n if (timeoutRef.current === -1) {\n timeoutRef.current = window.setTimeout(() => {\n callback?.(lastState.current);\n setThrottledState(lastState.current);\n timeoutRef.current = -1;\n }, timeout);\n }\n };\n\n updateResizeState();\n callback?.(lastState.current);\n setThrottledState(lastState.current);\n\n window.addEventListener('resize', handleResize);\n\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n }, [callback, timeout]);\n\n return throttledState;\n};\n\nexport default useResizeThrottle;\n","import {\n useEffect,\n useState,\n MutableRefObject,\n createRef,\n useCallback,\n} from 'react';\nimport { useDynamicMediaQueries } from './useMediaQuery';\nimport { useFontsLoaded } from 'utils/useFontsLoaded';\nimport useResizeThrottle from './useResizeThrottle';\nimport { MediaQueryType, mq } from './styles';\n\ninterface ItemsPerRow {\n small?: number;\n medium?: number;\n semilarge?: number;\n large?: number;\n xlarge?: number;\n}\n\ntype Mq = keyof ItemsPerRow;\n\n// ********************\n// useEqualSheetHeight\n// ********************\n\nexport const useEqualSheetHeight = <T extends HTMLElement>(props: {\n listLength: number;\n identifiers: string[];\n responsive?: ItemsPerRow;\n /** Throttle timeout for resize events. Default: 400ms */\n resizeThrottleTimeout?: number;\n customMediaQueries?: { [key in Exclude<Mq, 'small'>]: string };\n}) => {\n const defaultResponsive = {\n small: 1,\n medium: 1,\n semilarge: 2,\n large: 3,\n xlarge: 3,\n ...props.responsive,\n } as Record<MediaQueryType, number>;\n\n const queries = useDynamicMediaQueries(props.customMediaQueries || mq);\n const currentMq = Object.keys(queries).reduce<Mq>(\n (acc, key) => (queries[key] ? key : acc) as Mq,\n 'small'\n );\n const itemsPerRow = defaultResponsive[currentMq];\n\n const [sheetRefs, setSheetRefs] = useState<MutableRefObject<T>[]>([]);\n const fontsLoaded = useFontsLoaded();\n\n const setHeights = useCallback(\n (\n heights: (number | null)[],\n selector: string,\n refs: MutableRefObject<T>[]\n ) => {\n const makeRows = (\n result: Array<number | null>[],\n _: number,\n index: number,\n arr: Array<number | null>\n ) => {\n // make new row after 3 items\n if (index % itemsPerRow === 0) {\n result.push(\n arr.slice(index, index + itemsPerRow) as Array<number>\n );\n }\n return result;\n };\n\n // put item heights in 2-dimensional array to sort them in rows\n const heightsInRows = heights.reduce(makeRows, []);\n\n heightsInRows.forEach((rowHeights, y) => {\n const validHeights = rowHeights.filter(\n (height) => height !== null\n ) as number[];\n\n const highest = validHeights.slice().sort((vA, vB) => {\n if (vA && vB) {\n if (vA > vB) return -1;\n return 1;\n } else return 0;\n })[0];\n\n // set height of all items in row to the highest value\n if (rowHeights.length > 1 && highest) {\n for (let x = 0; x < rowHeights.length; x++) {\n const index = x + y * itemsPerRow;\n const el = refs[index].current.querySelector(selector);\n\n el?.setAttribute('style', `height: ${highest}px`);\n }\n }\n });\n },\n [itemsPerRow]\n );\n\n // Throttle viewport resize event for performance\n const resizeState = useResizeThrottle(\n props.resizeThrottleTimeout !== undefined\n ? props.resizeThrottleTimeout\n : 400\n );\n\n useEffect(() => {\n const resize = (refs: MutableRefObject<T>[]) => () => {\n const identifierSizes = new Map<string, Array<number | null>>();\n\n // create identifier map\n for (let i = 0; i < props.identifiers.length; i++) {\n identifierSizes.set(props.identifiers[i], []);\n }\n\n // set height values\n refs.filter((ref) => ref.current).forEach(({ current }) => {\n // get height for each element\n props.identifiers.forEach((id) => {\n const element = current.querySelector(id);\n const prevHeights = identifierSizes.get(id);\n let height: number | null = null;\n\n if (element) {\n element.removeAttribute('style');\n height = element.getBoundingClientRect().height;\n }\n\n if (prevHeights) {\n identifierSizes.set(id, [...prevHeights, height]);\n }\n });\n });\n\n // set heights for each identifier\n identifierSizes.forEach((value, key) => {\n setHeights(value, key, refs);\n });\n };\n\n const resizeHandler = resize(sheetRefs);\n resizeHandler();\n }, [props.identifiers, resizeState, setHeights, sheetRefs, fontsLoaded]);\n\n const triggerCalculation = useCallback(() => {\n setSheetRefs((prev) =>\n Array(props.listLength)\n .fill(null)\n .map((_, i) => prev[i] || createRef())\n );\n }, [props.listLength]);\n\n useEffect(() => {\n setSheetRefs((prev) =>\n Array(props.listLength)\n .fill(null)\n .map((_, i) => prev[i] || createRef())\n );\n }, [props.listLength]);\n\n return {\n sheetRefs,\n triggerCalculation,\n };\n};\n","export interface Cookie<T extends object> {\n name: string;\n data: T;\n}\n\nexport const setCookie = <T extends object>({\n name,\n data,\n days = -1,\n path = '/',\n}: {\n name: string;\n data: T;\n days?: number;\n path?: string;\n}) => {\n let cookieString = `${name}=`;\n\n try {\n const stringifiedData = JSON.stringify(data);\n cookieString += encodeURIComponent(stringifiedData);\n } catch (err) {\n console.warn('Cannot save data to cookie!');\n }\n\n // specify path\n cookieString += `; path=${path};`;\n\n // check if cookie should have lifetime\n if (days >= 0) {\n const date = new Date();\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n cookieString += ` expires=${date.toUTCString()};`;\n }\n document.cookie = cookieString;\n};\n\nexport const getCookie = <T extends object>(\n name: string\n): Cookie<T> | undefined => {\n let cookie = undefined;\n\n try {\n // get cookie value\n const b = document.cookie.match(\n '(^|;)\\\\s*' + name + '\\\\s*=\\\\s*([^;]+)'\n );\n let cookieValue = b ? b.pop() : '';\n cookieValue = cookieValue ? decodeURIComponent(cookieValue) : '';\n\n if (!cookieValue) return;\n\n cookie = {\n name: name,\n data: JSON.parse(cookieValue) as T,\n } as Cookie<T>;\n } catch (err) {\n console.warn(err);\n }\n\n return cookie;\n};\n\nexport const deleteCookie = (name: string) => {\n setCookie<any>({ name, data: {} });\n};\n","import { useState, useEffect } from 'react';\n\nconst useIE = (initialValue?: boolean) => {\n const [isIE, setIE] = useState(initialValue || false);\n\n useEffect(() => {\n setIE((document.body.style as any).msTouchAction !== undefined);\n }, []);\n return isIE;\n};\n\nexport default useIE;\n","import { useEffect, useRef, useState } from 'react';\n\nexport const useScrollTo = (fallbackScrollDuration: number) => {\n const startTime = useRef<number>(-1);\n const firstPos = useRef<number>(0);\n const [targetPos, setTargetPos] = useState<number | undefined>(undefined);\n\n const outQuad = (n: number) => {\n return n * (2 - n);\n };\n\n useEffect(() => {\n if (targetPos === undefined) return;\n if ('scrollBehavior' in document.documentElement.style) {\n window.scroll({\n top: targetPos,\n left: 0,\n behavior: 'smooth',\n });\n setTargetPos(undefined);\n } else {\n const animate = (timestamp: number) => {\n if (startTime.current === -1) {\n startTime.current = timestamp || new Date().getTime();\n }\n\n const elapsed = timestamp - startTime.current;\n const progress = elapsed / fallbackScrollDuration;\n const easeProgress = +outQuad(progress).toFixed(2);\n\n const newPos =\n targetPos === 0\n ? firstPos.current - firstPos.current * easeProgress\n : firstPos.current + targetPos * easeProgress;\n\n // scroll to new position\n window.scrollTo(0, newPos);\n\n if (\n (targetPos > 0 && newPos >= firstPos.current + targetPos) ||\n (targetPos < 0 && newPos <= firstPos.current + targetPos) ||\n (targetPos === 0 && newPos <= 0)\n ) {\n cancelAnimationFrame(startTime.current);\n startTime.current = -1;\n setTargetPos(undefined);\n } else {\n window.requestAnimationFrame(animate);\n }\n };\n\n cancelAnimationFrame(startTime.current);\n startTime.current = -1;\n firstPos.current =\n window.pageYOffset || document.documentElement.scrollTop;\n window.requestAnimationFrame(animate);\n }\n }, [targetPos, fallbackScrollDuration]);\n\n return setTargetPos;\n};\n","import { useEffect, useState } from 'react';\nimport { isBrowser, useMediaQuery } from './useMediaQuery';\n\n// *****************\n// usePoster\n// *****************\n\ninterface PosterImage {\n small: string;\n medium?: string;\n semilarge?: string;\n large?: string;\n xlarge?: string;\n}\n\nexport const canUseWebP = () => {\n if (!isBrowser) return false;\n\n const elem = document.createElement('canvas');\n\n if (!(elem.getContext && elem.getContext('2d'))) {\n // was able or not to get WebP representation\n return elem.toDataURL('image/webp').indexOf('data:image/webp') == 0;\n }\n\n // very old browser like IE 8, canvas not supported\n return false;\n};\n\nexport type PosterMq = 'small' | 'medium' | 'semilarge' | 'large' | 'xlarge';\n\nexport const usePoster = (\n posterImage: PosterImage & {\n webp?: PosterImage;\n },\n mqs?: PosterMq[]\n) => {\n const [currentImage, setCurrentImage] = useState<string | undefined>();\n\n const workingImage =\n posterImage.webp && canUseWebP() ? posterImage.webp : posterImage;\n const currentMq = useMediaQuery(\n mqs || ['small', 'medium', 'semilarge', 'large', 'xlarge']\n ) as PosterMq | undefined;\n\n useEffect(() => {\n if (\n currentMq &&\n workingImage[currentMq] &&\n workingImage[currentMq] !== currentImage\n ) {\n setCurrentImage(workingImage[currentMq]);\n }\n }, [currentImage, currentMq, workingImage]);\n\n return currentImage;\n};\n","import { useState, useEffect } from 'react';\n\nconst useTouch = () => {\n const [canTouch, setCanTouch] = useState(false);\n\n useEffect(() => {\n setCanTouch(\n 'ontouchstart' in window ||\n navigator.maxTouchPoints > 0 ||\n (navigator as any).msMaxTouchPoints > 0\n );\n }, []);\n return canTouch;\n};\n\nexport default useTouch;\n","import { DependencyList, EffectCallback, useEffect, useRef } from 'react';\n\n/** useEffect function that runs only on update (not on first render) */\nconst useUpdateEffect = (effect: EffectCallback, deps?: DependencyList) => {\n const firstRenderRef = useRef<boolean>(true);\n\n useEffect(() => {\n if (firstRenderRef.current) {\n firstRenderRef.current = false;\n return;\n }\n effect?.();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n};\n\nexport default useUpdateEffect;\n","import { useEffect, useRef } from 'react';\n\nconst useMounted = () => {\n const isMountedRef = useRef<boolean>(false);\n\n useEffect(() => {\n isMountedRef.current = true;\n }, []);\n\n return isMountedRef.current;\n};\n\nexport default useMounted;\n","import { useCallback, useEffect, useRef } from 'react';\n\nconst useTimeout = (callback: () => void, delay: number) => {\n const callbackRef = useRef(callback);\n const timeoutRef = useRef<number>();\n\n useEffect(() => {\n callbackRef.current = callback;\n }, [callback]);\n\n const set = useCallback(() => {\n timeoutRef.current = window.setTimeout(\n () => callbackRef.current?.(),\n delay\n );\n }, [delay]);\n\n const clear = useCallback(() => {\n timeoutRef.current && window.clearTimeout(timeoutRef.current);\n }, []);\n\n useEffect(() => {\n set();\n return clear;\n }, [delay, set, clear]);\n\n const reset = useCallback(() => {\n clear();\n set();\n }, [clear, set]);\n\n return { clear, reset };\n};\n\nexport default useTimeout;\n","import { DependencyList, useEffect } from 'react';\nimport useTimeout from './useTimeout';\n\nconst useDebounce = (\n callback: () => void,\n delay: number,\n deps: DependencyList\n) => {\n const { clear, reset } = useTimeout(callback, delay);\n\n useEffect(reset, [...deps, reset]);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(clear, []);\n\n return {\n clear,\n reset,\n };\n};\n\nexport default useDebounce;\n","import { useEffect, useRef, useState } from 'react';\n\nexport interface ScrollState {\n scrollY: number;\n scrollX: number;\n}\n\nconst useScrollThrottle = (\n timeout = 0,\n callback?: (state: ScrollState) => void\n) => {\n const [throttledState, setThrottledState] =\n useState<ScrollState | null>(null);\n\n const timeoutRef = useRef<number>(-1);\n const lastState = useRef<ScrollState>({\n scrollX: 0,\n scrollY: 0,\n });\n\n const updateScrollState = () => {\n if (typeof window === 'undefined') return;\n\n lastState.current = {\n scrollX: window.scrollX,\n scrollY: window.scrollY,\n };\n };\n\n useEffect(() => {\n if (typeof window === 'undefined') return;\n\n const handleScroll = () => {\n updateScrollState();\n\n if (timeoutRef.current === -1) {\n timeoutRef.current = window.setTimeout(() => {\n callback?.(lastState.current);\n setThrottledState(lastState.current);\n timeoutRef.current = -1;\n }, timeout);\n }\n };\n\n updateScrollState();\n callback?.(lastState.current);\n setThrottledState(lastState.current);\n\n window.addEventListener('scroll', handleScroll);\n\n return () => {\n window.removeEventListener('scroll', handleScroll);\n };\n }, [callback, timeout]);\n\n return throttledState;\n};\n\nexport default useScrollThrottle;\n","import { useCallback, useState } from 'react';\nimport useDebounce from './useDebounce';\n\nconst useLazyInput = (\n callback: (value: string) => void,\n initial: string,\n delay = 600\n) => {\n const [value, setValue] = useState<string>(initial);\n const { clear } = useDebounce(() => callback?.(value), delay, [value]);\n\n const update = useCallback((value: string, withoutDelay = false) => {\n setValue(value);\n if (withoutDelay) {\n clear();\n callback?.(value);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const forceUpdate = useCallback(() => {\n clear();\n callback?.(value);\n }, [callback, clear, value]);\n\n return {\n update,\n value,\n forceUpdate,\n };\n};\n\nexport default useLazyInput;\n","export const clampValue = (value: number, min: number, max?: number) => {\n if (max !== undefined && max !== null) {\n return Math.max(min, Math.min(value, max));\n } else {\n return Math.max(value, min);\n }\n};\n","import { clampValue } from './clamp';\n\n/** Convert hex string to full 6 digit hex */\nconst toFullHex = (hex: string) => {\n if (!hex) return undefined;\n if (hex.length >= 6) return hex;\n\n const chars = hex.split('').map((char) => {\n if (char === '#') return char;\n return char + char;\n });\n return chars.join('');\n};\n\n// converting 6 character hex color code to rgba string\nexport const hexToRgba = (hex: string, alpha = 1) => {\n const fullHex = toFullHex(hex);\n if (!fullHex) return undefined;\n\n const rgb = fullHex.match(/\\w\\w/g)?.map((x) => parseInt(x, 16));\n if (!rgb) return undefined;\n if (!rgb[0] || isNaN(rgb[0])) return undefined;\n if (!rgb[1] || isNaN(rgb[1])) return undefined;\n if (!rgb[2] || isNaN(rgb[2])) return undefined;\n\n return `rgba(${rgb[0]},${rgb[1]},${rgb[2]},${clampValue(alpha, 0, 1)})`;\n};\n","import { NavItem } from 'components/sections/navigation/menu/Menu';\n\n/**\n * Get current navigation item\n * @param items Array of navItems\n * @param includeHidden Include items that are hidden for menu\n * @returns The current navItem\n */\nexport const getCurrentNavItem = (\n items?: NavItem[],\n includeHidden?: boolean\n) => {\n if (!items || items.length === 0) return null;\n\n const findCurrent = (item?: NavItem): NavItem | null => {\n if (!item) return null;\n if (item.isCurrent && (includeHidden || !item.hideFromMenu)) {\n return item;\n }\n if (item.subItems && item.subItems.length > 0) {\n for (let i = 0; i < item.subItems.length; i++) {\n const result = findCurrent(item.subItems[i]);\n if (result) return result;\n }\n }\n return null;\n };\n\n for (let i = 0; i < items.length; i++) {\n const result = findCurrent(items[i]);\n if (result) {\n return {\n current: result,\n root: items[i],\n rootIndex: i,\n };\n }\n }\n return null;\n};\n\n/**\n * Get naviation item path to current navItem\n * @param items Navigation array with navItems\n * @param exludeHrefs navItems with specific hrefs that should be excluded\n * @returns Array of NavItems\n */\nexport const getCurrentNavPath = (\n items?: NavItem[],\n exludeHrefs?: string[]\n) => {\n if (!items || items.length === 0) return [];\n const excludes = exludeHrefs || [];\n\n const isItemValid = (item: NavItem) => {\n return item.link?.href && !excludes.includes(item.link.href);\n };\n\n const getPathToCurrent = (item: NavItem): NavItem[] => {\n if (item.isCurrent && isItemValid(item)) return [item];\n if (!item.subItems) return [];\n\n for (let i = 0; i < item.subItems.length; i++) {\n const subPath = getPathToCurrent(item.subItems[i]);\n if (subPath.length > 0) return [item, ...subPath];\n }\n\n return [];\n };\n\n for (let i = 0; i < items.length; i++) {\n const path = getPathToCurrent(items[i]);\n if (path.length > 0) return [...path];\n }\n\n return [];\n};\n","export const isEmptyArray = <T>(array?: Array<T>) => {\n if (!array) return undefined;\n if (!Array.isArray(array)) return undefined;\n return array.length <= 0;\n};\n\nexport const isValidArray = <T>(\n array?: Array<T>,\n allowEmpty = true\n): array is Array<T> => {\n if (!array) return false;\n if (!Array.isArray(array)) return false;\n return allowEmpty ? true : array.length > 0;\n};\n","import { isValidArray } from './arrays';\n\nexport const concat = (\n values: Array<string | number | undefined>,\n delimeter = ', '\n): string => {\n const parts: string[] = [];\n\n if (!isValidArray(values, false)) {\n return '';\n }\n\n for (const value of values) {\n if (value === undefined || value === null) continue;\n if (typeof value === 'string' && value !== '') {\n parts.push(value);\n continue;\n }\n\n if (typeof value === 'number') {\n parts.push(value.toString());\n continue;\n }\n }\n\n return parts.join(delimeter);\n};\n\nexport const printAnchorTag = (props: {\n href: string;\n label?: string;\n isExternal?: boolean;\n type?: 'mail' | 'phone';\n}) => {\n if (!props?.href) return '';\n let pre = '';\n if (props.type === 'mail') pre = 'mailto:';\n if (props.type === 'phone') pre = 'tel:';\n\n return `<a ${\n props.isExternal ? 'target=\"_blank\" rel=\"noopener noreferrer\" ' : ''\n }href=\"${pre}${props.href}\">${props.label || props.href}</a>`;\n};\n","import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n FeatureGroup,\n LatLng,\n LeafletMouseEvent,\n Map,\n Marker,\n MarkerOptions,\n} from 'leaflet';\n\nexport interface LeafletMapSettings {\n center: [number, number];\n zoom: number;\n minZoom?: number;\n maxZoom?: number;\n touchZoom: boolean;\n scrollWheelZoom: boolean;\n onlyScrollOnFocus: boolean;\n url: string;\n attribution: string;\n markers: Array<LeafletMapMarker>;\n activeMarkerId?: string;\n fitBoundsPadding: [number, number];\n restrictToMarkersArea?: boolean;\n showZoomControls?: boolean;\n zoomControlPosition?: 'bottomleft' | 'bottomright' | 'topleft' | 'topright';\n onMarkerClick?: (markerId: string) => void;\n onActiveMarkerChanged?: (props: { markerId: string }) => void;\n onReady?: () => void;\n onClick?: (ev: LeafletMouseEvent, currentZoom: number) => void;\n}\n\nexport interface LeafletMapMarker {\n id: string;\n position: [number, number];\n isInteractive?: boolean;\n icon?: {\n url: string;\n size: [number, number];\n anchor: [number, number];\n\n sizeActive: [number, number];\n anchorActive: [number, number];\n };\n popup?: {\n text: string;\n };\n}\n\nconst useLeafletMap = (settings: Partial<LeafletMapSettings>) => {\n const [container, setContainer] = useState<HTMLElement | null>(null);\n const [L, setLeaflet] = useState<any>(null);\n const [map, setMap] = useState<Map | null>(null);\n const [markersLayerGroup, setMarkersLayerGroup] =\n useState<FeatureGroup<any> | null>(null);\n const prevMarkerId = useRef<string | null>(null);\n const [isLoaded, setLoaded] = useState<boolean>(false);\n const isRenderedRef = useRef<boolean>(false);\n\n const lastValidCenter = useRef<LatLng | null>(null);\n\n const mapSettings: LeafletMapSettings = useMemo(() => {\n // removing undefined keys\n Object.keys(settings).forEach((key) => {\n if (settings[key] === undefined) {\n delete settings[key];\n }\n });\n\n return {\n center: [0, 0],\n zoom: 2.5,\n touchZoom: true,\n scrollWheelZoom: false,\n showZoomControls: true,\n zoomControlPosition: 'topleft',\n onlyScrollOnFocus: true,\n url: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',\n attribution:\n '&copy; <a href=\"http://osm.org/copyright\">OpenStreetMap</a> contributors',\n markers: [],\n fitBoundsPadding: [20, 20], // 0 = TopLeft, 1 = BottomRight\n ...settings,\n };\n }, [settings]);\n\n useEffect(() => {\n if (!container) return;\n\n const init = async () => {\n if (L || !container || isRenderedRef.current) return;\n isRenderedRef.current = true;\n\n // init leaflet\n const leaflet = await import('leaflet');\n if (!leaflet) return;\n\n // set leaflet state\n setLeaflet(leaflet);\n\n // setup map\n const map = leaflet.map(container, {\n center: mapSettings.center,\n zoom: mapSettings.zoom,\n touchZoom: mapSettings.touchZoom,\n scrollWheelZoom: mapSettings.scrollWheelZoom,\n zoomControl: false,\n minZoom: mapSettings.minZoom,\n maxZoom: mapSettings.maxZoom,\n });\n\n if (mapSettings.showZoomControls) {\n leaflet.control\n .zoom({\n position: mapSettings.zoomControlPosition,\n })\n .addTo(map);\n }\n\n // activate map scrolling on focus\n map.once('focus', () => {\n if (mapSettings.onlyScrollOnFocus) {\n map.scrollWheelZoom.enable();\n }\n });\n\n // deactivate map scrolling on focus is lost\n map.once('blur', () => {\n if (mapSettings.onlyScrollOnFocus) {\n map.scrollWheelZoom.disable();\n }\n });\n\n map.on('click', (ev) => {\n mapSettings.onClick?.(ev as LeafletMouseEvent, map.getZoom());\n });\n\n // set map state\n setMap(map);\n\n // add map layer from map provider\n leaflet\n .tileLayer(mapSettings.url, {\n attribution: mapSettings.attribution,\n })\n .addTo(map);\n\n // setup layer for markers\n const group = new leaflet.FeatureGroup();\n group.addTo(map);\n\n setMarkersLayerGroup(group);\n };\n\n init();\n }, [\n L,\n container,\n mapSettings,\n mapSettings.attribution,\n mapSettings.center,\n mapSettings.onlyScrollOnFocus,\n mapSettings.scrollWheelZoom,\n mapSettings.touchZoom,\n mapSettings.url,\n mapSettings.zoom,\n ]);\n\n useEffect(() => {\n if (!map || !markersLayerGroup) return;\n\n markersLayerGroup.clearLayers();\n mapSettings.markers?.forEach(\n ({ position, icon, id, isInteractive }) => {\n if (!icon?.url || !icon?.size || !position) return;\n const isActive = id === mapSettings.activeMarkerId;\n\n const markerIcon = L.icon({\n iconUrl: icon.url,\n\n iconSize: isActive ? icon.sizeActive : icon.size, // size of the icon\n // shadowSize: [50, 64], // size of the shadow\n iconAnchor: isActive ? icon.anchorActive : icon?.anchor, // point of the icon which will correspond to marker's location\n // shadowAnchor: [4, 62], // the same for the shadow\n // popupAnchor: [0, -16], // point from which the popup should open relative to the iconAnchor\n });\n\n const marker: Marker = L.marker(\n L.latLng(position[0], position[1]),\n {\n icon: markerIcon,\n riseOnHover: true,\n interactive: isInteractive,\n } as MarkerOptions\n ).addTo(map);\n\n if (isInteractive) {\n marker.on('click', () => {\n mapSettings.onMarkerClick?.(id);\n });\n }\n\n // add marker to markers layer\n markersLayerGroup.addLayer(marker);\n\n if (L && map && markersLayerGroup) {\n if (!isLoaded) {\n // on first load\n mapSettings.onReady?.();\n setLoaded(true);\n if (mapSettings.activeMarkerId) {\n prevMarkerId.current = mapSettings.activeMarkerId;\n }\n } else {\n // check if active marker changed\n if (\n mapSettings.activeMarkerId &&\n mapSettings.activeMarkerId !== prevMarkerId?.current\n ) {\n prevMarkerId.current = mapSettings.activeMarkerId;\n\n mapSettings.onActiveMarkerChanged?.({\n markerId: mapSettings.activeMarkerId,\n });\n }\n }\n }\n }\n );\n\n const handleMapMove = () => {\n if (!map) return;\n if (!mapSettings.restrictToMarkersArea) return;\n\n const markersBounds = markersLayerGroup?.getBounds()?.pad(0.3);\n if (!markersBounds || !markersBounds.isValid()) return;\n\n const northEdge = markersBounds.getNorth();\n const eastEdge = markersBounds.getEast();\n const southEdge = markersBounds.getSouth();\n const westEdge = markersBounds.getWest();\n\n const center = map.getCenter();\n let newLat: number | null = null;\n let newLng: number | null = null;\n\n // on latitude overshoot\n if (\n (center.lat < southEdge || center.lat > northEdge) &&\n lastValidCenter.current\n ) {\n newLat = lastValidCenter.current?.lat;\n }\n\n // on longitude overshoot\n if (\n (center.lng < westEdge || center.lng > eastEdge) &&\n lastValidCenter.current\n ) {\n newLng = lastValidCenter.current?.lng;\n }\n\n if (newLng !== null || newLat !== null) {\n if (newLng !== null) center.lng = newLng;\n if (newLat !== null) center.lat = newLat;\n\n map.panTo(center, { animate: false });\n }\n\n lastValidCenter.current = center;\n };\n\n // if set restrict map movement to markers\n if (mapSettings.restrictToMarkersArea) {\n const markersBounds = markersLayerGroup?.getBounds();\n\n if (markersBounds.isValid()) {\n map.on('drag', handleMapMove);\n }\n }\n\n return () => {\n lastValidCenter.current = null;\n map?.off('drag', handleMapMove);\n };\n }, [L, isLoaded, map, mapSettings, mapSettings.markers, markersLayerGroup]);\n\n /**\n * Adjust zoom to show all markers\n */\n const showAllMarkers = useCallback(() => {\n if (map && markersLayerGroup) {\n map.fitBounds(markersLayerGroup.getBounds(), {\n padding: L.point(mapSettings.fitBoundsPadding),\n });\n }\n }, [L, map, mapSettings.fitBoundsPadding, markersLayerGroup]);\n\n /**\n * Pan and zoom to active marker position on map\n * @param zoom\n */\n const flyToActive = useCallback(\n (zoom?: number) => {\n const mapZoom = zoom || mapSettings.zoom;\n const marker = mapSettings.markers?.find(\n (m) => m.id === mapSettings.activeMarkerId\n );\n if (marker) map?.flyTo(marker.position, mapZoom);\n },\n [map, mapSettings.activeMarkerId, mapSettings.markers, mapSettings.zoom]\n );\n\n /**\n * Pan and zoom to marker position on map\n * @param position\n * @param zoom\n */\n const flyToPosition = useCallback(\n (position?: [number, number], zoom?: number) => {\n const mapZoom = zoom || mapSettings.zoom;\n\n if (position) map?.flyTo(position, mapZoom);\n else flyToActive(mapZoom);\n },\n [flyToActive, map, mapSettings.zoom]\n );\n\n /**\n * Pan to marker position on map\n * @param position\n */\n const panToPosition = useCallback(\n (position?: [number, number]) => {\n if (position) map?.panTo(position);\n },\n [map]\n );\n\n /** Recalculate map size */\n const recalculateMapSize = useCallback(() => {\n map?.invalidateSize();\n }, [map]);\n\n const getCurrentZoom = useCallback(() => {\n return map?.getZoom() || mapSettings.zoom;\n }, [map, mapSettings.zoom]);\n\n return {\n setContainer,\n flyToActive,\n flyToPosition,\n panToPosition,\n showAllMarkers,\n recalculateMapSize,\n getCurrentZoom,\n isLoaded,\n };\n};\n\nexport default useLeafletMap;\n","import { useCallback, useEffect, useState } from 'react';\n\nconst isSupported =\n typeof window !== 'undefined' && 'URLSearchParams' in window;\n\nconst getParamsObj = (params?: URLSearchParams) => {\n const obj: Record<string, string> = {};\n\n const paramsObj = Object.fromEntries(\n params || new URLSearchParams(window.location.search)\n );\n\n for (const param in paramsObj) {\n let value = paramsObj[param];\n if (typeof value === 'string') {\n value = decodeURIComponent(value);\n }\n obj[param] = value;\n }\n\n return obj;\n};\n\nconst useParams = () => {\n const [params, setParams] = useState<Record<string, string>>({});\n\n useEffect(() => {\n if (!isSupported) return;\n\n setParams(getParamsObj());\n }, []);\n\n const update = useCallback(\n (key: string, value: string) => {\n if (!isSupported) return;\n\n const newParams = { ...params };\n newParams[key] = value;\n\n const currentParams = new URLSearchParams(window.location.search);\n for (const param in newParams) {\n currentParams.set(param, encodeURIComponent(newParams[param]));\n }\n\n setParams(getParamsObj(currentParams));\n\n window.history.replaceState(\n {},\n '',\n `${location.pathname}?${\n currentParams.toString() + location.hash\n }`\n );\n },\n [params]\n );\n\n return { params, update };\n};\n\nexport default useParams;\n","import { useCallback, useEffect, useRef, useState } from 'react';\n\nconst useGeolocation = (enableHighAccuracy = true, autostart = true) => {\n const [isSupported, setIsSupported] = useState<boolean>();\n const [isEnabled, setIsEnabled] = useState<boolean>();\n const [location, setLocation] = useState<GeolocationPosition>();\n const [error, setError] = useState<GeolocationPositionError>();\n const watchRef = useRef<number | null>();\n\n useEffect(() => {\n setIsSupported('geolocation' in navigator);\n }, []);\n\n const cancel = useCallback(() => {\n setIsEnabled(false);\n if (watchRef.current) {\n navigator.geolocation.clearWatch(watchRef.current);\n }\n }, []);\n\n useEffect(() => {\n if (!autostart || !('geolocation' in navigator)) {\n return;\n }\n\n cancel();\n navigator.geolocation.watchPosition(handleSuccess, handleError, {\n enableHighAccuracy,\n });\n setIsEnabled(true);\n const watch = watchRef.current;\n\n return () => {\n if (watch) {\n setIsEnabled(false);\n navigator.geolocation.clearWatch(watch);\n }\n };\n }, [autostart, cancel, enableHighAccuracy]);\n\n const reset = useCallback(() => {\n return new Promise<GeolocationPosition>((resolve, reject) => {\n cancel();\n setIsEnabled(false);\n navigator.geolocation.watchPosition(\n (position) => {\n handleSuccess(position);\n resolve(position);\n },\n (err) => {\n handleError(err);\n reject(err);\n },\n {\n enableHighAccuracy,\n }\n );\n setIsEnabled(true);\n });\n }, [cancel, enableHighAccuracy]);\n\n const handleSuccess = (position: GeolocationPosition) => {\n setLocation(position);\n };\n\n const handleError = (error: GeolocationPositionError) => {\n setIsEnabled(false);\n console.log(error);\n\n setError(error);\n };\n\n return { isSupported, isEnabled, location, error, reset, cancel };\n};\n\nexport default useGeolocation;\n","import { useEffect, useState } from 'react';\n\nexport const useObserverSupport = (inital?: boolean) => {\n const [observerSupported, setObserverSupport] = useState(inital || false);\n\n useEffect(() => {\n if (\n !('IntersectionObserver' in window) ||\n !('IntersectionObserverEntry' in window) ||\n !('intersectionRatio' in window.IntersectionObserverEntry.prototype)\n ) {\n setObserverSupport(false);\n } else {\n setObserverSupport(true);\n }\n }, []);\n\n return observerSupported;\n};\n","import { concat } from './concat';\n\nconst isSupported =\n typeof window !== 'undefined' && 'URLSearchParams' in window;\n\nexport const getUrlParams = () => {\n const obj: Record<string, string> = {};\n if (!isSupported) return obj;\n\n const paramsObj = Object.fromEntries(\n new URLSearchParams(window.location.search)\n );\n\n for (const param in paramsObj) {\n let value = paramsObj[param];\n if (typeof value === 'string') {\n value = decodeURIComponent(value);\n }\n obj[param] = value;\n }\n\n return obj;\n};\n\nexport const setUrlParam = (key: string, value: string | number) => {\n if (\n !isSupported ||\n (typeof value !== 'string' && typeof value !== 'number')\n ) {\n return;\n }\n\n const params = getUrlParams();\n params[key] = value.toString();\n\n const currentParams = new URLSearchParams(window.location.search);\n for (const param in params) {\n currentParams.set(param, encodeURIComponent(params[param]));\n }\n\n updateUrl(currentParams);\n};\n\nexport const deleteUrlParam = (key: string) => {\n if (!isSupported) return;\n const currentParams = new URLSearchParams(window.location.search);\n currentParams.delete(key);\n\n updateUrl(currentParams);\n};\n\nconst updateUrl = (params: URLSearchParams) => {\n if (!params) return;\n\n const queries = params.toString();\n const url = queries\n ? concat([location.pathname, queries + location.hash], '?')\n : location.pathname + location.hash;\n\n window.history.replaceState({}, '', url);\n};\n","import React, { useEffect, useState, useMemo, useCallback } from 'react';\nimport ReactDOMServer from 'react-dom/server';\n\nimport { Cookie, getCookie, setCookie } from './cookie';\nimport { activateTrackingScripts, updateConsentStatus } from './mutations';\n\nexport interface CookieType {\n label: string;\n isAccepted: boolean;\n isEditable: boolean;\n}\n\nexport interface CookieTypes {\n [key: string]: CookieType;\n}\n\nexport interface CookieConsentData {\n types: Record<string, boolean>;\n updatedAt: number;\n}\n\nexport interface CookieConsentSettings {\n cookieName?: string;\n initialCookieTypes?: CookieTypes;\n lifetime?: number;\n}\n\nexport const selectors = {\n buttons: {\n class: 'cookie-consent-button',\n attribute: 'data-consent-button',\n },\n status: {\n class: 'cookie-consent-status',\n attribute: 'data-consent-status',\n },\n script: (key: string) => `cookie-consent-script-${key}`,\n};\n\nconst useCookieConsent = (\n props: CookieConsentSettings,\n onSubmit?: () => void,\n statusRenderer?: (props: {\n updatedAt: number;\n state: CookieTypes;\n }) => React.ReactElement\n) => {\n const settings: Required<CookieConsentSettings> = useMemo(() => {\n return {\n cookieName: 'cookie-consent-v2',\n lifetime: 365,\n initialCookieTypes: {\n essentials: {\n isEditable: false,\n isAccepted: true,\n label: 'Essential functionalities',\n },\n },\n ...props,\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const [cookieTypes, setCookieTypes] = useState<CookieTypes>(\n settings.initialCookieTypes\n );\n\n const updateStatus = useCallback(() => {\n const cookie = getCookie(\n settings.cookieName\n ) as Cookie<CookieConsentData>;\n\n let statusMsg = '-';\n\n if (cookie && cookie.data) {\n const statusHtml = statusRenderer?.({\n updatedAt: cookie.data.updatedAt,\n state: cookieTypes,\n });\n if (statusHtml) {\n statusMsg = ReactDOMServer.renderToStaticMarkup(statusHtml);\n }\n }\n\n updateConsentStatus(statusMsg, [\n `[${selectors.status.attribute}]`,\n `.${selectors.status.class}`,\n ]);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [settings.cookieName]);\n\n useEffect(() => {\n const cookie = getCookie(\n settings.cookieName\n ) as Cookie<CookieConsentData>;\n\n if (cookie && cookie.data?.types) {\n setCookieTypes((prev) => {\n const cPrev = { ...prev };\n for (const key in cPrev) {\n if (!cookie.data.types[key]) continue;\n cPrev[key].isAccepted = cookie.data.types[key];\n }\n\n handleScriptActivation(cPrev);\n\n return cPrev;\n });\n }\n updateStatus();\n }, [settings, settings.cookieName, updateStatus]);\n\n const mapToCookieData = (types: CookieTypes): Record<string, boolean> => {\n const data = {};\n if (!types) return data;\n\n for (const key in types) {\n data[key] = types[key].isAccepted;\n }\n\n return data;\n };\n\n /** Accept all types of cookies */\n const acceptAll = useCallback(() => {\n console.info('Accept all cookie types');\n\n setCookieTypes((prev) => {\n const types = { ...prev };\n for (const key in types) {\n if (!types[key].isEditable) continue;\n types[key].isAccepted = true;\n }\n\n setCookie<CookieConsentData>({\n name: settings.cookieName,\n data: {\n types: mapToCookieData(types),\n updatedAt: new Date().getTime(),\n },\n days: settings.lifetime,\n });\n\n updateStatus();\n handleScriptActivation(types);\n return types;\n });\n onSubmit?.();\n }, [onSubmit, settings.cookieName, settings.lifetime, updateStatus]);\n\n /** Decline all types of cookies (except required ones) */\n const declineAll = useCallback(() => {\n console.info('Decline all cookie types');\n\n setCookieTypes((prev) => {\n const types = { ...prev };\n for (const key in types) {\n if (!types[key].isEditable) continue;\n types[key].isAccepted = false;\n }\n\n setCookie<CookieConsentData>({\n name: settings.cookieName,\n data: {\n types: mapToCookieData(types),\n updatedAt: new Date().getTime(),\n },\n days: settings.lifetime,\n });\n\n updateStatus();\n handleScriptActivation(types);\n return types;\n });\n onSubmit?.();\n }, [onSubmit, settings.cookieName, settings.lifetime, updateStatus]);\n\n /** Accept selected types of cookies */\n const acceptSelected = useCallback(() => {\n console.info('Accept selected cookie types');\n\n setCookie<CookieConsentData>({\n name: settings.cookieName,\n data: {\n types: mapToCookieData(cookieTypes),\n updatedAt: new Date().getTime(),\n },\n days: settings.lifetime,\n });\n\n updateStatus();\n handleScriptActivation(cookieTypes);\n onSubmit?.();\n }, [\n cookieTypes,\n onSubmit,\n settings.cookieName,\n settings.lifetime,\n updateStatus,\n ]);\n\n const handleScriptActivation = (types: CookieTypes) => {\n if (!types) return;\n\n // activate scripts from cookie types\n const acceptedKeys = Object.keys(types).filter(\n (key) => types[key].isAccepted\n );\n activateTrackingScripts(\n acceptedKeys.map((key) => selectors.script(key))\n );\n };\n\n /** Set or toggle consent status of cookie type */\n const setConsent = (type: keyof CookieTypes, isAccepted?: boolean) => {\n setCookieTypes((prev) => {\n const types = { ...prev };\n if (!types[type] || !types[type].isEditable) return types;\n\n if (isAccepted !== undefined) {\n types[type].isAccepted = isAccepted;\n } else {\n types[type].isAccepted = !types[type].isAccepted;\n }\n\n return types;\n });\n };\n\n const getCookieValue = (): Cookie<CookieConsentData> | undefined => {\n return getCookie(settings.cookieName) as Cookie<CookieConsentData>;\n };\n\n return {\n cookieTypes,\n acceptAll,\n acceptSelected,\n declineAll,\n setConsent,\n getCookieValue,\n };\n};\n\nexport default useCookieConsent;\n","export const isUrlInWhitelist = (\n urlString: string,\n whitelist: string[] = []\n) => {\n let isInWhiteList = false;\n for (let i = 0; i < whitelist.length; i++) {\n if (urlString.indexOf(whitelist[i]) > -1) {\n isInWhiteList = true;\n break;\n }\n }\n return isInWhiteList;\n};\n\nexport const bindConsentButtons = (\n callback: () => void,\n selectors: string[] = []\n) => {\n const allConsentButtons = document.querySelectorAll(selectors.join(', '));\n\n for (let i = 0, len = allConsentButtons.length; i < len; i++) {\n allConsentButtons[i].addEventListener('click', callback);\n }\n};\n\nexport const activateTrackingScripts = (scriptTypeSelectors: string[] = []) => {\n const selectors = scriptTypeSelectors\n .filter((selector) => selector)\n .map((selector) => `script[type='text/${selector}']`)\n .join(', ');\n\n const scriptElements = selectors\n ? document.querySelectorAll(selectors)\n : [];\n\n let i = scriptElements.length;\n const newScriptElements: HTMLScriptElement[] = [];\n while (i--) {\n // create new script element to call it\n const newScriptElement = document.createElement('script');\n newScriptElement.type = 'text/javascript';\n\n if (scriptElements[i].hasAttribute('src')) {\n newScriptElement.src = scriptElements[i].getAttribute('src')!;\n newScriptElement.async = true;\n } else {\n newScriptElement.innerHTML = scriptElements[i].innerHTML;\n }\n\n // add new script tags to list\n newScriptElements.push(newScriptElement);\n\n // delete old helper element\n if (scriptElements[i].parentNode) {\n // eslint-disable-next-line no-unused-expressions\n scriptElements[i].parentNode?.removeChild(scriptElements[i]);\n }\n }\n\n // append new script tags\n i = newScriptElements.length;\n while (i--) {\n // append / activate script\n document.body.appendChild(newScriptElements[i]);\n }\n};\n\nexport const updateConsentStatus = (\n content: string,\n selectors: string[] = []\n) => {\n if (!content) return;\n const statusElements = document.querySelectorAll(selectors.join(', '));\n\n for (let i = 0, len = statusElements.length; i < len; i++) {\n statusElements[i].innerHTML = content;\n }\n};\n","/* eslint-disable react/display-name */\nimport React, { FC } from 'react';\nimport { DefaultTheme, ThemeProvider, useTheme } from 'styled-components';\nimport {\n FontBase,\n baseTheme,\n getColors,\n getFonts,\n getGlobals,\n getTheme,\n} from 'utils/styles';\nimport { RecursivePartial } from './types';\n\nexport type ThemeMods = RecursivePartial<DefaultTheme>;\n\n/**\n * Assigning font base key values to theme. Searches for each font base object key inside target theme object and replacing the values\n * @param target Combined result object\n * @param source FontBase object with properties that should by overritten.\n */\nconst assignFontBase = (\n target: DefaultTheme,\n source?: RecursivePartial<FontBase>\n) => {\n if (!source) return target;\n\n // deep iterate through target and search matching key\n const assign = (target: any, key: string, value: string) => {\n Object.keys(target).forEach((tKey) => {\n // check if target value is an object and no array\n if (\n target[tKey] &&\n typeof target[tKey] === 'object' &&\n !Array.isArray(target[tKey])\n ) {\n target[tKey] = assign(target[tKey], key, value);\n } else if (key === tKey) {\n target[tKey] = value;\n }\n });\n return target;\n };\n\n // search each base key and replace values\n Object.keys(source).forEach((sKey) => {\n if (source[sKey])\n target.fonts.types = assign(target.fonts.types, sKey, source[sKey]);\n });\n return target;\n};\n\n/**\n * Combining Theme objects\n * @param target Result theme object\n * @param source Theme object that should be assigned to target\n */\nexport const assignTo = <T extends ThemeMods | DefaultTheme>(\n target: T,\n source?: ThemeMods\n) => {\n const output = { ...target };\n if (!source) return output as T;\n\n Object.keys(source).forEach((key) => {\n const sourceVal = source[key];\n const targetVal = target[key];\n\n if (\n targetVal &&\n sourceVal &&\n typeof targetVal === 'object' &&\n typeof sourceVal === 'object'\n ) {\n // console.log(key, sourceVal, targetVal);\n if (Array.isArray(sourceVal)) {\n output[key] = [...sourceVal];\n } else {\n output[key] = assignTo(targetVal, sourceVal);\n }\n } else if (sourceVal) {\n output[key] = sourceVal;\n }\n });\n return output as T;\n};\n\nexport const LibThemeProvider: FC<{\n theme?: ThemeMods;\n children?: React.ReactNode;\n}> = ({ theme, children }) => {\n const ctx = useTheme();\n\n if (theme) {\n const newTheme = modifyTheme(ctx, theme);\n\n return <ThemeProvider theme={newTheme}>{children}</ThemeProvider>;\n } else {\n return <React.Fragment>{children}</React.Fragment>;\n }\n};\n\ninterface WithLibThemeProps {\n theme?: ThemeMods;\n}\n\nexport const modifyTheme = (\n activeTheme?: DefaultTheme,\n modifications?: ThemeMods\n) => {\n // asigning base font to all settings on top of base theme. If base fonts are undefined return base theme\n const combinedBaseTheme = assignFontBase(\n baseTheme,\n activeTheme?.fonts?.base\n );\n\n // adding base theme to active theme context if possible\n const combinedTheme = activeTheme\n ? assignTo(combinedBaseTheme, activeTheme)\n : combinedBaseTheme;\n\n // adding additional base font styles and other settings to theme\n let newTheme = combinedTheme;\n if (modifications) {\n newTheme = assignFontBase(combinedTheme, modifications?.fonts?.base);\n newTheme = assignTo(newTheme, modifications);\n }\n\n return newTheme;\n};\n\nexport const useLibTheme = () => {\n const theme = useTheme();\n\n return {\n colors: getColors(theme),\n fonts: getFonts(theme),\n globals: getGlobals(theme),\n theme: getTheme(theme),\n };\n};\n\nexport const withLibTheme =\n <P extends Record<string, unknown>>(\n Component: React.ComponentType<P>\n ): React.FC<\n P & {\n /** Component specific theme properties that overrides global theme settings */\n theme?: ThemeMods;\n }\n > =>\n ({ theme, ...props }: WithLibThemeProps) => {\n const ctx = useTheme();\n const newTheme = modifyTheme(ctx, theme);\n\n return (\n <ThemeProvider theme={newTheme}>\n <Component {...(props as P)} />\n </ThemeProvider>\n );\n };\n","import React, { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport { concat } from 'utils/concat';\nimport { mq, spacings, withRange, getGlobals as global } from 'utils/styles';\n\nexport type BgMode = 'full' | 'larger-left' | 'larger-right' | 'inverted';\n\nconst getBackground = (bgColor: string, mode?: BgMode) => {\n let bgValue = undefined;\n\n switch (mode) {\n case 'full':\n bgValue = bgColor;\n break;\n\n case 'inverted':\n bgValue = bgColor;\n break;\n\n case 'larger-left':\n bgValue = `linear-gradient(to left, transparent 40%, ${bgColor} 40%)`;\n break;\n\n case 'larger-right':\n bgValue = `linear-gradient(to right, transparent 40%, ${bgColor} 40%)`;\n break;\n\n default:\n bgValue = bgColor;\n break;\n }\n return bgValue;\n};\n\nconst View = styled.section<{\n as?: SectionType;\n bgIdent: string;\n bgColor: string;\n isStackable?: boolean;\n addSeperation?: boolean;\n}>`\n position: relative;\n overflow: ${({ as }) => (as === 'div' ? 'visible' : 'hidden')};\n\n // section paddings\n ${({ addSeperation, isStackable, bgIdent, theme }) => {\n const padding = global(theme).sections.seperation.padding.default;\n const paddingStacked =\n global(theme).sections.seperation.padding.stackable;\n const forcePadding = global(theme).sections.seperation.forcePadding;\n\n if (addSeperation) {\n return css`\n ${withRange(padding, 'padding-top')}\n ${withRange(\n isStackable ? paddingStacked : padding,\n 'padding-bottom'\n )}\n\n section[data-stack-ident='true'] + & {\n ${withRange(paddingStacked, 'padding-top')};\n }\n\n section[data-bg-ident='${bgIdent}']\n + &[data-bg-ident='${bgIdent}'] {\n padding-top: ${forcePadding ? undefined : '0 !important'};\n\n @media ${mq.xxlarge} {\n padding-top: ${forcePadding\n ? undefined\n : '0 !important'};\n }\n }\n `;\n } else return '';\n }}\n\n // section margins\n ${({ addSeperation, isStackable, bgIdent, bgColor, theme }) => {\n const margin = global(theme).sections.seperation.margin.default;\n const marginStacked =\n global(theme).sections.seperation.margin.stackable;\n\n const bgColorPart = bgColor ? `__${bgColor}` : '';\n\n if (addSeperation) {\n return css`\n *:not([data-bg-ident='light'])\n + &[data-bg-ident='larger-left${bgColorPart}'] {\n ${withRange(margin, 'margin-top')};\n }\n\n *:not([data-bg-ident='light'])\n + &[data-bg-ident='larger-right${bgColorPart}'] {\n ${withRange(margin, 'margin-top')};\n }\n\n section[data-bg-ident='larger-left${bgColorPart}']\n + &:not([data-bg-ident='light']) {\n ${withRange(\n isStackable ? marginStacked : margin,\n 'margin-top'\n )};\n }\n\n section[data-bg-ident='larger-right${bgColorPart}']\n + &:not([data-bg-ident='light']) {\n ${withRange(\n isStackable ? marginStacked : margin,\n 'margin-top'\n )};\n }\n\n section[data-bg-ident='${bgIdent}']\n + &[data-bg-ident='${bgIdent}'] {\n margin-top: 0 !important;\n\n @media ${mq.xxlarge} {\n margin-top: 0 !important;\n }\n }\n `;\n } else return '';\n }}\n`;\n\nconst Back = styled.div<{\n bgColor?: string;\n bgMode?: BgMode;\n clampSolidBg?: boolean;\n}>`\n display: ${({ bgColor }) => (bgColor ? 'block' : 'none')};\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n max-width: ${({ bgMode, clampSolidBg }) => {\n if (bgMode !== 'larger-left' && bgMode !== 'larger-right') {\n return clampSolidBg ? `${spacings.wrapperLarge}px` : undefined;\n } else {\n return `${spacings.wrapper}px`;\n }\n }};\n background: ${({ bgColor }) => bgColor || undefined};\n margin: 0 auto;\n z-index: -1;\n\n @media ${mq.semilarge} {\n background: ${({ bgColor, bgMode }) =>\n bgColor && bgMode ? getBackground(bgColor, bgMode) : undefined};\n }\n\n @media ${mq.xlarge} {\n :before {\n content: ${({ bgMode }) =>\n bgMode === 'larger-left' ? `\"\"` : undefined};\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: ${(spacings.wrapperLarge - spacings.wrapper) / 2}px;\n background-color: ${({ bgColor }) => bgColor && bgColor};\n transform: translateX(-100%);\n }\n :after {\n content: ${({ bgMode }) =>\n bgMode === 'larger-right' ? `\"\"` : undefined};\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n width: ${(spacings.wrapperLarge - spacings.wrapper) / 2}px;\n background-color: ${({ bgColor }) => bgColor && bgColor};\n transform: translateX(100%);\n }\n }\n`;\n\nexport type SectionType = 'header' | 'footer' | 'div';\n\nexport interface SectionProps {\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Render as specific HTML tag type */\n renderAs?: SectionType;\n\n /** Background color */\n bgColor?: string;\n\n /** Background mode */\n bgMode?: BgMode;\n\n /** Clamp solid backgrounds (full, inverted) to large wrapper width */\n clampSolidBg?: boolean;\n\n /** Enable section seperation spacing */\n addSeperation?: boolean;\n\n /** Allow stack feature for reduced section spacing to following section */\n isStackable?: boolean;\n}\n\nconst Section = forwardRef<\n HTMLElement,\n SectionProps & {\n className?: string;\n children?: React.ReactNode;\n }\n>(\n (\n {\n anchorId,\n renderAs,\n bgColor,\n bgMode,\n clampSolidBg = true,\n addSeperation = false,\n isStackable = false,\n className,\n children,\n },\n ref\n ) => {\n switch (bgMode) {\n case 'larger-left':\n bgMode = 'larger-left';\n break;\n case 'larger-right':\n bgMode = 'larger-right';\n break;\n case 'inverted':\n bgMode = 'inverted';\n break;\n case 'full':\n bgMode = 'full';\n break;\n default:\n bgMode = undefined;\n }\n\n const noPadIdent = addSeperation ? '' : 'nopad';\n const ident =\n bgColor && bgMode\n ? concat([`${bgMode}__${bgColor}`, noPadIdent], '--')\n : 'light';\n\n return (\n <View\n ref={ref}\n id={anchorId || undefined}\n as={renderAs}\n data-bg-ident={ident}\n bgIdent={ident}\n bgColor={bgColor || ''}\n addSeperation={\n !renderAs || (renderAs && renderAs !== 'div')\n ? addSeperation\n : false\n }\n isStackable={isStackable}\n data-stack-ident={isStackable ? 'true' : 'false'}\n className={className}\n >\n {bgColor && (\n <Back\n bgColor={bgColor}\n bgMode={bgMode}\n clampSolidBg={clampSolidBg}\n />\n )}\n {children}\n </View>\n );\n }\n);\n\nSection.displayName = 'Section';\n\nexport default Section;\n\nexport const mapToBgMode = (\n mode?: 'full' | 'splitted' | 'inverted',\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\n default:\n return undefined;\n }\n};\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nimport { spacings } from 'utils/styles';\n\nexport type ClampWidthType = 'small' | 'normal' | 'large';\n\nexport const wrapperWhitespace = spacings.nudge * 2;\n\nconst View = styled.div<{\n clampWidth?: ClampWidthType;\n addWhitespace?: boolean;\n}>`\n position: relative;\n width: 100%;\n max-width: ${({ clampWidth }) => {\n switch (clampWidth) {\n case 'large':\n return `${spacings.wrapperLarge}px`;\n\n case 'small':\n return `${spacings.wrapperSmall}px`;\n\n default:\n case 'normal':\n return `${spacings.wrapper}px`;\n }\n }};\n margin-left: auto;\n margin-right: auto;\n padding: 0\n ${({ addWhitespace }) => (addWhitespace ? wrapperWhitespace : 0)}px;\n`;\n\nconst Wrapper: React.FC<{\n addWhitespace?: boolean;\n clampWidth?: ClampWidthType;\n className?: string;\n children?: React.ReactNode;\n}> = ({\n addWhitespace = false,\n clampWidth = 'normal',\n className,\n children,\n}) => {\n return (\n <View\n className={className}\n addWhitespace={addWhitespace}\n clampWidth={clampWidth}\n >\n {children}\n </View>\n );\n};\n\nexport default Wrapper;\n","import * as React from 'react';\nimport styled, { css } from 'styled-components';\nimport { useLibTheme } from 'utils/LibThemeProvider';\nimport {\n styleTextColor,\n FontType,\n getFonts as font,\n mq,\n withRange,\n FontProps,\n} from 'utils/styles';\n\ntype HeadingType = Extract<\n FontType,\n 'heading-1' | 'heading-2' | 'heading-3' | 'heading-4' | 'super'\n>;\n\nconst base = css<{\n hyphens?: boolean;\n hasShadow?: boolean;\n textColor?: string;\n textGradient?: string;\n}>`\n display: block;\n margin: 0;\n padding: 0;\n ${({ textColor, textGradient }) => styleTextColor(textColor, textGradient)}\n\n hyphens: auto;\n /* overflow-wrap: break-word; */\n width: 100%;\n\n ${(props: { hyphens?: boolean }) =>\n !props.hyphens &&\n css`\n @media ${mq.large} {\n hyphens: none;\n }\n `}\n\n text-shadow: ${({ hasShadow }) =>\n hasShadow && '1px 2px 8px rgba(0, 0, 0, 0.25)'};\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n margin: 0;\n padding: 0;\n border: 0;\n outline: 0;\n font-weight: inherit;\n font-style: inherit;\n font-size: 100%;\n font-family: inherit;\n vertical-align: baseline;\n }\n`;\n\nexport const headingStyle = (type: HeadingType) => css`\n ${base};\n font-family: ${({ theme }) => (font(theme)[type] as FontProps).family};\n font-weight: ${({ theme }) => (font(theme)[type] as FontProps).weight};\n font-style: ${({ theme }) => (font(theme)[type] as FontProps).style};\n ${({ theme }) =>\n withRange((font(theme)[type] as FontProps).size, 'font-size')}\n line-height: ${({ theme }) => (font(theme)[type] as FontProps).lineHeight};\n letter-spacing: ${({ theme }) =>\n (font(theme)[type] as FontProps).letterSpacing};\n text-transform: ${({ theme }) =>\n (font(theme)[type] as FontProps).textTransform};\n text-decoration: ${({ theme }) =>\n (font(theme)[type] as FontProps).textDecoration};\n`;\n\nconst View = styled.h1<{\n hyphens?: boolean;\n hasShadow?: boolean;\n textColor?: string;\n textGradient?: string;\n headingType: HeadingType;\n}>`\n ${({ headingType }) => headingStyle(headingType)}\n`;\n\nexport type HeadlineTag =\n | 'h1'\n | 'h2'\n | 'h3'\n | 'h4'\n | 'h5'\n | 'h6'\n | 'span'\n | 'div'\n | 'blockquote';\n\nconst Heading: React.FC<{\n renderAs?: HeadlineTag;\n isInverted?: boolean;\n size?: HeadingType;\n textColor?: string;\n textGradient?: string;\n hyphens?: boolean;\n hasShadow?: boolean;\n innerHTML?: string;\n\n className?: string;\n children?: React.ReactNode;\n}> = ({\n renderAs,\n isInverted,\n className,\n size = 'heading-2',\n textColor,\n textGradient,\n hyphens = false,\n hasShadow = false,\n innerHTML,\n children,\n ...rest\n}) => {\n const { fonts } = useLibTheme();\n let tag: HeadlineTag = 'h2';\n\n switch (size) {\n default:\n case 'heading-1':\n tag = 'h1';\n break;\n case 'heading-2':\n tag = 'h2';\n break;\n case 'heading-3':\n tag = 'h3';\n break;\n case 'heading-4':\n tag = 'h4';\n break;\n case 'super':\n tag = 'div';\n break;\n }\n\n // get font settings from global context\n const fontSettings = fonts?.[size] as FontProps;\n\n return (\n <View\n as={renderAs || tag}\n headingType={size}\n textColor={\n textColor ||\n (isInverted ? fontSettings.colorInverted : fontSettings.color)\n }\n textGradient={\n textGradient ||\n (!textColor\n ? isInverted\n ? fontSettings.colorGradientInverted\n : fontSettings.colorGradient\n : undefined)\n }\n hyphens={hyphens}\n hasShadow={hasShadow}\n dangerouslySetInnerHTML={\n innerHTML && !children ? { __html: innerHTML } : undefined\n }\n className={className}\n {...rest}\n >\n {children}\n </View>\n );\n};\n\nHeading.defaultProps = {\n renderAs: 'h2',\n size: 'heading-2',\n};\n\nexport default Heading;\n","import * as React from 'react';\nimport styled, { css } from 'styled-components';\nimport { clampValue } from 'utils/clamp';\nimport { useLibTheme } from 'utils/LibThemeProvider';\nimport {\n FontType,\n mq,\n spacings,\n withRange,\n FontOptionType,\n getFonts as font,\n getGlobals as global,\n styleTextColor,\n FontOptions,\n LinkUrlIcon,\n LinkFontIcon,\n} from 'utils/styles';\nimport { headingStyle } from './Heading';\n\nexport type CopyType = Extract<FontType, 'copy-b' | 'copy-i' | 'copy'>;\n\nexport const copyStyle = (\n type: CopyType,\n size: keyof FontOptions = 'medium'\n) => css`\n font-family: ${({ theme }) => font(theme)[type][size].family};\n font-weight: ${({ theme }) => font(theme)[type][size].weight};\n font-style: ${({ theme }) => font(theme)[type][size].style};\n ${({ theme }) => withRange(font(theme)[type][size].size, 'font-size')}\n line-height: ${({ theme }) => font(theme)[type][size].lineHeight};\n letter-spacing: ${({ theme }) => font(theme)[type][size].letterSpacing};\n text-transform: ${({ theme }) => font(theme)[type][size].textTransform};\n text-decoration: ${({ theme }) => font(theme)[type][size].textDecoration};\n`;\n\nconst base = css<{\n textColor?: string;\n textGradient?: string;\n columns?: boolean;\n isInverted?: boolean;\n copyType: CopyType;\n size: FontOptionType;\n allowLinkIcons?: boolean;\n}>`\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n margin: 0;\n padding: 0;\n border: 0;\n outline: 0;\n font-weight: inherit;\n font-style: inherit;\n font-size: 100%;\n font-family: inherit;\n vertical-align: baseline;\n }\n\n hyphens: auto;\n ${({ textColor, textGradient }) => styleTextColor(textColor, textGradient)}\n\n /* @media ${mq.medium} {\n hyphens: none;\n } */\n\n a {\n color: ${({ theme, isInverted }) =>\n isInverted\n ? font(theme).link.colorInverted\n : font(theme).link.color};\n text-transform: ${({ theme }) => font(theme).link.textTransform};\n text-decoration: ${({ theme }) => font(theme).link.textDecoration};\n\n transition: color 0.2s ease-in-out;\n outline: none;\n\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n color: ${({ theme, isInverted }) =>\n isInverted\n ? font(theme).link.colorHoverInverted\n : font(theme).link.colorHover};\n }\n }\n\n &:focus {\n outline: 1px dashed\n ${({ theme, isInverted }) =>\n isInverted\n ? font(theme).link.colorInverted\n : font(theme).link.color};\n outline-offset: 1px;\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n }\n }\n\n & > p {\n margin-right: 0;\n margin-left: 0;\n padding: 0;\n }\n\n ${({ columns }) =>\n columns &&\n css`\n columns: 350px 2;\n column-gap: ${spacings.spacer}px;\n\n li {\n break-inside: avoid;\n }\n\n blockquote {\n break-inside: avoid;\n }\n `};\n\n h2 {\n ${headingStyle('heading-2')}\n }\n\n h3 {\n ${headingStyle('heading-3')}\n }\n\n h4 {\n ${headingStyle('heading-4')}\n }\n\n h5 {\n ${headingStyle('super')}\n }\n\n h2,\n h3,\n h4,\n h5 {\n margin-top: ${spacings.nudge * 3}px;\n margin-bottom: ${spacings.nudge * 3}px;\n }\n\n h2 {\n margin-bottom: ${spacings.spacer}px;\n }\n\n *:not(h2, h3, h4, h5) + h2,\n *:not(h2, h3, h4, h5) + h3,\n *:not(h2, h3, h4, h5) + h4,\n *:not(h2, h3, h4, h5) + h5 {\n margin-top: ${spacings.nudge * 5}px;\n }\n\n *:is(h3, h4, h5) + h2 {\n margin-top: -${spacings.nudge * 1.5}px;\n }\n\n p,\n blockquote,\n ol,\n ul {\n margin-top: ${spacings.nudge * 3}px;\n margin-bottom: ${spacings.nudge * 3}px;\n }\n\n ol,\n ul {\n padding-left: ${spacings.nudge * 3}px;\n }\n\n li {\n & > * {\n vertical-align: top;\n }\n }\n\n ul ul li {\n list-style-type: disc;\n }\n\n ol ol li {\n list-style-type: lower-latin;\n }\n\n ol ol ol li {\n list-style-type: lower-roman;\n }\n\n // classes for richtext\n a {\n display: inline-block;\n }\n\n a[href] + br + a[href] {\n margin-top: ${spacings.nudge * 2}px;\n }\n\n /** add icons to anchor tags with matching href value */\n ${({ theme, isInverted, copyType, size, allowLinkIcons }) => {\n if (!allowLinkIcons) return '';\n return global(theme).icons.linkIcons.map((item) => {\n const iconChar = parseInt((item as LinkFontIcon).iconChar);\n const iconFont = (item as LinkFontIcon).iconFont;\n const iconUrl = (item as LinkUrlIcon).iconUrl?.(isInverted);\n const iconScale = clampValue(\n item.scale?.({ type: copyType, size }) || 1,\n 0\n );\n const patterns = item.patterns;\n const isFontIcon = !!iconChar && !!iconFont;\n const isValidIconChar = iconChar && !isNaN(iconChar) ? true : false;\n const vAlign = item.vAlign || (isFontIcon ? 'text-top' : 'top');\n\n const externalFilter = item.isExternal ? '[target=\"_blank\"]' : '';\n\n const selectors =\n patterns\n .filter((p) => p)\n .map((p) => `a[href*='${p}']${externalFilter}`)\n .join(', ') || `a${externalFilter}`;\n const pseudoSelectors =\n patterns\n .filter((p) => p)\n .map((p) => `a[href*='${p}']${externalFilter}:after`)\n .join(', ') || `a${externalFilter}:after`;\n\n let content = '';\n if (iconChar || iconUrl) {\n content = isValidIconChar\n ? `\"${String.fromCharCode(iconChar)}\"`\n : `url(\"${iconUrl}\")`;\n }\n\n return selectors && pseudoSelectors\n ? css`\n ${selectors} {\n display: inline-block;\n position: relative;\n }\n\n ${pseudoSelectors} {\n content: ${content || undefined};\n\n display: inline-block;\n font-family: ${iconFont || 'inherit'} !important;\n font-size: ${isFontIcon && `${iconScale}em`};\n font-style: normal;\n font-weight: normal !important;\n font-variant: normal;\n text-transform: none;\n text-decoration: none;\n vertical-align: ${vAlign};\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n\n transform: ${!iconFont && iconUrl\n ? `scale(${iconScale})`\n : undefined};\n\n max-height: ${!isFontIcon && '1em'};\n margin-left: 0.3em;\n margin-right: 0.1em;\n }\n `\n : '';\n });\n }}\n\n /** DOM element with icon and/or label */\n .icon-label {\n display: inline-flex;\n align-items: center;\n margin: 0;\n ${copyStyle('copy', 'medium')}\n vertical-align: middle;\n\n & > a:after {\n content: none;\n }\n\n & > * + * {\n margin-left: ${spacings.nudge * 2}px;\n }\n\n svg {\n max-width: 30px;\n fill: currentColor;\n }\n }\n\n .icon-label--big {\n ${copyStyle('copy', 'big')}\n }\n\n .icon-label--list {\n display: flex;\n align-items: center;\n margin: 0;\n padding: 0;\n }\n\n .icon-label--list + .icon-label--list {\n margin-top: ${spacings.nudge * 3}px;\n }\n\n *:first-child {\n margin-top: 0;\n }\n\n *:last-child {\n margin-bottom: 0;\n }\n`;\n\nconst View = styled.div<{\n copyType: CopyType;\n size: FontOptionType;\n textColor?: string;\n textGradient?: string;\n isInverted?: boolean;\n columns?: boolean;\n allowLinkIcons?: boolean;\n}>`\n ${base}\n ${({ copyType, size }) => copyStyle(copyType, size)}\n`;\n\nexport type CopyTag =\n | 'label'\n | 'span'\n | 'div'\n | 'legend'\n | 'th'\n | 'td'\n | 'li'\n | 'p'\n | 'caption'\n | 'figcaption';\n\nconst Copy: React.FC<{\n renderAs?: CopyTag;\n isInverted?: boolean;\n textColor?: string;\n textGradient?: string;\n type?: CopyType;\n size?: FontOptionType;\n columns?: boolean;\n innerHTML?: string;\n allowLinkIcons?: boolean;\n onClick?: (ev: React.SyntheticEvent<HTMLElement>) => void;\n className?: string;\n children?: React.ReactNode;\n}> = ({\n renderAs,\n isInverted,\n type = 'copy',\n size = 'medium',\n textColor,\n textGradient,\n columns = false,\n innerHTML,\n allowLinkIcons = true,\n onClick,\n className,\n children,\n ...rest\n}) => {\n const { fonts } = useLibTheme();\n const fontSettings = fonts?.[type]?.[size];\n\n return (\n <View\n as={renderAs}\n copyType={type}\n size={size}\n textColor={\n textColor ||\n (isInverted ? fontSettings.colorInverted : fontSettings.color)\n }\n textGradient={\n textGradient ||\n (!textColor\n ? isInverted\n ? fontSettings.colorGradientInverted\n : fontSettings.colorGradient\n : undefined)\n }\n isInverted={isInverted}\n columns={columns}\n allowLinkIcons={allowLinkIcons}\n dangerouslySetInnerHTML={\n innerHTML && !children ? { __html: innerHTML } : undefined\n }\n onClick={onClick}\n className={className}\n {...rest}\n >\n {children}\n </View>\n );\n};\n\nCopy.defaultProps = { type: 'copy', size: 'medium' };\n\nexport default Copy;\n","export const distinct = <T>(value: T, index: number, array: T[]) => {\n return array.indexOf(value) === index;\n};\n","import * as React from 'react';\nimport styled, { css } from 'styled-components';\nimport { clampValue } from 'utils/clamp';\nimport { spacings, mq } from 'utils/styles';\n\nexport interface ColPropsSettings {\n /** Normalisierte Werte zwischen 0 und 1: z.B. 12 von 28 Spalten (12 / 28) */\n span?: number;\n /** Normalisierte Werte zwischen -1 und 1: z.B. -12 von 28 Spalten (-12 / 28) */\n move?: number;\n /** Vertical alignment of column content */\n valign?: VerticalAlign;\n /** Text alignment of column content */\n textAlign?: TextAlign;\n}\n\ntype VerticalAlign = 'top' | 'center' | 'bottom';\ntype HorizontalAlign = 'left' | 'center' | 'right';\ntype TextAlign = 'left' | 'center' | 'right';\n\ninterface ColProps extends ColPropsSettings {\n medium?: ColPropsSettings;\n semilarge?: ColPropsSettings;\n large?: ColPropsSettings;\n xlarge?: ColPropsSettings;\n /** force column to the right */\n toRight?: boolean;\n /** force column to the left */\n toLeft?: boolean;\n}\n\nexport const gridSettings = {\n cols: 12,\n gutter: spacings.spacer,\n};\n\n/** Get width of grid cols incl. gutter (relative to container element) */\nexport const getGridWidth = (props?: {\n cols?: number;\n gutter?: number;\n gridWidth?: string;\n}) => {\n const columns = props?.cols || gridSettings.cols;\n\n const width = props?.gridWidth || '100%';\n const gridGutter =\n props?.gutter !== undefined ? props.gutter : gridSettings.gutter;\n const gridCols = gridSettings.cols;\n\n return css`\n calc(((${width} - ${\n (gridCols - 1) * gridGutter\n }px) / ${gridCols}) * ${columns} + ${(columns - 1) * gridGutter}px)\n `;\n};\n\nconst validateValue = (\n value: number | undefined,\n min: number,\n max?: number\n) => {\n if (value === undefined || value === null) return value;\n return value !== clampValue(value, min, max) ? undefined : value;\n};\n\nconst getWidth = (props: ColProps) => {\n const span = validateValue(props.span, 0, 1);\n const mediumSpan = validateValue(props.medium?.span, 0, 1);\n const semilargeSpan = validateValue(props.semilarge?.span, 0, 1);\n const largeSpan = validateValue(props.large?.span, 0, 1);\n const xlargeSpan = validateValue(props.xlarge?.span, 0, 1);\n\n return css`\n width: ${(span || 1) * 100}%;\n\n ${mediumSpan &&\n css`\n @media ${mq.medium} {\n width: ${(mediumSpan || 1) * 100}%;\n }\n `}\n\n ${semilargeSpan &&\n css`\n @media ${mq.semilarge} {\n width: ${(semilargeSpan || 1) * 100}%;\n }\n `}\n\n ${largeSpan &&\n css`\n @media ${mq.large} {\n width: ${(largeSpan || 1) * 100}%;\n }\n `}\n\n ${xlargeSpan &&\n css`\n @media ${mq.xlarge} {\n width: ${(xlargeSpan || 1) * 100}%;\n }\n `}\n `;\n};\n\nconst getLeftRight = (props: ColProps) => {\n const mediumMove = props?.medium?.move;\n const semilargeMove = props?.semilarge?.move;\n const largeMove = props?.large?.move;\n const xlargeMove = props?.xlarge?.move;\n\n return css`\n left: ${props?.move && props?.move > 0\n ? props?.move * 100 + '%'\n : 'auto'};\n right: ${props?.move && props?.move < 0\n ? props?.move * -100 + '%'\n : 'auto'};\n\n ${mediumMove !== undefined &&\n css`\n @media ${mq.medium} {\n left: ${mediumMove && mediumMove > 0\n ? mediumMove * 100 + '%'\n : 'auto'};\n right: ${mediumMove && mediumMove < 0\n ? mediumMove * -100 + '%'\n : 'auto'};\n }\n `}\n\n ${semilargeMove !== undefined &&\n css`\n @media ${mq.semilarge} {\n left: ${semilargeMove && semilargeMove > 0\n ? semilargeMove * 100 + '%'\n : 'auto'};\n right: ${semilargeMove && semilargeMove < 0\n ? semilargeMove * -100 + '%'\n : 'auto'};\n }\n `}\n\n ${largeMove !== undefined &&\n css`\n @media ${mq.large} {\n left: ${largeMove && largeMove > 0\n ? largeMove * 100 + '%'\n : 'auto'};\n right: ${largeMove && largeMove < 0\n ? largeMove * -100 + '%'\n : 'auto'};\n }\n `}\n\n ${xlargeMove !== undefined &&\n css`\n @media ${mq.xlarge} {\n left: ${xlargeMove && xlargeMove > 0\n ? xlargeMove * 100 + '%'\n : 'auto'};\n right: ${xlargeMove && xlargeMove < 0\n ? xlargeMove * -100 + '%'\n : 'auto'};\n }\n `}\n `;\n};\n\nconst getGutter = (mode: 'grid' | 'col') => (props: GridProps) => {\n const gutter = validateValue(props.gutter, 0) || 0;\n const mediumGutter = validateValue(props?.medium?.gutter, 0);\n const semilargeGutter = validateValue(props?.semilarge?.gutter, 0);\n const largeGutter = validateValue(props?.large?.gutter, 0);\n const xlargeGutter = validateValue(props?.xlarge?.gutter, 0);\n\n const propertyTop = mode === 'grid' ? 'margin-top: -' : 'padding-top: ';\n const propertyLeft = mode === 'grid' ? 'margin-left: -' : 'padding-left: ';\n\n return css`\n ${propertyTop}${gutter}px;\n ${propertyLeft}${gutter}px;\n\n ${mediumGutter !== undefined &&\n css`\n @media ${mq.medium} {\n ${propertyTop}${mediumGutter}px;\n ${propertyLeft}${mediumGutter}px;\n }\n `}\n\n ${semilargeGutter !== undefined &&\n css`\n @media ${mq.semilarge} {\n ${propertyTop}${semilargeGutter}px;\n ${propertyLeft}${semilargeGutter}px;\n }\n `}\n \n ${largeGutter !== undefined &&\n css`\n @media ${mq.large} {\n ${propertyTop}${largeGutter}px;\n ${propertyLeft}${largeGutter}px;\n }\n `}\n\n ${xlargeGutter !== undefined &&\n css`\n @media ${mq.xlarge} {\n ${propertyTop}${xlargeGutter}px;\n ${propertyLeft}${xlargeGutter}px;\n }\n `}\n `;\n};\n\nconst getTextAlign = (props: ColProps) => {\n const mediumTextAlign = props?.medium?.textAlign;\n const semilargeTextAlign = props?.semilarge?.textAlign;\n const largeTextAlign = props?.large?.textAlign;\n const xlargeTextAlign = props?.xlarge?.textAlign;\n\n return css`\n text-align: ${props?.textAlign || undefined};\n\n ${mediumTextAlign !== undefined &&\n css`\n @media ${mq.medium} {\n text-align: ${mediumTextAlign};\n }\n `}\n\n ${semilargeTextAlign !== undefined &&\n css`\n @media ${mq.semilarge} {\n text-align: ${semilargeTextAlign};\n }\n `}\n\n ${largeTextAlign !== undefined &&\n css`\n @media ${mq.large} {\n text-align: ${largeTextAlign};\n }\n `}\n\n ${xlargeTextAlign !== undefined &&\n css`\n @media ${mq.xlarge} {\n text-align: ${xlargeTextAlign};\n }\n `}\n `;\n};\n\nconst mapVerticalAlign = (alignMode?: VerticalAlign) => {\n switch (alignMode) {\n case 'top':\n return 'flex-start';\n case 'center':\n return 'center';\n case 'bottom':\n return 'flex-end';\n default:\n return undefined;\n }\n};\n\nconst getVerticalAlign =\n (selfAlign?: boolean) => (props: ColProps & GridProps) => {\n const vAlign = mapVerticalAlign(props.valign);\n const mediumAlign = mapVerticalAlign(props?.medium?.valign);\n const semilargelAlign = mapVerticalAlign(props?.semilarge?.valign);\n const largeAlign = mapVerticalAlign(props?.large?.valign);\n const xlargeAlign = mapVerticalAlign(props?.xlarge?.valign);\n\n const property = selfAlign ? 'align-self: ' : 'align-items: ';\n\n return css`\n ${property}${vAlign || undefined};\n\n ${mediumAlign !== undefined &&\n css`\n @media ${mq.medium} {\n ${property}${mediumAlign};\n }\n `}\n\n ${semilargelAlign !== undefined &&\n css`\n @media ${mq.semilarge} {\n ${property}${semilargelAlign};\n }\n `}\n\n ${largeAlign !== undefined &&\n css`\n @media ${mq.large} {\n ${property}${largeAlign};\n }\n `}\n\n ${xlargeAlign !== undefined &&\n css`\n @media ${mq.xlarge} {\n ${property}${xlargeAlign};\n }\n `}\n `;\n };\n\nconst mapHorizontalAlign = (alignMode?: HorizontalAlign) => {\n switch (alignMode) {\n case 'left':\n return 'flex-start';\n case 'center':\n return 'center';\n case 'right':\n return 'flex-end';\n default:\n return undefined;\n }\n};\n\nconst getHorinzontalAlign = (props: GridProps) => {\n const hAlign = mapHorizontalAlign(props.halign);\n const mediumAlign = mapHorizontalAlign(props?.medium?.halign);\n const semilargelAlign = mapHorizontalAlign(props?.semilarge?.halign);\n const largeAlign = mapHorizontalAlign(props?.large?.halign);\n const xlargeAlign = mapHorizontalAlign(props?.xlarge?.halign);\n\n return css`\n justify-content: ${hAlign || undefined};\n\n ${mediumAlign !== undefined &&\n css`\n @media ${mq.medium} {\n justify-content: ${mediumAlign};\n }\n `}\n\n ${semilargelAlign !== undefined &&\n css`\n @media ${mq.semilarge} {\n justify-content: ${semilargelAlign};\n }\n `}\n\n ${largeAlign !== undefined &&\n css`\n @media ${mq.large} {\n justify-content: ${largeAlign};\n }\n `}\n\n ${xlargeAlign !== undefined &&\n css`\n @media ${mq.xlarge} {\n justify-content: ${xlargeAlign};\n }\n `}\n `;\n};\n\nconst StyledCol = styled.div<GridProps & ColProps>`\n ${getWidth};\n ${getLeftRight};\n ${getGutter('col')}\n display: inline-grid;\n grid-template-columns: 100%;\n position: relative;\n\n ${getTextAlign}\n ${getVerticalAlign(true)}\n ${({ toRight }) =>\n toRight &&\n css`\n margin-left: auto;\n `}\n ${({ toLeft }) =>\n toLeft &&\n css`\n margin-right: auto;\n `}\n`;\n\nconst Col: React.FC<ColProps & { children?: React.ReactNode }> = (props) => {\n return <React.Fragment>{props?.children}</React.Fragment>;\n};\n\ninterface GridPropsSettings {\n gutter?: number;\n valign?: VerticalAlign;\n halign?: HorizontalAlign;\n}\n\ninterface GridProps extends GridPropsSettings {\n medium?: GridPropsSettings;\n semilarge?: GridPropsSettings;\n large?: GridPropsSettings;\n xlarge?: GridPropsSettings;\n}\n\nconst StyledGrid = styled.div<GridProps>`\n ${getGutter('grid')}\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n\n ${getVerticalAlign()}\n ${getHorinzontalAlign}\n`;\n\nconst mapGutterToCol = (gutter?: number, colSettings?: any) => {\n if (gutter === undefined) return colSettings;\n if (colSettings) {\n return {\n ...colSettings,\n gutter,\n };\n } else {\n return {\n gutter,\n };\n }\n};\n\nconst Grid: React.FC<GridProps & { children?: React.ReactNode }> = ({\n gutter,\n valign,\n children,\n halign,\n medium,\n semilarge,\n large,\n xlarge,\n}) => {\n return (\n <StyledGrid\n gutter={gutter}\n valign={valign}\n halign={halign}\n medium={medium}\n semilarge={semilarge}\n large={large}\n xlarge={xlarge}\n >\n {React.Children.map(children, (comp: any) => {\n return comp ? (\n <StyledCol\n {...comp?.props}\n gutter={gutter}\n medium={mapGutterToCol(\n medium?.gutter,\n comp?.props?.medium\n )}\n semilarge={mapGutterToCol(\n semilarge?.gutter,\n comp?.props?.semilarge\n )}\n large={mapGutterToCol(\n large?.gutter,\n comp?.props?.large\n )}\n xlarge={mapGutterToCol(\n xlarge?.gutter,\n comp?.props?.xlarge\n )}\n />\n ) : undefined;\n })}\n </StyledGrid>\n );\n};\n\nGrid.defaultProps = {\n gutter: gridSettings.gutter,\n};\n\nexport default {\n Row: Grid,\n Col,\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","/* eslint-disable react/jsx-no-target-blank */\nimport React, { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { getFonts as font } from 'utils/styles';\n\nexport interface LinkProps {\n isExternal?: boolean;\n href?: string;\n}\n\nexport const linkStyles = (isInverted?: boolean) => css`\n color: ${({ theme }) =>\n isInverted ? font(theme).link.colorInverted : font(theme).link.color};\n text-transform: ${({ theme }) => font(theme).link.textTransform};\n text-decoration: ${({ theme }) => font(theme).link.textDecoration};\n\n transition: color 0.2s ease-in-out;\n\n outline: none;\n\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n color: ${({ theme }) =>\n isInverted\n ? font(theme).link.colorHoverInverted\n : font(theme).link.colorHover};\n }\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n }\n\n &:focus {\n outline: 1px dashed\n ${({ theme }) =>\n isInverted\n ? font(theme).link.colorInverted\n : font(theme).link.color};\n outline-offset: 1px;\n }\n`;\n\nconst View = styled.a<{ isInverted?: boolean }>`\n ${({ isInverted }) => linkStyles(isInverted)};\n`;\n\nconst Link = forwardRef<\n HTMLAnchorElement,\n LinkProps & {\n ariaLabel?: string;\n tabIndex?: number;\n dataSheet?: string;\n isInverted?: boolean;\n onClick?: (ev?: React.SyntheticEvent<HTMLAnchorElement>) => void;\n className?: string;\n children?: React.ReactNode;\n }\n>(\n (\n {\n isInverted = false,\n isExternal = false,\n onClick,\n href,\n ariaLabel,\n tabIndex,\n dataSheet,\n children,\n className,\n },\n ref\n ) => {\n return (\n <View\n ref={ref}\n href={href}\n target={isExternal ? '_blank' : undefined}\n rel={isExternal ? 'noopener noreferrer' : undefined}\n isInverted={isInverted}\n aria-label={ariaLabel}\n tabIndex={tabIndex}\n data-sheet={dataSheet}\n onClick={onClick}\n className={className}\n >\n {children}\n </View>\n );\n }\n);\n\nLink.displayName = 'Link';\n\nexport default Link;\n","interface DateReplacementHolder {\n [key: string]: () => string;\n}\n\nexport default class StatusFormatter {\n private timestamp: number;\n private input: string;\n private dateFormat: string;\n private timeFormat: string;\n\n private localeKey: string;\n private date: Date;\n\n constructor(\n timestamp: number,\n input: string,\n dateFormat: string,\n timeFormat: string,\n localeKey?: string\n ) {\n this.timestamp = timestamp;\n this.input = input;\n this.dateFormat = dateFormat;\n this.timeFormat = timeFormat;\n\n this.localeKey = localeKey ? localeKey : 'de';\n this.date = new Date(this.timestamp);\n }\n\n private dateReplacements: DateReplacementHolder = {\n dddd: () => {\n return weekDays[this.localeKey].long[this.date.getDay()];\n },\n DDDD: () => {\n return weekDays[this.localeKey].long[this.date.getDay()];\n },\n ddd: () => {\n return weekDays[this.localeKey].short[this.date.getDay()];\n },\n DDD: () => {\n return weekDays[this.localeKey].short[this.date.getDay()];\n },\n dd: () => {\n return this.getDay();\n },\n DD: () => {\n return this.getDay();\n },\n MMMM: () => {\n return monthNames[this.localeKey].long[this.date.getMonth()];\n },\n mmmm: () => {\n return monthNames[this.localeKey].long[this.date.getMonth()];\n },\n MMM: () => {\n return monthNames[this.localeKey].short[this.date.getMonth()];\n },\n mmm: () => {\n return monthNames[this.localeKey].short[this.date.getMonth()];\n },\n mm: () => {\n return this.getMonth();\n },\n MM: () => {\n return this.getMonth();\n },\n yyyy: () => {\n return this.getYear();\n },\n YYYY: () => {\n return this.getYear();\n },\n yy: () => {\n return this.getYear().substr(-2);\n },\n YY: () => {\n return this.getYear().substr(-2);\n },\n };\n\n private timeReplacements: DateReplacementHolder = {\n hh: () => {\n return this.getHours();\n },\n HH: () => {\n return this.getHours();\n },\n hs: () => {\n return this.getHours12h();\n },\n HS: () => {\n return this.getHours12h();\n },\n mm: () => {\n return this.getMinutes();\n },\n MM: () => {\n return this.getMinutes();\n },\n ss: () => {\n return this.getSeconds();\n },\n SS: () => {\n return this.getSeconds();\n },\n ap: () => {\n const hours = this.date.getHours();\n return hours >= 12 ? 'pm' : 'am';\n },\n AP: () => {\n const hours = this.date.getHours();\n return hours >= 12 ? 'PM' : 'AM';\n },\n };\n\n public setDate(timestamp: number) {\n this.date = new Date(timestamp);\n }\n\n public setLocale(localeKey: string) {\n this.localeKey = localeKey;\n }\n\n public getFormattedStatus() {\n const placeholders: {\n [key: string]: any;\n } = {\n '<DATE>': this.getFormattedDate(),\n '<TIME>': this.getFormattedTime(),\n };\n\n const formattedInput = this.input.replace(/<\\w+>/g, (foundString) => {\n return placeholders[foundString] || foundString;\n });\n return formattedInput;\n }\n\n public getFormattedDate() {\n // replace placeholders with values from dateReplacements object\n const dataKeys = Object.keys(this.dateReplacements);\n let formattedDate = this.dateFormat;\n for (let i = 0; i < dataKeys.length; i++) {\n formattedDate = formattedDate.replace(\n new RegExp(dataKeys[i], 'g'),\n (foundString) => {\n return this.dateReplacements[foundString].call(this);\n }\n );\n }\n return formattedDate;\n }\n\n public getFormattedTime() {\n // replace placeholders with values from timeReplacements object\n const dataKeys = Object.keys(this.timeReplacements);\n let formattedTime = this.timeFormat;\n for (let i = 0; i < dataKeys.length; i++) {\n formattedTime = formattedTime.replace(\n new RegExp(dataKeys[i], 'g'),\n (foundString) => {\n return this.timeReplacements[foundString].call(this);\n }\n );\n }\n return formattedTime;\n }\n\n public areOnSameDay(first: Date, second: Date) {\n return (\n first.getFullYear() === second.getFullYear() &&\n first.getMonth() === second.getMonth() &&\n first.getDate() === second.getDate()\n );\n }\n\n /**\n * Get formatted string of timespan from current date + duration in seconds\n * @param duration Duration in seconds. Added to current date\n * @returns\n */\n public getFormattedTimespan(\n format = '',\n duration?: number,\n seperator = ' - '\n ) {\n const startTime = this.getFormattedTime();\n let endTime = '';\n\n if (duration === undefined) return '';\n\n // create endDate\n if (duration > 0) {\n const endDate = new Date(this.date);\n endDate.setSeconds(this.date.getSeconds() + duration);\n\n const endTimeFormatter = new StatusFormatter(\n endDate.getTime(),\n this.input,\n this.dateFormat,\n this.timeFormat,\n this.localeKey\n );\n\n endTime = endTimeFormatter.getFormattedTime();\n }\n\n // concatenate timespan string\n const placeholders: {\n [key: string]: any;\n } = {\n '<START>': startTime,\n '<END>': endTime,\n '<SEP>': seperator,\n };\n\n const formattedTimespan = format.replace(/<\\w+>/g, (foundString) => {\n if (foundString === '<SEP>' && !(startTime && endTime)) return '';\n if (foundString === '<END>' && !endTime) return '';\n\n return placeholders[foundString] || foundString;\n });\n\n return formattedTimespan;\n }\n\n private getDoubleDigitString(value: number) {\n return value < 10 ? '0' + value.toString() : value.toString();\n }\n\n private getDay() {\n return this.getDoubleDigitString(this.date.getDate());\n }\n\n private getMonth() {\n return this.getDoubleDigitString(this.date.getMonth() + 1);\n }\n\n private getYear() {\n return this.date.getFullYear().toString();\n }\n\n private getHours() {\n return this.getDoubleDigitString(this.date.getHours());\n }\n\n private getHours12h() {\n let hours = this.date.getHours();\n hours = hours % 12;\n hours = hours === 0 ? 12 : hours;\n return this.getDoubleDigitString(hours);\n }\n\n private getMinutes() {\n return this.getDoubleDigitString(this.date.getMinutes());\n }\n\n private getSeconds() {\n return this.getDoubleDigitString(this.date.getSeconds());\n }\n}\n\ninterface WeekDays {\n [key: string]: {\n long: string[];\n short: string[];\n };\n}\n\ninterface MonthNames {\n [key: string]: {\n long: string[];\n short: string[];\n };\n}\n\nconst weekDays: WeekDays = {\n de: {\n long: [\n 'Sonntag',\n 'Montag',\n 'Dienstag',\n 'Mittwoch',\n 'Donnerstag',\n 'Freitag',\n 'Samstag',\n ],\n short: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],\n },\n en: {\n long: [\n 'Sunday',\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday',\n ],\n short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n },\n};\n\nconst monthNames: MonthNames = {\n de: {\n long: [\n 'Januar',\n 'Februar',\n 'März',\n 'April',\n 'Mai',\n 'Juni',\n 'Juli',\n 'August',\n 'September',\n 'Oktober',\n 'November',\n 'Dezember',\n ],\n short: [\n 'Jan.',\n 'Febr.',\n 'März',\n 'Apr.',\n 'Mai',\n 'Juni',\n 'Juli',\n 'Aug.',\n 'Sept.',\n 'Okt.',\n 'Nov.',\n 'Dez',\n ],\n },\n en: {\n long: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ],\n short: [\n 'Jan.',\n 'Feb.',\n 'Mar.',\n 'Apr.',\n 'May',\n 'June',\n 'July',\n 'Aug.',\n 'Sept.',\n 'Oct.',\n 'Nov.',\n 'Dec.',\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 React, { FC } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport Heading, { HeadlineTag } from 'components/typography/Heading';\nimport { FontType, spacings } from 'utils/styles';\nimport { useLibTheme } from 'utils/LibThemeProvider';\n\nconst View = styled.div<{ isCentered?: boolean }>`\n display: block;\n text-align: ${({ isCentered }) => (isCentered ? 'center' : 'left')};\n margin: ${({ isCentered }) => isCentered && '0 auto'};\n\n & > * + * {\n margin-top: ${spacings.nudge * 2}px;\n }\n`;\n\nconst SuperTitle = styled(Heading)`\n display: block;\n\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\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\nconst MainTitle = styled(Heading)<{ maxLines?: number }>`\n display: block;\n\n ${({ maxLines }) =>\n maxLines &&\n maxLines > 0 &&\n css`\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: ${maxLines}; /* number of lines to show */\n line-clamp: ${maxLines};\n -webkit-box-orient: vertical;\n `}\n`;\n\nexport type TitleSize = Extract<FontType, 'heading-1' | 'heading-2'>;\n\nconst Title: FC<{\n /**\n * Text color mode mostly background dependent.\n * The value onImage is used if the title is placed on an underlying image\n * */\n colorMode?: 'default' | 'inverted' | 'onImage';\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 /** Style type of main title */\n titleSize?: TitleSize;\n\n /** Clamp lines of text to specific number */\n maxLines?: number;\n\n /** Center texts */\n isCentered?: boolean;\n\n /** Enable titel text hypens */\n titleHyphens?: boolean;\n\n className?: string;\n}> = ({\n colorMode = 'default',\n superTitle,\n superTitleAs,\n title,\n titleAs,\n titleSize = 'heading-2',\n maxLines,\n isCentered = false,\n titleHyphens,\n className,\n}) => {\n const { colors } = useLibTheme();\n\n return (\n <View isCentered={isCentered} className={className}>\n {superTitle && (\n <SuperTitle\n renderAs={superTitleAs || 'div'}\n size=\"super\"\n textColor={\n colorMode === 'onImage'\n ? colors.text.inverted\n : undefined\n }\n isInverted={colorMode === 'inverted'}\n innerHTML={superTitle}\n />\n )}\n {title && (\n <MainTitle\n renderAs={titleAs || 'h2'}\n size={titleSize === 'heading-1' ? 'heading-1' : 'heading-2'}\n hyphens={titleHyphens}\n textColor={\n colorMode === 'onImage'\n ? colors.text.inverted\n : undefined\n }\n isInverted={colorMode === 'inverted'}\n innerHTML={title}\n maxLines={maxLines}\n />\n )}\n </View>\n );\n};\n\nexport default Title;\n","import React, { FC } from 'react';\nimport styled from 'styled-components';\n\nimport { mq, spacings } from 'utils/styles';\n\nconst View = styled.div<{ isCovered?: boolean }>`\n display: block;\n\n @media ${mq.medium} {\n display: ${({ isCovered }) => (isCovered ? 'block' : 'inline-block')};\n }\n`;\n\nconst Content = styled.div<{\n isMirrored?: boolean;\n isCovered?: boolean;\n}>`\n display: flex;\n flex-wrap: wrap;\n flex-direction: ${({ isMirrored }) =>\n isMirrored ? 'column-reverse' : 'column'};\n\n margin-top: -${spacings.nudge * 2}px;\n margin-left: -${spacings.spacer}px;\n\n &&& > * {\n /* flex: 1 1 ${({ isCovered }) => (isCovered ? '100%' : '0px')}; */\n margin-top: ${spacings.nudge * 2}px;\n margin-left: ${spacings.spacer}px;\n\n /* min-width: ${({ isCovered }) => isCovered && '0px'}; */\n }\n\n @media ${mq.medium} {\n display: ${({ isCovered }) => (isCovered ? 'flex' : 'inline-flex')};\n flex-direction: ${({ isMirrored }) =>\n isMirrored ? 'row-reverse' : 'row'};\n align-items: stretch;\n width: auto;\n }\n`;\n\nconst TertiaryWrapper = styled.div`\n align-self: flex-start;\n\n @media ${mq.medium} {\n align-self: center;\n }\n`;\n\nexport type ActionMode = 'wrap' | 'cover';\n\nconst Actions: FC<{\n /** Behaviour of content wrapping. If set to cover the action container always tries to fill full width */\n mode?: ActionMode;\n /** Switch order of primary and secondary action */\n isMirrored?: boolean;\n /** React node of primary action */\n primary?: React.ReactNode;\n /** React node of secondary action */\n secondary?: React.ReactNode;\n /** React node of tertiary action */\n tertiary?: React.ReactNode;\n className?: string;\n}> = ({\n mode = 'wrap',\n isMirrored = false,\n primary,\n secondary,\n tertiary,\n className,\n}) => {\n return (\n <View isCovered={mode === 'cover'} className={className}>\n <Content isCovered={mode === 'cover'} isMirrored={isMirrored}>\n {primary && primary}\n {secondary && secondary}\n {tertiary && <TertiaryWrapper>{tertiary}</TertiaryWrapper>}\n </Content>\n </View>\n );\n};\n\nexport default Actions;\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 Copy from 'components/typography/Copy';\nimport * as React from 'react';\nimport { useEffect, useRef, useState } from 'react';\nimport styled, { css } from 'styled-components';\nimport { useLibTheme } from 'utils/LibThemeProvider';\nimport {\n mq,\n getColors as color,\n getGlobals as global,\n spacings,\n} from 'utils/styles';\n\nexport interface ImageAspectRatios {\n small: { w: number; h: number };\n medium?: { w: number; h: number };\n semilarge?: { w: number; h: number };\n large?: { w: number; h: number };\n xlarge?: { w: number; h: number };\n}\n\nexport interface ImageProps {\n /** Alternative text if image cannot be loaded */\n alt?: string;\n\n /** Image URL for small breakpoint */\n small: string;\n /** Image URL for medium breakpoint */\n medium?: string;\n /** Image URL for semilarge breakpoint */\n semilarge?: string;\n /** Image URL for large breakpoint */\n large?: string;\n /** Image URL for xlarge breakpoint */\n xlarge?: string;\n\n /** Cover full width of parent container */\n coverSpace?: boolean;\n\n /**\n * Image ratios for each breakpoint to avoid layout shifting.\n * Only works if coverSpace = true!\n * */\n ratios?: ImageAspectRatios;\n\n /** Show image placeholder background */\n showPlaceholder?: boolean;\n\n /** Image copyright text (richtext) */\n copyright?: string;\n}\n\nconst getAspectRatio = (width?: number, height?: number) => {\n if (!width || !height) return undefined;\n if (isNaN(width) || isNaN(height)) return undefined;\n\n return width / height;\n};\n\nconst isValid = (ratio?: { w?: number; h?: number }) => {\n return ratio && ratio?.w && ratio?.h ? true : false;\n};\n\nconst aspectFallback = (ratio?: { w?: number; h?: number }) => css`\n @supports not (aspect-ratio: auto) {\n height: ${isValid(ratio) && 0};\n padding-top: ${isValid(ratio) &&\n `calc(100% / ${getAspectRatio(ratio?.w, ratio?.h)})`};\n }\n`;\n\nconst AspectContainer = styled.div<{\n ratios?: ImageAspectRatios;\n coverSpace?: boolean;\n allowEdgeRadius?: boolean;\n}>`\n display: inline-block;\n position: relative;\n border-radius: ${({ theme, allowEdgeRadius }) =>\n allowEdgeRadius && global(theme).sections.edgeRadius};\n overflow: hidden;\n\n aspect-ratio: ${({ ratios }) =>\n getAspectRatio(ratios?.small?.w, ratios?.small?.h)};\n\n width: ${({ ratios, coverSpace }) =>\n !coverSpace && ratios?.small?.w ? `${ratios?.small?.w}px` : ''};\n\n max-width: 100%;\n\n object-position: center;\n\n img {\n width: 100%;\n }\n\n ${({ coverSpace }) =>\n coverSpace &&\n css`\n width: 100%;\n\n img {\n object-fit: cover;\n }\n `}\n\n // fallback if browsers do not support aspect-ratio\n ${({ ratios, coverSpace }) => coverSpace && aspectFallback(ratios?.small)}\n\n @media ${mq.medium} {\n aspect-ratio: ${({ ratios }) =>\n getAspectRatio(ratios?.medium?.w, ratios?.medium?.h)};\n\n // fallback if browsers do not support aspect-ratio. (Only works with width = 100%)\n ${({ ratios, coverSpace }) =>\n coverSpace && aspectFallback(ratios?.medium)}\n }\n\n @media ${mq.semilarge} {\n aspect-ratio: ${({ ratios }) =>\n getAspectRatio(ratios?.semilarge?.w, ratios?.semilarge?.h)};\n\n // fallback if browsers do not support aspect-ratio (Only works with width = 100%)\n ${({ ratios, coverSpace }) =>\n coverSpace && aspectFallback(ratios?.semilarge)}\n }\n\n @media ${mq.large} {\n aspect-ratio: ${({ ratios }) =>\n getAspectRatio(ratios?.large?.w, ratios?.large?.h)};\n\n // fallback if browsers do not support aspect-ratio (Only works with width = 100%)\n ${({ ratios, coverSpace }) =>\n coverSpace && aspectFallback(ratios?.large)}\n }\n\n @media ${mq.xlarge} {\n aspect-ratio: ${({ ratios }) =>\n getAspectRatio(ratios?.xlarge?.w, ratios?.xlarge?.h)};\n\n // fallback if browsers do not support aspect-ratio (Only works with width = 100%)\n ${({ ratios, coverSpace }) =>\n coverSpace && aspectFallback(ratios?.xlarge)}\n }\n\n ${({ ratios, coverSpace }) =>\n ratios &&\n css`\n img {\n height: 100%;\n width: 100%;\n object-fit: ${coverSpace ? 'cover' : 'contain'};\n\n @supports not (aspect-ratio: auto) {\n position: ${coverSpace && 'absolute'};\n top: 0;\n left: 0;\n right: 0;\n }\n }\n `}\n`;\n\nconst Img = styled.img<{ isInverted?: boolean; showPlaceholder?: boolean }>`\n display: block;\n color: ${({ theme, isInverted }) =>\n isInverted ? color(theme).text.inverted : color(theme).text.default};\n\n &[data-img-loaded='false'] {\n background: ${({ theme, isInverted, showPlaceholder }) =>\n showPlaceholder\n ? isInverted\n ? global(theme).sections.imagePlaceholderBg.inverted\n : global(theme).sections.imagePlaceholderBg.default\n : undefined};\n }\n`;\n\nconst Copyright = styled(Copy)`\n display: inline-block;\n position: absolute;\n max-height: 100%;\n bottom: 0;\n right: 0;\n\n padding: ${spacings.nudge * 2}px ${spacings.nudge}px;\n\n pointer-events: none;\n\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n -ms-writing-mode: tb-rl;\n writing-mode: vertical-rl;\n text-orientation: sideways-right;\n transform: rotate(180deg);\n`;\n\nconst Image: React.FC<\n {\n className?: string;\n\n /** Click handler */\n onClick?: () => void;\n\n /** Show inverted image placeholder background */\n isInverted?: boolean;\n\n /** Allow edge radius defined by theme settings */\n allowEdgeRadius?: boolean;\n } & ImageProps\n> = ({\n className,\n small,\n medium,\n semilarge,\n large,\n xlarge,\n alt,\n ratios,\n coverSpace,\n onClick,\n isInverted,\n showPlaceholder = true,\n allowEdgeRadius,\n copyright,\n}) => {\n const { colors } = useLibTheme();\n const imgRef = useRef<HTMLImageElement>(null);\n const [isLoaded, setIsLoaded] = useState<boolean>(false);\n\n useEffect(() => {\n if (!imgRef.current) return;\n const ref = imgRef.current;\n\n const handleLoad = () => {\n setIsLoaded(true);\n };\n\n const handleError = () => {\n setIsLoaded(false);\n };\n\n if (!ref.complete) {\n ref.addEventListener('load', handleLoad);\n ref.addEventListener('error', handleError);\n } else {\n ref.removeEventListener('load', handleLoad);\n ref.removeEventListener('error', handleError);\n handleLoad();\n }\n\n return () => {\n ref.removeEventListener('load', handleLoad);\n ref.removeEventListener('error', handleError);\n };\n }, []);\n\n return (\n <AspectContainer\n ratios={ratios}\n coverSpace={coverSpace}\n allowEdgeRadius={allowEdgeRadius}\n className={className}\n >\n <picture onClick={onClick}>\n {xlarge && <source srcSet={xlarge} media={mq.xlarge} />}\n {large && <source srcSet={large} media={mq.large} />}\n {semilarge && (\n <source srcSet={semilarge} media={mq.semilarge} />\n )}\n {medium && <source srcSet={medium} media={mq.medium} />}\n <Img\n ref={imgRef}\n data-img-loaded={isLoaded}\n showPlaceholder={showPlaceholder}\n isInverted={isInverted}\n srcSet={small}\n alt={alt || ''}\n loading=\"lazy\"\n />\n </picture>\n {copyright && (\n <Copyright\n size=\"small\"\n textColor={colors.text.inverted}\n innerHTML={`&copy; ${copyright}`}\n renderAs=\"span\"\n />\n )}\n </AspectContainer>\n );\n};\n\nexport default Image;\n","import React from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { spacings, mq, FontOptions } from 'utils/styles';\n\nimport Title, { TitleSize } from 'components/blocks/Title';\nimport Copy, { CopyType } from 'components/typography/Copy';\nimport Actions from 'components/blocks/Actions';\nimport { HeadlineTag } from 'components/typography/Heading';\nimport Image, { ImageProps } from './Image';\n\nconst View = styled.div<{ isCentered?: boolean }>`\n display: block;\n margin: 0;\n padding: 0;\n width: 100%;\n text-align: ${({ isCentered }) => isCentered && 'center'};\n\n @media ${mq.semilarge} {\n display: flex;\n flex-direction: row;\n\n & > * + * {\n margin-left: ${spacings.spacer}px;\n }\n }\n`;\n\nconst Content = styled.div`\n & > * + * {\n margin-top: ${spacings.spacer}px;\n }\n\n max-width: 100%;\n\n @media ${mq.semilarge} {\n flex: 1 0 66.66%;\n }\n`;\n\nconst StyledTitle = styled(Title)<{ clamp?: boolean }>`\n max-width: ${({ clamp }) => clamp && '880px'};\n`;\n\nconst ContentBlock = styled(Copy)<{\n isCentered?: boolean;\n clamp?: boolean;\n maxLines?: number;\n}>`\n display: block;\n max-width: ${({ clamp }) => clamp && '880px'};\n margin-left: ${({ isCentered }) => isCentered && 'auto'};\n margin-right: ${({ isCentered }) => isCentered && 'auto'};\n\n ${({ maxLines }) =>\n maxLines &&\n maxLines > 0 &&\n css`\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: ${maxLines}; /* number of lines to show */\n line-clamp: ${maxLines};\n -webkit-box-orient: vertical;\n `}\n\n & + & {\n margin-top: ${spacings.nudge * 3}px;\n }\n`;\n\nconst StyledActions = styled(Actions)<{ isCentered?: boolean }>`\n @media ${mq.medium} {\n display: block;\n text-align: ${({ isCentered }) => isCentered && 'center'};\n }\n`;\n\nconst MobileImageContainer = styled.div<{\n isCentered?: boolean;\n coverSpace?: boolean;\n}>`\n width: 100%;\n height: 100%;\n max-width: 400px;\n max-height: ${({ coverSpace }) => coverSpace && '400px'};\n text-align: center;\n\n margin: 0 auto;\n margin-top: ${spacings.spacer}px;\n\n @media ${mq.semilarge} {\n display: ${({ isCentered }) => (isCentered ? 'block' : 'none')};\n }\n`;\n\nconst DesktopImageContainer = styled.div`\n display: none;\n width: 100%;\n\n @media ${mq.semilarge} {\n display: block;\n\n max-width: 400px;\n max-width: calc(100% - 66.66% - ${spacings.spacer}px);\n }\n`;\n\nexport interface IntroActionProps {\n isInverted?: boolean;\n isTextCentered?: boolean;\n}\n\nconst IntroBlock: React.FC<{\n /** Define rendered HTML DOM tag of intro container */\n renderAs?: 'div' | 'figcaption';\n\n /** Color presets for text and blocks. onImage has always a white text color */\n colorMode?: 'default' | 'inverted' | 'onImage';\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 size */\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 underneath the title (richtext) */\n abstract?: string;\n\n /** Main intro text (richtext) */\n text?: string;\n\n /** Intro image. coverSpace defaults to true */\n image?: ImageProps;\n\n /** Copy type of intro text (limits richtext capabilites on textType == copy-b or copy-i) */\n textType?: CopyType;\n\n /** Copy size of intro text */\n textSize?: keyof FontOptions;\n\n /** Function to inject custom primary button */\n primaryAction?: (props: IntroActionProps) => React.ReactNode;\n\n /** Function to inject custom secondary button */\n secondaryAction?: (props: IntroActionProps) => React.ReactNode;\n\n /** Center text and actions */\n isCentered?: boolean;\n\n /** Clamp title to max width of 880px */\n clampTitle?: boolean;\n\n /** Limit lines of title. Cut of with elipsis */\n maxTitleLines?: number;\n\n /** Clamp text to max width of 880px */\n clampText?: boolean;\n\n /** Clamp abstract to max width of 880px */\n clampAbstract?: boolean;\n\n /** Limit lines of text. Cut of with elipsis */\n maxTextLines?: number;\n\n /** Limit lines of abstract text. Cut of with elipsis */\n maxAbstractLines?: number;\n\n /** Main title hyphens */\n titleHyphens?: boolean;\n\n className?: string;\n}> = ({\n renderAs = 'div',\n colorMode = 'default',\n title,\n titleAs,\n titleSize = 'heading-2',\n superTitle,\n superTitleAs,\n abstract,\n text,\n textType = 'copy',\n textSize = 'medium',\n primaryAction,\n secondaryAction,\n isCentered = false,\n clampTitle = false,\n clampAbstract = false,\n maxTitleLines,\n maxAbstractLines,\n clampText = false,\n maxTextLines,\n className,\n titleHyphens,\n image,\n}) => {\n const isInverted = colorMode === 'inverted' || colorMode === 'onImage';\n const coverSpace = image?.coverSpace === false ? false : true;\n\n return (\n <View as={renderAs} isCentered={isCentered} className={className}>\n <Content>\n {(title || superTitle) && (\n <StyledTitle\n colorMode={colorMode}\n title={title}\n titleAs={titleAs}\n titleSize={titleSize}\n superTitle={superTitle}\n superTitleAs={superTitleAs}\n isCentered={isCentered}\n clamp={clampTitle}\n maxLines={maxTitleLines}\n titleHyphens={titleHyphens}\n />\n )}\n {image?.small && (\n <MobileImageContainer\n isCentered={isCentered}\n coverSpace={coverSpace}\n >\n <Image\n {...image}\n coverSpace={coverSpace}\n allowEdgeRadius\n isInverted={isInverted}\n />\n </MobileImageContainer>\n )}\n {abstract && (\n <ContentBlock\n type=\"copy\"\n size=\"big\"\n textColor={colorMode === 'onImage' ? '#fff' : undefined}\n isInverted={isInverted}\n isCentered={isCentered}\n innerHTML={abstract}\n clamp={clampAbstract}\n maxLines={maxAbstractLines}\n />\n )}\n {text && (\n <ContentBlock\n type={textType}\n size={textSize}\n textColor={colorMode === 'onImage' ? '#fff' : undefined}\n isInverted={isInverted}\n isCentered={isCentered}\n innerHTML={text}\n clamp={clampText}\n maxLines={maxTextLines}\n />\n )}\n {(primaryAction || secondaryAction) && (\n <StyledActions\n primary={\n primaryAction &&\n primaryAction({\n isInverted,\n isTextCentered: isCentered,\n })\n }\n secondary={\n secondaryAction &&\n secondaryAction({\n isInverted,\n isTextCentered: isCentered,\n })\n }\n />\n )}\n </Content>\n\n {image?.small && !isCentered && (\n <DesktopImageContainer>\n <Image\n {...image}\n coverSpace={coverSpace}\n allowEdgeRadius\n isInverted={isInverted}\n />\n </DesktopImageContainer>\n )}\n </View>\n );\n};\n\nexport default IntroBlock;\n","import React, { FC } from 'react';\nimport styled from 'styled-components';\n\nimport { getGlobals as global, mq, spacings } from 'utils/styles';\nimport Copy from 'components/typography/Copy';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport { HeadlineTag } from 'components/typography/Heading';\nimport IntroBlock from 'components/blocks/IntroBlock';\nimport Actions from 'components/blocks/Actions';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { gridSettings, getGridWidth } from 'components/base/Grid';\n\nconst ContactView = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n margin: 0 auto;\n width: 100%;\n\n text-align: left;\n hyphens: auto;\n overflow-wrap: break-word;\n\n & > * + * {\n margin-top: ${spacings.spacer}px;\n }\n\n @media ${mq.semilarge} {\n flex-direction: row;\n\n & > * + * {\n margin-top: 0px;\n margin-left: ${gridSettings.gutter}px;\n }\n }\n`;\n\nconst Avatar = styled.img<{ isInverted?: boolean }>`\n align-self: center;\n display: block;\n border: solid 1px transparent;\n border-radius: 50%;\n width: 180px;\n height: 180px;\n\n background: ${({ theme, isInverted }) =>\n isInverted\n ? global(theme).sections.imagePlaceholderBg.inverted\n : global(theme).sections.imagePlaceholderBg.default};\n\n @media ${mq.semilarge} {\n display: block;\n width: 190px;\n height: 190px;\n }\n`;\n\nconst Description = styled(Copy)`\n text-align: center;\n\n .icon-label {\n flex-direction: column;\n }\n\n .icon-label > * + * {\n margin-left: 0;\n margin-top: ${spacings.nudge * 2}px;\n }\n\n & > * {\n justify-content: center;\n }\n\n @media ${mq.semilarge} {\n text-align: left;\n\n & > * {\n justify-content: left;\n }\n\n .icon-label {\n flex-direction: row;\n }\n\n .icon-label > * + * {\n margin-left: ${spacings.nudge * 2}px;\n margin-top: 0;\n }\n }\n`;\n\nexport interface ContactBoxProps {\n isInverted?: boolean;\n description?: string;\n avatar?: { src: string; alt: string };\n}\n\nconst ContactBox: FC<ContactBoxProps & { className?: string }> = ({\n isInverted,\n description,\n avatar,\n className,\n}) => {\n return (\n <ContactView className={className}>\n <Avatar\n src={avatar?.src}\n alt={avatar?.alt}\n isInverted={isInverted}\n />\n {description && (\n <Description\n type=\"copy\"\n isInverted={isInverted}\n innerHTML={description}\n />\n )}\n </ContactView>\n );\n};\n\nconst StyledIntro = styled(IntroBlock)<{ hasDecorator?: boolean }>`\n max-width: 880px;\n margin-right: auto;\n margin-left: auto;\n\n @media ${mq.xlarge} {\n & > *:first-child {\n min-height: ${({ hasDecorator }) => hasDecorator && '110px'};\n }\n }\n`;\n\nconst StyledContactBox = styled(ContactBox)`\n margin-top: ${spacings.spacer}px;\n\n @media ${mq.semilarge} {\n max-width: ${getGridWidth({ cols: 8 })};\n margin-right: auto;\n margin-left: auto;\n }\n\n @media ${mq.large} {\n max-width: ${getGridWidth({ cols: 6 })};\n }\n`;\n\nconst StyledActions = styled(Actions)`\n margin-top: ${spacings.spacer}px;\n\n @media ${mq.medium} {\n display: block;\n text-align: center;\n }\n`;\n\nconst NewsletterWrapper = styled.div`\n width: 100%;\n margin: 0 auto;\n margin-top: ${spacings.spacer}px;\n\n @media ${mq.semilarge} {\n max-width: 400px;\n }\n`;\n\nconst Badge = styled.div`\n display: none;\n position: relative;\n height: 241px;\n width: 241px;\n margin-left: auto;\n margin-bottom: -135px;\n z-index: 3;\n\n @media ${mq.xlarge} {\n display: block;\n margin-right: ${1440 * (1 / 28) + 'px'};\n }\n`;\n\nexport interface CtaActionProps {\n isInverted?: boolean;\n isTextCentered?: boolean;\n}\n\nexport const CallToAction: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n /** Main title text */\n title?: string;\n /** Main title HTML tag type (h2, h3, h4...) */\n titleAs?: HeadlineTag;\n /** Superior title that stands above main title */\n superTitle?: string;\n /** Superior title HTML tag type (h3, h4 ...) */\n superTitleAs?: HeadlineTag;\n /** Bold text underneath the title (limited richtext capabilites) */\n text?: string;\n /** Props for contact area */\n contact?: ContactBoxProps;\n /** Show Newsletter defined by inject function newsFormMain. Only visible if React node is defined! */\n hasNewsletter?: boolean;\n /** Badge decorator visible only on large screens */\n badge?: React.ReactNode;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n\n /** Function to inject custom primary button */\n primaryAction?: (props: CtaActionProps) => React.ReactNode;\n /** Function to inject custom secondary button */\n secondaryAction?: (props: CtaActionProps) => React.ReactNode;\n /** Function to inject newsletter form */\n newsFormMain?: (isInverted?: boolean) => React.ReactNode;\n}> = ({\n anchorId,\n title,\n titleAs = 'h2',\n superTitle,\n superTitleAs,\n text,\n contact,\n badge,\n primaryAction,\n secondaryAction,\n hasNewsletter,\n newsFormMain,\n bgMode,\n}) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted ? colors.sectionBg.dark : colors.sectionBg.medium\n }\n bgMode={bgMode ? mapToBgMode(bgMode, true) : 'full'}\n >\n <Wrapper addWhitespace clampWidth=\"normal\">\n {badge && <Badge>{badge}</Badge>}\n {title && (\n <StyledIntro\n isCentered\n colorMode={isInverted ? 'inverted' : 'default'}\n title={title}\n titleAs={titleAs}\n superTitle={superTitle}\n superTitleAs={superTitleAs}\n hasDecorator={!!badge}\n text={text}\n />\n )}\n\n {contact && (\n <StyledContactBox\n isInverted={isInverted}\n description={contact.description}\n avatar={contact.avatar}\n />\n )}\n {newsFormMain && hasNewsletter && (\n <NewsletterWrapper>\n {newsFormMain(isInverted)}\n </NewsletterWrapper>\n )}\n {(primaryAction || secondaryAction) && (\n <StyledActions\n primary={\n primaryAction &&\n primaryAction({ isInverted, isTextCentered: true })\n }\n secondary={\n secondaryAction &&\n secondaryAction({\n isInverted,\n isTextCentered: true,\n })\n }\n />\n )}\n </Wrapper>\n </Section>\n );\n};\n\nexport const CallToActionComponent = CallToAction;\nexport default withLibTheme(CallToAction);\n","import Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport Copy from 'components/typography/Copy';\nimport Link, { LinkProps } from 'components/typography/Link';\nimport React from 'react';\nimport styled, { css } from 'styled-components';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport {\n spacings,\n getColors as color,\n mq,\n getGlobals as global,\n} from 'utils/styles';\n\nconst View = styled.div<{\n isInverted?: boolean;\n cardColor?: string;\n hasLink?: boolean;\n}>`\n display: flex;\n flex-direction: column;\n justify-content: center;\n position: relative;\n color: ${({ theme }) => color(theme).text.inverted};\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n min-height: 110px;\n\n overflow: hidden;\n\n @media ${mq.medium} {\n display: block;\n padding-top: 85%;\n }\n`;\n\nconst SolidView = styled(View)`\n background-color: ${({ theme, isInverted, cardColor }) =>\n cardColor\n ? cardColor\n : isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n\n transition: background-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out;\n\n ${({ hasLink }) =>\n hasLink &&\n css`\n cursor: pointer;\n\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n box-shadow: 0 2px 24px 0 rgba(0, 0, 0, 0.35);\n }\n }\n `}\n`;\n\nconst ImageView = styled(View)`\n transition: box-shadow 0.2s ease-in-out;\n\n ${({ hasLink }) =>\n hasLink &&\n css`\n @media (hover: hover) and (pointer: fine) {\n cursor: pointer;\n\n img {\n -webkit-backface-visibility: hidden;\n -ms-transform: translateZ(0); /* IE 9 */\n -webkit-transform: translateZ(\n 0\n ); /* Chrome, Safari, Opera */\n transform: translateZ(0);\n transform-origin: center;\n transition: transform 0.2s ease-in-out;\n }\n\n &:hover {\n box-shadow: 0 2px 24px 0 rgba(0, 0, 0, 0.35);\n\n img {\n transform: scale(1.03);\n }\n }\n }\n `}\n\n &:after {\n content: '';\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n background: ${({ theme }) => global(theme).sections.imageTextGradient};\n pointer-events: none;\n }\n\n @media ${mq.medium} {\n padding-top: 0;\n }\n`;\n\nconst StyledImage = styled(Image)`\n position: absolute;\n top: 0;\n bottom: 0;\n right: 0;\n left: 0;\n\n display: block;\n width: 100%;\n height: 100%;\n\n object-fit: cover;\n object-position: center;\n\n @media ${mq.medium} {\n position: relative;\n }\n`;\n\nconst Content = styled.div<{ hasIcon?: boolean }>`\n z-index: 1;\n\n padding: ${spacings.nudge * 3}px;\n\n display: flex;\n flex-direction: row;\n align-items: center;\n\n & > * + * {\n margin-left: ${spacings.spacer}px;\n }\n\n @media ${mq.medium} {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n overflow: hidden;\n\n display: flex;\n flex-direction: ${({ hasIcon }) => (hasIcon ? 'column' : 'row')};\n justify-content: space-between;\n align-items: ${({ hasIcon }) => (hasIcon ? 'flex-start' : 'flex-end')};\n\n & > * + * {\n margin-left: 0;\n }\n }\n`;\n\nconst TextContainer = styled.div`\n width: 100%;\n overflow: hidden;\n\n & > * + * {\n margin-top: ${spacings.nudge / 2}px;\n }\n`;\n\nconst Title = styled(Copy)`\n display: inline-block;\n max-width: 100%;\n\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n text-overflow: ellipsis;\n overflow: hidden;\n`;\n\nconst Footer = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n & > * + * {\n margin-left: ${spacings.nudge * 2}px;\n }\n`;\n\nconst SubLabel = styled(Copy)`\n display: inline-block;\n\n display: -webkit-box;\n -webkit-line-clamp: 1;\n -webkit-box-orient: vertical;\n overflow: hidden;\n`;\n\nconst Icon = styled.div`\n height: 100%;\n max-height: 60px;\n min-height: 40px;\n min-width: 40px;\n\n * {\n height: 100%;\n }\n\n svg,\n img {\n width: 100%;\n }\n\n @media ${mq.medium} {\n svg,\n img {\n width: auto;\n }\n }\n`;\n\nconst CardLink = styled(Link)<{ isInverted?: boolean }>`\n z-index: 1;\n display: block;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n\n outline-color: ${({ theme }) => color(theme).primary.default};\n\n &:focus {\n border: 2px dotted ${({ theme }) => color(theme).primary.invertedHover};\n outline-offset: 4px;\n\n color: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.invertedHover\n : color(theme).primary.hover};\n }\n`;\n\nexport interface CardProps {\n isInverted?: boolean;\n title?: string;\n subLabel?: string;\n image?: ImageProps;\n link?: LinkProps;\n decorator?: (props: { isInverted?: boolean }) => React.ReactNode;\n cardColor?: string;\n customIcon?: (props: { isInverted?: boolean }) => React.ReactNode;\n}\n\nconst Card: React.FC<\n Omit<CardProps, 'coverSpace' | 'ratios'> & {\n className?: string;\n }\n> = ({\n isInverted,\n title,\n subLabel,\n image,\n link,\n decorator,\n cardColor,\n customIcon,\n}) => {\n const { colors } = useLibTheme();\n const CardView = image && image.small ? ImageView : SolidView;\n const defaultCardColor = isInverted\n ? colors.primary.inverted\n : colors.primary.default;\n\n return (\n <CardView\n isInverted={isInverted}\n cardColor={cardColor || defaultCardColor}\n hasLink={!!link?.href}\n >\n {image?.small && (\n <StyledImage\n {...image}\n coverSpace\n isInverted={isInverted}\n ratios={{\n small: { w: 352, h: 108 },\n medium: { w: 286, h: 244 },\n }}\n />\n )}\n <Content hasIcon={!!customIcon}>\n {customIcon ? <Icon>{customIcon({})}</Icon> : ''}\n <TextContainer>\n {title && (\n <Title size=\"big\" type=\"copy\" isInverted>\n {title}\n </Title>\n )}\n {subLabel && (\n <Footer>\n <SubLabel type=\"copy-b\" size=\"big\" isInverted>\n {subLabel}\n </SubLabel>\n {decorator ? decorator({ isInverted }) : undefined}\n </Footer>\n )}\n </TextContainer>\n </Content>\n {link?.href && (\n <CardLink\n isInverted={isInverted}\n {...link}\n ariaLabel={title || undefined}\n />\n )}\n </CardView>\n );\n};\n\nconst List = styled.ul`\n padding: 0;\n margin-top: -${spacings.nudge * 2}px;\n margin-left: -${spacings.nudge * 2}px;\n list-style: none;\n\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n justify-content: center;\n flex-wrap: wrap;\n\n @media ${mq.medium} {\n margin-top: -${spacings.spacer}px;\n margin-left: -${spacings.spacer}px;\n }\n`;\n\nconst CardItem = styled.li<{ isEqual?: boolean; threeCols?: boolean }>`\n padding-top: ${spacings.nudge * 2}px;\n padding-left: ${spacings.nudge * 2}px;\n\n width: 100%;\n\n @media ${mq.medium} {\n flex: 0 0 50%;\n max-width: 370px;\n padding-top: ${spacings.spacer}px;\n padding-left: ${spacings.spacer}px;\n }\n\n @media ${mq.semilarge} {\n flex: 0 0 33.33%;\n }\n\n @media (min-width: 75em) {\n flex: ${({ isEqual, threeCols }) =>\n threeCols ? '0 0 33.33%' : isEqual && '0 0 25%'};\n }\n`;\n\nconst CardList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array with card item settings */\n items?: Omit<CardProps, 'decorator' | 'isInverted'>[];\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n\n /** Function to inject custom decoration icon */\n decorator?: (props: { isInverted?: boolean }) => React.ReactNode;\n\n /** Force maximal three items per row */\n maxThreeCols?: boolean;\n}> = ({ anchorId, items, bgMode, decorator, maxThreeCols }) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n\n return (\n <Section\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n addSeperation\n >\n <Wrapper addWhitespace>\n <List>\n {items?.map((item, i) => (\n <CardItem\n key={i}\n isEqual={items.length % 2 === 0}\n threeCols={maxThreeCols}\n >\n <Card\n {...item}\n isInverted={isInverted}\n decorator={decorator}\n />\n </CardItem>\n ))}\n </List>\n </Wrapper>\n </Section>\n );\n};\n\nexport const CardListComponent = CardList;\nexport default withLibTheme(CardList);\n","import React, { FC, useEffect, useRef, useState } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport { getColors as color, spacings } from 'utils/styles';\nimport ArrowLeftRight from 'components/base/icons/ArrowLeftRight';\nimport Copy from 'components/typography/Copy';\nimport useIE from 'utils/useIE';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\n\nconst clamp = (num: number, min: number, max: number) => {\n return Math.min(Math.max(num, min), max);\n};\n\nconst Images = styled.div`\n position: relative;\n cursor: col-resize;\n & > * {\n pointer-events: none;\n user-select: none;\n }\n`;\n\nconst BackgroundImg = styled(Image)`\n position: relative;\n display: block;\n width: 100%;\n`;\n\nconst ForegroundContainer = styled.div<{\n hasTransition?: boolean;\n initalValue?: number;\n hasAnim?: boolean;\n}>`\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 50%;\n overflow: hidden;\n transition: width ${({ hasTransition }) => (hasTransition ? 0.1 : 0)}s\n ease-in-out;\n ${({ hasAnim, initalValue }) =>\n hasAnim &&\n css`\n animation-name: ForegroundAnim;\n animation-duration: 5s;\n animation-iteration-count: 1;\n animation-play-state: ${hasAnim && 'running'};\n animation-timing-function: ease-in-out;\n @keyframes ForegroundAnim {\n 0% {\n width: ${initalValue\n ? clamp(initalValue * 100, 0, 100) + '%'\n : '50%'};\n }\n 33% {\n width: ${initalValue\n ? clamp(initalValue * 100 + 10, 0, 100) + '%'\n : '60%'};\n }\n 66% {\n width: ${initalValue\n ? clamp(initalValue * 100 - 10, 0, 100) + '%'\n : '40%'};\n }\n 100% {\n width: ${initalValue ? initalValue * 100 + '%' : '50%'};\n }\n }\n `}\n`;\n\nconst ForegroundImg = styled(Image)`\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n height: 100%;\n max-width: none;\n object-fit: cover;\n\n img {\n height: auto;\n width: auto;\n }\n`;\n\nconst ForegroundOverlay = styled.div<{ color: string }>`\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background-color: ${({ color }) => color};\n`;\n\nconst ImageLabel = styled(Copy)<{ bgColor?: string }>`\n height: ${spacings.spacer}px;\n padding: ${spacings.nudge}px ${spacings.spacer}px ${spacings.spacer}px\n ${spacings.spacer}px;\n background: ${({ bgColor }) => bgColor && bgColor};\n`;\n\nconst ForegroundLabel = styled(ImageLabel)`\n position: absolute;\n bottom: ${spacings.spacer}px;\n left: ${spacings.spacer}px;\n pointer-events: none;\n white-space: nowrap;\n`;\n\nconst BackgroundLabel = styled(ImageLabel)`\n position: absolute;\n bottom: ${spacings.spacer}px;\n right: ${spacings.spacer}px;\n pointer-events: none;\n white-space: nowrap;\n`;\n\nconst ControlContainer = styled.div<{\n hasTransition?: boolean;\n hasAnim?: boolean;\n initalValue?: number;\n}>`\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n transition: left ${({ hasTransition }) => (hasTransition ? 0.1 : 0)}s\n ease-in-out;\n ${({ hasAnim, initalValue }) =>\n hasAnim &&\n css`\n animation-name: ControlAnim;\n animation-duration: 5s;\n animation-iteration-count: 1;\n animation-play-state: ${hasAnim && 'running'};\n animation-timing-function: ease-in-out;\n @keyframes ControlAnim {\n 0% {\n left: ${initalValue\n ? clamp(initalValue * 100, 0, 100) + '%'\n : '50%'};\n }\n 33% {\n left: ${initalValue\n ? clamp(initalValue * 100 + 10, 0, 100) + '%'\n : '60%'};\n }\n 66% {\n left: ${initalValue\n ? clamp(initalValue * 100 - 10, 0, 100) + '%'\n : '40%'};\n }\n 100% {\n left: ${initalValue ? initalValue * 100 + '%' : '50%'};\n }\n }\n `}\n`;\n\nconst Control = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n height: 54px;\n width: 54px;\n border: solid 2px ${({ theme }) => color(theme).elementBg.light};\n border-radius: 50%;\n background-color: ${({ theme }) => color(theme).elementBg.medium};\n`;\n\nconst ComparisonSlider: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n bgMode?: 'full' | 'inverted' | 'splitted';\n initialValue?: number;\n foregroundImg?: ImageProps;\n backgroundImg?: ImageProps;\n foregroundLabel?: string;\n backgroundLabel?: string;\n overlayColor?: string;\n labelColor?: string;\n dragControl?: React.ReactNode;\n enableControlAnim?: boolean;\n}> = ({\n anchorId,\n bgMode,\n initialValue,\n foregroundImg,\n backgroundImg,\n foregroundLabel,\n backgroundLabel,\n overlayColor = 'rgba(0, 0 , 0, 0.2)',\n labelColor = 'rgba(0, 0 , 0, 0.3)',\n dragControl,\n enableControlAnim,\n}) => {\n const isIE = useIE(true);\n const [slideValue, setSlideValue] = useState<number>(\n initialValue ? Math.min(Math.max(initialValue, 0), 1) : 0.5\n );\n const [isHolding, setIsHolding] = useState<boolean>(false);\n const [isDragging, setIsDragging] = useState<boolean>(false);\n const [interacted, setInteracted] = useState<boolean>(true);\n const [sideOffset, setSideOffset] = useState<number>(0);\n const controlRef = useRef<HTMLDivElement | null>(null);\n const { colors } = useLibTheme();\n\n useEffect(() => {\n if (controlRef.current) {\n setSideOffset(controlRef.current.offsetWidth / 2);\n }\n }, []);\n\n useEffect(() => {\n const handleInitalLoad = () => {\n const options = {\n rootMargin: '0px',\n threshold: 1.0,\n };\n\n const observer = new IntersectionObserver((entries, observer) => {\n if (enableControlAnim && entries[0]?.isIntersecting) {\n // if control is first fully visible\n observer.unobserve(entries[0]?.target);\n setInteracted(false);\n }\n }, options);\n if (controlRef.current) observer.observe(controlRef.current);\n window.removeEventListener('load', handleInitalLoad);\n };\n\n // wait unitl user has scrolled once\n if (!isIE) {\n if (document.readyState === 'complete') handleInitalLoad();\n else window.addEventListener('load', handleInitalLoad);\n }\n\n return () => {\n window.removeEventListener('load', handleInitalLoad);\n };\n }, [enableControlAnim, isIE]);\n\n const setCurrentPos = (target: EventTarget & Element, clientX: number) => {\n if (target && clientX) {\n const relativeClientX = clientX - target.getBoundingClientRect().x;\n\n // check side offset\n if (\n relativeClientX >= sideOffset &&\n relativeClientX <=\n target.getBoundingClientRect().width - sideOffset\n ) {\n let percentage =\n relativeClientX / target.getBoundingClientRect().width;\n percentage = Math.min(Math.max(percentage, 0), 1);\n\n setSlideValue(percentage);\n }\n }\n };\n\n const handleClick = (ev: React.MouseEvent) => {\n const target = ev.currentTarget;\n if (target && ev.clientX) {\n setCurrentPos(target, ev.clientX);\n setInteracted(true);\n }\n };\n\n const handleMouseMove = (ev: React.MouseEvent) => {\n const target = ev.currentTarget;\n if (target && ev.clientX && isHolding) {\n setIsDragging(true);\n setInteracted(true);\n if (isDragging) setCurrentPos(target, ev.clientX);\n }\n };\n\n const handleTouchMove = (ev: React.TouchEvent<HTMLDivElement>) => {\n const target = ev.currentTarget;\n if (target && ev.touches[0]?.clientX) {\n setInteracted(true);\n setCurrentPos(target, ev.touches[0]?.clientX);\n }\n };\n\n const isInverted = bgMode === 'inverted';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n >\n <Wrapper>\n {backgroundImg && foregroundImg && (\n <Images\n onClick={handleClick}\n onMouseMove={handleMouseMove}\n onMouseDown={() => {\n setIsDragging(false);\n setIsHolding(true);\n }}\n onMouseUp={() => {\n setIsDragging(false);\n setIsHolding(false);\n }}\n onMouseLeave={() => {\n setIsHolding(false);\n setIsDragging(false);\n }}\n onTouchMove={handleTouchMove}\n onTouchStart={() => setIsHolding(true)}\n onTouchEnd={() => setIsHolding(false)}\n >\n <BackgroundImg {...backgroundImg} />\n {backgroundLabel && (\n <BackgroundLabel\n textColor={colors.text.inverted}\n bgColor={labelColor}\n >\n {backgroundLabel}\n </BackgroundLabel>\n )}\n <ForegroundContainer\n hasTransition={!isHolding}\n hasAnim={!interacted}\n initalValue={initialValue}\n style={{ width: slideValue * 100 + '%' }}\n >\n <ForegroundImg {...foregroundImg} />\n {foregroundLabel && (\n <ForegroundLabel\n textColor={colors.text.inverted}\n bgColor={labelColor}\n >\n {foregroundLabel}\n </ForegroundLabel>\n )}\n <ForegroundOverlay color={overlayColor} />\n </ForegroundContainer>\n <ControlContainer\n ref={controlRef}\n hasTransition={!isHolding}\n hasAnim={!interacted}\n initalValue={initialValue}\n style={{ left: slideValue * 100 + '%' }}\n >\n {dragControl ? (\n dragControl\n ) : (\n <Control>\n <ArrowLeftRight\n iconColor={colors.elementBg.light}\n />\n </Control>\n )}\n </ControlContainer>\n </Images>\n )}\n </Wrapper>\n </Section>\n );\n};\n\nexport const ComparisonSliderComponent = ComparisonSlider;\nexport default withLibTheme(ComparisonSlider);\n","import React, { forwardRef } from 'react';\nimport ReactDOMServer from 'react-dom/server';\nimport styled, { css } from 'styled-components';\n\nimport {\n spacings,\n getGlobals as global,\n mq,\n withRange,\n getColors as color,\n} from 'utils/styles';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport Link, { LinkProps } from 'components/typography/Link';\nimport Title from 'components/blocks/Title';\nimport External from 'components/base/icons/External';\nimport { HeadlineTag } from 'components/typography/Heading';\n\nconst View = styled(Link)<{\n clickable?: boolean;\n}>`\n display: block;\n position: relative;\n width: 100%;\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n overflow: hidden;\n outline: none;\n\n &:after {\n content: '';\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n background: ${({ theme }) => global(theme).sections.imageTextGradient};\n pointer-events: none;\n }\n\n ${({ clickable, theme, isInverted }) =>\n clickable &&\n css`\n transition: box-shadow 0.2s ease-in-out;\n cursor: pointer;\n\n &:hover {\n box-shadow: 0 2px 24px 0 rgba(0, 0, 0, 0.35);\n }\n\n &:focus {\n box-shadow: 0 2px 24px 0 rgba(0, 0, 0, 0.35);\n outline: solid 2px\n ${isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n outline-offset: 4px;\n\n color: ${isInverted\n ? color(theme).primary.invertedHover\n : color(theme).primary.hover};\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n box-shadow: none;\n }\n `}\n`;\n\nconst StyledImage = styled(Image)`\n width: 100%;\n height: 100%;\n min-height: 300px;\n\n img {\n height: 100%;\n }\n`;\n\nconst IntroContainer = styled.div`\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n overflow: auto;\n z-index: 1;\n\n padding: ${spacings.spacer}px ${spacings.nudge * 3}px;\n\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n align-items: flex-start;\n\n /* required to align items at flex-end in ie11 */\n &:before {\n content: '';\n display: block;\n flex: 1 0 0px;\n }\n\n @media ${mq.medium} {\n padding: ${spacings.nudge * 5}px ${spacings.spacer}px;\n }\n`;\n\nconst StyledTitle = styled(Title)<{ clampTitle?: boolean }>`\n max-width: ${({ clampTitle }) =>\n clampTitle && (13 / 28) * spacings.wrapper + 'px'};\n`;\n\nconst ExternalIconHolder = styled.span`\n margin-left: ${spacings.nudge * 2}px;\n\n & > * {\n display: inline-block;\n }\n`;\n\nconst Icon = styled.div`\n ${withRange([60, 100], 'height')};\n ${withRange([60, 100], 'width')};\n\n position: absolute;\n top: ${spacings.nudge * 3}px;\n left: ${spacings.nudge * 3}px;\n\n & > * {\n ${withRange([60, 100], 'height')};\n ${withRange([60, 100], 'width')};\n }\n\n color: ${({ theme }) => color(theme).text.inverted};\n`;\n\nexport interface PromotionCardProps {\n /** Setup Card for dark backgrounds */\n isInverted?: boolean;\n /** Card image settings */\n image: ImageProps;\n /** Card title */\n title?: string;\n /** Card title HTML tag type (h2, h3, h4...) */\n titleAs?: HeadlineTag;\n /** Superior card title that stands above main title */\n superTitle?: string;\n /** Superior card title HTML tag type (h3, h4 ...) */\n superTitleAs?: HeadlineTag;\n /** Href path */\n href?: string;\n /** Advanced href options */\n link?: LinkProps;\n /** Inject custom icon that indicates an external link */\n externalLinkIcon?: React.ReactNode;\n\n /** Function to inject icon in top left corner */\n icon?: (props: { isInverted?: boolean }) => React.ReactNode;\n}\n\nconst PromotionCard = forwardRef<\n HTMLAnchorElement,\n PromotionCardProps & { className?: string }\n>(\n (\n {\n isInverted,\n image,\n title,\n titleAs,\n superTitle,\n superTitleAs,\n href,\n link,\n externalLinkIcon,\n icon,\n className,\n },\n ref\n ) => {\n // fallback for older versions\n let linkObj = link;\n if (href && !link) {\n linkObj = {\n href: href,\n isExternal: false,\n };\n }\n\n const externalIconString = ReactDOMServer.renderToString(\n <ExternalIconHolder>\n {externalLinkIcon || <External />}\n </ExternalIconHolder>\n );\n\n return (\n <View\n ref={ref}\n clickable={!!href || !!link}\n {...linkObj}\n className={className}\n >\n <StyledImage {...image} isInverted={isInverted} coverSpace />\n {icon && <Icon>{icon({ isInverted })}</Icon>}\n {title && (\n <IntroContainer>\n <StyledTitle\n colorMode=\"onImage\"\n superTitle={superTitle}\n superTitleAs={superTitleAs}\n title={\n linkObj?.isExternal\n ? title + externalIconString\n : title\n }\n titleAs={titleAs || 'div'}\n clampTitle\n />\n </IntroContainer>\n )}\n </View>\n );\n }\n);\n\nPromotionCard.displayName = 'PromotionCard';\n\nexport default PromotionCard;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nimport Grid, { gridSettings } from 'components/base/Grid';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\n\nimport PromotionCard, {\n PromotionCardProps,\n} from 'components/blocks/PromotionCard';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\n\nconst Card = styled(PromotionCard)<{ isMain?: boolean }>`\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n\n height: ${({ isMain }) => isMain && '100%'};\n\n flex: 1 0 auto;\n\n & + & {\n margin-top: ${gridSettings.gutter}px;\n }\n`;\n\nconst CrossPromotion: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Promotion card settings in main grid column (default: on right side). The size prop controls the width. */\n main?: Array<\n Omit<PromotionCardProps, 'externalLinkIcon' | 'isInverted'> & {\n size?: 'full' | 'half';\n }\n >;\n\n /** Promotion card settings in second grid column (default: on left side). The size prop controls the width. */\n aside?: Array<\n Omit<PromotionCardProps, 'externalLinkIcon' | 'isInverted'> & {\n size?: 'full' | 'half';\n }\n >;\n\n /** Section background */\n bgMode?: 'full' | 'inverted' | 'splitted';\n\n /** Switching order of main and aside columns */\n isMirrored?: boolean;\n\n /** Inject custom icon that indicates an external link */\n externalLinkIcon?: React.ReactNode;\n}> = ({ anchorId, main, aside, bgMode, isMirrored, externalLinkIcon }) => {\n const { colors } = useLibTheme();\n\n const isInverted = bgMode === 'inverted';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, false, isMirrored)}\n >\n <Wrapper clampWidth=\"normal\" addWhitespace>\n {aside ? (\n isMirrored ? (\n <Grid.Row>\n <Grid.Col semilarge={{ span: 6 / 12 }}>\n {main &&\n main.map((card, i) => (\n <Card\n key={i}\n isMain\n {...card}\n externalLinkIcon={externalLinkIcon}\n isInverted={isInverted}\n />\n ))}\n </Grid.Col>\n <Grid.Col semilarge={{ span: 6 / 12 }}>\n {aside.map((card, i) => (\n <Card\n key={i}\n {...card}\n externalLinkIcon={externalLinkIcon}\n isInverted={isInverted}\n />\n ))}\n </Grid.Col>\n </Grid.Row>\n ) : (\n <Grid.Row>\n <Grid.Col semilarge={{ span: 6 / 12 }}>\n {aside.map((card, i) => (\n <Card\n key={i}\n {...card}\n externalLinkIcon={externalLinkIcon}\n isInverted={isInverted}\n />\n ))}\n </Grid.Col>\n <Grid.Col semilarge={{ span: 6 / 12 }}>\n {main &&\n main.map((card, i) => (\n <Card\n key={i}\n isMain\n {...card}\n externalLinkIcon={externalLinkIcon}\n isInverted={isInverted}\n />\n ))}\n </Grid.Col>\n </Grid.Row>\n )\n ) : (\n main && (\n <Grid.Row>\n {main.map((card, i) => (\n <Grid.Col\n semilarge={{\n span:\n (card.size === 'half' ? 6 : 12) /\n 12,\n }}\n key={i}\n >\n <Card\n key={i}\n {...card}\n externalLinkIcon={externalLinkIcon}\n isInverted={isInverted}\n />\n </Grid.Col>\n ))}\n </Grid.Row>\n )\n )}\n </Wrapper>\n </Section>\n );\n};\n\nexport const CrossPromotionComponent = CrossPromotion;\nexport default withLibTheme(CrossPromotion);\n","import React from 'react';\nimport styled, { css } from 'styled-components';\nimport { hexToRgba } from 'utils/hexRgbConverter';\n\nimport {\n getColors as color,\n getFonts as font,\n getGlobals as global,\n mq,\n spacings,\n withRange,\n} from 'utils/styles';\n\nconst View = styled.a<{\n inverted?: boolean;\n disable?: boolean;\n size?: 'default' | 'small';\n}>`\n min-height: 3em;\n height: ${({ size }) => (size === 'default' ? '3.5em' : '3em')};\n min-width: ${({ size }) => (size === 'default' ? '200px' : '120px')};\n padding: 0.1em 1.2em;\n\n max-width: calc(100% - ${spacings.spacer}px);\n\n display: inline-flex;\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: center;\n align-items: center;\n\n vertical-align: middle;\n\n font-family: ${({ theme }) => font(theme).copy.medium.family};\n ${({ theme }) => withRange(font(theme).copy.medium.size, 'font-size')}\n font-weight: ${({ theme }) => font(theme).copy.medium.weight};\n line-height: 1;\n letter-spacing: ${({ theme }) => font(theme).copy.medium.letterSpacing};\n text-decoration: none;\n\n outline: none;\n border: 1px solid transparent;\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n user-select: none;\n cursor: pointer;\n\n pointer-events: ${({ disable }) => (disable ? 'none' : 'all')};\n\n background-color: ${({ theme, inverted, disable }) =>\n disable\n ? color(theme).elementBg.medium\n : inverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n color: ${({ theme, inverted, disable }) =>\n disable\n ? hexToRgba(color(theme).text.default, 0.4)\n : !inverted\n ? color(theme).text.inverted\n : color(theme).text.default};\n text-align: left;\n\n transition: all ease-in-out 0.2s;\n\n & > * {\n color: ${({ theme, inverted, disable }) =>\n disable\n ? hexToRgba(color(theme).text.default, 0.4)\n : !inverted\n ? color(theme).text.inverted\n : color(theme).text.default};\n }\n\n & > * + * {\n margin-left: ${spacings.nudge}px;\n }\n & > *[data-btn-desktop] + *[data-btn-mobile] {\n margin-left: 0;\n }\n & > *[data-btn-mobile] + *[data-btn-desktop] {\n margin-left: 0;\n }\n & > *[data-btn-desktop] {\n display: none;\n }\n & > *:not([data-btn-desktop]) + * {\n margin-left: 0;\n }\n\n @media (hover: hover) and (pointer: fine) {\n ${({ disable, inverted }) =>\n !disable &&\n css`\n &:hover {\n box-shadow: 0px 8px 16px\n ${inverted\n ? 'rgba(255, 255, 255, 0.25)'\n : 'rgba(0, 0, 0, 0.25)'};\n }\n `}\n }\n\n ${({ disable, inverted }) =>\n !disable &&\n css`\n &:focus {\n text-decoration: underline;\n box-shadow: 0px 8px 16px\n ${inverted\n ? 'rgba(255, 255, 255, 0.25)'\n : 'rgba(0, 0, 0, 0.25)'};\n }\n\n &:focus:not(:focus-visible) {\n text-decoration: none;\n outline: none;\n box-shadow: none;\n }\n\n &:active {\n box-shadow: 0px 2px 6px\n ${inverted\n ? 'rgba(255, 255, 255, 0.25)'\n : 'rgba(0, 0, 0, 0.3)'};\n }\n `}\n\n @media ${mq.semilarge} {\n & > *[data-btn-desktop='true'] {\n display: inherit;\n }\n & > *[data-btn-mobile='true'] {\n display: none;\n }\n & > *:not([data-btn-mobile='true']) + * {\n margin-left: 0;\n }\n }\n`;\n\ninterface Props {\n size?: 'default' | 'small';\n isInverted?: boolean;\n isDisabled?: boolean;\n className?: string;\n children?: React.ReactNode;\n}\n\nexport type BtnProps = Props & {\n as?: 'button';\n onClick?: (ev: React.SyntheticEvent<HTMLButtonElement>) => void;\n};\n\nexport type LinkProps = Props & {\n as?: 'a';\n href?: string;\n onClick?: (ev: React.SyntheticEvent<HTMLAnchorElement>) => void;\n isExternal?: boolean;\n};\n\nconst Button: React.FC<BtnProps | LinkProps> = React.forwardRef(\n (\n {\n as,\n size = 'default',\n isInverted,\n isDisabled,\n onClick,\n className,\n children,\n ...rest\n },\n ref\n ) => {\n if (as === 'button') {\n return (\n <View\n ref={ref}\n as={as as any}\n size={size}\n inverted={isInverted}\n disable={isDisabled}\n onClick={onClick}\n className={className}\n {...rest}\n >\n {children}\n </View>\n );\n } else {\n return (\n <View\n ref={ref}\n as={as as any}\n aria-disabled={isDisabled}\n size={size}\n href={(rest as LinkProps).href}\n target={\n (rest as LinkProps).isExternal ? '_blank' : undefined\n }\n rel={\n (rest as LinkProps).isExternal\n ? 'noopener noreferrer'\n : undefined\n }\n inverted={isInverted}\n disable={isDisabled}\n onClick={onClick}\n className={className}\n {...rest}\n >\n {children}\n </View>\n );\n }\n }\n);\n\nButton.displayName = 'Button';\n\nconst Icon = styled.div<{ iconColor?: string }>`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: 35px;\n height: 35px;\n\n color: ${({ iconColor }) => iconColor || 'inherit'};\n\n transition: transform 0.2s ease-in-out;\n\n ${View}:hover > & {\n transform: translateX(3px);\n }\n`;\n\nconst Label = styled.span`\n display: inline-block;\n\n max-width: 100%;\n\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n`;\n\nexport default { View: Button, Label: Label, Icon: Icon };\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport Copy from 'components/typography/Copy';\nimport { useLibTheme } from 'utils/LibThemeProvider';\nimport { spacings } from 'utils/styles';\n\nconst View = styled.label<{ isDisabled?: boolean }>`\n display: block;\n text-align: left;\n\n pointer-events: ${({ isDisabled }) => isDisabled && 'none'};\n user-select: ${({ isDisabled }) => isDisabled && 'none'};\n opacity: ${({ isDisabled }) => (isDisabled ? 0.3 : 1)};\n`;\n\nconst FieldHead = styled(Copy)`\n display: inline-flex;\n flex-direction: row;\n align-items: top;\n justify-content: space-between;\n padding-bottom: ${spacings.nudge}px;\n`;\n\nconst FieldMessage = styled(Copy)`\n margin-top: ${spacings.nudge}px;\n`;\n\nexport interface FieldProps {\n label?: string;\n errorMessage?: string;\n infoMessage?: string;\n isRequired?: boolean;\n isDisabled?: boolean;\n isInverted?: boolean;\n}\n\nconst FieldWrapper: React.FC<{\n isDisabled?: boolean;\n onClick?: (ev: React.SyntheticEvent<HTMLLabelElement>) => void;\n className?: string;\n children: React.ReactNode;\n}> = ({ isDisabled, onClick, className, children }) => {\n return (\n <View onClick={onClick} isDisabled={isDisabled} className={className}>\n {children}\n </View>\n );\n};\n\nconst Head: React.FC<{\n label?: string;\n isRequired?: boolean;\n isInverted?: boolean;\n className?: string;\n}> = ({ label, isRequired, isInverted, className }) => {\n if (!label) return null;\n return (\n <FieldHead\n renderAs=\"span\"\n isInverted={isInverted}\n size=\"small\"\n type=\"copy-b\"\n className={className}\n >\n {`${label}${isRequired ? ' *' : ''}`}\n </FieldHead>\n );\n};\n\nconst Messages: React.FC<{\n errorMessage?: string;\n infoMessage?: string;\n isInverted?: boolean;\n}> = ({ errorMessage, infoMessage, isInverted }) => {\n const { colors } = useLibTheme();\n\n return (\n <React.Fragment>\n {infoMessage && (\n <FieldMessage size=\"small\" type=\"copy\" isInverted={isInverted}>\n {infoMessage}\n </FieldMessage>\n )}\n {errorMessage && (\n <FieldMessage\n size=\"small\"\n type=\"copy\"\n textColor={\n isInverted\n ? colors.text.errorInverted\n : colors.text.error\n }\n >\n {errorMessage\n ? errorMessage\n : 'Bitte geben Sie einen gültigen Text ein'}\n </FieldMessage>\n )}\n </React.Fragment>\n );\n};\n\nconst Content: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n const addWrapper =\n typeof children === 'string' || children instanceof String;\n\n if (addWrapper) return <span>{children}</span>;\n return <React.Fragment>{children}</React.Fragment>;\n};\n\nexport default {\n View: FieldWrapper,\n Head: Head,\n Messages: Messages,\n Content: Content,\n};\n","import { DefaultTheme } from 'styled-components';\n\nimport { getFonts as font } from 'utils/styles';\nimport { clampValue } from './clamp';\n\nexport const getFormFieldTextSize = (\n theme: DefaultTheme\n): [number, number?] => {\n const min = clampValue(font(theme).copy.small.size[0], 16);\n const max = font(theme).copy.small.size[1];\n return [min, max];\n};\n","import React, { FC, useCallback, useEffect, useRef, useState } from 'react';\nimport styled from 'styled-components';\n\nimport Copy, { copyStyle } from 'components/typography/Copy';\nimport {\n getColors as color,\n getFonts as font,\n spacings,\n getGlobals as global,\n withRange,\n} from 'utils/styles';\nimport FieldWrapper from './FormField';\nimport { getFormFieldTextSize } from 'utils/formFieldText';\nimport useLeafletMap, { LeafletMapMarker } from 'utils/useLeafletMap';\nimport LocationPin from 'components/base/icons/LocationPin';\nimport { getSVGDataImg } from 'utils/dataURI';\nimport { LocationIcon } from 'components/sections/Map';\nimport { useLibTheme } from 'utils/LibThemeProvider';\nimport { LeafletMouseEvent } from 'leaflet';\nimport useLazyInput from 'utils/useLazyInput';\nimport useUpdateEffect from 'utils/useUpdateEffect';\nimport useGeolocation from 'utils/useGeolocation';\nimport * as Icons from 'components/base/icons/Icons';\n\nconst MapWrapper = styled.div<{ isVisible?: boolean }>`\n display: ${({ isVisible }) => (isVisible ? 'block' : 'none')};\n position: relative;\n`;\n\nconst MapContainer = styled.div`\n position: relative;\n width: 100%;\n height: 290px;\n z-index: 0;\n outline: none;\n`;\n\nconst ViewToggle = styled.button`\n display: flex;\n flex-direction: row;\n align-items: center;\n background: none;\n border: none;\n padding: ${spacings.nudge}px 0;\n padding-bottom: ${spacings.nudge * 2}px;\n\n cursor: pointer;\n\n & > * + * {\n margin-left: ${spacings.nudge * 2}px;\n }\n`;\n\nconst ToggleText = styled(Copy)`\n line-height: 1;\n`;\n\nconst ResetMap = styled.div`\n position: absolute;\n top: ${spacings.nudge}px;\n right: ${spacings.nudge}px;\n`;\n\nconst ResetMapControl = styled.button`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n background: none;\n border: 0;\n padding: ${spacings.nudge}px;\n margin-top: -${spacings.nudge}px;\n margin-right: -${spacings.nudge}px;\n\n cursor: pointer;\n transition: color 0.2s ease-in-out;\n\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n color: ${({ theme }) => color(theme).primary.default};\n }\n }\n\n &:focus {\n outline: 1px solid ${({ theme }) => color(theme).primary.default};\n outline-offset: 0;\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n }\n`;\n\nconst TrackLocation = styled.div`\n position: absolute;\n bottom: ${spacings.nudge * 2}px;\n right: ${spacings.nudge}px;\n`;\n\nconst TrackLocationControl = styled.button`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n background: ${({ theme }) => color(theme).elementBg.dark};\n border: none;\n padding: 0.7em;\n min-height: 40px;\n\n ${copyStyle('copy', 'small')}\n color: ${({ theme }) => font(theme).copy.small.colorInverted};\n cursor: pointer;\n\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n box-shadow: 0px 8px 16px rgba(0, 0, 0, 0.25);\n }\n }\n\n &:focus {\n text-decoration: underline;\n box-shadow: 0px 8px 16px rgba(0, 0, 0, 0.25);\n }\n\n &:focus:not(:focus-visible) {\n text-decoration: none;\n outline: none;\n box-shadow: none;\n }\n\n &:active {\n box-shadow: 0px 2px 6px rgba(0, 0, 0, 0.3);\n }\n`;\n\nconst FieldView = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n\n & > * + * {\n margin-left: 16px;\n }\n`;\n\nconst Area = styled.textarea<{\n isInverted?: boolean;\n hasError?: boolean;\n isDisabled?: boolean;\n hasBack?: boolean;\n}>`\n display: block;\n outline: none;\n width: 100%;\n min-height: 100px;\n box-shadow: none;\n border-radius: 0px;\n -webkit-appearance: none;\n\n resize: none;\n\n padding: ${spacings.nudge}px;\n\n border: 1px solid\n ${({ theme, isInverted, hasError }) => {\n if (isInverted) {\n return hasError\n ? color(theme).errorInverted\n : color(theme).elementBg.light;\n }\n return hasError ? color(theme).error : color(theme).elementBg.dark;\n }};\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n\n background: transparent;\n\n ${copyStyle('copy', 'small')}\n /** Clamping min font size to 16px to prevent browser zooming */\n ${({ theme }) => withRange(getFormFieldTextSize(theme), 'font-size')}\n \n color: ${({ theme, isInverted, hasError }) => {\n if (isInverted) {\n return hasError\n ? color(theme).text.errorInverted\n : font(theme).copy.small.colorInverted;\n }\n return hasError\n ? color(theme).text.error\n : font(theme).copy.small.color;\n }};\n\n &:active {\n border: ${({ theme, isInverted }) =>\n `1px solid ${\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default\n }`};\n }\n\n &:focus {\n outline: ${({ theme, isInverted }) =>\n `1px solid ${\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default\n }`};\n outline-offset: 0;\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n }\n\n &::placeholder {\n color: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).text.subtileInverted\n : color(theme).text.subtile};\n }\n`;\n\nexport interface LocationProps {\n city?: string;\n street?: string;\n streetNumber?: string;\n postal?: string;\n country?: string;\n}\n\nexport interface LocationData {\n description: string;\n position?: [number, number];\n}\n\nexport interface LocationFieldProps {\n enableMemo?: boolean;\n label?: string;\n errorMessage?: string;\n infoMessage?: string;\n isRequired?: boolean;\n isDisabled?: boolean;\n isInverted?: boolean;\n name?: string;\n placeholder?: string;\n value?: LocationData;\n /** Position of map if no value with position data is defined */\n initialMapCenter?: [number, number];\n marker?: LocationIcon;\n zoom?: number;\n onChange?: (value: LocationData) => void;\n onBlur?: (value: LocationData) => void;\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 toggleLabel?: string;\n trackLocationLabel?: string;\n}\n\nconst LocationField: FC<LocationFieldProps> = ({\n label,\n errorMessage,\n infoMessage,\n isRequired,\n isDisabled,\n isInverted,\n placeholder,\n value,\n name,\n marker,\n initialMapCenter,\n zoom = 10,\n onChange,\n onBlur,\n customToggle,\n customLocationControl,\n customResetControl,\n toggleLabel = 'Select location on map',\n trackLocationLabel = 'My location',\n}) => {\n if (isDisabled) {\n errorMessage = '';\n }\n\n const { colors, fonts } = useLibTheme();\n\n const [useMapView, setUseMapView] = useState<boolean>(false);\n const [getValue, setValue] = useState<LocationData>(\n value || { description: '' }\n );\n const prevValue = useRef<LocationData | null>(null);\n const [markers, setMarkers] = useState<LeafletMapMarker[]>([]);\n\n const {\n value: descValue,\n update: setDescValue,\n forceUpdate,\n } = useLazyInput((value) => {\n setValue({\n description: value,\n position: undefined,\n });\n }, value?.description || '');\n\n const getMarkersFromPositions = useCallback(\n (positions: Array<[number, number]>) => {\n /** Markers */\n const defaultMarker: LocationIcon = {\n size: [28, 28],\n anchor: [14, 28],\n sizeActive: [70, 70],\n anchorActive: [35, 70],\n url: getSVGDataImg(<LocationPin />),\n };\n const markerList: LeafletMapMarker[] = [];\n\n for (const position of positions) {\n markerList.push({\n id: 'location',\n position: position,\n icon: marker || defaultMarker,\n });\n }\n\n return markerList;\n },\n [marker]\n );\n\n const {\n setContainer: setMapContainer,\n flyToPosition,\n recalculateMapSize,\n } = useLeafletMap({\n activeMarkerId: 'location',\n markers: markers,\n center: initialMapCenter,\n zoom: zoom,\n onClick: (ev) => {\n mapClickHandler(ev);\n },\n });\n\n // double click fix\n const doubleClickTimerRef = useRef<number | null>(null);\n\n const {\n isSupported: isGeolocationSupported,\n isEnabled,\n location,\n error,\n reset: resetLocationTracking,\n cancel: cancelGeolocation,\n } = useGeolocation(true, false);\n\n const setMapToInitial = useCallback(() => {\n flyToPosition(initialMapCenter, zoom);\n cancelGeolocation();\n }, [cancelGeolocation, flyToPosition, initialMapCenter, zoom]);\n\n const handleMapClick = (newPos: [number, number]) => {\n cancelGeolocation();\n\n // set marker\n const markers = getMarkersFromPositions([newPos]);\n setMarkers(markers);\n setValue({\n description: '',\n position: newPos,\n });\n };\n\n const handleTrackClick = () => {\n // if we have old location set marker, map and value\n setToCurrentLocation();\n resetLocationTracking();\n };\n\n const mapClickHandler = (ev: LeafletMouseEvent) => {\n const newPos: [number, number] = [ev.latlng.lat, ev.latlng.lng];\n\n if (doubleClickTimerRef.current === null) {\n doubleClickTimerRef.current = window.setTimeout(() => {\n handleMapClick(newPos);\n doubleClickTimerRef.current = null;\n }, 300);\n } else {\n window.clearTimeout(doubleClickTimerRef.current);\n doubleClickTimerRef.current = null;\n }\n };\n\n const setToCurrentLocation = useCallback(() => {\n if (!location) return;\n\n const newPos: [number, number] = [\n location.coords.latitude,\n location.coords.longitude,\n ];\n\n const marker = getMarkersFromPositions([newPos]);\n setMarkers(marker);\n flyToPosition(newPos, 14);\n\n setValue({\n description: '',\n position: newPos,\n });\n }, [flyToPosition, getMarkersFromPositions, location]);\n\n const toggleViewState = () => {\n setUseMapView((prev) => !prev);\n };\n\n useEffect(() => {\n if (isEnabled && location && !error) {\n setToCurrentLocation();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [error, location, isEnabled]);\n\n useEffect(() => {\n setValue({ description: '', position: undefined });\n\n // recalculate map on view change\n if (useMapView) {\n recalculateMapSize();\n setDescValue('');\n } else {\n setMarkers([]);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [useMapView, recalculateMapSize, descValue]);\n\n useUpdateEffect(() => {\n const prev = prevValue.current;\n if (\n !prev ||\n prev.description !== getValue.description ||\n prev.position?.[0] !== getValue.position?.[0] ||\n prev.position?.[1] !== getValue.position?.[1]\n ) {\n prevValue.current = getValue;\n onChange?.(getValue);\n }\n }, [getValue]);\n\n return (\n <React.Fragment>\n {name && (\n <input\n type=\"hidden\"\n name={`${name}[\"location\"]`}\n value={`${getValue?.position?.[0]},${getValue?.position?.[1]}`}\n />\n )}\n\n <FieldWrapper.View\n isDisabled={isDisabled}\n onClick={(ev) => ev.preventDefault()}\n >\n <FieldWrapper.Head\n label={label}\n isRequired={isRequired}\n isInverted={isInverted}\n />\n {customToggle ? (\n customToggle({\n isInverted,\n viewState: useMapView ? 'map' : 'desc',\n handleClick: toggleViewState,\n })\n ) : (\n <ViewToggle type=\"button\" onClick={toggleViewState}>\n {useMapView ? (\n <Icons.ToggleOn\n iconColor={\n isInverted\n ? colors.primary.inverted\n : colors.primary.default\n }\n />\n ) : (\n <Icons.ToggleOff\n iconColor={\n isInverted\n ? fonts.copy.small.colorInverted\n : fonts.copy.small.color\n }\n />\n )}\n <ToggleText\n size=\"small\"\n renderAs=\"span\"\n isInverted={isInverted}\n >\n {toggleLabel}\n </ToggleText>\n </ViewToggle>\n )}\n\n <MapWrapper isVisible={useMapView}>\n <MapContainer\n ref={setMapContainer}\n tabIndex={0}\n onClick={() => {\n forceUpdate();\n onBlur?.(getValue);\n }}\n />\n <ResetMap>\n {customResetControl ? (\n customResetControl({\n isInverted,\n handleClick: setMapToInitial,\n })\n ) : (\n <ResetMapControl onClick={setMapToInitial}>\n <Icons.LocationSearch />\n </ResetMapControl>\n )}\n </ResetMap>\n {isGeolocationSupported && (\n <TrackLocation>\n {customLocationControl ? (\n customLocationControl({\n isInverted,\n handleClick: handleTrackClick,\n })\n ) : (\n <TrackLocationControl\n onClick={handleTrackClick}\n >\n {trackLocationLabel}\n </TrackLocationControl>\n )}\n </TrackLocation>\n )}\n </MapWrapper>\n {!useMapView && (\n <React.Fragment>\n <FieldView>\n <FieldWrapper.Content>\n <Area\n placeholder={placeholder}\n hasError={!!errorMessage}\n isInverted={isInverted}\n name={`${name}[\"description\"]`}\n value={descValue}\n required={isRequired}\n onChange={(ev) => {\n const value = ev.currentTarget.value;\n setDescValue(value);\n }}\n onBlur={() => {\n forceUpdate();\n onBlur?.(getValue);\n }}\n />\n </FieldWrapper.Content>\n </FieldView>\n </React.Fragment>\n )}\n <FieldWrapper.Messages\n infoMessage={infoMessage}\n errorMessage={errorMessage}\n isInverted={isInverted}\n />\n </FieldWrapper.View>\n </React.Fragment>\n );\n};\n\n/**\n * Function to compare both field prop states\n * @param prev Previous props\n * @param next Next props\n * @returns\n */\nconst areEqual = (prev: LocationFieldProps, next: LocationFieldProps) => {\n // only apply logic if memo functionality is enabled\n if (!prev.enableMemo) return false;\n\n if (prev.errorMessage !== next.errorMessage) return false;\n if (prev.infoMessage !== next.infoMessage) return false;\n if (prev.label !== next.label) return false;\n if (prev.toggleLabel !== next.toggleLabel) return false;\n if (prev.placeholder !== next.placeholder) return false;\n if (prev.value?.description !== next.value?.description) return false;\n if (\n prev.value?.position?.[0] !== next.value?.position?.[0] ||\n prev.value?.position?.[1] !== next.value?.position?.[1]\n ) {\n return false;\n }\n\n return true;\n};\n\nexport default React.memo(LocationField, areEqual);\n","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n\n var number = Number(dirtyNumber);\n\n if (isNaN(number)) {\n return number;\n }\n\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\n\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument); // Clone the date\n\n if (argument instanceof Date || typeof argument === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule\"); // eslint-disable-next-line no-console\n\n console.warn(new Error().stack);\n }\n\n return new Date(NaN);\n }\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\n\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\n\nexport default function isDate(value) {\n requiredArgs(1, arguments);\n return value instanceof Date || typeof value === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now `isValid` doesn't throw an exception\n * if the first argument is not an instance of Date.\n * Instead, argument is converted beforehand using `toDate`.\n *\n * Examples:\n *\n * | `isValid` argument | Before v2.0.0 | v2.0.0 onward |\n * |---------------------------|---------------|---------------|\n * | `new Date()` | `true` | `true` |\n * | `new Date('2016-01-01')` | `true` | `true` |\n * | `new Date('')` | `false` | `false` |\n * | `new Date(1488370835081)` | `true` | `true` |\n * | `new Date(NaN)` | `false` | `false` |\n * | `'2016-01-01'` | `TypeError` | `false` |\n * | `''` | `TypeError` | `false` |\n * | `1488370835081` | `TypeError` | `true` |\n * | `NaN` | `TypeError` | `false` |\n *\n * We introduce this change to make *date-fns* consistent with ECMAScript behavior\n * that try to coerce arguments to the expected type\n * (which is also the case with other *date-fns* functions).\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\n\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n\n if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n\n var date = toDate(dirtyDate);\n return !isNaN(Number(date));\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\n\nvar formatDistance = function (token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n\n return result;\n};\n\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\n\nvar formatRelative = function (token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\n\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, dirtyOptions) {\n var options = dirtyOptions || {};\n var context = options.context ? String(options.context) : 'standalone';\n var valuesArray;\n\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n\n var _width = options.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex; // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n\n return valuesArray[index];\n };\n}","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n}; // Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\n\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\n\nvar ordinalNumber = function (dirtyNumber, _options) {\n var number = Number(dirtyNumber); // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n\n case 2:\n return number + 'nd';\n\n case 3:\n return number + 'rd';\n }\n }\n\n return number + 'th';\n};\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function (quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","export default function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\n\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n\n return undefined;\n}","export default function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function (value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function (index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0\n /* Sunday */\n ,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\n\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeek(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeekYear(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, dirtyOptions);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, dirtyOptions);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeekYear(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate);\n var year = getUTCWeekYear(dirtyDate, dirtyOptions);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, dirtyOptions);\n return date;\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n\n while (output.length < targetLength) {\n output = '0' + output;\n }\n\n return sign + output;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nvar formatters = {\n // Year\n y: function (date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function (date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function (date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function (date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n\n case 'aaa':\n return dayPeriodEnumValue;\n\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function (date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function (date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function (date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function (date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function (date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function (date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; // Two digit year\n\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n } // Ordinal number\n\n\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n } // Padding\n\n\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function (date, token) {\n var isoWeekYear = getUTCISOWeekYear(date); // Padding\n\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function (date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function (date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function (date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function (date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function (date, token, localize, options) {\n var week = getUTCWeek(date, options);\n\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function (date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function (date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function (date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function (date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function (date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function (date, token, localize) {\n var hours = date.getUTCHours() % 12;\n\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function (date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function (date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n\n return lightFormatters.m(date, token);\n },\n // Second\n s: function (date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return 'Z';\n }\n\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\n\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n\n if (minutes === 0) {\n return sign + String(hours);\n }\n\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n\n return formatTimezone(offset, dirtyDelimiter);\n}\n\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n\nexport default formatters;","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n}\n\nfunction timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n}\n\nfunction dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n var dateTimeFormat;\n\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n}\n\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n }\n}","import isValid from \"../isValid/index.js\";\nimport defaultLocale from \"../locale/en-US/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The second argument is now required for the sake of explicitness.\n *\n * ```javascript\n * // Before v2.0.0\n * format(new Date(2016, 0, 1))\n *\n * // v2.0.0 onward\n * format(new Date(2016, 0, 1), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\n * ```\n *\n * - New format string API for `format` function\n * which is based on [Unicode Technical Standard #35](https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table).\n * See [this post](https://blog.date-fns.org/post/unicode-tokens-in-date-fns-v2-sreatyki91jg) for more details.\n *\n * - Characters are now escaped using single quote symbols (`'`) instead of square brackets.\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://git.io/fxCyr\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * var result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var options = dirtyOptions || {};\n var locale = options.locale || defaultLocale;\n var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n\n var originalDate = toDate(dirtyDate);\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n\n\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong, formatterOptions);\n }\n\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n\n var firstCharacter = substring[0];\n\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n\n var formatter = formatters[firstCharacter];\n\n if (formatter) {\n if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, dirtyDate);\n }\n\n if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, dirtyDate);\n }\n\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n\n return substring;\n }).join('');\n return result;\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isEqual\n * @category Common Helpers\n * @summary Are the given dates equal?\n *\n * @description\n * Are the given dates equal?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Boolean} the dates are equal\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?\n * var result = isEqual(\n * new Date(2014, 6, 2, 6, 30, 45, 0),\n * new Date(2014, 6, 2, 6, 30, 45, 500)\n * )\n * //=> false\n */\n\nexport default function isEqual(dirtyLeftDate, dirtyRightDate) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyLeftDate);\n var dateRight = toDate(dirtyRightDate);\n return dateLeft.getTime() === dateRight.getTime();\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n standalone: {\n one: 'weniger als 1 Sekunde',\n other: 'weniger als {{count}} Sekunden'\n },\n withPreposition: {\n one: 'weniger als 1 Sekunde',\n other: 'weniger als {{count}} Sekunden'\n }\n },\n xSeconds: {\n standalone: {\n one: '1 Sekunde',\n other: '{{count}} Sekunden'\n },\n withPreposition: {\n one: '1 Sekunde',\n other: '{{count}} Sekunden'\n }\n },\n halfAMinute: {\n standalone: 'halbe Minute',\n withPreposition: 'halben Minute'\n },\n lessThanXMinutes: {\n standalone: {\n one: 'weniger als 1 Minute',\n other: 'weniger als {{count}} Minuten'\n },\n withPreposition: {\n one: 'weniger als 1 Minute',\n other: 'weniger als {{count}} Minuten'\n }\n },\n xMinutes: {\n standalone: {\n one: '1 Minute',\n other: '{{count}} Minuten'\n },\n withPreposition: {\n one: '1 Minute',\n other: '{{count}} Minuten'\n }\n },\n aboutXHours: {\n standalone: {\n one: 'etwa 1 Stunde',\n other: 'etwa {{count}} Stunden'\n },\n withPreposition: {\n one: 'etwa 1 Stunde',\n other: 'etwa {{count}} Stunden'\n }\n },\n xHours: {\n standalone: {\n one: '1 Stunde',\n other: '{{count}} Stunden'\n },\n withPreposition: {\n one: '1 Stunde',\n other: '{{count}} Stunden'\n }\n },\n xDays: {\n standalone: {\n one: '1 Tag',\n other: '{{count}} Tage'\n },\n withPreposition: {\n one: '1 Tag',\n other: '{{count}} Tagen'\n }\n },\n aboutXWeeks: {\n standalone: {\n one: 'etwa 1 Woche',\n other: 'etwa {{count}} Wochen'\n },\n withPreposition: {\n one: 'etwa 1 Woche',\n other: 'etwa {{count}} Wochen'\n }\n },\n xWeeks: {\n standalone: {\n one: '1 Woche',\n other: '{{count}} Wochen'\n },\n withPreposition: {\n one: '1 Woche',\n other: '{{count}} Wochen'\n }\n },\n aboutXMonths: {\n standalone: {\n one: 'etwa 1 Monat',\n other: 'etwa {{count}} Monate'\n },\n withPreposition: {\n one: 'etwa 1 Monat',\n other: 'etwa {{count}} Monaten'\n }\n },\n xMonths: {\n standalone: {\n one: '1 Monat',\n other: '{{count}} Monate'\n },\n withPreposition: {\n one: '1 Monat',\n other: '{{count}} Monaten'\n }\n },\n aboutXYears: {\n standalone: {\n one: 'etwa 1 Jahr',\n other: 'etwa {{count}} Jahre'\n },\n withPreposition: {\n one: 'etwa 1 Jahr',\n other: 'etwa {{count}} Jahren'\n }\n },\n xYears: {\n standalone: {\n one: '1 Jahr',\n other: '{{count}} Jahre'\n },\n withPreposition: {\n one: '1 Jahr',\n other: '{{count}} Jahren'\n }\n },\n overXYears: {\n standalone: {\n one: 'mehr als 1 Jahr',\n other: 'mehr als {{count}} Jahre'\n },\n withPreposition: {\n one: 'mehr als 1 Jahr',\n other: 'mehr als {{count}} Jahren'\n }\n },\n almostXYears: {\n standalone: {\n one: 'fast 1 Jahr',\n other: 'fast {{count}} Jahre'\n },\n withPreposition: {\n one: 'fast 1 Jahr',\n other: 'fast {{count}} Jahren'\n }\n }\n};\n\nvar formatDistance = function (token, count, options) {\n var result;\n var tokenValue = options !== null && options !== void 0 && options.addSuffix ? formatDistanceLocale[token].withPreposition : formatDistanceLocale[token].standalone;\n\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', String(count));\n }\n\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return 'vor ' + result;\n }\n }\n\n return result;\n};\n\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\n// DIN 5008: https://de.wikipedia.org/wiki/Datumsformat#DIN_5008\nvar dateFormats = {\n full: 'EEEE, do MMMM y',\n // Montag, 7. Januar 2018\n long: 'do MMMM y',\n // 7. Januar 2018\n medium: 'do MMM y',\n // 7. Jan. 2018\n short: 'dd.MM.y' // 07.01.2018\n\n};\nvar timeFormats = {\n full: 'HH:mm:ss zzzz',\n long: 'HH:mm:ss z',\n medium: 'HH:mm:ss',\n short: 'HH:mm'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'um' {{time}}\",\n long: \"{{date}} 'um' {{time}}\",\n medium: '{{date}} {{time}}',\n short: '{{date}} {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'letzten' eeee 'um' p\",\n yesterday: \"'gestern um' p\",\n today: \"'heute um' p\",\n tomorrow: \"'morgen um' p\",\n nextWeek: \"eeee 'um' p\",\n other: 'P'\n};\n\nvar formatRelative = function (token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\n\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['v.Chr.', 'n.Chr.'],\n abbreviated: ['v.Chr.', 'n.Chr.'],\n wide: ['vor Christus', 'nach Christus']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1. Quartal', '2. Quartal', '3. Quartal', '4. Quartal']\n}; // Note: in German, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\n\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'],\n wide: ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember']\n}; // https://st.unicode.org/cldr-apps/v#/de/Gregorian/\n\nvar formattingMonthValues = {\n narrow: monthValues.narrow,\n abbreviated: ['Jan.', 'Feb.', 'März', 'Apr.', 'Mai', 'Juni', 'Juli', 'Aug.', 'Sep.', 'Okt.', 'Nov.', 'Dez.'],\n wide: monthValues.wide\n};\nvar dayValues = {\n narrow: ['S', 'M', 'D', 'M', 'D', 'F', 'S'],\n short: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],\n abbreviated: ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'],\n wide: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag']\n}; // https://www.unicode.org/cldr/charts/32/summary/de.html#1881\n\nvar dayPeriodValues = {\n narrow: {\n am: 'vm.',\n pm: 'nm.',\n midnight: 'Mitternacht',\n noon: 'Mittag',\n morning: 'Morgen',\n afternoon: 'Nachm.',\n evening: 'Abend',\n night: 'Nacht'\n },\n abbreviated: {\n am: 'vorm.',\n pm: 'nachm.',\n midnight: 'Mitternacht',\n noon: 'Mittag',\n morning: 'Morgen',\n afternoon: 'Nachmittag',\n evening: 'Abend',\n night: 'Nacht'\n },\n wide: {\n am: 'vormittags',\n pm: 'nachmittags',\n midnight: 'Mitternacht',\n noon: 'Mittag',\n morning: 'Morgen',\n afternoon: 'Nachmittag',\n evening: 'Abend',\n night: 'Nacht'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'vm.',\n pm: 'nm.',\n midnight: 'Mitternacht',\n noon: 'Mittag',\n morning: 'morgens',\n afternoon: 'nachm.',\n evening: 'abends',\n night: 'nachts'\n },\n abbreviated: {\n am: 'vorm.',\n pm: 'nachm.',\n midnight: 'Mitternacht',\n noon: 'Mittag',\n morning: 'morgens',\n afternoon: 'nachmittags',\n evening: 'abends',\n night: 'nachts'\n },\n wide: {\n am: 'vormittags',\n pm: 'nachmittags',\n midnight: 'Mitternacht',\n noon: 'Mittag',\n morning: 'morgens',\n afternoon: 'nachmittags',\n evening: 'abends',\n night: 'nachts'\n }\n};\n\nvar ordinalNumber = function (dirtyNumber) {\n var number = Number(dirtyNumber);\n return number + '.';\n};\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function (quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n formattingValues: formattingMonthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(\\.)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(v\\.? ?Chr\\.?|n\\.? ?Chr\\.?)/i,\n abbreviated: /^(v\\.? ?Chr\\.?|n\\.? ?Chr\\.?)/i,\n wide: /^(vor Christus|vor unserer Zeitrechnung|nach Christus|unserer Zeitrechnung)/i\n};\nvar parseEraPatterns = {\n any: [/^v/i, /^n/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](\\.)? Quartal/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(j[aä]n|feb|mär[z]?|apr|mai|jun[i]?|jul[i]?|aug|sep|okt|nov|dez)\\.?/i,\n wide: /^(januar|februar|märz|april|mai|juni|juli|august|september|oktober|november|dezember)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^j[aä]/i, /^f/i, /^mär/i, /^ap/i, /^mai/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smdmf]/i,\n short: /^(so|mo|di|mi|do|fr|sa)/i,\n abbreviated: /^(son?|mon?|die?|mit?|don?|fre?|sam?)\\.?/i,\n wide: /^(sonntag|montag|dienstag|mittwoch|donnerstag|freitag|samstag)/i\n};\nvar parseDayPatterns = {\n any: [/^so/i, /^mo/i, /^di/i, /^mi/i, /^do/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(vm\\.?|nm\\.?|Mitternacht|Mittag|morgens|nachm\\.?|abends|nachts)/i,\n abbreviated: /^(vorm\\.?|nachm\\.?|Mitternacht|Mittag|morgens|nachm\\.?|abends|nachts)/i,\n wide: /^(vormittags|nachmittags|Mitternacht|Mittag|morgens|nachmittags|abends|nachts)/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^v/i,\n pm: /^n/i,\n midnight: /^Mitte/i,\n noon: /^Mitta/i,\n morning: /morgens/i,\n afternoon: /nachmittags/i,\n // will never be matched. Afternoon is matched by `pm`\n evening: /abends/i,\n night: /nachts/i // will never be matched. Night is matched by `pm`\n\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function (value) {\n return parseInt(value);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function (index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n\n/**\n * @type {Locale}\n * @category Locales\n * @summary German locale.\n * @language German\n * @iso-639-2 deu\n * @author Thomas Eilmsteiner [@DeMuu]{@link https://github.com/DeMuu}\n * @author Asia [@asia-t]{@link https://github.com/asia-t}\n * @author Van Vuong Ngo [@vanvuongngo]{@link https://github.com/vanvuongngo}\n * @author RomanErnst [@pex]{@link https://github.com/pex}\n * @author Philipp Keck [@Philipp91]{@link https://github.com/Philipp91}\n */\nvar locale = {\n code: 'de',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1\n /* Monday */\n ,\n firstWeekContainsDate: 4\n }\n};\nexport default locale;","import * as React from 'react';\nimport styled, { css } from 'styled-components';\nimport { hexToRgba } from 'utils/hexRgbConverter';\n\nimport {\n getColors as color,\n getFonts as font,\n getGlobals as global,\n spacings,\n withRange,\n} from 'utils/styles';\n\nconst View = styled.a<{\n inverted?: boolean;\n disable?: boolean;\n size?: 'default' | 'small';\n}>`\n min-height: 3em;\n height: ${({ size }) => (size === 'default' ? '3.5em' : '3em')};\n min-width: ${({ size }) => (size === 'default' ? '200px' : '120px')};\n padding: 0.1em 1.2em;\n\n max-width: calc(100% - ${spacings.spacer}px);\n\n display: inline-flex;\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: center;\n align-items: center;\n\n vertical-align: middle;\n\n font-family: ${({ theme }) => font(theme).copy.medium.family};\n ${({ theme }) => withRange(font(theme).copy.medium.size, 'font-size')}\n font-weight: ${({ theme }) => font(theme).copy.medium.weight};\n line-height: 1;\n letter-spacing: ${({ theme }) => font(theme).copy.medium.letterSpacing};\n\n text-align: center;\n text-decoration: none;\n\n outline: none;\n box-shadow: none;\n border: solid 1px\n ${({ inverted, disable, theme }) =>\n disable\n ? color(theme).elementBg.medium\n : inverted\n ? color(theme).elementBg.light\n : color(theme).elementBg.dark};\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n user-select: none;\n cursor: pointer;\n\n pointer-events: ${({ disable }) => (disable ? 'none' : 'all')};\n\n background-color: transparent;\n color: ${({ theme, inverted, disable }) =>\n disable\n ? inverted\n ? hexToRgba(color(theme).text.inverted, 0.6)\n : hexToRgba(color(theme).text.default, 0.6)\n : inverted\n ? color(theme).text.inverted\n : color(theme).text.default};\n\n transition: all ease-in-out 0.2s;\n\n & > * {\n color: ${({ theme, inverted, disable }) =>\n disable\n ? inverted\n ? hexToRgba(color(theme).text.inverted, 0.6)\n : hexToRgba(color(theme).text.default, 0.6)\n : inverted\n ? color(theme).text.inverted\n : color(theme).text.default};\n }\n\n & > :not(:last-child) {\n padding-right: ${spacings.nudge}px;\n }\n\n @media (hover: hover) and (pointer: fine) {\n ${({ disable, inverted, theme }) =>\n !disable &&\n css`\n &:hover {\n box-shadow: 0px 8px 16px\n ${inverted\n ? 'rgba(255, 255, 255, 0.25)'\n : 'rgba(0, 0, 0, 0.25)'};\n }\n\n &:focus {\n outline: 1px solid\n ${inverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n outline-offset: 0;\n box-shadow: 0px 2px 6px\n ${inverted\n ? 'rgba(255, 255, 255, 0.25)'\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 ${inverted\n ? 'rgba(255, 255, 255, 0.25)'\n : 'rgba(0, 0, 0, 0.3)'};\n }\n `}\n }\n`;\n\ninterface Props {\n size?: 'default' | 'small';\n isInverted?: boolean;\n isDisabled?: boolean;\n className?: string;\n children?: React.ReactNode;\n}\n\nexport type BtnProps = Props & {\n as?: 'button';\n onClick?: (ev: React.SyntheticEvent<HTMLButtonElement>) => void;\n};\n\nexport type LinkProps = Props & {\n as?: 'a';\n href?: string;\n onClick?: (ev: React.SyntheticEvent<HTMLAnchorElement>) => void;\n isExternal?: boolean;\n};\n\nconst ButtonGhost: React.FC<BtnProps | LinkProps> = React.forwardRef(\n (\n {\n as,\n size = 'default',\n isInverted,\n isDisabled,\n onClick,\n className,\n children,\n ...rest\n },\n ref\n ) => {\n if (as === 'button') {\n return (\n <View\n ref={ref}\n as={as as any}\n size={size}\n inverted={isInverted}\n disable={isDisabled}\n onClick={onClick}\n className={className}\n {...rest}\n >\n {children}\n </View>\n );\n } else {\n return (\n <View\n ref={ref}\n as={as as any}\n aria-disabled={isDisabled}\n size={size}\n href={(rest as LinkProps).href}\n target={\n (rest as LinkProps).isExternal ? '_blank' : undefined\n }\n rel={\n (rest as LinkProps).isExternal\n ? 'noopener noreferrer'\n : undefined\n }\n inverted={isInverted}\n disable={isDisabled}\n onClick={onClick}\n className={className}\n {...rest}\n >\n {children}\n </View>\n );\n }\n }\n);\n\nButtonGhost.displayName = 'Button Ghost';\n\nconst Icon = styled.div<{ iconColor?: string }>`\n display: flex;\n flex-direction: row;\n justify-content: flex-end;\n align-items: center;\n width: 35px;\n height: 35px;\n\n color: ${({ iconColor }) => iconColor || 'inherit'};\n\n transition: transform 0.2s ease-in-out;\n\n ${View}:hover > & {\n transform: translateX(3px);\n }\n`;\n\nconst Label = styled.span`\n display: inline-block;\n\n max-width: 100%;\n\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n`;\n\nexport default { View: ButtonGhost, Label: Label, Icon: Icon };\n","import React, {\n useState,\n useEffect,\n useRef,\n forwardRef,\n useCallback,\n} from 'react';\nimport styled from 'styled-components';\n\nimport {\n getColors as color,\n getFonts as font,\n mq,\n spacings,\n getGlobals as global,\n withRange,\n} from 'utils/styles';\nimport { format, isBefore, isValid } from 'date-fns';\nimport de from 'date-fns/locale/de';\n\nimport ButtonGhost from 'components/buttons/ButtonGhost';\nimport Button from 'components/buttons/Button';\n\nimport { copyStyle } from 'components/typography/Copy';\n\nimport ReactDatePicker from 'react-datepicker';\nimport { hexToRgba } from 'utils/hexRgbConverter';\nimport FieldWrapper from './FormField';\nimport { useLibTheme } from 'utils/LibThemeProvider';\n\nimport * as Icons from 'components/base/icons/Icons';\nimport { getFormFieldTextSize } from 'utils/formFieldText';\nimport { isEqual } from 'date-fns';\n\nconst PickerView = styled.div`\n position: relative;\n width: 100%;\n text-align: left;\n\n .react-datepicker-popper {\n right: ${spacings.spacer * 2}px;\n z-index: 9 !important;\n width: 100%;\n }\n\n @media ${mq.medium} {\n .react-datepicker-popper {\n right: auto;\n width: auto;\n }\n }\n\n .react-datepicker {\n display: flex;\n flex-wrap: wrap;\n font-family: 'Roboto', sans-serif;\n border: 1px solid\n ${({ theme }) => hexToRgba(color(theme).elementBg.dark, 0.2)} !important;\n border-radius: ${({ theme }) =>\n global(theme).sections.edgeRadius || '0px'} !important;\n padding: ${spacings.nudge * 2}px;\n width: 100%;\n\n box-shadow: 0px 3px 9px rgba(0, 0, 0, 0.15);\n }\n\n .react-datepicker-wrapper {\n width: 100% !important;\n }\n\n .react-datepicker__header {\n border: none !important;\n background-color: transparent !important;\n margin: 0 ${spacings.nudge * 3}px;\n }\n\n /* Month */\n .react-datepicker__month-container {\n width: 100%;\n margin-bottom: ${spacings.nudge * 3}px;\n }\n\n @media ${mq.medium} {\n .react-datepicker__month-container {\n max-width: 50%;\n }\n }\n\n .react-datepicker__month {\n margin-left: ${spacings.nudge * 2}px;\n margin-right: ${spacings.nudge * 2}px;\n }\n\n .react-datepicker__current-month {\n font-family: 'Roboto', sans-serif;\n font-weight: 600;\n font-size: 17px;\n line-height: 1.3;\n text-transform: uppercase;\n background-color: ${({ theme }) => color(theme).primary.default};\n padding: 10px 15px;\n color: ${({ theme }) => color(theme).text.inverted} !important;\n width: max-content;\n margin: 0 auto;\n }\n\n /* Day styles */\n\n .react-datepicker__day-names {\n display: flex;\n font-size: 11px;\n line-height: 1.25;\n background: transparent;\n }\n\n @media ${mq.medium} {\n .react-datepicker__day-names {\n display: block;\n }\n }\n\n .react-datepicker__day-name {\n flex: 1 0 auto;\n }\n\n .react-datepicker__week {\n display: flex;\n margin: -2px !important;\n }\n\n @media ${mq.medium} {\n .react-datepicker__week {\n display: block;\n }\n }\n\n .react-datepicker__day {\n flex: 1 0 auto;\n background-color: ${({ theme }) => color(theme).elementBg.light};\n border-radius: 0 !important;\n font-weight: 600;\n\n margin: 2px !important;\n }\n\n @media ${mq.medium} {\n .react-datepicker__day:hover {\n background-color: ${({ theme }) =>\n color(theme).elementBg.dark} !important;\n border-radius: 0 !important;\n color: ${({ theme }) => color(theme).text.inverted};\n }\n }\n\n .react-datepicker__day--outside-month {\n color: ${({ theme }) => color(theme).elementBg.medium} !important;\n cursor: default;\n }\n\n .react-datepicker__day--selected {\n background-color: ${({ theme }) =>\n color(theme).primary.default} !important;\n border-radius: 0 !important;\n color: ${({ theme }) => color(theme).text.inverted};\n }\n\n .react-datepicker__day--today {\n border: 1px solid\n ${({ theme }) => hexToRgba(color(theme).elementBg.dark, 0.6)} !important;\n border-radius: 0 !important;\n }\n\n /* Triangle Styles */\n\n .react-datepicker__triangle:before {\n border-bottom-color: ${({ theme }) =>\n hexToRgba(color(theme).elementBg.dark, 0.2)} !important;\n }\n\n .react-datepicker__triangle:after {\n border-bottom-color: ${({ theme }) =>\n color(theme).elementBg.light} !important;\n }\n\n /* Day Ranges */\n\n .react-datepicker__day--in-range {\n background-color: ${({ theme }) =>\n hexToRgba(color(theme).primary.default, 0.7)} !important;\n }\n\n @media ${mq.medium} {\n .react-datepicker__day--in-range:hover {\n background-color: ${({ theme }) =>\n hexToRgba(color(theme).primary.default, 0.25)} !important;\n }\n }\n\n .react-datepicker__day--range-start {\n background-color: ${({ theme }) =>\n color(theme).primary.default} !important;\n }\n\n @media ${mq.medium} {\n .react-datepicker__day--range-start:hover {\n background-color: ${({ theme }) =>\n hexToRgba(color(theme).primary.default, 0.25)} !important;\n }\n }\n\n .react-datepicker__day--range-end {\n background-color: ${({ theme }) =>\n color(theme).primary.default} !important;\n }\n\n @media ${mq.medium} {\n .react-datepicker__day--range-end:hover {\n background-color: ${({ theme }) =>\n hexToRgba(color(theme).primary.default, 0.25)} !important;\n }\n }\n\n .react-datepicker__day--in-selecting-range {\n background-color: ${({ theme }) =>\n hexToRgba(color(theme).primary.default, 0.7)} !important;\n }\n\n /* Next-/Prev-Arrow */\n .react-datepicker__close-icon {\n display: none !important;\n }\n\n .react-datepicker__navigation {\n top: ${spacings.nudge}px !important;\n }\n\n .react-datepicker__navigation-icon--next::before {\n left: 0 !important;\n }\n\n .react-datepicker__navigation-icon--previous::before {\n left: 0 !important;\n }\n\n .react-datepicker__navigation:focus {\n outline: 1px solid ${({ theme }) => color(theme).primary.default};\n }\n\n /* Keyboard selection */\n .react-datepicker__day--keyboard-selected {\n outline: none;\n background: ${({ theme }) => color(theme).elementBg.dark};\n }\n`;\n\nconst Icon = styled.div<{ isInverted?: boolean }>`\n height: 100%;\n min-width: 24px;\n color: ${({ theme, isInverted }) =>\n isInverted\n ? font(theme).copy.small.colorInverted\n : font(theme).copy.small.color};\n\n & > * {\n height: 20px;\n }\n`;\n\nconst DatepickerButton = styled.button<{\n hasError?: boolean;\n isActive?: boolean;\n isInverted?: boolean;\n hasDateValue?: boolean;\n}>`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n min-height: 40px;\n padding: ${spacings.nudge}px;\n\n border: 1px solid\n ${({ theme, isInverted, hasError }) => {\n if (isInverted) {\n return hasError\n ? color(theme).errorInverted\n : color(theme).elementBg.light;\n }\n return hasError ? color(theme).error : color(theme).elementBg.dark;\n }};\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n\n background: none;\n\n ${copyStyle('copy', 'small')}\n /** Clamping min font size to 16px to prevent browser zooming */\n ${({ theme }) => withRange(getFormFieldTextSize(theme), 'font-size')}\n \n color: ${({ theme, isInverted, hasError, hasDateValue }) => {\n if (isInverted) {\n return hasError\n ? color(theme).text.errorInverted\n : !hasDateValue\n ? color(theme).text.subtileInverted\n : font(theme).copy.small.colorInverted;\n }\n return hasError\n ? color(theme).text.error\n : !hasDateValue\n ? color(theme).text.subtile\n : font(theme).copy.small.color;\n }};\n\n outline: none;\n pointer-events: ${({ isActive }) => (isActive ? 'none' : 'all')};\n\n position: relative;\n\n border: ${({ theme, isInverted, isActive }) =>\n isActive &&\n `1px solid ${\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default\n }`};\n\n &:active {\n border: ${({ theme, isInverted }) =>\n `1px solid ${\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default\n }`};\n }\n\n &:focus {\n outline: ${({ theme, isInverted }) =>\n `1px solid ${\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default\n }`};\n outline-offset: 0;\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n }\n`;\n\nconst DatepickerButtonMain = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n\n & > * + * {\n margin-left: ${spacings.spacer}px;\n }\n`;\n\nconst DatepickerFoot = styled.div`\n display: block;\n width: 100%;\n\n /* margin-top: ${spacings.spacer * 14}px; */\n`;\n\nconst FootFlex = styled.div`\n clear: both;\n display: flex;\n flex-direction: column;\n\n & > * {\n width: 100%;\n }\n\n & > * + * {\n margin-top: ${spacings.spacer * 0.5}px;\n }\n\n @media ${mq.medium} {\n align-items: center;\n flex-direction: row;\n\n & > * {\n width: auto;\n }\n\n & > * + * {\n margin-top: 0;\n margin-left: ${spacings.spacer * 0.5}px;\n }\n }\n`;\n\nconst ButtonLabel = styled(Button.Label)`\n font-size: 12px;\n`;\nconst ButtonGhostLabel = styled(ButtonGhost.Label)`\n font-size: 12px;\n`;\n\ninterface PickerBtnProps {\n label?: string;\n errorMessage?: string;\n infoMessage?: string;\n isRequired?: boolean;\n isDisabled?: boolean;\n isInverted?: boolean;\n isFocused?: boolean;\n name?: string;\n altText?: string;\n startDate?: Date | null | undefined;\n endDate?: Date | null | undefined;\n setFocused: React.Dispatch<React.SetStateAction<boolean>>;\n onClick?: (ev: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;\n dateFormat?: string;\n customIcon?: (props: {\n isInverted?: boolean;\n singleSelect?: boolean;\n }) => React.ReactNode;\n singleSelect?: boolean;\n}\n\nconst PickerButton = forwardRef<HTMLButtonElement, PickerBtnProps>(\n (\n {\n label,\n errorMessage,\n infoMessage,\n isRequired,\n isInverted,\n isDisabled,\n isFocused,\n name,\n altText,\n startDate,\n endDate,\n setFocused,\n onClick,\n dateFormat = 'dd.MM.yyyy',\n customIcon,\n singleSelect,\n },\n ref\n ) => {\n return (\n <FieldWrapper.View isDisabled={isDisabled}>\n <FieldWrapper.Head\n label={label}\n isRequired={isRequired}\n isInverted={isInverted}\n />\n <FieldWrapper.Content>\n <DatepickerButton\n ref={ref}\n type=\"button\"\n onClick={(e) => {\n setFocused && setFocused(true);\n onClick && onClick(e);\n }}\n isActive={isFocused}\n hasDateValue={!!startDate}\n isInverted={isInverted}\n hasError={!!errorMessage}\n className=\"myPickerButton\"\n >\n <DatepickerButtonMain>\n {startDate\n ? `${format(startDate, dateFormat)}${\n endDate\n ? ` – ${format(endDate, dateFormat)}`\n : ''\n }`\n : altText}\n </DatepickerButtonMain>\n <Icon isInverted={isInverted}>\n {customIcon ? (\n customIcon({ isInverted, singleSelect })\n ) : singleSelect ? (\n <Icons.CalendarToday />\n ) : (\n <Icons.DateRange />\n )}\n </Icon>\n </DatepickerButton>\n {name && (\n <>\n <input\n type=\"hidden\"\n name={`${name}[\"start\"]`}\n value={startDate?.toString()}\n />\n <input\n type=\"hidden\"\n name={`${name}[\"end\"]`}\n value={endDate?.toString()}\n />\n </>\n )}\n </FieldWrapper.Content>\n <FieldWrapper.Messages\n infoMessage={infoMessage}\n errorMessage={errorMessage}\n isInverted={isInverted}\n />\n </FieldWrapper.View>\n );\n }\n);\nPickerButton.displayName = 'PickerButton';\n\nconst PickerHeader = styled.div`\n margin-bottom: ${spacings.nudge * 3}px;\n`;\n\nconst getPickerHeader =\n (\n locale: string,\n prevMonthAction?: React.ReactNode,\n nextMonthAction?: React.ReactNode\n ) =>\n // eslint-disable-next-line react/display-name\n ({\n monthDate,\n customHeaderCount,\n decreaseMonth,\n increaseMonth,\n }: {\n monthDate: Date;\n customHeaderCount: number;\n decreaseMonth: () => void;\n increaseMonth: () => void;\n }) =>\n (\n <PickerHeader>\n <button\n aria-label=\"Previous Month\"\n className={\n 'react-datepicker__navigation react-datepicker__navigation--previous'\n }\n style={\n customHeaderCount === 1\n ? { visibility: 'hidden' }\n : undefined\n }\n onClick={(ev) => {\n ev.preventDefault();\n decreaseMonth();\n }}\n >\n {prevMonthAction ? (\n typeof prevMonthAction === 'string' ? (\n <img src={prevMonthAction} />\n ) : (\n prevMonthAction\n )\n ) : (\n <span\n className={\n 'react-datepicker__navigation-icon react-datepicker__navigation-icon--previous'\n }\n >\n {'<'}\n </span>\n )}\n </button>\n <span className=\"react-datepicker__current-month\">\n {format(monthDate, 'LLLL', { locale: de })}\n </span>\n <button\n aria-label=\"Next Month\"\n className={\n 'react-datepicker__navigation react-datepicker__navigation--next'\n }\n style={\n customHeaderCount === 0\n ? { visibility: 'hidden' }\n : undefined\n }\n onClick={(ev) => {\n ev.preventDefault();\n increaseMonth();\n }}\n >\n {nextMonthAction ? (\n typeof nextMonthAction === 'string' ? (\n <img src={nextMonthAction} />\n ) : (\n nextMonthAction\n )\n ) : (\n <span\n className={\n 'react-datepicker__navigation-icon react-datepicker__navigation-icon--next'\n }\n >\n {'>'}\n </span>\n )}\n </button>\n </PickerHeader>\n );\n\nexport interface DatepickerProps {\n enableMemo?: boolean;\n label?: string;\n errorMessage?: string;\n infoMessage?: string;\n isRequired?: boolean;\n isDisabled?: boolean;\n isInverted?: boolean;\n name?: string;\n placeholder?: string;\n dateSubmitLabel?: string;\n dateDeleteLabel?: string;\n\n values?: [Date, Date];\n minDate?: Date;\n maxDate?: Date;\n onDataChange?: (startDate: Date | null, endDate: Date | null) => void;\n onSubmit?: (startDate?: Date | null, endDate?: Date | null) => void;\n deleteAction?: (\n handleClick: (e: React.SyntheticEvent<HTMLButtonElement, Event>) => void\n ) => React.ReactNode;\n submitAction?: (\n handleClick?: (\n e: React.SyntheticEvent<HTMLButtonElement, Event>\n ) => void\n ) => React.ReactNode;\n customIcon?: (props: {\n isInverted?: boolean;\n singleSelect?: boolean;\n }) => React.ReactNode;\n nextCtrlUrl?: React.ReactNode;\n prevCtrlUrl?: React.ReactNode;\n\n singleSelect?: boolean;\n}\n\nconst Datepicker: React.FC<DatepickerProps> = ({\n label,\n errorMessage,\n infoMessage,\n isRequired,\n isDisabled,\n isInverted,\n name,\n dateSubmitLabel,\n dateDeleteLabel,\n placeholder,\n singleSelect = false,\n values,\n minDate = new Date(),\n maxDate,\n onDataChange,\n onSubmit,\n deleteAction,\n submitAction,\n customIcon,\n nextCtrlUrl,\n prevCtrlUrl,\n}) => {\n const { globals } = useLibTheme();\n const locale = globals.sections.datepickerLocaleKey;\n const dateFormat = globals.sections.datepickerDateFormat;\n\n const pickerRef = useRef<ReactDatePicker | undefined>(null);\n const pickerBtnRef = useRef<HTMLButtonElement | null>(null);\n const [isSmall, setIsSmall] = useState<boolean>(false);\n\n const [startDate, setStartDate] = useState<Date | null>();\n const [endDate, setEndDate] = useState<Date | null>();\n\n const [focused, setFocused] = useState<boolean>();\n\n useEffect(() => {\n const x = async () => {\n await import('react-datepicker');\n\n // if (locale === 'de') registerLocale('de', de);\n };\n\n if (!singleSelect) setIsSmall(!window.matchMedia(mq.medium).matches);\n\n x();\n }, [locale, singleSelect]);\n\n useEffect(() => {\n if (values) {\n if (values[0] && isValid(values[0])) {\n setStartDate(values[0]);\n }\n\n if (values[1] && isValid(values[1])) {\n setEndDate(values[1]);\n }\n }\n }, [values]);\n\n useEffect(() => {\n const handleResize = () => {\n const shouldBeSmall = !window.matchMedia(mq.medium).matches;\n\n if (shouldBeSmall !== isSmall) {\n setIsSmall(shouldBeSmall);\n }\n };\n window.addEventListener('resize', handleResize);\n\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n }, [isSmall]);\n\n useEffect(() => {\n if (pickerRef.current && focused !== undefined) {\n pickerRef.current?.setOpen(focused);\n }\n }, [focused]);\n\n const handleSubmit = useCallback(\n (ev: React.SyntheticEvent<HTMLButtonElement, Event>) => {\n ev.preventDefault();\n setFocused(false);\n onSubmit && onSubmit(startDate, endDate);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [endDate, startDate]\n );\n const handleReset = useCallback(\n (ev: React.SyntheticEvent<HTMLButtonElement, Event>) => {\n ev.preventDefault();\n setStartDate(undefined);\n setEndDate(undefined);\n new Date();\n },\n []\n );\n\n return (\n <PickerView>\n <ReactDatePicker\n locale={locale === 'de' ? de : undefined}\n ref={pickerRef as any}\n dateFormat={dateFormat}\n onChange={(date) => {\n if (date) {\n if (singleSelect) {\n setStartDate(date as Date);\n setFocused(false);\n onDataChange && onDataChange(date as Date, null);\n } else if (startDate) {\n if (endDate) {\n setStartDate(date as Date);\n setEndDate(null);\n onDataChange &&\n onDataChange(date as Date, null);\n } else if (isBefore(date as Date, startDate)) {\n setEndDate(startDate);\n setStartDate(date as Date);\n onDataChange &&\n onDataChange(date as Date, startDate);\n } else {\n setEndDate(date as Date);\n onDataChange &&\n onDataChange(startDate, date as Date);\n }\n } else {\n setStartDate(date as Date);\n onDataChange &&\n onDataChange(date as Date, endDate || null);\n }\n } else {\n setStartDate(undefined);\n onDataChange && onDataChange(null, null);\n }\n }}\n selected={startDate}\n startDate={startDate}\n endDate={endDate}\n monthsShown={isSmall ? 1 : 2}\n shouldCloseOnSelect={singleSelect}\n customInput={\n <PickerButton\n label={label}\n isInverted={isInverted}\n isDisabled={isDisabled}\n infoMessage={infoMessage}\n errorMessage={errorMessage}\n isRequired={isRequired}\n ref={pickerBtnRef}\n name={name}\n altText={placeholder}\n startDate={startDate}\n endDate={endDate}\n isFocused={focused}\n setFocused={setFocused}\n dateFormat={dateFormat}\n customIcon={customIcon}\n singleSelect={singleSelect}\n />\n }\n showPopperArrow\n minDate={minDate}\n maxDate={maxDate}\n disabledKeyboardNavigation={false}\n isClearable\n onClickOutside={(ev) => {\n ev.stopPropagation();\n setFocused(false);\n onSubmit && onSubmit(startDate, endDate);\n }}\n renderCustomHeader={getPickerHeader(\n locale,\n prevCtrlUrl,\n nextCtrlUrl\n )}\n >\n <DatepickerFoot>\n <FootFlex>\n {deleteAction ? (\n deleteAction(handleReset)\n ) : (\n <ButtonGhost.View as=\"button\" onClick={handleReset}>\n <ButtonGhostLabel>\n {dateDeleteLabel || 'Delete'}\n </ButtonGhostLabel>\n </ButtonGhost.View>\n )}\n {submitAction ? (\n submitAction(handleSubmit)\n ) : (\n <Button.View as=\"button\" onClick={handleSubmit}>\n <ButtonLabel>\n {dateSubmitLabel || 'Submit'}\n </ButtonLabel>\n </Button.View>\n )}\n </FootFlex>\n </DatepickerFoot>\n </ReactDatePicker>\n </PickerView>\n );\n};\n\n/**\n * Function to compare both field prop states\n * @param prev Previous props\n * @param next Next props\n * @returns\n */\nconst areEqual = (prev: DatepickerProps, next: DatepickerProps) => {\n // only apply logic if memo functionality is enabled\n if (!prev.enableMemo) return false;\n\n if (prev.infoMessage !== next.infoMessage) return false;\n if (prev.errorMessage !== next.errorMessage) return false;\n if (prev.dateDeleteLabel !== next.dateDeleteLabel) return false;\n if (prev.dateSubmitLabel !== next.dateSubmitLabel) return false;\n if (prev.label !== next.label) return false;\n if (prev.placeholder !== next.placeholder) return false;\n\n // compare date values\n const prevDateStart = prev.values?.[0];\n const prevDateEnd = prev.values?.[1];\n const nextDateStart = prev.values?.[0];\n const nextDateEnd = prev.values?.[1];\n\n if (\n prevDateStart !== nextDateStart ||\n !isEqual(prevDateStart || -1, nextDateStart || -1) ||\n prevDateEnd !== nextDateEnd ||\n !isEqual(prevDateEnd || -1, nextDateEnd || -1)\n ) {\n return false;\n }\n\n return true;\n};\n\nexport default React.memo(Datepicker, areEqual);\n","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date that should be before the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is before the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * var result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\n\nexport default function isBefore(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() < dateToCompare.getTime();\n}","import Copy from 'components/typography/Copy';\nimport * as React from 'react';\nimport styled, { css } from 'styled-components';\nimport { useLibTheme } from 'utils/LibThemeProvider';\nimport { getColors as color, spacings } from '../../utils/styles';\n\nconst View = styled.label`\n display: flex;\n flex-direction: row;\n align-items: center;\n\n & > * + * {\n margin-left: ${spacings.nudge * 2}px;\n }\n`;\n\nconst RadioContainer = styled.div<{ isDisabled?: boolean }>`\n cursor: ${({ isDisabled }) => (isDisabled ? 'default' : 'pointer')};\n pointer-events: ${({ isDisabled }) => (isDisabled ? 'none' : 'all')};\n\n border: 2px solid transparent;\n border-radius: 50%;\n\n &:focus-within {\n outline: 1px solid ${({ theme }) => color(theme).primary.default};\n outline-offset: 0;\n }\n`;\n\nconst Original = styled.input`\n position: absolute;\n left: -9999px;\n opacity: 0;\n`;\n\nconst StyledRadioButton = styled.span<{\n isSelected?: boolean;\n isInverted?: boolean;\n}>`\n background: transparent;\n border-radius: 50%;\n\n position: relative;\n\n width: 20px;\n height: 20px;\n display: block;\n\n border: 2px solid\n ${({ isInverted, theme, isSelected }) =>\n isSelected\n ? color(theme).primary.default\n : isInverted\n ? color(theme).elementBg.light\n : color(theme).elementBg.medium};\n\n ${({ isSelected, theme }) =>\n isSelected\n ? css`\n background-color: ${color(theme).primary.default};\n\n &:before {\n content: '';\n position: absolute;\n display: block;\n height: 8px;\n width: 8px;\n background-color: ${color(theme).elementBg.light};\n border-radius: 50%;\n top: 50%;\n left: 50%;\n\n transform: translate(-50%, -50%);\n }\n `\n : 'none'}\n`;\n\nconst Label = styled(Copy)`\n padding-top: 2px;\n text-align: left;\n user-select: none;\n\n & > * {\n margin: 0;\n }\n`;\n\nexport interface RadioButtonProps {\n enableMemo?: boolean;\n isSelected?: boolean;\n isDisabled?: boolean;\n isInverted?: boolean;\n onChange?: (e: React.SyntheticEvent<HTMLInputElement>) => void;\n name?: string;\n id?: string;\n value?: string;\n label?: string;\n}\n\nconst RadioButton: React.FC<RadioButtonProps> = ({\n isDisabled,\n isSelected,\n isInverted,\n onChange,\n label,\n id,\n name,\n value,\n}) => {\n const { colors } = useLibTheme();\n\n return (\n <View>\n <RadioContainer isDisabled={isDisabled}>\n <StyledRadioButton\n isSelected={isSelected}\n isInverted={isInverted}\n />\n <Original\n type=\"radio\"\n name={name}\n id={id}\n value={value}\n checked={isSelected}\n onChange={onChange}\n />\n </RadioContainer>\n {label && (\n <Label\n renderAs=\"span\"\n size=\"small\"\n type=\"copy-b\"\n textColor={\n isDisabled\n ? colors.elementBg.medium\n : isInverted\n ? colors.text.inverted\n : colors.text.default\n }\n innerHTML={label}\n isInverted={isInverted}\n />\n )}\n </View>\n );\n};\n\n/**\n * Function to compare both field prop states\n * @param prev Previous props\n * @param next Next props\n * @returns\n */\nconst areEqual = (prev: RadioButtonProps, next: RadioButtonProps) => {\n // only apply logic if memo functionality is enabled\n if (!prev.enableMemo) return false;\n\n if (prev.isSelected !== next.isSelected) return false;\n if (prev.label !== next.label) return false;\n if (prev.value !== next.value) return false;\n\n return true;\n};\n\nexport default React.memo(RadioButton, areEqual);\n","import Check from 'components/base/icons/Check';\nimport Copy from 'components/typography/Copy';\nimport React from 'react';\nimport styled from 'styled-components';\nimport { useLibTheme } from 'utils/LibThemeProvider';\nimport { getColors as color, spacings } from 'utils/styles';\n\nconst View = styled.label`\n display: flex;\n flex-direction: row;\n align-items: center;\n\n & > * + * {\n margin-left: ${spacings.nudge * 2}px;\n }\n`;\n\nconst Label = styled(Copy)`\n padding-top: 2px;\n text-align: left;\n user-select: none;\n\n & > * {\n margin: 0;\n }\n`;\n\nconst CheckboxContainer = styled.div<{\n isDisabled?: boolean;\n isInverted?: boolean;\n}>`\n color: ${({ theme }) => color(theme).text.inverted};\n cursor: ${({ isDisabled }) => (isDisabled ? 'default' : 'pointer')};\n pointer-events: ${({ isDisabled }) => (isDisabled ? 'none' : 'all')};\n\n border: 2px solid transparent;\n\n &:focus-within {\n outline: 1px solid\n ${({ theme, isInverted, isDisabled }) =>\n isDisabled\n ? 'transparent'\n : isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n outline-offset: 0;\n }\n`;\n\nconst Original = styled.input`\n position: absolute;\n left: -9999px;\n opacity: 0;\n`;\n\nconst Box = styled.span<{\n isSelected?: boolean;\n isInverted?: boolean;\n isDisabled?: boolean;\n}>`\n width: 20px;\n min-width: 20px;\n height: 20px;\n display: block;\n position: relative;\n\n border: 2px solid\n ${({ isSelected, isDisabled, isInverted, theme }) => {\n if (isDisabled) {\n return isInverted\n ? color(theme).text.subtileInverted\n : color(theme).text.subtile;\n }\n if (isSelected) {\n return isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default;\n }\n return isInverted\n ? color(theme).elementBg.light\n : color(theme).elementBg.medium;\n }};\n\n background-color: ${({ isSelected, isDisabled, isInverted, theme }) => {\n if (isDisabled) {\n return isInverted\n ? color(theme).text.subtileInverted\n : color(theme).text.subtile;\n }\n if (isSelected) {\n return isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default;\n }\n return 'transparent';\n }};\n`;\n\nconst StyledCheck = styled(Check)`\n width: 80%;\n height: 80%;\n display: block;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n`;\n\nexport interface CheckboxProps {\n enableMemo?: boolean;\n label?: string;\n\n onChange?: (e: React.SyntheticEvent<HTMLInputElement>) => void;\n onBlur?: (e: React.SyntheticEvent<HTMLInputElement>) => void;\n onClick?: () => void;\n\n name?: string;\n value?: string;\n\n isDisabled?: boolean;\n isSelected?: boolean;\n isInverted?: boolean;\n isRequired?: boolean;\n}\n\nconst Checkbox: React.FC<CheckboxProps> = ({\n label,\n isDisabled,\n isSelected,\n isInverted,\n onChange,\n onBlur,\n onClick,\n name,\n value,\n isRequired,\n}) => {\n const { colors } = useLibTheme();\n\n return (\n <View>\n <CheckboxContainer\n isDisabled={isDisabled}\n isInverted={isInverted}\n onClick={onClick}\n >\n <Box\n isSelected={isSelected}\n isInverted={isInverted}\n isDisabled={isDisabled}\n >\n {isSelected && <StyledCheck />}\n </Box>\n <Original\n type=\"checkbox\"\n name={`${name}[]`}\n value={value}\n checked={isSelected}\n required={isRequired}\n onChange={onChange}\n onBlur={onBlur}\n />\n </CheckboxContainer>\n {label && (\n <Label\n renderAs=\"span\"\n size=\"small\"\n type=\"copy-b\"\n isInverted={isInverted}\n textColor={\n isDisabled\n ? isInverted\n ? colors.text.subtileInverted\n : colors.text.subtile\n : undefined\n }\n innerHTML={`${label}${isRequired ? '<span> *</span>' : ''}`}\n />\n )}\n </View>\n );\n};\n\n/**\n * Function to compare both field prop states\n * @param prev Previous props\n * @param next Next props\n * @returns\n */\nconst areEqual = (prev: CheckboxProps, next: CheckboxProps) => {\n // only apply logic if memo functionality is enabled\n if (!prev.enableMemo) return false;\n\n if (prev.label !== next.label) return false;\n if (prev.isSelected !== next.isSelected) return false;\n if (prev.value !== next.value) return false;\n\n return true;\n};\n\nexport default React.memo(Checkbox, areEqual);\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 { copyStyle } from 'components/typography/Copy';\nimport React from 'react';\nimport styled from 'styled-components';\nimport { getFormFieldTextSize } from 'utils/formFieldText';\nimport {\n getColors as color,\n getFonts as font,\n spacings,\n getGlobals as global,\n withRange,\n} from 'utils/styles';\nimport FieldWrapper from './FormField';\nimport { FormProps } from './Textfield';\n\nconst Area = styled.textarea<{\n isInverted?: boolean;\n hasError?: boolean;\n isDisabled?: boolean;\n hasBack?: boolean;\n}>`\n display: block;\n outline: none;\n width: 100%;\n min-height: 100px;\n box-shadow: none;\n border-radius: 0px;\n -webkit-appearance: none;\n\n resize: none;\n\n padding: ${spacings.nudge}px;\n\n border: 1px solid\n ${({ theme, isInverted, hasError }) => {\n if (isInverted) {\n return hasError\n ? color(theme).errorInverted\n : color(theme).elementBg.light;\n }\n return hasError ? color(theme).error : color(theme).elementBg.dark;\n }};\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n\n background: transparent;\n\n ${copyStyle('copy', 'small')}\n /** Clamping min font size to 16px to prevent browser zooming */\n ${({ theme }) => withRange(getFormFieldTextSize(theme), 'font-size')}\n \n color: ${({ theme, isInverted, hasError }) => {\n if (isInverted) {\n return hasError\n ? color(theme).text.errorInverted\n : font(theme).copy.small.colorInverted;\n }\n return hasError\n ? color(theme).text.error\n : font(theme).copy.small.color;\n }};\n\n &:active {\n border: ${({ theme, isInverted }) =>\n `1px solid ${\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default\n }`};\n }\n\n &:focus {\n outline: ${({ theme, isInverted }) =>\n `1px solid ${\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default\n }`};\n outline-offset: 0;\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n }\n\n &::placeholder {\n color: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).text.subtileInverted\n : color(theme).text.subtile};\n }\n`;\n\nexport type TextareaProps = FormProps & {\n enableMemo?: boolean;\n onChange?: (ev: React.SyntheticEvent<HTMLTextAreaElement>) => void;\n onBlur?: (ev: React.SyntheticEvent<HTMLTextAreaElement>) => void;\n};\n\nconst Textarea: React.FC<TextareaProps> = ({\n label,\n isRequired,\n errorMessage,\n infoMessage,\n isDisabled,\n isInverted,\n placeholder,\n value,\n name,\n onChange,\n onBlur,\n}) => {\n if (isDisabled) {\n errorMessage = '';\n }\n\n return (\n <FieldWrapper.View isDisabled={isDisabled}>\n <FieldWrapper.Head\n label={label}\n isRequired={isRequired}\n isInverted={isInverted}\n />\n <FieldWrapper.Content>\n <Area\n value={value}\n name={name}\n placeholder={placeholder}\n hasError={!!errorMessage}\n isDisabled={isDisabled}\n isInverted={isInverted}\n required={isRequired}\n onChange={onChange}\n onBlur={onBlur}\n />\n </FieldWrapper.Content>\n <FieldWrapper.Messages\n infoMessage={infoMessage}\n errorMessage={errorMessage}\n isInverted={isInverted}\n />\n </FieldWrapper.View>\n );\n};\n\n/**\n * Function to compare both field prop states\n * @param prev Previous props\n * @param next Next props\n * @returns\n */\nconst areEqual = (prev: TextareaProps, next: TextareaProps) => {\n // only apply logic if memo functionality is enabled\n if (!prev.enableMemo) return false;\n\n if (prev.value !== next.value) return false;\n if (prev.errorMessage !== next.errorMessage) return false;\n if (prev.infoMessage !== next.infoMessage) return false;\n if (prev.label !== next.label) return false;\n if (prev.placeholder !== next.placeholder) return false;\n\n return true;\n};\n\nexport default React.memo(Textarea, areEqual);\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport { copyStyle } from 'components/typography/Copy';\nimport {\n getColors as color,\n getFonts as font,\n spacings,\n getGlobals as global,\n withRange,\n} from 'utils/styles';\nimport FieldWrapper, { FieldProps } from './FormField';\nimport { getFormFieldTextSize } from 'utils/formFieldText';\n\nconst InputField = styled.input<{\n isInverted?: boolean;\n hasError?: boolean;\n}>`\n display: block;\n outline: none;\n width: 100%;\n min-height: 40px;\n box-shadow: none;\n\n border-radius: 0px;\n -webkit-appearance: none;\n\n padding: ${spacings.nudge}px;\n\n border: 1px solid\n ${({ theme, isInverted, hasError }) => {\n if (isInverted) {\n return hasError\n ? color(theme).errorInverted\n : color(theme).elementBg.light;\n }\n return hasError ? color(theme).error : color(theme).elementBg.dark;\n }};\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n\n background: transparent;\n\n ${copyStyle('copy', 'small')}\n /** Clamping min font size to 16px to prevent browser zooming */\n ${({ theme }) => withRange(getFormFieldTextSize(theme), 'font-size')}\n\n color: ${({ theme, isInverted, hasError }) => {\n if (isInverted) {\n return hasError\n ? color(theme).text.errorInverted\n : font(theme).copy.small.colorInverted;\n }\n return hasError\n ? color(theme).text.error\n : font(theme).copy.small.color;\n }};\n\n &:active {\n border: ${({ theme, isInverted }) =>\n `1px solid ${\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default\n }`};\n }\n\n &:focus {\n outline: ${({ theme, isInverted }) =>\n `1px solid ${\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default\n }`};\n outline-offset: 0;\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n }\n\n &::placeholder {\n color: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).text.subtileInverted\n : color(theme).text.subtile};\n }\n`;\n\nexport type FormProps = FieldProps & {\n value?: string;\n name?: string;\n placeholder?: string;\n};\n\nexport type TextfieldProps = FormProps & {\n enableMemo?: boolean;\n type?: 'number' | 'text' | 'tel' | 'email' | 'password';\n isInverted?: boolean;\n onChange?: (ev: React.SyntheticEvent<HTMLInputElement>) => void;\n onBlur?: (ev: React.SyntheticEvent<HTMLInputElement>) => void;\n};\n\nconst Textfield: React.FC<TextfieldProps> = ({\n type = 'text',\n label,\n errorMessage,\n infoMessage,\n isRequired,\n isDisabled,\n isInverted,\n placeholder,\n value,\n name,\n onChange,\n onBlur,\n}) => {\n if (isDisabled) {\n errorMessage = '';\n }\n\n return (\n <FieldWrapper.View isDisabled={isDisabled}>\n <FieldWrapper.Head\n label={label}\n isRequired={isRequired}\n isInverted={isInverted}\n />\n <FieldWrapper.Content>\n <InputField\n placeholder={placeholder}\n hasError={!!errorMessage}\n type={type}\n isInverted={isInverted}\n name={name}\n value={value}\n required={isRequired}\n onChange={onChange}\n onBlur={onBlur}\n />\n </FieldWrapper.Content>\n <FieldWrapper.Messages\n infoMessage={infoMessage}\n errorMessage={errorMessage}\n isInverted={isInverted}\n />\n </FieldWrapper.View>\n );\n};\n\n/**\n * Function to compare both field prop states\n * @param prev Previous props\n * @param next Next props\n * @returns\n */\nconst areEqual = (prev: TextfieldProps, next: TextfieldProps) => {\n // only apply logic if memo functionality is enabled\n if (!prev.enableMemo) return false;\n\n if (prev.value !== next.value) return false;\n if (prev.errorMessage !== next.errorMessage) return false;\n if (prev.infoMessage !== next.infoMessage) return false;\n if (prev.label !== next.label) return false;\n if (prev.placeholder !== next.placeholder) return false;\n\n return true;\n};\n\nexport default React.memo(Textfield, areEqual);\n","import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport AngleDown from 'components/base/icons/AngleDown';\nimport AngleUp from 'components/base/icons/AngleUp';\nimport Copy, { copyStyle } from 'components/typography/Copy';\nimport { useLibTheme } from 'utils/LibThemeProvider';\nimport {\n getColors as color,\n getFonts as font,\n spacings,\n getGlobals as global,\n withRange,\n} from 'utils/styles';\nimport FieldWrapper from './FormField';\nimport { FormProps } from './Textfield';\nimport { getFormFieldTextSize } from 'utils/formFieldText';\nimport useMounted from 'utils/useMounted';\nimport { isValidArray } from 'utils/arrays';\n\nconst Select = styled.button<{\n hasError?: boolean;\n isOpen?: boolean;\n isInverted?: boolean;\n isSelected?: boolean;\n}>`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n min-height: 40px;\n box-shadow: none;\n position: relative;\n\n -webkit-appearance: none;\n outline: none;\n cursor: pointer;\n\n padding: ${spacings.nudge}px;\n\n border: 1px solid\n ${({ theme, isInverted, hasError, isOpen }) => {\n if (isOpen) return 'transparent';\n if (isInverted) {\n return hasError\n ? color(theme).errorInverted\n : color(theme).elementBg.light;\n }\n return hasError ? color(theme).error : color(theme).elementBg.dark;\n }};\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n\n background: transparent;\n\n ${copyStyle('copy', 'small')}\n /** Clamping min font size to 16px to prevent browser zooming */\n ${({ theme }) => withRange(getFormFieldTextSize(theme), 'font-size')}\n \n color: ${({ theme, isInverted, hasError, isSelected }) => {\n if (!isSelected) {\n return isInverted\n ? color(theme).text.subtileInverted\n : color(theme).text.subtile;\n }\n\n if (isInverted) {\n return hasError\n ? color(theme).text.errorInverted\n : font(theme).copy.small.colorInverted;\n }\n return hasError\n ? color(theme).text.error\n : font(theme).copy.small.color;\n }};\n\n &:active {\n border: ${({ theme, isInverted, isOpen }) =>\n `1px solid ${\n isOpen\n ? 'transparent'\n : isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default\n }`};\n }\n\n &:focus {\n outline: ${({ theme, isInverted, isOpen }) =>\n `1px solid ${\n isOpen\n ? 'transparent'\n : isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default\n }`};\n outline-offset: 0;\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n }\n\n & > * + * {\n margin-left: ${spacings.nudge}px;\n }\n`;\n\nconst SelectMain = styled.span`\n display: block;\n user-select: none;\n\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n min-width: 0;\n\n & > * + * {\n margin-left: ${spacings.nudge}px;\n }\n`;\n\nconst Indicator = styled.span`\n display: block;\n pointer-events: none;\n`;\n\nconst Flyout = styled.ul<{ isVisible?: boolean; isInverted?: boolean }>`\n list-style: none;\n padding: 0 !important;\n margin: 0 !important;\n\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n z-index: 2;\n\n display: ${({ isVisible }) => (isVisible ? 'block' : 'none')};\n background: ${({ theme }) => color(theme).elementBg.light};\n border: 1px solid\n ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).elementBg.light\n : color(theme).elementBg.dark};\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n\n max-height: 300px;\n overflow-y: auto;\n scrollbar-width: none;\n\n outline: ${({ theme, isInverted }) =>\n `1px solid ${\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default\n }`};\n outline-offset: 0;\n\n ::-webkit-scrollbar {\n -webkit-appearance: none;\n width: 14px;\n }\n\n ::-webkit-scrollbar-thumb {\n border-radius: 8px;\n background-color: ${({ theme }) => color(theme).elementBg.medium};\n border: 4px solid rgba(0, 0, 0, 0);\n background-clip: padding-box;\n }\n`;\n\nconst ItemStyle = styled.li`\n padding: ${spacings.nudge}px;\n width: 100%;\n cursor: pointer;\n position: relative;\n`;\n\nconst Item = styled(Copy)<{ isSelected?: boolean }>`\n z-index: 0;\n\n @media (hover: hover) and (pointer: fine) {\n ${ItemStyle}:hover & {\n &:before {\n content: '';\n background: ${({ theme }) => color(theme).primary.hover};\n opacity: 0.25;\n display: block;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 0;\n left: 0;\n z-index: -1;\n }\n }\n }\n\n ${({ isSelected }) =>\n isSelected &&\n css`\n &:before {\n content: '';\n background: ${({ theme }) => color(theme).primary.default};\n position: absolute;\n top: 0;\n bottom: 0;\n right: 0;\n left: 0;\n\n z-index: -1;\n }\n `}\n`;\n\nconst ClearItem = styled(Item)`\n color: transparent;\n`;\n\nconst Container = styled.div`\n position: relative;\n outline: none;\n`;\n\ninterface SelectItem {\n value: Record<string, string>;\n label: string;\n}\n\nexport type SelectDropdownProps = Omit<FormProps, 'value'> & {\n enableMemo?: boolean;\n placeholder?: string;\n name?: string;\n selectedItem?: string;\n items: SelectItem[];\n\n onChange?: (label: string, value: Record<string, string>) => void;\n onBlur?: () => void;\n indicator?: (props: {\n isOpen: boolean;\n isDisabled?: boolean;\n }) => React.ReactNode;\n};\n\nconst SelectDropdown: React.FC<SelectDropdownProps> = ({\n label,\n isRequired,\n errorMessage,\n infoMessage,\n isDisabled,\n isInverted,\n items,\n name,\n selectedItem,\n placeholder,\n onChange,\n onBlur,\n indicator,\n}) => {\n const { colors } = useLibTheme();\n const [isOpen, setIsOpen] = useState(false);\n\n const [activeItemIndex, setActiveItemIndex] = useState<number>(\n items?.findIndex((item) => item.label === selectedItem) || -1\n );\n const [selectItems, setSelectItems] = useState<SelectItem[]>(items || []);\n const selectBtnRef = useRef<HTMLButtonElement>(null);\n const isMounted = useMounted();\n const itemHasBeenClicked = useRef<boolean>(false);\n\n useEffect(() => {\n const index = items?.findIndex((item) => item.label === selectedItem);\n if (index !== -1) setActiveItemIndex(index);\n\n setSelectItems(items || []);\n }, [items, selectedItem]);\n\n useEffect(() => {\n const newItem = selectItems[activeItemIndex];\n\n if (isMounted) {\n onChange && onChange(newItem?.label, newItem?.value);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectItems, activeItemIndex, selectedItem]);\n\n if (isDisabled) {\n errorMessage = '';\n }\n\n const activeItem = useMemo(() => {\n return activeItemIndex >= 0 && activeItemIndex < selectItems.length\n ? selectItems[activeItemIndex]\n : undefined;\n }, [activeItemIndex, selectItems]);\n\n return (\n <FieldWrapper.View isDisabled={isDisabled}>\n <FieldWrapper.Head\n label={label}\n isRequired={isRequired}\n isInverted={isInverted}\n />\n <FieldWrapper.Content>\n <Container>\n <Select\n ref={selectBtnRef}\n type=\"button\"\n aria-label={\n activeItem?.label || placeholder || 'Select item'\n }\n isOpen={isOpen}\n isInverted={isInverted}\n isSelected={!!activeItem}\n hasError={!!errorMessage}\n onClick={() => {\n setIsOpen((prev) => !prev);\n }}\n onBlur={() => {\n if (!itemHasBeenClicked.current) {\n setIsOpen(false);\n onBlur && onBlur();\n }\n }}\n onKeyDown={(ev) => {\n if (ev.key === 'ArrowDown') {\n ev.preventDefault();\n setIsOpen(true);\n\n if (\n isOpen &&\n selectItems[activeItemIndex + 1]\n ) {\n setActiveItemIndex((prev) => prev + 1);\n }\n } else if (ev.key === 'ArrowUp') {\n ev.preventDefault();\n setIsOpen(true);\n\n if (\n isOpen &&\n selectItems[activeItemIndex - 1]\n ) {\n setActiveItemIndex((prev) => prev - 1);\n }\n }\n }}\n >\n <SelectMain>\n {activeItem?.label || placeholder}\n </SelectMain>\n <Indicator>\n {indicator &&\n indicator({ isOpen, isDisabled: isDisabled })}\n {!indicator &&\n (isOpen ? (\n <AngleUp\n iconColor={\n isDisabled\n ? colors.elementBg.medium\n : colors.elementBg.dark\n }\n />\n ) : (\n <AngleDown\n iconColor={\n isDisabled\n ? colors.elementBg.medium\n : colors.elementBg.dark\n }\n />\n ))}\n </Indicator>\n </Select>\n <Flyout isVisible={isOpen}>\n {isValidArray(items, false) && (\n <ItemStyle\n key=\"key_0\"\n onMouseDown={() => {\n itemHasBeenClicked.current = true;\n }}\n onClick={(ev) => {\n ev.preventDefault();\n\n // set new item\n setActiveItemIndex(-1);\n\n // set focus back to toggle\n selectBtnRef.current?.focus();\n\n // close flyout\n setIsOpen(false);\n itemHasBeenClicked.current = false;\n }}\n >\n <ClearItem renderAs=\"span\" size=\"small\">\n Clear\n </ClearItem>\n </ItemStyle>\n )}\n {items.map((item, i) => {\n return (\n <ItemStyle\n key={`key_${i + 1}`}\n onMouseDown={() => {\n itemHasBeenClicked.current = true;\n }}\n onClick={(ev) => {\n ev.preventDefault();\n\n // set new item\n setActiveItemIndex(i);\n\n // set focus back to toggle\n selectBtnRef.current?.focus();\n\n // close flyout\n setIsOpen(false);\n itemHasBeenClicked.current = false;\n }}\n >\n <Item\n renderAs=\"span\"\n isSelected={i === activeItemIndex}\n size=\"small\"\n textColor={\n i === activeItemIndex\n ? colors.elementBg.light\n : colors.elementBg.dark\n }\n >\n {item.label}\n </Item>\n </ItemStyle>\n );\n })}\n </Flyout>\n </Container>\n {activeItem && (\n <input\n type=\"hidden\"\n name={name}\n value={JSON.stringify(activeItem.value)}\n />\n )}\n </FieldWrapper.Content>\n <FieldWrapper.Messages\n infoMessage={infoMessage}\n errorMessage={errorMessage}\n isInverted={isInverted}\n />\n </FieldWrapper.View>\n );\n};\n\n/**\n * Function to compare both field prop states\n * @param prev Previous props\n * @param next Next props\n * @returns\n */\nconst areEqual = (prev: SelectDropdownProps, next: SelectDropdownProps) => {\n // only apply logic if memo functionality is enabled\n if (!prev.enableMemo) return false;\n\n if (prev.selectedItem !== next.selectedItem) return false;\n if (prev.errorMessage !== next.errorMessage) return false;\n if (prev.infoMessage !== next.infoMessage) return false;\n if (prev.label !== next.label) return false;\n if (prev.placeholder !== next.placeholder) return false;\n\n // compare items\n if (prev.items.length !== next.items.length) return false;\n for (let i = 0; i < prev.items.length; i++) {\n if (\n prev.items[i].label !== next.items[i].label ||\n prev.items[i].value !== next.items[i].value\n ) {\n return false;\n }\n }\n\n return true;\n};\n\nexport default React.memo(SelectDropdown, areEqual);\n","import { copyStyle } from 'components/typography/Copy';\nimport React, { FC, useEffect, useState, useRef } from 'react';\nimport styled from 'styled-components';\nimport {\n getColors as color,\n getFonts as font,\n spacings,\n getGlobals as global,\n withRange,\n} from 'utils/styles';\nimport FieldWrapper from './FormField';\nimport { FormProps } from './Textfield';\nimport * as Icons from 'components/base/icons/Icons';\nimport { getFormFieldTextSize } from 'utils/formFieldText';\n\nconst FieldView = styled(FieldWrapper.View)`\n pointer-events: none;\n`;\n\nconst FieldMain = styled.div<{\n isInverted?: boolean;\n hasError?: boolean;\n isDisabled?: boolean;\n}>`\n display: flex;\n flex-direction: column;\n justify-content: center;\n\n outline: none;\n width: 100%;\n min-height: 40px;\n box-shadow: none;\n\n border-radius: 0px;\n -webkit-appearance: none;\n background: none;\n\n padding: 0 ${spacings.nudge}px;\n\n border: 1px solid\n ${({ theme, isInverted, hasError }) => {\n if (isInverted) {\n return hasError\n ? color(theme).errorInverted\n : color(theme).elementBg.light;\n }\n return hasError ? color(theme).error : color(theme).elementBg.dark;\n }};\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n\n ${copyStyle('copy', 'small')}\n /** Clamping min font size to 16px to prevent browser zooming */\n ${({ theme }) => withRange(getFormFieldTextSize(theme), 'font-size')}\n\n color: ${({ theme, isInverted }) =>\n isInverted\n ? font(theme).copy.small.colorInverted\n : font(theme).copy.small.color};\n\n &:focus-within {\n outline: ${({ theme, isInverted }) =>\n `1px solid ${\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default\n }`};\n outline-offset: 0;\n }\n`;\n\nconst FileItem = styled.div<{ isInverted?: boolean }>`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n ${copyStyle('copy', 'small')}\n /** Clamping min font size to 16px to prevent browser zooming */\n ${({ theme }) => withRange(getFormFieldTextSize(theme), 'font-size')}\n\n padding: ${spacings.nudge}px 0;\n width: 100%;\n\n * + & {\n border-top: 1px dashed\n ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).elementBg.light\n : color(theme).elementBg.dark};\n }\n\n & > span {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n`;\n\nconst UploadItem = styled.button<{ isInverted?: boolean }>`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n\n padding: ${spacings.nudge}px 0;\n background: none;\n outline: none;\n border: none;\n\n width: 100%;\n cursor: pointer;\n pointer-events: all;\n\n ${copyStyle('copy', 'small')}\n /** Clamping min font size to 16px to prevent browser zooming */\n ${({ theme }) => withRange(getFormFieldTextSize(theme), 'font-size')}\n \n color: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).text.subtileInverted\n : color(theme).text.subtile};\n\n * + & {\n border-top: 1px dashed\n ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).elementBg.light\n : color(theme).elementBg.dark};\n }\n\n & > span {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n &:focus {\n text-decoration: underline;\n }\n\n &:focus:not(:focus-visible) {\n text-decoration: none;\n }\n`;\n\nconst Icon = styled.span<{ isInverted?: boolean }>`\n display: flex;\n justify-content: center;\n align-items: center;\n\n height: 100%;\n min-width: 24px;\n margin-left: auto;\n\n color: ${({ theme, isInverted }) =>\n isInverted\n ? font(theme).copy.small.colorInverted\n : font(theme).copy.small.color};\n\n pointer-events: none;\n\n & > * {\n height: 20px;\n }\n`;\n\nconst DeleteIcon = styled.button<{ isInverted?: boolean }>`\n display: flex;\n justify-content: center;\n align-items: center;\n\n height: 100%;\n min-width: 24px;\n margin-left: auto;\n\n background: none;\n border: none;\n cursor: pointer;\n padding: 0;\n pointer-events: all;\n\n color: ${({ theme, isInverted }) =>\n isInverted\n ? font(theme).copy.small.colorInverted\n : font(theme).copy.small.color};\n\n transition: opacity 0.2s ease-in-out;\n\n & > * {\n height: 20px;\n }\n\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n opacity: 0.8;\n }\n }\n\n &:focus {\n outline: solid 2px\n ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n }\n`;\n\nconst Original = styled.input`\n display: none;\n`;\n\ninterface Preview {\n uid: string;\n type: string;\n url: string | null;\n isUploading?: boolean;\n}\n\ninterface SelectedFile {\n uid: string;\n data: File;\n}\n\nconst readFileAsync = (file: File, uid: string) =>\n new Promise<Preview>((resolve) => {\n resolve({\n uid: uid,\n type: file.type,\n url: file.name,\n isUploading: true,\n });\n\n const reader = new FileReader();\n\n reader.onload = () => {\n resolve({\n uid: uid,\n type: file.type,\n url: file.name,\n isUploading: true,\n });\n };\n reader.readAsDataURL(file);\n });\n\nexport type FileUploadProps = Omit<FormProps, 'value' | 'placeholder'> & {\n enableMemo?: boolean;\n onUploadFiles?: (files: File[]) => void;\n acceptedFormats?: string;\n uploadLabel?: string;\n customDeleteIcon?: (isInverted?: boolean) => React.ReactNode;\n customUploadIcon?: (isInverted?: boolean) => React.ReactNode;\n};\n\nconst FileUpload: FC<FileUploadProps> = ({\n onUploadFiles,\n label,\n isInverted,\n isDisabled,\n isRequired,\n infoMessage,\n errorMessage,\n acceptedFormats,\n uploadLabel,\n customDeleteIcon,\n customUploadIcon,\n}) => {\n const [selectedFiles, setSelectedFiles] = useState<SelectedFile[]>([]);\n const fileInputRef = useRef<HTMLInputElement | null>(null);\n\n const [previews, setPreviews] = useState<Preview[]>([]);\n\n if (isDisabled) {\n errorMessage = '';\n }\n\n useEffect(() => {\n if (selectedFiles) {\n onUploadFiles && onUploadFiles(selectedFiles.map((f) => f.data));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedFiles]);\n\n const handleClick = (ev: React.MouseEvent<HTMLButtonElement>) => {\n ev.preventDefault();\n\n fileInputRef.current?.click();\n };\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!e.currentTarget.files) return;\n\n const newFiles = Array.from(e.currentTarget.files).map<SelectedFile>(\n (f, i) => ({\n uid: `${new Date().getTime().toString()}_${i}`,\n data: f,\n })\n );\n\n const promises = newFiles.map<Promise<Preview>>((file) => {\n return readFileAsync(file.data, file.uid);\n });\n\n Promise.all(promises).then((p) => {\n setPreviews((prev) => [...prev, ...p]);\n });\n\n setSelectedFiles((prev) => [...prev, ...newFiles]);\n };\n\n const handleDelete =\n (preview: Preview) => (ev: React.MouseEvent<HTMLButtonElement>) => {\n ev.preventDefault();\n ev.stopPropagation();\n\n if (!fileInputRef.current) return;\n fileInputRef.current.value = '';\n\n // remove element from previews\n setPreviews((prev) => {\n const index = prev.findIndex((p) => p.uid === preview.uid);\n if (index < 0) return prev;\n\n const copy = [...prev];\n copy.splice(index, 1);\n return copy;\n });\n\n // remove alement from selected files\n setSelectedFiles((prev) => {\n const index = prev.findIndex((p) => p.uid === preview.uid);\n if (index < 0) return prev;\n\n const copy = [...prev];\n copy.splice(index, 1);\n return copy;\n });\n };\n\n return (\n <FieldView isDisabled={isDisabled}>\n <FieldWrapper.Head\n label={label}\n isRequired={isRequired}\n isInverted={isInverted}\n />\n <FieldWrapper.Content>\n <FieldMain\n isInverted={isInverted}\n isDisabled={isDisabled}\n hasError={!!errorMessage}\n >\n {previews.map((file) => {\n const fileName =\n (file.url && file.url.split('/')) || [];\n return (\n <FileItem key={file.uid} isInverted={isInverted}>\n <span>{fileName}</span>\n <DeleteIcon\n aria-label=\"remove file\"\n type=\"button\"\n isInverted={isInverted}\n onClick={handleDelete(file)}\n >\n {customDeleteIcon ? (\n customDeleteIcon(isInverted)\n ) : (\n <Icons.DeleteForever />\n )}\n </DeleteIcon>\n </FileItem>\n );\n })}\n <UploadItem\n type=\"button\"\n isInverted={isInverted}\n onClick={handleClick}\n >\n {uploadLabel && <span>{uploadLabel}</span>}\n <Icon isInverted={isInverted}>\n {customUploadIcon ? (\n customUploadIcon(isInverted)\n ) : (\n <Icons.UploadFile />\n )}\n </Icon>\n </UploadItem>\n </FieldMain>\n <Original\n type=\"file\"\n onChange={handleChange}\n ref={fileInputRef}\n multiple\n required={isRequired}\n disabled={isDisabled}\n accept={acceptedFormats}\n />\n </FieldWrapper.Content>\n <FieldWrapper.Messages\n infoMessage={infoMessage}\n errorMessage={errorMessage}\n isInverted={isInverted}\n />\n </FieldView>\n );\n};\n\n/**\n * Function to compare both field prop states\n * @param prev Previous props\n * @param next Next props\n * @returns\n */\nconst areEqual = (prev: FileUploadProps, next: FileUploadProps) => {\n // only apply logic if memo functionality is enabled\n if (!prev.enableMemo) return false;\n\n if (prev.errorMessage !== next.errorMessage) return false;\n if (prev.infoMessage !== next.infoMessage) return false;\n if (prev.label !== next.label) return false;\n\n return true;\n};\n\nexport default React.memo(FileUpload, areEqual);\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 React, { FC } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { copyStyle } from 'components/typography/Copy';\nimport Link, { LinkProps } from 'components/typography/Link';\nimport { getColors, spacings } from 'utils/styles';\n\nconst View = styled(Link)<{\n isInverted?: boolean;\n isActive?: boolean;\n isClickable?: boolean;\n}>`\n display: inline-block;\n border: 1px solid\n ${({ isInverted }) => (isInverted ? '#dddddd' : '#444444')};\n border-radius: 8px;\n\n padding: 1px ${spacings.nudge}px;\n max-height: 28px;\n min-width: 60px;\n user-select: none;\n\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n text-align: center;\n\n text-decoration: none;\n\n ${copyStyle('copy', 'small')}\n\n background: none;\n\n && {\n background-color: ${({ isActive, isInverted }) =>\n isActive && (isInverted ? '#dddddd' : '#444444')};\n color: ${({ isActive, isInverted }) => {\n if (isActive) {\n return isInverted ? '#444444' : '#ffff';\n } else {\n return isInverted ? '#dddddd' : '#444444';\n }\n }};\n\n transition: background-color 0.2s ease-in-out, color 0.1s ease-in-out;\n }\n\n cursor: ${({ isClickable }) => (isClickable ? 'pointer' : 'default')};\n\n ${({ isClickable, isInverted }) =>\n isClickable &&\n css`\n @media (hover: hover) and (pointer: fine) {\n &&:hover {\n background-color: ${isInverted ? '#dddddd' : '#444444'};\n color: ${isInverted ? '#444444' : '#ffff'};\n }\n }\n `}\n\n &:focus {\n /* background-color: ${({ isInverted }) =>\n isInverted ? '#dddddd' : '#444444'};\n color: ${({ isInverted }) => (isInverted ? '#444444' : '#ffff')}; */\n outline: 2px solid\n ${({ isInverted, theme }) =>\n isInverted\n ? getColors(theme).primary.inverted\n : getColors(theme).primary.default};\n outline-offset: -1px;\n text-decoration: underline;\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n text-decoration: none;\n }\n`;\n\nexport interface TagProps {\n name?: string;\n link?: LinkProps;\n}\n\nconst Tag: FC<\n TagProps & {\n /** Invert colors to use on dark background */\n isInverted?: boolean;\n\n /** Highlight tag if active */\n isActive?: boolean;\n\n /** Click callback */\n onClick?: (ev?: React.SyntheticEvent<HTMLElement>) => void;\n className?: string;\n children?: React.ReactNode;\n }\n> = ({ name, link, isInverted, isActive, onClick, className, children }) => {\n const tag = link?.href ? 'a' : onClick ? 'button' : 'span';\n\n return (\n <View\n as={tag}\n isInverted={isInverted}\n isActive={isActive}\n onClick={onClick}\n isClickable={!!onClick || !!(link && link.href)}\n className={className}\n {...link}\n >\n {name || children}\n </View>\n );\n};\n\nexport default Tag;\n","import React, { useMemo } from 'react';\nimport styled from 'styled-components';\n\nimport Tag, { TagProps } from './Tag';\nimport Copy, { copyStyle } from 'components/typography/Copy';\nimport { spacings, mq, getFonts as font, getColors } from 'utils/styles';\nimport StatusFormatter from 'utils/statusFormatter';\nimport { useLibTheme } from 'utils/LibThemeProvider';\nimport Image, { ImageProps } from './Image';\nimport Link, { LinkProps } from 'components/typography/Link';\nimport { isValidArray } from 'utils/arrays';\n\nconst View = styled.div<{ hasBg?: boolean }>`\n text-decoration: none;\n color: inherit;\n\n background-color: ${({ theme, hasBg }) =>\n hasBg\n ? getColors(theme).elementBg.light\n : getColors(theme).elementBg.medium};\n\n & > * + * {\n margin-top: ${spacings.nudge}px;\n }\n\n @media ${mq.large} {\n display: flex;\n justify-content: flex-end;\n flex-direction: row-reverse;\n\n & > * + * {\n margin-top: 0;\n padding-right: ${spacings.spacer}px;\n }\n }\n`;\n\nconst ImageFlex = styled.div`\n margin-left: auto;\n\n & > * + * {\n margin-left: ${spacings.nudge}px;\n }\n\n & > *:not(:first-child) {\n display: none;\n }\n\n @media ${mq.medium} {\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n\n flex: 0 0 50%;\n\n & > *:not(:first-child) {\n display: inline-block;\n }\n }\n\n @media ${mq.large} {\n flex: 0 1 30%;\n\n & > *:not(:first-child) {\n display: none;\n }\n }\n`;\n\nconst CardImage = styled(Image)`\n height: 100%;\n\n img {\n width: calc(100% + 1px);\n }\n\n @media ${mq.medium} {\n max-width: 50%;\n }\n\n @media ${mq.large} {\n max-width: 100%;\n }\n`;\n\nconst MainContent = styled.div`\n flex: 0 1 70%;\n padding: ${spacings.nudge * 2}px;\n padding-bottom: ${spacings.nudge * 3}px;\n\n & > * + * {\n margin-top: ${spacings.nudge * 3}px;\n }\n\n @media ${mq.large} {\n max-width: 830px;\n padding: ${spacings.nudge * 3}px;\n }\n`;\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\nconst TextWrapper = styled.div`\n & > * + * {\n margin-top: ${spacings.nudge}px;\n }\n`;\n\nconst TagWrapper = styled.div`\n padding-top: ${spacings.nudge}px;\n padding-left: ${spacings.nudge}px;\n`;\n\nconst TitleLink = styled(Link)`\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\nconst Text = styled(Copy)`\n display: -webkit-box;\n -webkit-line-clamp: 4;\n -webkit-box-orient: vertical;\n overflow: hidden;\n`;\n\nexport interface EventProps {\n /** Array of tag item settings */\n tags?: TagProps[];\n\n /** Active tags that are highlighted in this event */\n activeTags?: string[];\n\n /** Event image */\n images?: Array<Omit<ImageProps, 'coverSpace' | 'ratios'>>;\n\n /** Event title */\n title?: string;\n\n /** Event publish date */\n date?: Date;\n\n /** Event duration in seconds */\n duration?: number;\n\n /** Event text (richtext) */\n text?: string;\n\n /** Invert color and background for darker themes */\n isInverted?: boolean;\n\n /** Event link settings */\n link?: LinkProps;\n\n /** Function to inject action elements */\n action?: (props: { isInverted?: boolean }) => React.ReactNode;\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 clickHandler?: (ev?: React.SyntheticEvent<HTMLElement>) => void;\n }) => React.ReactNode;\n\n /** Callback function if tag in news iten has been clicked */\n onTagClick?: (tag: TagProps) => void;\n}\n\nconst EventBlock: React.FC<EventProps & { hasBg?: boolean }> = ({\n customTag,\n onTagClick,\n title,\n images,\n date,\n text,\n link,\n tags,\n isInverted,\n action,\n hasBg,\n}) => {\n const { globals } = useLibTheme();\n\n let publishedAt = '';\n if (date) {\n const formatter = new StatusFormatter(\n date.getTime(),\n '',\n globals.sections.eventDateFormat(date),\n globals.sections.eventTimeFormat(date),\n globals.sections.eventLocaleKey\n );\n publishedAt = formatter.getFormattedDate();\n }\n\n const handleTagClick = (tag: TagProps) =>\n onTagClick\n ? (ev?: React.SyntheticEvent<HTMLElement>) => {\n ev?.preventDefault();\n onTagClick(tag);\n }\n : undefined;\n\n const filteredTags = useMemo(() => {\n return tags?.filter((tag) => tag.name);\n }, [tags]);\n\n const cardImages = useMemo(() => images?.slice(0, 2), [images]);\n\n return (\n <View hasBg={hasBg}>\n {isValidArray(cardImages, false) && cardImages.length > 1 && (\n <ImageFlex>\n {cardImages.map((img, i) => {\n if (!img.small) return null;\n return (\n <CardImage\n {...img}\n key={i}\n coverSpace\n allowEdgeRadius\n isInverted={isInverted}\n ratios={{\n small: { w: 4, h: 3 },\n }}\n />\n );\n })}\n </ImageFlex>\n )}\n <MainContent>\n {isValidArray(filteredTags, false) && (\n <TagContainer>\n {filteredTags.map(\n (tag, i) =>\n tag && (\n <TagWrapper key={'tag_' + i}>\n {customTag ? (\n customTag({\n key: 'tag_' + i,\n name: tag.name || '',\n isActive: false,\n link: tag.link || {},\n clickHandler:\n handleTagClick(tag),\n })\n ) : (\n <Tag\n name={tag.name}\n link={tag.link}\n onClick={handleTagClick(tag)}\n />\n )}\n </TagWrapper>\n )\n )}\n </TagContainer>\n )}\n {title && <TitleLink {...link}>{title}</TitleLink>}\n <TextWrapper>\n {date && (\n <Copy size=\"medium\" type=\"copy-b\">\n {publishedAt}\n </Copy>\n )}\n {text && <Text size=\"small\" innerHTML={text} />}\n </TextWrapper>\n {action && <div> {action({ isInverted: false })} </div>}\n </MainContent>\n </View>\n );\n};\n\nexport default EventBlock;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst Filter: React.FC<{\n iconColor?: string;\n className?: string;\n ariaHidden?: boolean;\n}> = ({ iconColor = 'currentColor', className, ariaHidden = true }) => (\n <SVG\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n className={className}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden={ariaHidden}\n >\n <path\n d=\"M10 18h4v-2h-4v2ZM3 6v2h18V6H3Zm3 7h12v-2H6v2Z\"\n fill={iconColor}\n />\n </SVG>\n);\n\nexport default Filter;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nimport {\n getColors as color,\n getFonts as font,\n spacings,\n withRange,\n} from 'utils/styles';\n\nconst View = styled.a<{\n inverted?: boolean;\n disable?: boolean;\n textDecoration?: 'none' | 'underline';\n}>`\n padding: 0.2em 0;\n\n display: inline-block;\n display: inline-flex;\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n\n font-family: ${({ theme }) => font(theme).copy.medium.family};\n ${({ theme }) => withRange(font(theme).copy.medium.size, 'font-size')}\n font-weight: ${({ theme }) => font(theme).copy.medium.weight};\n text-align: center;\n text-decoration: ${({ textDecoration }) =>\n textDecoration ? textDecoration : 'underline'};\n line-height: 1;\n letter-spacing: ${({ theme }) => font(theme).copy.medium.letterSpacing};\n\n perspective: 1000;\n -webkit-font-smoothing: subpixel-antialiased;\n -webkit-perspective: 1000;\n -moz-osx-font-smoothing: grayscale;\n will-change: auto;\n\n outline-color: ${({ theme, inverted }) =>\n inverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n border: none;\n cursor: pointer;\n\n pointer-events: ${({ disable }) => (disable ? 'none' : 'all')};\n\n background: none;\n color: ${({ theme, inverted, disable }) =>\n disable\n ? color(theme).elementBg.medium\n : inverted\n ? color(theme).text.copyInverted\n : color(theme).text.copy};\n\n & > * {\n color: ${({ theme, inverted, disable }) =>\n disable\n ? color(theme).elementBg.medium\n : inverted\n ? color(theme).text.copyInverted\n : color(theme).text.copy};\n }\n\n & > * + * {\n margin-left: ${spacings.nudge}px;\n }\n\n & > :not(:last-child) {\n padding-right: ${spacings.nudge}px;\n }\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 }\n\n &:focus:not(:focus-visible) {\n outline: none;\n }\n\n &:active {\n opacity: 0.6;\n }\n`;\n\ninterface Props {\n isInverted?: boolean;\n isDisabled?: boolean;\n onClick?: () => void;\n textDecoration?: 'none' | 'underline';\n className?: string;\n children?: React.ReactNode;\n}\n\nexport type BtnProps = Props & {\n as?: 'button';\n};\n\nexport type LinkProps = Props & {\n as?: 'a';\n href?: string;\n isExternal?: boolean;\n};\n\nconst Pointer: React.FC<BtnProps | LinkProps> = React.forwardRef(\n (\n {\n as,\n isInverted,\n isDisabled,\n onClick,\n className,\n textDecoration,\n children,\n ...rest\n },\n ref\n ) => {\n if (as === 'button') {\n return (\n <View\n textDecoration={textDecoration}\n ref={ref}\n as={as as any}\n inverted={isInverted}\n disable={isDisabled}\n onClick={onClick}\n className={className}\n {...rest}\n >\n {children}\n </View>\n );\n } else {\n return (\n <View\n textDecoration={textDecoration}\n ref={ref}\n as={as as any}\n href={(rest as LinkProps).href}\n data-disabled={isDisabled}\n data-inverted={isInverted}\n target={\n (rest as LinkProps).isExternal ? '_blank' : undefined\n }\n rel={\n (rest as LinkProps).isExternal\n ? 'noopener noreferrer'\n : undefined\n }\n inverted={isInverted}\n disable={isDisabled}\n onClick={onClick}\n className={className}\n {...rest}\n >\n {children}\n </View>\n );\n }\n }\n);\n\nPointer.displayName = 'Button';\n\nconst Icon = styled.div<{ iconColor?: string }>`\n display: flex;\n flex-direction: row;\n justify-content: flex-end;\n align-items: center;\n\n color: ${({ theme, iconColor }) => iconColor || color(theme).text.copy};\n\n transition: transform 0.2s ease-in-out;\n\n ${View}[data-inverted='true'] > & {\n color: ${({ theme, iconColor }) =>\n iconColor || color(theme).text.copyInverted};\n }\n\n ${View}[data-disabled='true'] > & {\n color: ${({ theme, iconColor }) =>\n iconColor || color(theme).elementBg.medium};\n }\n\n ${View}:hover > & {\n transform: translateX(3px);\n }\n`;\n\nconst Label = styled.span`\n display: inline-block;\n`;\n\nexport default { View: Pointer, Label: Label, Icon: Icon };\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 ? color(theme).elementBg.light : color(theme).elementBg.medium};\n }\n\n & > *:first-of-type {\n border-top: 1px solid\n ${({ theme, hasBg }) =>\n hasBg ? color(theme).elementBg.light : color(theme).elementBg.medium};\n }\n\n & > *:last-of-type {\n border-bottom: 1px solid\n ${({ theme, hasBg }) =>\n hasBg ? color(theme).elementBg.light : color(theme).elementBg.medium};\n } */\n\n & > * + * {\n padding-top: ${spacings.nudge * 3}px;\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 hasBg={bgMode === 'full'}\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 ? color(theme).elementBg.light : color(theme).elementBg.medium};\n }\n\n & > *:first-of-type {\n border-top: 1px solid\n ${({ theme, hasBg }) =>\n hasBg ? color(theme).elementBg.light : color(theme).elementBg.medium};\n }\n\n & > *:last-of-type {\n border-bottom: 1px solid\n ${({ theme, hasBg }) =>\n hasBg ? color(theme).elementBg.light : color(theme).elementBg.medium};\n } */\n\n & > * + * {\n padding-top: ${spacings.nudge * 3}px;\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 hasBg={bgMode === 'full'}\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 Copy from 'components/typography/Copy';\nimport React, { FC } from 'react';\nimport styled from 'styled-components';\nimport { isValidArray } from 'utils/arrays';\n\nimport { mq, spacings } from 'utils/styles';\n\nconst View = styled.div``;\n\nconst Container = styled.ul`\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n\n margin: 0;\n padding: 0;\n margin-left: -${spacings.spacer}px;\n margin-top: -${spacings.nudge * 5}px;\n list-style: none;\n`;\n\nconst Item = styled.li`\n flex: 1 1 100%;\n padding-left: ${spacings.spacer}px;\n padding-top: ${spacings.nudge * 5}px;\n\n @media ${mq.medium} {\n flex: 1 1 300px;\n }\n`;\n\nconst Title = styled(Copy)`\n display: block;\n margin-bottom: ${spacings.nudge * 3}px;\n`;\n\nconst Infos = styled.ul`\n list-style: none;\n margin: 0;\n padding: 0;\n`;\n\nconst Content = styled.li`\n display: -ms-grid;\n display: grid;\n margin: 0;\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 * 2}px;\n }\n\n & > * + * {\n margin-left: ${spacings.nudge * 2}px;\n }\n`;\n\nconst Icon = styled(Copy)`\n height: 20px;\n width: 20px;\n\n & > * {\n height: 20px;\n width: 20px;\n }\n`;\n\nexport interface InfoGroup {\n title?: string;\n items: Info[];\n}\n\nexport interface Info {\n /** icon injection function */\n icon?: (isInverted?: boolean) => React.ReactNode;\n /** info text (richtText) */\n text?: string;\n}\n\nconst InfoList: FC<{\n /** Invert text and icon color for dark backgrounds */\n isInverted?: boolean;\n\n /** Array of info groups */\n items?: InfoGroup[];\n\n className?: string;\n}> = ({ isInverted, items, className }) => {\n return (\n <View className={className}>\n <Container>\n {items?.map((group, i) => {\n const groupItems =\n group?.items?.filter((item) => item.text) || [];\n const hasItems = isValidArray(groupItems, false);\n\n return (\n <Item key={i}>\n {group.title && (\n <Title\n size=\"small\"\n type=\"copy-b\"\n renderAs=\"span\"\n isInverted={isInverted}\n >\n {group.title}\n </Title>\n )}\n {hasItems && (\n <Infos>\n {groupItems.map((info, ii) => (\n <Content key={ii}>\n <Icon isInverted={isInverted}>\n {info.icon &&\n info.icon(isInverted)}\n </Icon>\n {info.text && (\n <Copy\n size=\"small\"\n isInverted={isInverted}\n innerHTML={info.text}\n allowLinkIcons={false}\n />\n )}\n </Content>\n ))}\n </Infos>\n )}\n </Item>\n );\n })}\n </Container>\n </View>\n );\n};\n\nexport default InfoList;\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 ImageContainer = styled.div`\n position: relative;\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n justify-content: center;\n\n overflow: hidden;\n\n margin-bottom: ${spacings.spacer}px;\n`;\n\nconst StyledImage = styled(Image)`\n &:not(:first-child) {\n display: none;\n }\n\n @media ${mq.medium} {\n max-width: 50%;\n\n &:not(:first-child) {\n display: inline-block;\n }\n\n & + & {\n margin-left: ${spacings.nudge}px;\n }\n }\n`;\n\nconst ImageBackground = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n\n background-position: center;\n background-size: cover;\n background-repeat: no-repeat;\n\n filter: blur(10px);\n transform: scale(1.5);\n z-index: -1;\n`;\n\nconst StyledTextImage = styled(Image)`\n margin-top: ${spacings.nudge * 3}px;\n\n @media ${mq.medium} {\n display: none;\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\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 const images = useMemo(() => event?.images?.slice(0, 2), [event?.images]);\n const secondaryImage = images?.[1];\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 {isValidArray(images, false) && (\n <ImageContainer>\n {images.map((img, i) => {\n if (!img.small) return null;\n return (\n <StyledImage\n key={i}\n {...img}\n coverSpace\n allowEdgeRadius\n isInverted={isInverted}\n ratios={{ small: { w: 4, h: 3 } }}\n />\n );\n })}\n {images.length < 2 && (\n <ImageBackground\n style={{\n backgroundImage: `url(${event?.images?.[0].small})`,\n }}\n />\n )}\n </ImageContainer>\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\n size=\"big\"\n type=\"copy-b\"\n isInverted={isInverted}\n >\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 isInverted={isInverted}\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 {secondaryImage && (\n <StyledTextImage\n {...secondaryImage}\n coverSpace\n allowEdgeRadius\n isInverted={isInverted}\n ratios={{ small: { w: 4, h: 3 } }}\n />\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 FeatureActionProps {\n isInverted?: boolean;\n isTextCentered?: boolean;\n}\n\nexport interface FeatureProps {\n /** Invert color and background for darker themes */\n isInverted?: boolean;\n\n /** Center all texts */\n isCentered?: boolean;\n\n /** Image on item's top */\n image?: ImageProps;\n\n /** Item title text underneath the image */\n title?: string;\n\n /** Small item description text (richtext) */\n description?: string;\n\n /** Item intro text (partial richtext cause it's always bold) */\n intro?: string;\n\n /** Item's main text (richtext) */\n text?: string;\n\n /** Item link settings */\n link?: LinkProps;\n\n /** Function to inject custom primary button */\n action?: (props: FeatureActionProps) => React.ReactNode;\n}\n\nconst Feature = forwardRef<\n HTMLDivElement,\n FeatureProps & {\n className?: string;\n }\n>(\n (\n {\n title,\n description,\n intro,\n text,\n link,\n image,\n isInverted = false,\n isCentered = false,\n action,\n className,\n },\n ref\n ) => {\n return (\n <View ref={ref} isCentered={isCentered} className={className}>\n {image?.small && (\n <ImageContainer {...link} isCentered={isCentered}>\n <StyledImage\n small={image.small}\n medium={image.medium}\n semilarge={image.semilarge}\n large={image.large}\n xlarge={image.xlarge}\n alt={image.alt}\n ratios={image.ratios}\n coverSpace={\n image.coverSpace === undefined\n ? true\n : image.coverSpace\n }\n isInverted={isInverted}\n />\n </ImageContainer>\n )}\n <TitleLink\n {...link}\n isInverted={isInverted}\n ariaLabel={title}\n dataSheet=\"title\"\n >\n {title}\n </TitleLink>\n <Copy\n size=\"small\"\n isInverted={isInverted}\n data-sheet=\"desc\"\n innerHTML={description}\n />\n <ArticleContent isCentered={isCentered}>\n <Copy\n type=\"copy-b\"\n isInverted={isInverted}\n innerHTML={intro}\n data-sheet=\"intro\"\n />\n <Copy\n type=\"copy\"\n size=\"medium\"\n isInverted={isInverted}\n innerHTML={text}\n data-sheet=\"text\"\n />\n </ArticleContent>\n {action && (\n <Action>\n {action({ isInverted, isTextCentered: isCentered })}\n </Action>\n )}\n </View>\n );\n }\n);\n\nFeature.displayName = 'Feature';\n\nexport default Feature;\n","import React, { useMemo } from 'react';\n\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Feature, { FeatureProps } from 'components/blocks/Feature';\nimport { useEqualSheetHeight } from 'utils/useEqualSheetHeight';\nimport Grid from 'components/base/Grid';\n\nconst FeatureList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Center texts in every feature item */\n isCentered?: boolean;\n\n /** Array with feature item content */\n features?: Omit<FeatureProps, 'isInverted' | 'isCentered'>[];\n\n /** If not defined the component falls back to legacy logic: Uneven items = max 3 per row, even items = max 2 per row */\n columns?: 2 | 3;\n\n /** Section background */\n bgMode?: 'full' | 'splitted' | 'inverted';\n}> = ({ anchorId, features, bgMode, isCentered = false, columns }) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const featureCount = features?.length || 0;\n\n const isHalf = useMemo(() => {\n if (columns) {\n return columns === 2;\n }\n\n // legacy logic\n return features && features.length % 2 === 0;\n }, [features, columns]);\n\n const { sheetRefs: cardRefs } = useEqualSheetHeight<HTMLDivElement>({\n listLength: featureCount,\n identifiers: [\n '[data-sheet=\"title\"]',\n '[data-sheet=\"desc\"]',\n '[data-sheet=\"intro\"]',\n '[data-sheet=\"text\"]',\n ],\n responsive: {\n small: 1,\n medium: 1,\n semilarge: 2,\n large: isHalf ? 2 : 3,\n xlarge: isHalf ? 2 : 3,\n },\n });\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n >\n <Wrapper addWhitespace clampWidth=\"normal\">\n <Grid.Row\n halign={isHalf || featureCount <= 2 ? 'center' : 'left'}\n >\n {features?.map((feature, i) => (\n <Grid.Col\n semilarge={{ span: 6 / 12 }}\n large={{\n span: isHalf ? 5 / 12 : 4 / 12,\n }}\n key={i}\n >\n <Feature\n ref={cardRefs[i]}\n {...feature}\n isCentered={isCentered}\n isInverted={isInverted}\n />\n </Grid.Col>\n ))}\n </Grid.Row>\n </Wrapper>\n </Section>\n );\n};\n\nexport const FeatureListComponent = FeatureList;\nexport default withLibTheme(FeatureList);\n","import { useEffect, useRef, useState } from 'react';\nimport useScrollThrottle from './useScrollThrottle';\n\nexport enum PageScrollDirection {\n UP,\n DOWN,\n}\n\ninterface ScrollSettings {\n /** Direction state change delay in pixels */\n directionOffset?: {\n up?: number;\n down?: number;\n };\n /** Set top offset area */\n offset?: number;\n /** On leave top offset callback */\n onLeftOffset?: (dir: PageScrollDirection) => void;\n /** Throttle timeout of resize event. Default: 200ms */\n resizeThrottleTimeout?: number;\n}\n\nconst usePageScroll = (settings?: ScrollSettings) => {\n const [isTop, setIsTop] = useState<boolean>(true);\n const [isInOffset, setIsInOffset] = useState<boolean>(true);\n const [leftOffsetFromTop, setLeftOffsetFromTop] = useState<boolean>(false);\n\n const lastScrollPos = useRef<number>(0);\n const pxSinceLastSwitch = useRef<number>(0);\n\n const [scrollDirection, setScrollDirection] = useState<PageScrollDirection>(\n PageScrollDirection.DOWN\n );\n\n const directionDownOffset = settings?.directionOffset?.down || 0;\n const directionUpOffset = settings?.directionOffset?.up || 0;\n\n // Throttle scroll event for perfomance\n const scrollState = useScrollThrottle(\n settings?.resizeThrottleTimeout !== undefined\n ? settings.resizeThrottleTimeout\n : 200\n );\n\n useEffect(() => {\n if (!scrollState) return;\n if (typeof window === 'undefined') return;\n\n const scrollY = scrollState.scrollY;\n const isTop = scrollY <= 0;\n\n // check if page is scroll on top\n setIsTop(isTop);\n\n // check offset\n if (settings?.offset && scrollY <= settings.offset) {\n setIsInOffset(true);\n } else {\n setIsInOffset((prev) => {\n if (prev) {\n settings?.onLeftOffset?.(scrollDirection);\n setLeftOffsetFromTop(true);\n }\n return false;\n });\n }\n\n /**\n * calculate direction changes\n */\n\n // get difference between current and last scrollY position\n const diff = scrollY - lastScrollPos.current;\n // get accumulated pixels since last direction change\n let absAccPx = Math.abs(pxSinceLastSwitch.current);\n\n // check if direction changed. if not iterate accumulated pixels value\n if (diff < 0 && pxSinceLastSwitch.current > 0) {\n pxSinceLastSwitch.current = 0;\n } else if (diff > 0 && pxSinceLastSwitch.current < 0) {\n pxSinceLastSwitch.current = 0;\n } else {\n pxSinceLastSwitch.current += diff;\n }\n\n // set current accumulated value\n absAccPx = Math.abs(pxSinceLastSwitch.current);\n\n // set direction states\n if (isTop) {\n setScrollDirection(PageScrollDirection.DOWN);\n } else if (diff < 0 && absAccPx >= directionUpOffset) {\n setScrollDirection(PageScrollDirection.UP);\n } else if (diff > 0 && absAccPx >= directionDownOffset) {\n setScrollDirection(PageScrollDirection.DOWN);\n }\n\n // save last scroll position\n lastScrollPos.current = scrollY;\n }, [\n directionDownOffset,\n directionUpOffset,\n scrollDirection,\n scrollState,\n settings,\n ]);\n\n useEffect(() => {\n // reset left offset flag on top\n if (isTop) setLeftOffsetFromTop(false);\n }, [isTop]);\n\n return {\n isTop,\n scrollDirection,\n isInOffset,\n leftOffsetFromTop,\n };\n};\n\nexport default usePageScroll;\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, useEffect, useRef, useState } from 'react';\nimport styled from 'styled-components';\n\nimport { useMediaQuery } from 'utils/useMediaQuery';\nimport Image from 'components/blocks/Image';\nimport { clampValue } from 'utils/clamp';\nimport { HeaderImage } from './Header';\n\nconst AnimationContainer = styled.div`\n position: relative;\n width: 100%;\n height: 100%;\n overflow: hidden;\n`;\n\nconst PosterImage = styled(Image)`\n position: absolute;\n top: 0;\n left: 0;\n\n height: 100%;\n width: 100%;\n\n img {\n height: 100%;\n }\n`;\n\nconst AnimationImage = styled.img<{\n scale?: number;\n opacity?: number;\n zoomPoint?: [number, number];\n}>`\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n\n object-fit: cover;\n object-position: center;\n\n transition-property: opacity, transform;\n transition-duration: ${({ scale }) => `2s, ${scale === 1 ? '0s' : '13s'}`};\n transition-delay: ${({ scale }) =>\n `${scale === 1 ? '1s' : '0s'}, ${scale === 1 ? '3s' : '0s'}`};\n\n opacity: ${({ opacity }) => opacity && opacity};\n transform: scale(${({ scale }) => scale || 1})\n rotate(${({ scale }) => (scale !== 1 ? 0.04 : 0)}deg);\n transform-origin: ${({ zoomPoint }) =>\n zoomPoint ? `${zoomPoint[0] * 100}% ${zoomPoint[1] * 100}%` : 'center'};\n\n will-change: transform, opacity;\n`;\n\nconst AnimationImages: FC<{\n zoom?: number;\n zoomPoint?: [number, number];\n images: KenBurnsImage[];\n interval?: number;\n onChange?: (imgId: number) => void;\n}> = ({\n zoom = 1.08,\n zoomPoint = [0.5, 0.5],\n interval = 10000,\n images,\n onChange,\n}) => {\n const intervalRef = useRef<number | null>();\n const initialTimeoutRef = useRef<number | null>();\n const [activeImg, setActiveImg] = useState<number>(-1);\n\n useEffect(() => {\n const changeImage = () => {\n setActiveImg((prev) => {\n return (prev + 1) % images.length;\n });\n };\n\n // changeImage();\n initialTimeoutRef.current = window.setTimeout(changeImage, 200);\n if (intervalRef.current) window.clearInterval(intervalRef.current);\n intervalRef.current = window.setInterval(changeImage, interval);\n\n return () => {\n if (initialTimeoutRef.current)\n window.clearTimeout(initialTimeoutRef.current);\n if (intervalRef.current) window.clearInterval(intervalRef.current);\n };\n }, [images, interval]);\n\n useEffect(() => {\n if (activeImg !== -1) onChange && onChange(activeImg);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [activeImg]);\n\n return (\n <React.Fragment>\n {images.map((img, i) => {\n let imgZoom = 1;\n let imgZoomPoint = zoomPoint;\n\n if (i === activeImg) {\n imgZoom = img.zoom !== undefined ? img.zoom : zoom;\n }\n\n if (img.zoomPoint) {\n imgZoomPoint = getValidZoomPoint(img.zoomPoint);\n }\n\n return (\n <AnimationImage\n key={i}\n style={{\n zIndex: i === activeImg ? 1 : 0,\n }}\n src={img.image}\n scale={imgZoom}\n opacity={i === activeImg ? 1 : 0}\n zoomPoint={imgZoomPoint}\n alt={img.alt || ''}\n />\n );\n })}\n </React.Fragment>\n );\n};\n\nconst preloadImages = (images: KenBurnsImage[]): Promise<KenBurnsImage>[] => {\n const loadedImages: Promise<KenBurnsImage>[] = images.map((req) => {\n return new Promise((resolve) => {\n const img = new window.Image();\n img.src = req.image;\n img.onload = () => resolve(req);\n });\n });\n\n return loadedImages;\n};\n\ntype KenBurnsMq = 'small' | 'medium' | 'large' | 'xlarge';\n\ninterface KenBurnsImage {\n id: number | string;\n image: string;\n alt?: string;\n zoom?: number;\n zoomPoint?: [number, number];\n}\n\nconst getValidZoomPoint = (point: [number, number]) => {\n return [clampValue(point[0], 0, 1), clampValue(point[1], 0, 1)] as [\n number,\n number\n ];\n};\n\nconst HeaderKenBurns: React.FC<{\n images: HeaderImage[];\n zoom?: number;\n zoomPoint?: [number, number];\n interval?: number;\n onImageChange?: (currentImg: HeaderImage) => void;\n className?: string;\n children?: React.ReactNode;\n}> = ({\n images,\n zoom = 1.08,\n zoomPoint = [0.5, 0.5],\n interval = 10000,\n onImageChange,\n className,\n children,\n}) => {\n const mqs: KenBurnsMq[] = ['small', 'medium', 'large', 'xlarge'];\n const currentMq = useMediaQuery(mqs) as KenBurnsMq | undefined;\n\n const [loadedImages, setLoadedImages] = useState<{\n [key: string]: KenBurnsImage[];\n }>({\n small: [],\n medium: [],\n large: [],\n xlarge: [],\n });\n\n useEffect(() => {\n if (currentMq) {\n const loadedForMq = loadedImages[currentMq];\n\n if (loadedForMq.length < images.length && images.length >= 2) {\n const requestedImages: KenBurnsImage[] = images.map(\n (img, i) => ({\n id: i,\n image: img[currentMq] as string,\n zoom: img.zoom || zoom,\n zoomPoint: img.zoomPoint || zoomPoint,\n alt: img.alt,\n })\n );\n\n const resolve = async (\n imagePromises: Promise<KenBurnsImage>[]\n ) => {\n for (const promise of imagePromises) {\n const loadedImg = await promise;\n\n setLoadedImages((prev) => {\n // check if image id already exists in array\n if (\n !prev[currentMq].find(\n (e) => e.id === loadedImg.id\n )\n ) {\n return {\n ...prev,\n [currentMq]: [\n ...prev[currentMq],\n loadedImg,\n ],\n };\n } else return prev;\n });\n }\n };\n\n resolve(preloadImages(requestedImages));\n }\n }\n }, [currentMq, images, loadedImages, zoom, zoomPoint]);\n\n return (\n <AnimationContainer className={className}>\n <PosterImage {...images[0]} coverSpace ratios={undefined} />\n {currentMq && loadedImages[currentMq].length >= images.length && (\n <AnimationImages\n zoom={zoom}\n zoomPoint={getValidZoomPoint(zoomPoint)}\n interval={interval}\n images={loadedImages[currentMq]}\n onChange={(id) =>\n images[id] && onImageChange && onImageChange(images[id])\n }\n />\n )}\n {children}\n </AnimationContainer>\n );\n};\n\nexport default HeaderKenBurns;\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport { HeaderFocus } from './Header';\n\nconst PosterView = styled.div`\n position: relative;\n width: 100%;\n height: 100%;\n`;\n\nconst BgImage = styled(Image)<{ focus?: HeaderFocus }>`\n height: 100%;\n\n img {\n height: 100%;\n object-position: ${({ focus }) =>\n `${focus?.[0] || 'center'} ${focus?.[1] || 'center'}`};\n }\n`;\n\nconst HeaderPoster: React.FC<{\n isInverted?: boolean;\n bgImage?: Omit<ImageProps, 'ratios' | 'coverSpace'>;\n focus?: HeaderFocus;\n className?: string;\n children?: React.ReactNode;\n}> = ({ isInverted, bgImage, focus, className, children }) => {\n return (\n <PosterView className={className}>\n {bgImage && (\n <BgImage\n {...bgImage}\n coverSpace\n ratios={undefined}\n isInverted={isInverted}\n focus={focus}\n />\n )}\n {children}\n </PosterView>\n );\n};\n\nexport default HeaderPoster;\n","import React, { useRef } from 'react';\nimport styled from 'styled-components';\n\nimport { useState, useEffect } from 'react';\nimport Image from 'components/blocks/Image';\nimport { useMediaQuery } from 'utils/useMediaQuery';\nimport { HeaderFocus, HeaderImage } from './Header';\nimport { mq, spacings } from 'utils/styles';\nimport { useObserverSupport } from 'utils/useObserverSupport';\nimport useUpdateEffect from 'utils/useUpdateEffect';\n\nconst PosterView = styled.div`\n position: relative;\n width: 100%;\n height: 100%;\n`;\n\nconst PlaceholderImg = styled(Image)<{ focus?: HeaderFocus }>`\n position: relative;\n height: 100%;\n\n img {\n object-position: ${({ focus }) =>\n `${focus?.[0] || 'center'} ${focus?.[1] || 'center'}`};\n\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n height: 100%;\n z-index: 0;\n }\n\n margin: 0 auto;\n\n @media ${mq.medium} {\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\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 AutoplayVideo = styled.video<{\n isVisible?: boolean;\n focus?: HeaderFocus;\n}>`\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n height: 100%;\n width: 100%;\n object-fit: cover;\n object-position: ${({ focus }) =>\n `${focus?.[0] || 'center'} ${focus?.[1] || 'center'}`};\n opacity: ${({ isVisible }) => (isVisible ? 1 : 0)};\n pointer-events: none;\n z-index: 1;\n\n transition: opacity 0.3s ease-in-out;\n`;\n\ntype HeaderVideoMq = 'small' | 'medium' | 'semilarge' | 'large' | 'xlarge';\n\nconst HeaderVideo: React.FC<{\n isInverted?: boolean;\n loadOnMobile?: boolean;\n placeholderImg?: HeaderImage;\n focus?: HeaderFocus;\n videoUrl?: string;\n className?: string;\n children?: React.ReactNode;\n}> = ({\n isInverted,\n loadOnMobile = true,\n placeholderImg,\n focus,\n videoUrl,\n className,\n children,\n}) => {\n const videoRef = useRef<HTMLVideoElement | null>(null);\n const viewRef = useRef<HTMLDivElement | null>(null);\n const [isLoaded, setLoaded] = useState<boolean>(\n !placeholderImg?.small || false\n );\n const isObserverSupported = useObserverSupport();\n const currentMq = useMediaQuery([\n 'small',\n 'medium',\n 'semilarge',\n 'large',\n 'xlarge',\n ]) as HeaderVideoMq | undefined;\n\n const isMobile = currentMq === undefined || currentMq === 'small';\n const isVideoAllowed = loadOnMobile || !isMobile;\n\n const [isVideoActive, setVideoActive] = useState<boolean>(false);\n\n useEffect(() => {\n if (!isVideoAllowed) setLoaded(false);\n }, [isMobile, isVideoAllowed, loadOnMobile]);\n\n useEffect(() => {\n if (!videoRef.current) return;\n\n if (videoRef.current.readyState > 3) {\n setLoaded(true);\n }\n }, []);\n\n useUpdateEffect(() => {\n if (!isVideoAllowed || !videoUrl || !viewRef.current) 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, isVideoAllowed]);\n\n return (\n <PosterView ref={viewRef} className={className}>\n {placeholderImg?.small && !isLoaded && (\n <PlaceholderImg\n {...placeholderImg}\n coverSpace\n ratios={undefined}\n isInverted={isInverted}\n focus={focus}\n />\n )}\n {videoUrl && isVideoAllowed && (\n <AutoplayVideo\n ref={videoRef}\n isVisible={isLoaded}\n src={isVideoActive ? videoUrl : undefined}\n muted\n autoPlay\n loop\n playsInline\n onCanPlayThrough={() => {\n setLoaded(true);\n }}\n focus={focus}\n />\n )}\n {children}\n </PosterView>\n );\n};\n\nexport default HeaderVideo;\n","import React, { FC, useMemo } from 'react';\nimport styled from 'styled-components';\n\nimport { NavItem } from '../menu/Menu';\nimport Link, { LinkProps } from 'components/typography/Link';\nimport { spacings, getColors as color, mq } from 'utils/styles';\nimport Copy, { copyStyle } from 'components/typography/Copy';\nimport AngleLeft from 'components/base/icons/AngleLeft';\nimport { getCurrentNavPath } from 'utils/navigation';\n\nconst View = styled.nav`\n min-width: 0;\n`;\n\nconst List = styled.ul`\n display: flex;\n align-items: center;\n list-style: none;\n margin: 0;\n padding: 0;\n min-width: inherit;\n\n & > li:first-child {\n flex: 1 0 auto;\n }\n\n @media ${mq.semilarge} {\n & > li + li {\n margin-left: ${spacings.nudge}px;\n }\n }\n`;\n\nconst ListItem = styled.li<{ isCurrent?: boolean }>`\n display: ${({ isCurrent }) => (isCurrent ? 'flex' : 'none')};\n min-width: inherit;\n\n @media ${mq.semilarge} {\n display: flex;\n\n & > * + * {\n margin-left: ${spacings.nudge}px;\n }\n }\n`;\n\nconst NavLink = styled(Link)<{\n isInverted?: boolean;\n clamp?: boolean;\n showOnMobile?: boolean;\n showOnDesktop?: boolean;\n}>`\n display: ${({ showOnMobile }) => (showOnMobile ? 'inline-flex' : 'none')};\n align-items: center;\n max-width: ${({ clamp }) => clamp && '120px'};\n\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n ${copyStyle('copy', 'small')}\n color: ${({ theme, isInverted }) =>\n isInverted ? color(theme).text.inverted : color(theme).text.default};\n text-decoration: underline;\n\n & > * {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n & > * + * {\n margin-left: ${spacings.nudge}px;\n }\n\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n color: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).text.inverted\n : color(theme).text.default};\n }\n }\n\n @media ${mq.semilarge} {\n display: ${({ showOnDesktop }) =>\n showOnDesktop ? 'inline-block' : 'none'};\n }\n`;\n\nconst NavLabel = styled.span<{\n isInverted?: boolean;\n clamp?: boolean;\n showOnMobile?: boolean;\n showOnDesktop?: boolean;\n}>`\n display: ${({ showOnMobile }) => (showOnMobile ? 'inline-flex' : 'none')};\n align-items: center;\n max-width: ${({ clamp }) => clamp && '120px'};\n\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n ${copyStyle('copy', 'small')}\n color: ${({ theme, isInverted }) =>\n isInverted ? color(theme).text.inverted : color(theme).text.default};\n text-decoration: none;\n\n & > * {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n & > * + * {\n margin-left: ${spacings.nudge}px;\n }\n\n @media ${mq.semilarge} {\n display: ${({ showOnDesktop }) =>\n showOnDesktop ? 'inline-block' : 'none'};\n }\n`;\n\nconst Seperator = styled(Copy)`\n display: none;\n\n transition: color 0.2s ease-in-out;\n\n @media ${mq.semilarge} {\n display: inline-block;\n }\n`;\n\nconst BackIconContainer = styled.span`\n flex: 0 0 auto;\n`;\n\nconst BreadcrumbItem: FC<\n NavItem & {\n isInverted?: boolean;\n showOnMobile?: boolean;\n showOnDesktop?: boolean;\n children?: React.ReactNode;\n }\n> = ({ isInverted, label, link, showOnMobile, showOnDesktop, children }) => {\n if (link?.href) {\n return (\n <NavLink\n {...link}\n isInverted={isInverted}\n showOnMobile={showOnMobile}\n showOnDesktop={showOnDesktop}\n >\n {children || label}\n </NavLink>\n );\n } else {\n return (\n <NavLabel\n isInverted={isInverted}\n showOnMobile={showOnMobile}\n showOnDesktop={showOnDesktop}\n >\n {children || label}\n </NavLabel>\n );\n }\n};\n\nconst BarBreadcrumbs: FC<{\n isInverted?: boolean;\n rootLink?: LinkProps;\n rootLabel?: string;\n navItems?: Array<NavItem>;\n seperator?: (props: { isInverted?: boolean }) => React.ReactNode;\n back?: (props: { isInverted?: boolean }) => React.ReactNode;\n className?: string;\n}> = ({\n isInverted = false,\n rootLink,\n rootLabel,\n navItems,\n seperator,\n back,\n className,\n}) => {\n const currentNavPath = useMemo(() => {\n return getCurrentNavPath(\n navItems,\n rootLink?.href ? [rootLink?.href] : []\n );\n }, [navItems, rootLink?.href]);\n\n const rootItem: NavItem = {\n uid: 'root',\n label: rootLabel || 'Home',\n link: rootLink,\n };\n\n return (\n <View aria-label=\"breadcrumbs\" className={className}>\n <List>\n <ListItem>\n <BreadcrumbItem\n showOnDesktop\n isInverted={isInverted}\n {...rootItem}\n />\n </ListItem>\n\n {currentNavPath?.map((item, i) => {\n const isCurrent = i === currentNavPath.length - 1;\n const prev = i - 1 >= 0 ? currentNavPath[i - 1] : rootItem;\n\n return (\n <ListItem key={i} isCurrent={isCurrent}>\n <Seperator size=\"small\" isInverted={isInverted}>\n {seperator ? seperator({ isInverted }) : '/'}\n </Seperator>\n {isCurrent ? (\n <>\n {prev && (\n <BreadcrumbItem\n {...prev}\n showOnMobile\n isInverted={isInverted}\n >\n <BackIconContainer>\n {back ? (\n back({ isInverted })\n ) : (\n <AngleLeft />\n )}\n </BackIconContainer>\n <span>{prev.label}</span>\n </BreadcrumbItem>\n )}\n <BreadcrumbItem\n {...item}\n link={{}}\n showOnDesktop\n isInverted={isInverted}\n />\n </>\n ) : (\n <BreadcrumbItem\n {...item}\n showOnDesktop\n isInverted={isInverted}\n />\n )}\n </ListItem>\n );\n })}\n </List>\n </View>\n );\n};\n\nexport default BarBreadcrumbs;\n","import styled from 'styled-components';\nimport { spacings, getColors as color } from 'utils/styles';\n\nconst Column = styled.div<{\n isInverted?: boolean;\n takeSpace?: boolean;\n vAlign?: 'top' | 'center' | 'bottom';\n}>`\n flex: ${({ takeSpace }) => (takeSpace ? 1 : undefined)};\n\n padding: ${spacings.nudge}px 0;\n min-width: -webkit-min-content;\n align-self: ${({ vAlign }) => {\n switch (vAlign) {\n case 'center':\n return 'center';\n\n case 'bottom':\n return 'flex-end';\n\n case 'top':\n return 'flex-start';\n\n default:\n return undefined;\n }\n }};\n\n text-align: center;\n color: ${({ theme, isInverted }) =>\n isInverted ? color(theme).text.inverted : color(theme).text.inverted};\n\n &:first-child {\n text-align: left;\n }\n\n &:last-child {\n text-align: right;\n }\n\n &:not(:first-child):not(:last-child) {\n margin: 0 ${spacings.nudge * 2}px;\n }\n`;\n\nexport default Column;\n","import React, { FC } from 'react';\nimport styled from 'styled-components';\n\nimport Link, { LinkProps } from 'components/typography/Link';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport { getColors } from 'utils/styles';\n\nconst View = styled(Link)`\n display: block;\n display: flex;\n justify-content: center;\n min-width: 60px;\n max-width: 100%;\n max-height: 100%;\n\n &:focus {\n outline: 2px solid ${({ theme }) => getColors(theme).primary.default};\n outline-offset: 1px;\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n }\n`;\n\nconst Logo = styled(Image)`\n width: auto;\n height: 100%;\n object-fit: contain;\n`;\n\nexport interface Logo {\n src?: string;\n alt?: string;\n}\n\nconst BarLogo: FC<{\n link?: Omit<LinkProps, 'coverSpace' | 'ratios'>;\n logo?: ImageProps;\n className?: string;\n}> = ({ link, logo, className }) => {\n return (\n <View {...link} className={className}>\n {logo?.small && (\n <Logo\n {...logo}\n coverSpace={false}\n ratios={undefined}\n showPlaceholder={false}\n />\n )}\n </View>\n );\n};\n\nexport default BarLogo;\n","import React, { FC } from 'react';\nimport styled from 'styled-components';\n\nimport { getColors as color, spacings } from 'utils/styles';\n\nconst Toggle = styled.button<{ isInverted?: boolean }>`\n background: transparent;\n border: none;\n color: ${({ isInverted, theme }) =>\n isInverted ? color(theme).text.inverted : color(theme).text.default};\n\n padding: ${spacings.nudge}px;\n margin-left: -${spacings.nudge}px;\n outline: none;\n\n cursor: pointer;\n\n transition: color 0.2s ease-in-out;\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 &:focus > * {\n outline: dotted 2px\n ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n outline-offset: 4px;\n\n color: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.invertedHover\n : color(theme).primary.hover};\n }\n\n &:focus:not(:focus-visible) > * {\n outline: none;\n }\n`;\n\nconst BarMenuToggle: FC<{\n isInverted?: boolean;\n isExpanded?: boolean;\n onClick?: (ev?: React.SyntheticEvent<HTMLButtonElement>) => void;\n className?: string;\n children?: React.ReactNode;\n}> = ({ isInverted, isExpanded = false, onClick, children, className }) => {\n return (\n <Toggle\n isInverted={isInverted}\n aria-expanded={isExpanded}\n aria-label={isExpanded ? 'close menu' : 'open menu'}\n aria-haspopup=\"true\"\n aria-controls=\"mainMenu\"\n onClick={onClick}\n className={className}\n >\n {children}\n </Toggle>\n );\n};\n\nexport default BarMenuToggle;\n","import React, { FC } from 'react';\nimport styled from 'styled-components';\n\nimport Link from 'components/typography/Link';\nimport { spacings, getColors as color } from 'utils/styles';\nimport { copyStyle } from 'components/typography/Copy';\nimport { NavItem } from '../menu/Menu';\n\nconst View = styled.nav<{ isInverted?: boolean }>`\n display: inline-flex;\n align-items: center;\n\n margin: 0 -${spacings.nudge}px;\n\n & > * + * {\n &:before {\n content: '';\n display: block;\n position: absolute;\n top: 3px;\n left: 0;\n height: 1em;\n width: 2px;\n background-color: ${({ isInverted, theme }) =>\n isInverted\n ? color(theme).text.inverted\n : color(theme).text.default};\n\n transition: background-color 0.2s ease-in-out;\n }\n }\n`;\n\nconst NavLink = styled(Link)<{ isInverted?: boolean; isActive?: boolean }>`\n display: inline-block;\n position: relative;\n padding: 0 ${spacings.nudge}px;\n\n ${copyStyle('copy', 'medium')}\n font-weight: ${({ isActive }) => isActive && '700'};\n\n color: ${({ isInverted, theme }) =>\n isInverted ? color(theme).text.inverted : color(theme).text.default};\n text-decoration: none;\n\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n color: ${({ isInverted, theme }) =>\n isInverted\n ? color(theme).text.inverted\n : color(theme).text.default};\n text-decoration: underline;\n }\n }\n`;\n\nconst BarNavList: FC<{\n isInverted?: boolean;\n navLinks?: NavItem[];\n className?: string;\n}> = ({ isInverted, navLinks, className }) => {\n return (\n <View isInverted={isInverted} className={className}>\n {navLinks?.map((item, i) => (\n <NavLink\n key={i}\n {...item.link}\n isInverted={isInverted}\n isActive={item.isCurrent}\n >\n {item.label}\n </NavLink>\n ))}\n </View>\n );\n};\n\nexport default BarNavList;\n","import React, { FC } from 'react';\nimport styled from 'styled-components';\n\nimport Link, { LinkProps } from 'components/typography/Link';\nimport { spacings, getColors as color, FontOptions } from 'utils/styles';\nimport { copyStyle } from 'components/typography/Copy';\n\nconst View = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n\n & > * + * {\n margin-left: ${spacings.nudge / 2}px;\n }\n`;\n\nconst Icon = styled.div<{ isInverted?: boolean }>`\n color: ${({ isInverted, theme }) =>\n isInverted ? color(theme).text.inverted : color(theme).text.default};\n\n & > * {\n margin-right: ${spacings.nudge}px;\n }\n`;\n\nconst SelectView = styled.div<{ isInverted?: boolean }>`\n display: inline-flex;\n align-items: center;\n margin: 0 -${spacings.nudge}px;\n\n & > * + * {\n &:before {\n content: '';\n display: block;\n position: absolute;\n top: 3px;\n left: 0;\n height: 1em;\n width: 2px;\n background-color: ${({ isInverted, theme }) =>\n isInverted\n ? color(theme).text.inverted\n : color(theme).text.default};\n\n transition: background-color 0.2s ease-in-out;\n }\n }\n`;\n\nconst LanguageLink = styled(Link)<{\n isInverted?: boolean;\n isActive?: boolean;\n size?: keyof FontOptions;\n}>`\n display: inline-block;\n position: relative;\n padding: 0 ${spacings.nudge}px;\n\n ${({ size }) => copyStyle('copy', size || 'medium')}\n font-weight: ${({ isActive }) => isActive && '700'};\n\n color: ${({ isInverted, theme }) =>\n isInverted ? color(theme).text.inverted : color(theme).text.default};\n text-decoration: none;\n\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n color: ${({ isInverted, theme }) =>\n isInverted\n ? color(theme).text.inverted\n : color(theme).text.default};\n text-decoration: underline;\n }\n }\n`;\n\nexport interface Language {\n isActive?: boolean;\n label: string;\n link: LinkProps;\n}\n\nconst LanguageSwitcher: FC<{\n langs?: Language[];\n isInverted?: boolean;\n languageIcon?: (isInverted?: boolean) => React.ReactNode;\n textSize?: keyof FontOptions;\n}> = ({ langs, isInverted, languageIcon, textSize = 'medium' }) => {\n return (\n <View>\n {languageIcon && (\n <Icon isInverted={isInverted}>{languageIcon(isInverted)}</Icon>\n )}\n <SelectView isInverted={isInverted}>\n {langs?.map((lang, i) => (\n <LanguageLink\n key={i}\n {...lang.link}\n isInverted={isInverted}\n isActive={lang.isActive}\n size={textSize}\n >\n {lang.label}\n </LanguageLink>\n ))}\n </SelectView>\n </View>\n );\n};\n\nexport default LanguageSwitcher;\n","import Cross from 'components/base/icons/Cross';\nimport React, { FC } from 'react';\n\nimport styled from 'styled-components';\nimport { spacings } from 'utils/styles';\nimport { NavMenuStates } from '../Navigation';\nimport * as Skeletons from 'components/sections/navigation/skeletons/index';\nimport LanguageSwitcher, { Language } from 'components/blocks/LanguageSwitcher';\nimport { isValidArray } from 'utils/arrays';\n\nconst Header = styled.div`\n display: flex;\n align-items: center;\n\n padding: 0 ${spacings.nudge * 2}px;\n padding-top: ${spacings.nudge * 5}px;\n`;\n\nconst LanguageCol = styled.div`\n display: block;\n margin-left: ${spacings.nudge * 3}px;\n margin-top: 2px;\n`;\n\nconst MenuHeader: FC<{\n isInverted?: boolean;\n menuStates?: NavMenuStates;\n customToggle?: (props: { isInverted?: boolean }) => React.ReactNode;\n langs?: Language[];\n action?: (\n props: { isInverted?: boolean } & NavMenuStates\n ) => React.ReactNode;\n}> = ({ isInverted, customToggle, menuStates, langs, action }) => {\n return (\n <React.Fragment>\n <Header>\n <Skeletons.MenuToggle\n isInverted={isInverted}\n isExpanded={true}\n onClick={menuStates?.closeMenu}\n >\n {customToggle ? (\n customToggle({ isInverted })\n ) : (\n <Cross ariaHidden={true} />\n )}\n </Skeletons.MenuToggle>\n {isValidArray(langs, false) && (\n <LanguageCol>\n <LanguageSwitcher\n isInverted={isInverted}\n langs={langs}\n />\n </LanguageCol>\n )}\n {action && action({ isInverted, ...menuStates })}\n </Header>\n </React.Fragment>\n );\n};\n\nexport default MenuHeader;\n","import AngleRight from 'components/base/icons/AngleRight';\nimport Link, { LinkProps } from 'components/typography/Link';\nimport React, {\n FC,\n useState,\n useMemo,\n useRef,\n useEffect,\n forwardRef,\n} from 'react';\nimport styled, { DefaultTheme } from 'styled-components';\nimport { isValidArray } from 'utils/arrays';\nimport { clampValue } from 'utils/clamp';\nimport { useLibTheme } from 'utils/LibThemeProvider';\nimport { getCurrentNavItem } from 'utils/navigation';\nimport {\n mq,\n spacings,\n getColors as color,\n getFonts as font,\n getGlobals as global,\n withRange,\n Fonts,\n} from 'utils/styles';\nimport { NavBarSize } from '../../NavBar';\nimport MenuHeader from '../../partials/MenuHeader';\nimport { MenuBaseProps, NavItem } from '../Menu';\nimport { css } from 'styled-components';\n\ntype NavigationFontType = keyof Fonts['navigation'];\n\nconst navigationStyle = (type: NavigationFontType) => css`\n font-family: ${({ theme }) => font(theme).navigation[type].family};\n font-weight: ${({ theme }) => font(theme).navigation[type].weight};\n font-style: ${({ theme }) => font(theme).navigation[type].style};\n ${({ theme }) => withRange(font(theme).navigation[type].size, 'font-size')}\n line-height: ${({ theme }) => font(theme).navigation[type].lineHeight};\n letter-spacing: ${({ theme }) =>\n font(theme).navigation[type].letterSpacing};\n text-transform: ${({ theme }) =>\n font(theme).navigation[type].textTransform};\n text-decoration: ${({ theme }) =>\n font(theme).navigation[type].textDecoration};\n`;\n\nconst Backdrop = styled.div<{ isOpen?: boolean; filter?: string }>`\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background-color: rgba(0, 0, 0, 0.5);\n opacity: ${({ isOpen }) => (isOpen ? 1 : 0)};\n pointer-events: ${({ isOpen }) => (isOpen ? 'all' : 'none')};\n z-index: 101;\n\n transition: opacity 0.3s ease-in-out;\n\n @supports ((-webkit-backdrop-filter: none) or (backdrop-filter: none)) {\n backdrop-filter: ${({ filter }) => filter};\n }\n`;\n\nconst Stage = styled.div<{ isOpen?: boolean; clampWidth?: 'content' | 'full' }>`\n position: fixed;\n top: 0;\n left: ${({ isOpen }) => (isOpen ? '50%' : '0px')};\n height: 100vh;\n width: 100vw;\n max-width: ${({ clampWidth }) =>\n clampWidth === 'content' ? spacings.wrapper : spacings.wrapperLarge}px;\n pointer-events: none;\n\n z-index: 102;\n\n transform: translate(${({ isOpen }) => (isOpen ? '-50%' : '-100%')}, 0px);\n\n transition: transform 0.4s ease-in-out, left 0.4s ease-in-out;\n will-change: transform;\n`;\n\nconst Flyout = styled.div<{ isOpen?: boolean }>`\n display: flex;\n flex-direction: column;\n visibility: visible;\n\n position: relative;\n width: 100%;\n height: 100%;\n background-color: ${({ theme }) => color(theme).elementBg.light};\n\n pointer-events: ${({ isOpen }) => (isOpen ? 'all' : 'none')};\n\n /** Animation to disable keyboard tabbing if flyout is closed */\n animation: ${({ isOpen }) => !isOpen && 'hideAnim 0s ease-in 2s forwards'};\n\n @media ${mq.medium} {\n width: 384px;\n }\n\n @media ${mq.large} {\n width: 460px;\n }\n\n &:before {\n content: '';\n position: absolute;\n top: 0;\n left: 2px;\n height: 100%;\n width: 40vw;\n background-color: ${({ theme }) => color(theme).elementBg.light};\n z-index: -1;\n\n transform: translateX(-100%);\n }\n\n @keyframes hideAnim {\n to {\n visibility: hidden;\n }\n }\n`;\n\nexport const getMenuHeaderHeights = (\n theme: DefaultTheme,\n size?: NavBarSize\n): [number, number] => {\n const heights =\n size === 'large'\n ? global(theme).navigation.menu.headerHeight.large\n : global(theme).navigation.menu.headerHeight.small;\n\n // if second value is not defined use first array index value for both\n return [\n clampValue(heights[0], 0),\n clampValue(heights?.[1] === undefined ? heights[0] : heights[1], 0),\n ];\n};\n\nexport const hasMenuHeader = (theme: DefaultTheme) => {\n const largeHeights = getMenuHeaderHeights(theme, 'large');\n const smallHeights = getMenuHeaderHeights(theme, 'small');\n\n return (\n largeHeights[0] > 0 ||\n largeHeights[1] > 0 ||\n smallHeights[0] > 0 ||\n smallHeights[1] > 0\n );\n};\n\nconst Header = styled.div<{ navBarSize?: NavBarSize }>`\n flex: 0 0\n ${({ theme, navBarSize }) =>\n getMenuHeaderHeights(theme, navBarSize)[0]}px;\n height: ${({ theme, navBarSize }) =>\n getMenuHeaderHeights(theme, navBarSize)[0]}px;\n\n @media ${mq.semilarge} {\n height: ${({ theme, navBarSize }) =>\n getMenuHeaderHeights(theme, navBarSize)[1]}px;\n flex: 0 0\n ${({ theme, navBarSize }) =>\n getMenuHeaderHeights(theme, navBarSize)[1]}px;\n }\n`;\n\nconst ScrollContainer = styled.div`\n display: block;\n max-height: 100%;\n min-height: 0;\n`;\n\nconst ScrollArea = styled.div`\n display: block;\n width: 100vw;\n max-height: 100%;\n overflow: auto;\n -ms-overflow-style: none; /* for Internet Explorer, Edge */\n scrollbar-width: none; /* for Firefox */\n overflow-y: scroll;\n\n &::-webkit-scrollbar {\n display: none; /* for Chrome, Safari, and Opera */\n }\n\n & > *:last-child {\n margin-bottom: ${spacings.nudge * 10}px;\n }\n\n @media ${mq.medium} {\n max-width: 100%;\n }\n`;\n\n//#region NAVIGATION\n//#region NAVIGATION.Containers\nconst NavView = styled.nav``;\n\nconst Navigation: FC<{ children?: React.ReactNode }> = ({ children }) => {\n return <NavView aria-label=\"menu\">{children}</NavView>;\n};\n\nconst NavList = styled.ul<{ hasNonFeaturedItems?: boolean }>`\n margin: 0;\n padding: 0;\n list-style: none;\n margin: ${spacings.nudge * 2}px 0;\n\n border-bottom: ${({ hasNonFeaturedItems, theme }) =>\n hasNonFeaturedItems && `solid 2px ${color(theme).elementBg.medium}`};\n`;\n\n// #endregion\n// #region NAVIGATION.NavItem\nconst NavItemView = styled.li<{ isActive?: boolean }>`\n flex: 0 0 80px;\n\n height: 100%;\n background-color: ${({ theme, isActive }) =>\n isActive\n ? color(theme).elementBg.medium\n : color(theme).elementBg.light};\n\n transition: background-color 0.2s ease-in-out;\n\n li + &:not([data-featured='true']) {\n border-top: solid 2px ${({ theme }) => color(theme).elementBg.medium};\n }\n\n li[data-featured='true'] + &:not([data-featured='true']) {\n margin-top: ${spacings.spacer}px;\n }\n\n &:not([data-featured='true']):first-child {\n border-top: solid 2px ${({ theme }) => color(theme).elementBg.medium};\n }\n\n @media ${mq.semilarge} {\n flex-direction: row;\n justify-content: flex-start;\n align-items: center;\n }\n\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n background-color: ${({ theme }) => color(theme).elementBg.medium};\n }\n }\n`;\n\nconst NavItemContent = styled.span<{\n isCurrent?: boolean;\n isFeatured?: boolean;\n}>`\n display: flex;\n align-items: center;\n position: relative;\n min-height: 80px;\n\n padding: 0 ${spacings.nudge * 2}px;\n\n ${({ isFeatured }) => navigationStyle(isFeatured ? 'featured' : 'main')}\n color: ${({ theme, isFeatured }) =>\n isFeatured\n ? font(theme).navigation.featured.color\n : font(theme).navigation.main.color};\n text-decoration: ${({ isCurrent }) => (isCurrent ? 'underline' : 'none')};\n`;\n\nconst NavItemIcon = styled.span`\n display: flex;\n align-items: center;\n width: 48px;\n max-width: 48px;\n\n * {\n width: 100%;\n max-width: 48px;\n max-height: 80px;\n }\n`;\n\nconst NavItemLabel = styled.span`\n display: block;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n\n &:not(:first-child) {\n margin-left: ${spacings.nudge * 2}px;\n }\n`;\n\nconst NavItemCollapse = styled.span`\n display: block;\n margin-left: auto;\n padding-left: ${spacings.nudge * 3}px;\n`;\n\nconst NavItemCollapseIcon = styled(AngleRight)<{ isCollapsed?: boolean }>`\n transform: ${({ isCollapsed }) => !isCollapsed && 'rotate(90deg)'};\n\n transition: transform 0.2s ease-in-out;\n\n @media ${mq.semilarge} {\n transform: rotate(0deg);\n }\n`;\n\nconst NavItemLink = styled(Link)`\n display: block;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n\n &:focus {\n outline: solid 2px\n ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n }\n`;\n\nconst NavItemButton = styled.button`\n display: block;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n\n background: none;\n border: none;\n border-bottom: solid 2px ${({ theme }) => color(theme).elementBg.light};\n width: 100%;\n cursor: pointer;\n outline: none;\n border-radius: 0px;\n\n &:focus {\n outline: solid 2px ${({ theme }) => color(theme).primary.default};\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n }\n\n @media ${mq.semilarge} {\n border-bottom: none;\n }\n`;\n\nconst SubNavList = styled.ul<{ isActive?: boolean; isIndented?: boolean }>`\n display: ${({ isActive }) => !isActive && 'none'};\n position: relative;\n margin: 0;\n padding: 0;\n padding-left: ${({ isIndented }) =>\n isIndented ? 48 + spacings.nudge * 4 : spacings.nudge * 2}px;\n padding-right: ${spacings.nudge * 2}px;\n list-style: none;\n\n max-height: 100%;\n overflow: auto;\n -ms-overflow-style: none; /* for Internet Explorer, Edge */\n scrollbar-width: none; /* for Firefox */\n overflow-y: scroll;\n\n &::-webkit-scrollbar {\n display: none; /* for Chrome, Safari, and Opera */\n }\n\n background-color: ${({ theme }) => color(theme).elementBg.medium};\n\n @media ${mq.semilarge} {\n position: absolute;\n top: 0;\n left: calc(100% - 1px);\n width: 100vw;\n height: 100%;\n max-width: 384px;\n padding-left: ${spacings.nudge * 3}px;\n }\n`;\n\nconst NavigationItem = forwardRef<\n HTMLLIElement,\n {\n isCurrent?: boolean;\n isActive?: boolean;\n isFeatured?: boolean;\n label?: string;\n link?: LinkProps;\n icon?: React.ReactNode;\n\n subNavTitle?: string;\n\n navBarSize?: NavBarSize;\n onItemClick?: () => void;\n collapseIcon?: (props: { isCollapsed?: boolean }) => React.ReactNode;\n canFocus?: boolean;\n children?: React.ReactNode;\n }\n>(\n (\n {\n isCurrent,\n isActive,\n isFeatured,\n label,\n link,\n icon,\n subNavTitle,\n navBarSize,\n onItemClick,\n collapseIcon,\n canFocus,\n children,\n },\n ref\n ) => {\n const hasSubItems = !!children && React.Children.count(children) > 0;\n\n return (\n <NavItemView\n ref={ref}\n isActive={isActive}\n data-featured={isFeatured}\n >\n <NavItemContent isCurrent={isCurrent} isFeatured={isFeatured}>\n {icon && <NavItemIcon>{icon}</NavItemIcon>}\n {label && <NavItemLabel>{label}</NavItemLabel>}\n {hasSubItems && (\n <NavItemCollapse>\n {collapseIcon ? (\n collapseIcon({\n isCollapsed: !isActive,\n })\n ) : (\n <NavItemCollapseIcon\n ariaHidden\n isCollapsed={!isActive}\n />\n )}\n </NavItemCollapse>\n )}\n {!hasSubItems && link?.href && (\n <NavItemLink\n {...link}\n ariaLabel={label}\n tabIndex={!canFocus ? -1 : undefined}\n />\n )}\n {hasSubItems && (\n <React.Fragment>\n <NavItemButton\n aria-label={label}\n aria-expanded={isActive}\n onClick={onItemClick}\n tabIndex={!canFocus ? -1 : undefined}\n />\n </React.Fragment>\n )}\n </NavItemContent>\n {hasSubItems && (\n <SubNavList isActive={isActive} isIndented={!!icon}>\n {link?.href && (\n <MenuNav.SubItem\n key=\"overview\"\n link={link}\n label={subNavTitle || 'Overview'}\n navBarSize={navBarSize}\n canFocus={canFocus}\n />\n )}\n {children}\n </SubNavList>\n )}\n </NavItemView>\n );\n }\n);\n\nNavigationItem.displayName = 'NavigationItem';\n\n//#endregion NAVIGATION.NavItem\n//#region NAVIGATION.SubNavItem\nconst SubNavItem = styled.li<{ navBarSize?: NavBarSize }>`\n display: flex;\n align-items: center;\n list-style: none;\n margin: 0;\n padding: 0;\n height: 56px;\n\n ${navigationStyle('main')}\n color: ${({ theme }) => font(theme).navigation.sub.color};\n\n @media ${mq.semilarge} {\n &:first-child {\n margin-top: ${({ theme, navBarSize }) =>\n getMenuHeaderHeights(theme, navBarSize)[1] +\n spacings.nudge * 2}px;\n }\n\n &:last-child {\n margin-bottom: ${spacings.spacer}px;\n }\n }\n`;\n\nconst SubNavLink = styled(Link)<{ isCurrent?: boolean }>`\n /* width: 100%; */\n padding: ${spacings.nudge}px 0;\n outline-color: ${({ theme }) => color(theme).primary.default};\n vertical-align: middle;\n\n ${navigationStyle('sub')}\n color: ${({ theme }) => font(theme).navigation.sub.color};\n text-decoration: ${({ isCurrent }) => (isCurrent ? 'underline' : 'none')};\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n\n & > * {\n margin: 2px;\n }\n\n &:focus {\n outline: none;\n }\n\n &:focus > * {\n outline: dashed 1px\n ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n outline-offset: 1px;\n }\n\n &:focus:not(:focus-visible) > * {\n outline: none;\n }\n`;\n\nconst NavigationSubItem = forwardRef<\n HTMLLIElement,\n {\n isCurrent?: boolean;\n label: string;\n link?: LinkProps;\n navBarSize?: NavBarSize;\n canFocus?: boolean;\n }\n>(({ isCurrent, label, link, navBarSize, canFocus }, ref) => {\n return (\n <SubNavItem ref={ref} navBarSize={navBarSize}>\n <SubNavLink\n tabIndex={!canFocus ? -1 : undefined}\n isCurrent={isCurrent}\n {...link}\n >\n <span>{label}</span>\n </SubNavLink>\n </SubNavItem>\n );\n});\n\nNavigationSubItem.displayName = 'NavigationSubItem';\n//#endregion\n//#region NAVIGATION.SecondaryNavigation\nconst SecondaryNavList = styled.ul`\n display: block;\n list-style: none;\n padding: 0 ${spacings.nudge * 2}px;\n margin: ${spacings.spacer}px 0;\n\n li {\n display: flex;\n margin: 0;\n padding: 0;\n }\n`;\n\nconst SecondaryNavLink = styled(Link)<{ isCurrent?: boolean }>`\n display: inline-block;\n padding: ${spacings.nudge * 0.5}px 0;\n outline-color: ${({ theme }) => color(theme).primary.default};\n vertical-align: middle;\n\n ${navigationStyle('secondary')}\n color: ${({ theme }) => font(theme).navigation.secondary.color};\n text-decoration: ${({ isCurrent }) => (isCurrent ? 'underline' : 'none')};\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n\n &:focus {\n outline: dashed 2px\n ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n outline-offset: 1px;\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n }\n`;\n\nconst SecondaryNavigation: FC<{\n items?: NavItem[];\n canFocus?: boolean;\n}> = ({ items, canFocus }) => {\n return items && items.length > 0 ? (\n <SecondaryNavList>\n {items\n ?.filter((n) => n.link?.href)\n .map((item, i) => (\n <li key={i}>\n <SecondaryNavLink\n isCurrent={item.isCurrent}\n href={item.link?.href}\n tabIndex={!canFocus ? -1 : undefined}\n >\n {item.label}\n </SecondaryNavLink>\n </li>\n ))}\n </SecondaryNavList>\n ) : null;\n};\n//#endregion\n\nconst MenuNav = {\n View: Navigation,\n List: NavList,\n Item: NavigationItem,\n SubItem: NavigationSubItem,\n SubList: SecondaryNavigation,\n};\n// #endregion\n\nexport interface FlyoutMenuProps {\n type: 'flyout';\n collapseIcon?: (props: { isCollapsed?: boolean }) => React.ReactNode;\n subNavTitle?: string;\n backdropFilter?: string;\n}\n\nconst menuFilter = (item: NavItem) =>\n !item.hideFromMenu && item.uid && item.label;\n\nconst MenuFlyout: FC<MenuBaseProps & FlyoutMenuProps> = ({\n isOpen,\n clampWidth,\n isIndexPage,\n mainNavigation,\n subNavigation,\n navBarSize,\n subNavTitle,\n backdropFilter = 'grayscale(1)',\n header,\n footer,\n onClose,\n collapseIcon,\n navItemsHeader,\n}) => {\n const { theme } = useLibTheme();\n const flyoutRef = useRef<HTMLDivElement>(null);\n const hasHeader = useMemo(() => hasMenuHeader(theme), [theme]);\n\n const mainList = useMemo(() => {\n const featured = mainNavigation?.filter((n) => n.isFeatured) || [];\n const main = mainNavigation?.filter((n) => !n.isFeatured) || [];\n\n return [...featured, ...main].filter(menuFilter);\n }, [mainNavigation]);\n\n const hasNonFeaturedItems = useMemo(() => {\n const main = mainNavigation?.filter((n) => !n.isFeatured) || [];\n return main && main.length > 0;\n }, [mainNavigation]);\n\n const subList = useMemo(() => {\n return subNavigation?.filter(menuFilter);\n }, [subNavigation]);\n\n const [activeItems, setActiveItems] = useState<string[]>(() => {\n const initial = getCurrentNavItem(mainList, true)?.root?.uid;\n return initial ? [initial] : [''];\n });\n const [currentNavEl, setCurrentNavEl] =\n useState<HTMLLIElement | null>(null);\n const [currentSubNavEl, setCurrentSubNavEl] =\n useState<HTMLLIElement | null>(null);\n\n const toggleActiveItem = (uid: string) => {\n setActiveItems((prev) => (prev.includes(uid) ? [] : [uid]));\n\n // if multiple nav items can be selected:\n // setActiveItems((prev) => {\n // const copy = [...prev];\n // const activeIndex = activeItems.indexOf(index);\n // if (activeIndex !== -1) {\n // copy.splice(activeIndex, 1);\n // } else {\n // copy.push(index);\n // }\n // return copy;\n // });\n };\n\n // check if flyout lost focus\n useEffect(() => {\n const handleFocus = (ev: FocusEvent) => {\n if (!flyoutRef.current || !ev.target) return;\n const isFlyoutChild = flyoutRef.current.contains(\n ev.target as Element\n );\n\n if (!isFlyoutChild) onClose && onClose();\n };\n\n if (isOpen) {\n document.addEventListener('focusin', handleFocus);\n } else {\n document.removeEventListener('focusin', handleFocus);\n }\n\n return () => {\n document.removeEventListener('focusin', handleFocus);\n };\n }, [isOpen, onClose]);\n\n // scroll to current nav items\n useEffect(() => {\n try {\n currentNavEl?.scrollIntoView({\n block: 'center',\n inline: 'start',\n });\n currentSubNavEl?.scrollIntoView({\n block: 'center',\n inline: 'start',\n });\n } catch (e) {\n // console.log(e);\n }\n }, [currentNavEl, currentSubNavEl]);\n\n return (\n <React.Fragment>\n <Backdrop\n isOpen={isOpen}\n filter={backdropFilter}\n onClick={onClose}\n />\n <Stage isOpen={isOpen} clampWidth={clampWidth}>\n <Flyout ref={flyoutRef} isOpen={isOpen}>\n {hasHeader && (\n <Header navBarSize={navBarSize}>\n {header ? (\n header({\n isOpen,\n mainNavigation: mainList,\n subNavigation: subList,\n isIndexPage,\n navBarSize,\n })\n ) : (\n <MenuHeader\n menuStates={{\n isOpen,\n mainNavigation,\n subNavigation,\n isIndexPage,\n navBarSize,\n }}\n />\n )}\n </Header>\n )}\n\n <ScrollContainer>\n <ScrollArea>\n {navItemsHeader &&\n navItemsHeader({\n isOpen,\n mainNavigation: mainList,\n subNavigation: subList,\n isIndexPage,\n navBarSize,\n })}\n <MenuNav.View>\n {isValidArray(mainList, false) && (\n <MenuNav.List\n id=\"mainMenu\"\n hasNonFeaturedItems={\n hasNonFeaturedItems\n }\n >\n {mainList.map((item) => {\n const isActive =\n activeItems.includes(item.uid);\n const hasCurrentSubItem =\n item?.subItems\n ? item.subItems.findIndex(\n (n) => n.isCurrent\n ) >= 0\n : false;\n\n const isCurrent =\n item.isCurrent ||\n hasCurrentSubItem;\n\n return (\n <MenuNav.Item\n key={item.uid}\n {...item}\n ref={\n isCurrent\n ? setCurrentNavEl\n : undefined\n }\n isActive={isActive}\n isCurrent={isCurrent}\n subNavTitle={subNavTitle}\n navBarSize={navBarSize}\n collapseIcon={collapseIcon}\n onItemClick={() =>\n toggleActiveItem(\n item.uid\n )\n }\n canFocus={isOpen}\n >\n {item?.subItems\n ?.filter(menuFilter)\n .map((subItem) => (\n <MenuNav.SubItem\n key={\n subItem.uid\n }\n ref={\n subItem.isCurrent\n ? setCurrentSubNavEl\n : undefined\n }\n {...subItem}\n navBarSize={\n navBarSize\n }\n canFocus={\n isOpen\n }\n />\n ))}\n </MenuNav.Item>\n );\n })}\n </MenuNav.List>\n )}\n {isValidArray(subList, false) && (\n <MenuNav.SubList\n items={subList}\n canFocus={isOpen}\n />\n )}\n </MenuNav.View>\n {footer\n ? footer({\n isOpen,\n mainNavigation: mainList,\n subNavigation: subList,\n isIndexPage,\n })\n : ''}\n </ScrollArea>\n </ScrollContainer>\n </Flyout>\n </Stage>\n </React.Fragment>\n );\n};\n\nexport default MenuFlyout;\n","import React, { FC } from 'react';\n\nimport { LinkProps } from 'components/typography/Link';\n\n/** Menu Variations */\nimport MenuFlyout, { FlyoutMenuProps } from './variations/MenuFlyout';\nimport { /* MenuLarge,*/ LargeMenuProps } from './variations/MenuLarge';\nimport { NavBarSize } from '../NavBar';\n\n/** Navigation item types */\n\nexport interface NavItem {\n uid: string;\n label: string;\n link?: LinkProps;\n isCurrent?: boolean;\n subItems?: NavItem[];\n isFeatured?: boolean;\n icon?: React.ReactNode;\n hideFromMenu?: boolean;\n}\n\n/** Menu base type */\nexport interface MenuStates {\n isOpen?: boolean;\n isIndexPage?: boolean;\n mainNavigation?: Array<NavItem>;\n subNavigation?: Array<NavItem>;\n navBarSize?: NavBarSize;\n}\n\nexport interface MenuBaseProps {\n isOpen?: boolean;\n clampWidth?: 'content' | 'full';\n isIndexPage?: boolean;\n mainNavigation?: Array<NavItem>;\n subNavigation?: Array<NavItem>;\n navBarSize?: NavBarSize;\n header?: (props: MenuStates) => React.ReactNode;\n footer?: (props: MenuStates) => React.ReactNode;\n navItemsHeader?: (menuStates: MenuStates) => React.ReactNode;\n onClose?: () => void;\n}\n\nexport type MenuTypeProps = FlyoutMenuProps | LargeMenuProps;\n\nconst Menu: FC<MenuBaseProps & { typeSettings?: MenuTypeProps }> = ({\n isOpen,\n clampWidth,\n isIndexPage,\n mainNavigation,\n subNavigation,\n navBarSize,\n header,\n footer,\n navItemsHeader,\n onClose,\n typeSettings,\n}) => {\n if (!typeSettings) {\n typeSettings = { type: 'flyout' };\n }\n\n switch (typeSettings?.type) {\n // case 'large': {\n // return (\n // <MenuLarge\n // isOpen={isOpen}\n // clampWidth={clampWidth}\n // isIndexPage={isIndexPage}\n // mainNavigation={mainNavigation}\n // subNavigation={subNavigation}\n // navBarSize={navBarSize}\n // header={header}\n // footer={footer}\n // navItemsHeader={navItemsHeader}\n // onClose={onClose}\n // {...(typeSettings as LargeMenuProps)}\n // />\n // );\n // }\n\n default:\n case 'flyout': {\n return (\n <MenuFlyout\n isOpen={isOpen}\n clampWidth={clampWidth}\n isIndexPage={isIndexPage}\n mainNavigation={mainNavigation}\n subNavigation={subNavigation}\n navBarSize={navBarSize}\n header={header}\n footer={footer}\n onClose={onClose}\n navItemsHeader={navItemsHeader}\n {...(typeSettings as FlyoutMenuProps)}\n />\n );\n }\n }\n};\n\nexport default Menu;\n","import React, { FC, useMemo } from 'react';\nimport styled, { DefaultTheme } from 'styled-components';\nimport {\n spacings,\n mq,\n getGlobals as global,\n getColors as color,\n} from 'utils/styles';\nimport { clampValue } from 'utils/clamp';\nimport { useLibTheme } from 'utils/LibThemeProvider';\nimport * as Skeletons from 'components/sections/navigation/skeletons/index';\n\nexport const getTopHeights = (\n theme: DefaultTheme,\n size?: NavBarSize\n): [number, number] => {\n const heights =\n size === 'large'\n ? global(theme).navigation.navBar.topHeight.large\n : global(theme).navigation.navBar.topHeight.small;\n\n // if second value is not defined use first array index value for both\n return [\n clampValue(heights[0], 0),\n clampValue(heights?.[1] === undefined ? heights[0] : heights[1], 0),\n ];\n};\n\nexport const hasTopBar = (theme: DefaultTheme) => {\n const largeHeights = getTopHeights(theme, 'large');\n const smallHeights = getTopHeights(theme, 'small');\n\n return (\n largeHeights[0] > 0 ||\n largeHeights[1] > 0 ||\n smallHeights[0] > 0 ||\n smallHeights[1] > 0\n );\n};\n\nexport const getMainHeights = (\n theme: DefaultTheme,\n size?: NavBarSize\n): [number, number] => {\n const heights =\n size === 'large'\n ? global(theme).navigation.navBar.mainHeight.large\n : global(theme).navigation.navBar.mainHeight.small;\n\n // if second value is not defined use first array index value for both\n return [\n clampValue(heights[0], 0),\n clampValue(heights?.[1] === undefined ? heights[0] : heights[1], 0),\n ];\n};\n\nexport const getBottomHeights = (\n theme: DefaultTheme,\n size?: NavBarSize\n): [number, number] => {\n const heights =\n size === 'large'\n ? global(theme).navigation.navBar.bottomHeight.large\n : global(theme).navigation.navBar.bottomHeight.small;\n\n // if second value is not defined use first array index value for both\n return [\n clampValue(heights[0], 0),\n clampValue(heights?.[1] === undefined ? heights[0] : heights[1], 0),\n ];\n};\n\nexport const hasBottomBar = (theme: DefaultTheme) => {\n const largeHeights = getBottomHeights(theme, 'large');\n const smallHeights = getBottomHeights(theme, 'small');\n\n return (\n largeHeights[0] > 0 ||\n largeHeights[1] > 0 ||\n smallHeights[0] > 0 ||\n smallHeights[1] > 0\n );\n};\n\nexport type ExcludeType = 'top' | 'main' | 'bottom';\n\n/**\n * Get full height of navigation bar\n * @param theme Theme object\n * @param size Navigation bar size\n * @param exclude Exclude parts of the navbar for height calculation\n * @returns [mobile, desktop]\n */\nexport const getFullHeight = (\n theme: DefaultTheme,\n size?: NavBarSize,\n exclude?: ExcludeType[]\n): [number, number] => {\n const includeTop = exclude ? exclude.indexOf('top') === -1 : true;\n const includeMain = exclude ? exclude.indexOf('main') === -1 : true;\n const includeBottom = exclude ? exclude.indexOf('bottom') === -1 : true;\n\n const topHeights = includeTop ? getTopHeights(theme, size) : [0, 0];\n const mainHeights = includeMain ? getMainHeights(theme, size) : [0, 0];\n const bottomHeights = includeBottom\n ? getBottomHeights(theme, size)\n : [0, 0];\n\n // calculate mobile navbar height\n const mobile = topHeights[0] + mainHeights[0] + bottomHeights[0];\n\n // calculate desktop navbar height\n const desktop = topHeights[1] + mainHeights[1] + bottomHeights[1];\n\n return [mobile, desktop];\n};\n\nconst View = styled.div<{\n isOpen?: boolean;\n isSticky?: boolean;\n isAnimated?: boolean;\n bgGradient?: string;\n}>`\n position: ${({ isSticky }) => (isSticky ? 'fixed' : 'absolute')};\n top: 0;\n left: 0;\n right: 0;\n\n transform: ${({ isOpen }) => !isOpen && 'translate3d(0, -101%, 0)'};\n\n margin: 0 auto;\n /* max-width: ${spacings.wrapperLarge}px; */\n z-index: 100;\n\n ${({ isAnimated }) => `transition: ${\n isAnimated ? 'transform 0.3s ease-in-out, ' : ''\n }height 0.3s ease-in-out,\n opacity 0.3s ease-in-out;`}\n will-change: transform;\n\n &:before {\n content: '';\n display: block;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background: ${({ bgGradient }) => bgGradient || ''};\n margin: 0 auto;\n max-width: ${spacings.wrapperLarge}px;\n z-index: -1;\n }\n\n // print version\n @media print {\n position: relative;\n }\n`;\n\nconst Header = styled.div<{ size?: NavBarSize; background?: string }>`\n opacity: ${({ theme, size }) =>\n getTopHeights(theme, size)[0] > 0 ? 1 : 0};\n pointer-events: ${({ theme, size }) =>\n getTopHeights(theme, size)[0] > 0 ? 'all' : 'none'};\n overflow: ${({ theme, size }) =>\n getTopHeights(theme, size)[0] <= 0 && 'hidden'};\n\n background-color: ${({ background }) => background};\n color: ${({ theme, background }) =>\n background ? color(theme).text.default : color(theme).text.inverted};\n\n transition: background-color 0.2s ease-in-out;\n\n @media ${mq.semilarge} {\n opacity: ${({ theme, size }) =>\n getTopHeights(theme, size)[1] > 0 ? 1 : 0};\n pointer-events: ${({ theme, size }) =>\n getTopHeights(theme, size)[1] > 0 ? 'all' : 'none'};\n overflow: ${({ theme, size }) =>\n getTopHeights(theme, size)[1] <= 0 && 'hidden'};\n }\n`;\n\nconst Main = styled.div<{ background?: string }>`\n background-color: ${({ background }) => background};\n color: ${({ theme, background }) =>\n background ? color(theme).text.default : color(theme).text.inverted};\n\n transition: background-color 0.2s ease-in-out;\n`;\n\nconst Footer = styled.div<{ size?: NavBarSize; background?: string }>`\n opacity: ${({ theme, size }) =>\n getBottomHeights(theme, size)[0] > 0 ? 1 : 0};\n pointer-events: ${({ theme, size }) =>\n getBottomHeights(theme, size)[0] > 0 ? 'all' : 'none'};\n overflow: ${({ theme, size }) =>\n getBottomHeights(theme, size)[0] <= 0 && 'hidden'};\n\n background-color: ${({ background }) => background};\n color: ${({ theme, background }) =>\n background ? color(theme).text.default : color(theme).text.inverted};\n\n opacity: ${({ theme, size }) =>\n getBottomHeights(theme, size)[0] > 0 ? 1 : 0};\n\n transition: background-color 0.2s ease-in-out, opacity 0.2s ease-in-out;\n\n @media ${mq.semilarge} {\n opacity: ${({ theme, size }) =>\n getBottomHeights(theme, size)[1] > 0 ? 1 : 0};\n pointer-events: ${({ theme, size }) =>\n getBottomHeights(theme, size)[1] > 0 ? 'all' : 'none'};\n overflow: ${({ theme, size }) =>\n getBottomHeights(theme, size)[1] <= 0 && 'hidden'};\n\n opacity: ${({ theme, size }) =>\n getBottomHeights(theme, size)[1] > 0 ? 1 : 0};\n }\n`;\n\nconst TopContent = styled.div<{ size?: NavBarSize; clamp?: boolean }>`\n display: flex;\n justify-content: flex-end;\n position: relative;\n max-width: ${({ clamp }) =>\n clamp ? spacings.wrapper : spacings.wrapperLarge}px;\n padding: ${({ size, theme }) =>\n getTopHeights(theme, size)[0] > 0 && `0 ${spacings.nudge * 2}px`};\n margin: 0 auto;\n\n height: ${({ theme, size }) => getTopHeights(theme, size)[0]}px;\n\n transition: height 0.2s ease-in-out, padding-top 0.2s ease-in-out,\n padding-bottom 0.2s ease-in-out;\n will-change: height;\n\n @media ${mq.semilarge} {\n height: ${({ theme, size }) => getTopHeights(theme, size)[1]}px;\n padding: ${({ size, theme }) =>\n getTopHeights(theme, size)[1] > 0 && `0 ${spacings.nudge * 2}px`};\n }\n`;\n\nconst Content = styled.div<{ size?: NavBarSize; clamp?: boolean }>`\n display: flex;\n position: relative;\n max-width: ${({ clamp }) =>\n clamp ? spacings.wrapper : spacings.wrapperLarge}px;\n padding: 0 ${spacings.nudge * 2}px;\n margin: 0 auto;\n\n height: ${({ theme, size }) => getMainHeights(theme, size)[0]}px;\n\n transition: height 0.2s ease-in-out;\n will-change: height;\n\n @media ${mq.semilarge} {\n height: ${({ theme, size }) =>\n getMainHeights(theme, size)[1] || getMainHeights(theme, size)[0]}px;\n }\n`;\n\nconst BottomContent = styled.div<{ size?: NavBarSize; clamp?: boolean }>`\n display: flex;\n justify-content: flex-start;\n position: relative;\n max-width: ${({ clamp }) =>\n clamp ? spacings.wrapper : spacings.wrapperLarge}px;\n padding: 0 ${spacings.nudge * 2}px;\n margin: 0 auto;\n\n height: ${({ theme, size }) => getBottomHeights(theme, size)[0]}px;\n transition: 0.2s height ease-in-out;\n\n @media ${mq.semilarge} {\n height: ${({ theme, size }) => getBottomHeights(theme, size)[1]}px;\n padding: 0 ${spacings.nudge * 2}px;\n }\n`;\n\nconst BarSpacer = styled.div<{ hasHeader?: boolean; hasFooter?: boolean }>`\n height: ${({ theme, hasHeader, hasFooter }) => {\n const excludes: ExcludeType[] = [];\n if (!hasHeader) excludes.push('top');\n if (!hasFooter) excludes.push('bottom');\n\n return getFullHeight(theme, 'large', excludes)[0];\n }}px;\n\n @media ${mq.semilarge} {\n height: ${({ theme, hasHeader, hasFooter }) => {\n const excludes: ExcludeType[] = [];\n if (!hasHeader) excludes.push('top');\n if (!hasFooter) excludes.push('bottom');\n\n return getFullHeight(theme, 'large', excludes)[1];\n }}px;\n }\n\n // print version\n @media print {\n display: none;\n }\n`;\n\nexport type NavBarSize = 'small' | 'large';\n\nexport interface BarStates {\n size: NavBarSize;\n isOpen?: boolean;\n isSticky?: boolean;\n pageFlow?: PageFlow;\n}\n\nexport type PageFlow = 'overContent' | 'beforeContent';\n\nexport interface NavBarProps {\n size?: NavBarSize;\n isOpen?: boolean;\n isSticky?: boolean;\n isAnimated?: boolean;\n clampWidth?: 'content' | 'full';\n pageFlow?: PageFlow;\n\n topBg?: string;\n mainBg?: string;\n bottomBg?: string;\n /** Custom background value for NavBar with pageFlow === overContent and large size */\n onContentBg?: string;\n\n topBar?: ((props: BarStates) => React.ReactNode) | null;\n mainBar?: ((props: BarStates) => React.ReactNode) | null;\n bottomBar?: ((props: BarStates) => React.ReactNode) | null;\n}\n\nconst NavBar: FC<\n NavBarProps & {\n className?: string;\n }\n> = ({\n size = 'large',\n isOpen = false,\n isSticky = false,\n isAnimated = false,\n clampWidth = false,\n pageFlow = 'beforeContent',\n topBg,\n mainBg,\n bottomBg,\n onContentBg,\n topBar,\n mainBar,\n bottomBar,\n className,\n}) => {\n const { theme, colors } = useLibTheme();\n const clampContent = clampWidth === 'content';\n const isOverContent = pageFlow === 'overContent';\n\n const hasHeader = useMemo(\n () => hasTopBar(theme) && topBar !== null,\n [theme, topBar]\n );\n const hasFooter = useMemo(\n () => hasBottomBar(theme) && bottomBar !== null,\n [bottomBar, theme]\n );\n const showBg = useMemo(\n () => size === 'small' || (size === 'large' && !isOverContent),\n [isOverContent, size]\n );\n\n const topBackground = topBg || colors.elementBg.light;\n const mainBackground = mainBg || colors.elementBg.light;\n const bottomBackground = bottomBg || colors.elementBg.light;\n const onContentBackground =\n onContentBg ||\n 'linear-gradient(180deg,rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.2) 40%, rgba(0,0,0,0) 100%)';\n\n const topBarContent = useMemo(\n () =>\n topBar &&\n topBar({\n size,\n isOpen,\n isSticky,\n pageFlow,\n }),\n [isOpen, isSticky, pageFlow, size, topBar]\n );\n\n const mainBarContent = useMemo(\n () =>\n mainBar &&\n mainBar({\n size,\n isOpen,\n isSticky,\n pageFlow,\n }),\n [isOpen, isSticky, mainBar, pageFlow, size]\n );\n\n const bottomBarContent = useMemo(\n () =>\n bottomBar &&\n bottomBar({\n size,\n isOpen,\n isSticky,\n pageFlow,\n }),\n [bottomBar, isOpen, isSticky, pageFlow, size]\n );\n\n return (\n <React.Fragment>\n {pageFlow === 'beforeContent' && (\n <BarSpacer hasHeader={hasHeader} hasFooter={hasFooter} />\n )}\n <View\n isOpen={isOpen}\n isSticky={isSticky}\n isAnimated={isAnimated}\n bgGradient={\n size === 'large' && isOverContent\n ? onContentBackground\n : undefined\n }\n className={className}\n >\n {hasHeader && (\n <Header\n size={size}\n background={showBg ? topBackground : undefined}\n >\n <TopContent size={size} clamp={clampContent}>\n {topBarContent ? (\n topBarContent\n ) : (\n <Skeletons.Column isInverted>\n Top Nav\n </Skeletons.Column>\n )}\n </TopContent>\n </Header>\n )}\n {mainBar !== null && (\n <Main background={showBg ? mainBackground : undefined}>\n <Content size={size} clamp={clampContent}>\n {mainBarContent ? (\n mainBarContent\n ) : (\n <React.Fragment>\n <Skeletons.Column\n takeSpace\n isInverted={\n size === 'large' && isOverContent\n }\n >\n Left\n </Skeletons.Column>\n <Skeletons.Column\n isInverted={\n size === 'large' && isOverContent\n }\n >\n Center\n </Skeletons.Column>\n <Skeletons.Column\n takeSpace\n isInverted={\n size === 'large' && isOverContent\n }\n >\n Right\n </Skeletons.Column>\n </React.Fragment>\n )}\n </Content>\n </Main>\n )}\n {hasFooter && (\n <Footer\n size={size}\n background={showBg ? bottomBackground : undefined}\n >\n <BottomContent size={size} clamp={clampContent}>\n {bottomBarContent ? bottomBarContent : 'bottom bar'}\n </BottomContent>\n </Footer>\n )}\n </View>\n </React.Fragment>\n );\n};\n\nexport default NavBar;\n","import React, { FC, useEffect, useMemo, useState } from 'react';\nimport { DefaultTheme } from 'styled-components';\nimport {\n LibThemeProvider,\n ThemeMods,\n useLibTheme,\n} from 'utils/LibThemeProvider';\nimport { useMediaQueries } from 'utils/useMediaQuery';\nimport { useMenuKeyboard } from 'utils/menuHooks';\nimport usePageScroll, { PageScrollDirection } from 'utils/usePageScroll';\nimport Menu, { MenuStates, MenuTypeProps, NavItem } from './menu/Menu';\n\nimport NavBar, {\n getFullHeight,\n NavBarSize,\n BarStates,\n hasTopBar,\n hasBottomBar,\n ExcludeType,\n PageFlow,\n} from './NavBar';\n\n/**\n * Checks which navbar parts are defined in navigation.\n * With this values you can calculate each height by the Navbar component functions\n * @param ident Identification string from Navigation component\n * @returns\n */\nexport const getNavbarState = (ident: string) => {\n const navbarIdent = ident || '';\n\n let pageFlow: PageFlow | undefined = undefined;\n switch (true) {\n case navbarIdent.search('overContent') !== -1: {\n pageFlow = 'overContent';\n break;\n }\n\n case navbarIdent.search('beforeContent') !== -1: {\n pageFlow = 'beforeContent';\n break;\n }\n }\n\n return {\n hasTop: navbarIdent.search('top') !== -1,\n hasMain: navbarIdent.search('main') !== -1,\n hasBottom: navbarIdent.search('bottom') !== -1,\n pageFlow: pageFlow,\n isStickable: navbarIdent.search('stickable') !== -1,\n };\n};\n\n/** Generate Navbar identifier */\nexport const generateNavbarIdent = (props: {\n hasTop?: boolean;\n hasMain?: boolean;\n hasBottom?: boolean;\n pageFlow?: PageFlow;\n isStickable?: boolean;\n}): string => {\n if (!props) return '';\n const stateArray: string[] = [];\n\n if (props.hasTop) stateArray.push('top');\n if (props.hasMain) stateArray.push('main');\n if (props.hasBottom) stateArray.push('bottom');\n if (props.isStickable) stateArray.push('stickable');\n if (props.pageFlow) stateArray.push(props.pageFlow);\n\n return stateArray.join('-');\n};\n\n/**\n * Get full navbar heights\n * @param theme Theme object\n * @param ident Indentification string from Navigation component\n * @returns\n */\nexport const getFullNavbarHeights = (theme: DefaultTheme, ident: string) => {\n const { hasTop, hasBottom } = getNavbarState(ident || '');\n const excludes: ExcludeType[] = [];\n if (!hasTop) excludes.push('top');\n if (!hasBottom) excludes.push('bottom');\n\n return {\n large: getFullHeight(theme, 'large', excludes),\n small: getFullHeight(theme, 'small', excludes),\n };\n};\n\nexport interface NavBarStates extends BarStates {\n isMenuOpen?: boolean;\n openMenu?: () => void;\n closeMenu?: () => void;\n mainNavigation?: Array<NavItem>;\n subNavigation?: Array<NavItem>;\n isOnPageTop?: boolean;\n isInTopOffset?: boolean;\n}\n\nexport interface NavMenuStates extends MenuStates {\n isMenuOpen?: boolean;\n openMenu?: () => void;\n closeMenu?: () => void;\n navBarSize?: NavBarSize;\n}\n\nexport interface NavBarSettings {\n isStickable?: boolean;\n isCollapsible?: boolean;\n pageFlow?: 'overContent' | 'beforeContent';\n\n topBg?: string;\n mainBg?: string;\n bottomBg?: string;\n /** Custom background value for NavBar with pageFlow === overContent and large size */\n onContentBg?: string;\n\n topBar?: ((props: NavBarStates) => React.ReactNode) | null;\n mainBar?: ((props: NavBarStates) => React.ReactNode) | null;\n bottomBar?: ((props: NavBarStates) => React.ReactNode) | null;\n theme?: ThemeMods;\n}\n\nexport interface MenuSettings {\n isIndexPage?: boolean;\n mainNavigation?: Array<NavItem>;\n subNavigation?: Array<NavItem>;\n header?: (props: NavMenuStates) => React.ReactNode;\n footer?: (props: NavMenuStates) => React.ReactNode;\n navItemsHeader?: (props: NavMenuStates) => React.ReactNode;\n typeSettings: MenuTypeProps;\n\n theme?: ThemeMods;\n}\n\nexport interface NavigationProps {\n navBar?: NavBarSettings;\n menu?: MenuSettings;\n clampWidth?: 'content' | 'full';\n}\n\nconst Navigation: FC<NavigationProps> = ({\n clampWidth = 'content',\n navBar,\n menu,\n}) => {\n const isStickable = navBar?.isStickable || false;\n const isCollapsible = navBar?.isCollapsible || false;\n\n const mediaQueries = useMediaQueries();\n\n const { theme } = useLibTheme();\n\n /** Navigation bar states */\n const [isNavBarSticky, setIsNavBarSticky] = useState<boolean>(false);\n const [isNavBarOpen, setNavBarOpen] = useState<boolean>(true);\n const { isTop, scrollDirection, isInOffset, leftOffsetFromTop } =\n usePageScroll({\n directionOffset: { up: 40, down: 40 },\n offset: getFullHeight(theme, 'large')[\n mediaQueries.semilarge ? 1 : 0\n ],\n });\n\n const navbarSize = useMemo<NavBarSize>(() => {\n return isTop || isInOffset || !isStickable ? 'large' : 'small';\n }, [isTop, isInOffset, isStickable]);\n\n useEffect(() => {\n if (isStickable && isCollapsible) {\n setNavBarOpen(\n isTop ||\n isInOffset ||\n scrollDirection === PageScrollDirection.UP\n );\n }\n }, [scrollDirection, isTop, isStickable, isInOffset, isCollapsible]);\n\n useEffect(() => {\n if (!isStickable) return;\n if (\n !isCollapsible ||\n (leftOffsetFromTop && scrollDirection === PageScrollDirection.UP)\n ) {\n setIsNavBarSticky(true);\n } else if (isTop) {\n setIsNavBarSticky(false);\n }\n }, [isCollapsible, isStickable, isTop, leftOffsetFromTop, scrollDirection]);\n\n /** Menu states */\n const { isMenuOpen, setIsMenuOpen, setRoot } = useMenuKeyboard(false, {});\n\n const openMenu = () => {\n setIsMenuOpen(true);\n };\n\n const closeMenu = () => {\n setIsMenuOpen(false);\n };\n\n useEffect(() => {\n document.body.style.overflow = isMenuOpen ? 'hidden' : 'visible';\n }, [isMenuOpen]);\n\n const topBar = navBar?.topBar\n ? (props: BarStates) => {\n if (!navBar?.topBar) return '';\n return navBar.topBar({\n ...props,\n isMenuOpen,\n openMenu,\n closeMenu,\n mainNavigation: menu?.mainNavigation,\n subNavigation: menu?.subNavigation,\n isOnPageTop: isTop,\n isInTopOffset: isInOffset,\n });\n }\n : navBar?.topBar;\n\n const mainBar = navBar?.mainBar\n ? (props: BarStates) => {\n if (!navBar?.mainBar) return '';\n return navBar.mainBar({\n ...props,\n isMenuOpen,\n openMenu,\n closeMenu,\n mainNavigation: menu?.mainNavigation,\n subNavigation: menu?.subNavigation,\n isOnPageTop: isTop,\n isInTopOffset: isInOffset,\n });\n }\n : navBar?.mainBar;\n\n const bottomBar = navBar?.bottomBar\n ? (props: BarStates) => {\n if (!navBar?.bottomBar) return '';\n return navBar.bottomBar({\n ...props,\n isMenuOpen,\n openMenu,\n closeMenu,\n mainNavigation: menu?.mainNavigation,\n subNavigation: menu?.subNavigation,\n isOnPageTop: isTop,\n isInTopOffset: isInOffset,\n });\n }\n : navBar?.bottomBar;\n\n const menuHeader = menu?.header\n ? (props: MenuStates) => {\n if (!menu?.header) return '';\n return menu?.header({\n ...props,\n openMenu,\n closeMenu,\n mainNavigation: menu?.mainNavigation,\n subNavigation: menu?.subNavigation,\n navBarSize: navbarSize,\n });\n }\n : undefined;\n\n const menuFooter = menu?.footer\n ? (props: MenuStates) => {\n if (!menu?.footer) return '';\n return menu?.footer({\n ...props,\n openMenu,\n closeMenu,\n mainNavigation: menu?.mainNavigation,\n subNavigation: menu?.subNavigation,\n navBarSize: navbarSize,\n });\n }\n : undefined;\n\n const menuNavItemsHeader = menu?.navItemsHeader\n ? (props: MenuStates) => {\n if (!menu?.navItemsHeader) return '';\n return menu?.navItemsHeader({\n ...props,\n openMenu,\n closeMenu,\n mainNavigation: menu?.mainNavigation,\n subNavigation: menu?.subNavigation,\n navBarSize: navbarSize,\n });\n }\n : undefined;\n\n /**\n * Get ident string that shows if each navbar section is defined.\n * @returns Navbar ident string\n */\n const getNavBarIdent = (theme: DefaultTheme) => {\n const ident = generateNavbarIdent({\n hasTop: topBar !== null && hasTopBar(theme),\n hasMain: mainBar !== null,\n hasBottom: bottomBar !== null && hasBottomBar(theme),\n isStickable: navBar?.isStickable,\n pageFlow: navBar?.pageFlow,\n });\n\n return ident;\n };\n\n return (\n <header ref={setRoot} data-navbar-ident={getNavBarIdent(theme)}>\n <LibThemeProvider theme={navBar?.theme}>\n <NavBar\n isOpen={isNavBarOpen}\n isSticky={isNavBarSticky}\n isAnimated\n size={navbarSize}\n clampWidth={clampWidth}\n pageFlow={navBar?.pageFlow}\n topBar={topBar}\n mainBar={mainBar}\n bottomBar={bottomBar}\n topBg={navBar?.topBg}\n mainBg={navBar?.mainBg}\n bottomBg={navBar?.bottomBg}\n onContentBg={navBar?.onContentBg}\n />\n </LibThemeProvider>\n <LibThemeProvider theme={menu?.theme}>\n <Menu\n isOpen={isMenuOpen}\n clampWidth={clampWidth}\n isIndexPage={menu?.isIndexPage}\n mainNavigation={menu?.mainNavigation}\n subNavigation={menu?.subNavigation}\n typeSettings={menu?.typeSettings}\n navBarSize={navbarSize}\n header={menuHeader}\n footer={menuFooter}\n navItemsHeader={menuNavItemsHeader}\n onClose={closeMenu}\n />\n </LibThemeProvider>\n </header>\n );\n};\n\nexport default Navigation;\n","import React, { FC } from 'react';\nimport styled, { css } from 'styled-components';\n\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, { HeadlineTag } 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?: HeadlineTag;\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, { IntroActionProps } from 'components/blocks/IntroBlock';\nimport { HeadlineTag } from 'components/typography/Heading';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { ImageProps } from 'components/blocks/Image';\nimport { TitleSize } from 'components/blocks/Title';\n\nconst Intro: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Main title text */\n title?: string;\n\n /** Main title HTML tag type (h2, h3, h4...) */\n titleAs?: HeadlineTag;\n\n /** Main title style */\n titleSize?: TitleSize;\n\n /** Superior title that stands above main title */\n superTitle?: string;\n\n /** Superior title HTML tag type (h3, h4 ...) */\n superTitleAs?: HeadlineTag;\n\n /** Intro text under headline (richtext) */\n abstract?: string;\n\n /** Main text (richtext) */\n text?: string;\n\n /** Images for different screen sizes. coverSpace defaults to true */\n image?: ImageProps;\n\n /** Function to inject custom primary button */\n primaryAction?: (props: IntroActionProps) => React.ReactNode;\n\n /** Function to inject custom secondary button */\n secondaryAction?: (props: IntroActionProps) => React.ReactNode;\n\n /** Center text and actions */\n isCentered?: boolean;\n\n /** Allow reduced section spacing to next section */\n isStackable?: boolean;\n\n /** Clamp title to a width of max 8 grid cols. */\n clampTitle?: boolean;\n\n /** Section background */\n bgMode?: 'inverted' | 'full' | 'splitted';\n className?: string;\n}> = ({\n anchorId,\n title,\n titleAs,\n titleSize = 'heading-2',\n superTitle,\n superTitleAs,\n abstract,\n text,\n primaryAction,\n secondaryAction,\n isCentered = false,\n isStackable = false,\n bgMode,\n image,\n}) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n\n // set default ratio settings\n if (image && !image?.ratios) {\n image.ratios = {\n small: { h: 1, w: 1 },\n };\n }\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n isStackable={isStackable}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n >\n <Wrapper clampWidth=\"normal\" addWhitespace>\n <IntroBlock\n title={title}\n titleAs={titleAs}\n titleSize={titleSize}\n superTitle={superTitle}\n superTitleAs={superTitleAs}\n abstract={abstract}\n text={text}\n colorMode={isInverted ? 'inverted' : 'default'}\n secondaryAction={secondaryAction}\n primaryAction={primaryAction}\n isCentered={isCentered}\n image={image}\n clampTitle\n clampAbstract\n clampText\n />\n </Wrapper>\n </Section>\n );\n};\n\nexport const IntroComponent = Intro;\nexport default withLibTheme(Intro);\n","import React, { FC } from 'react';\nimport styled from 'styled-components';\n\nimport { getColors as color } from 'utils/styles';\n\nconst View = styled.button<{ isInverted?: boolean; disabled?: boolean }>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n background: none;\n outline: none;\n padding: 0;\n margin: 0;\n border: none;\n\n color: ${({ theme, isInverted }) =>\n isInverted ? color(theme).text.inverted : color(theme).text.default};\n opacity: ${({ disabled }) => (disabled ? 0.4 : 1)};\n cursor: ${({ disabled }) => (disabled ? 'default' : 'pointer')};\n\n transition: color 0.2s ease-in-out, opacity 0.2s ease-in-out;\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 &:focus {\n outline: dotted 2px\n ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n outline-offset: 4px;\n\n color: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.invertedHover\n : color(theme).primary.hover};\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n }\n`;\n\nconst Control: FC<{\n isInverted?: boolean;\n isDisabled?: boolean;\n ariaLabel?: string;\n className?: string;\n children?: React.ReactNode;\n onClick?: (ev: React.SyntheticEvent<HTMLButtonElement>) => void;\n}> = ({\n isInverted,\n isDisabled,\n ariaLabel = 'control',\n onClick,\n className,\n children,\n}) => {\n return (\n <View\n isInverted={isInverted}\n disabled={isDisabled}\n aria-label={ariaLabel}\n onClick={onClick}\n className={className}\n >\n {children}\n </View>\n );\n};\n\nexport default Control;\n","import React, { FC, useEffect, useMemo, useState } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport {\n mq,\n spacings,\n getColors as color,\n getFonts as font,\n getGlobals as global,\n withRange,\n} from 'utils/styles';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Grid, { getGridWidth, gridSettings } from 'components/base/Grid';\nimport Wrapper, { wrapperWhitespace } from 'components/base/Wrapper';\n\nimport IntroBlock from 'components/blocks/IntroBlock';\n\nimport Copy, { copyStyle } from 'components/typography/Copy';\nimport { HeadlineTag } from 'components/typography/Heading';\n\nimport Phone from 'components/base/icons/Phone';\nimport Mail from 'components/base/icons/Mail';\n\nimport { generateLocalBusiness } from 'utils/structuredData';\nimport Link from 'components/typography/Link';\nimport LocationPin from 'components/base/icons/LocationPin';\nimport Control from 'components/buttons/Control';\nimport * as Icons from 'components/base/icons/Icons';\nimport { getSVGDataImg as getSVGData } from 'utils/dataURI';\nimport useLeafletMap from 'utils/useLeafletMap';\nimport { isValidArray } from 'utils/arrays';\n\ninterface Address {\n street: string;\n postalCode: string;\n city?: string;\n country: string;\n}\n\nconst MapSection = styled(Section)`\n position: relative;\n min-height: 500px;\n z-index: 0;\n`;\n\nconst MapContainer = styled.div<{ isMirrored?: boolean }>`\n position: relative;\n top: 0;\n left: 0;\n bottom: 0;\n width: 100%;\n z-index: 0;\n\n height: 100%;\n min-height: 230px;\n\n @media ${mq.semilarge} {\n position: absolute;\n /** \n calculate width of 6 grid cols (grid width = viewport width without wrapper paddings)\n and add left or right wrapper padding afterwards\n */\n width: calc(\n ${getGridWidth({\n cols: 6,\n gridWidth: `100% - ${wrapperWhitespace * 2}px `,\n })} + ${wrapperWhitespace}px\n );\n left: ${({ isMirrored }) => (isMirrored ? 'auto' : '0')};\n right: ${({ isMirrored }) => (isMirrored ? '0' : 'auto')};\n }\n\n @media ${mq.xlarge} {\n width: calc(50% - ${gridSettings.gutter}px ${wrapperWhitespace}px);\n }\n\n @media ${mq.xxlarge} {\n width: calc(\n ${spacings.wrapperLarge / 2}px - ${gridSettings.gutter}px +\n ${wrapperWhitespace}px\n );\n\n left: ${({ isMirrored }) => (isMirrored ? 'auto' : '50%')};\n right: ${({ isMirrored }) => (isMirrored ? '50%' : 'auto')};\n\n ${({ isMirrored }) =>\n css`\n transform: translateX(\n calc(\n ${isMirrored\n ? `(100% + ${gridSettings.gutter}px) - `\n : `(-100% - ${gridSettings.gutter}px) + `}\n (${wrapperWhitespace}px)\n )\n );\n `};\n }\n`;\n\nconst CardWrapper = styled(Wrapper)`\n pointer-events: none;\n`;\n\nconst CardContainer = styled.div<{ isMirrored?: boolean }>`\n display: flex;\n flex-direction: row;\n position: relative;\n width: 100%;\n pointer-events: all;\n\n ${({ theme }) =>\n withRange(\n global(theme).sections.seperation.padding.default,\n 'padding-bottom'\n )}\n\n @media ${mq.semilarge} {\n ${({ theme }) =>\n withRange(\n global(theme).sections.seperation.padding.default,\n 'padding-top'\n )}\n }\n`;\n\nconst InfoCardView = styled.div`\n min-height: 100px;\n pointer-events: all;\n\n flex: 1 0 80%;\n max-width: 80%;\n\n & > * + * {\n margin-top: ${spacings.spacer}px;\n }\n`;\n\nconst CardHeader = styled.div`\n display: flex;\n`;\n\nconst ContactList = styled.ul<{ isInverted?: boolean }>`\n padding: 0;\n list-style-type: none;\n color: ${({ theme, isInverted }) =>\n isInverted ? color(theme).text.inverted : color(theme).text.default};\n\n li {\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 0;\n margin: 0;\n }\n\n li + li {\n margin-top: ${spacings.nudge * 3}px;\n }\n\n span:first-child {\n flex: 0 0 30px;\n max-width: 30px;\n\n & > * {\n max-width: 100%;\n }\n }\n`;\n\nconst ContactListLink = styled(Link)`\n display: block;\n\n ${copyStyle('copy-b', 'big')}\n color: ${({ theme, isInverted }) =>\n isInverted\n ? font(theme)['copy-b'].big.colorInverted\n : font(theme)['copy-b'].big.color};\n\n * + & {\n margin-left: ${spacings.nudge * 1.5}px;\n }\n`;\n\nconst AddressContainer = styled.div<{ hasIcon?: boolean }>`\n display: -ms-grid;\n display: grid;\n\n ${({ hasIcon }) => css`\n -ms-grid-columns: ${hasIcon ? 'min-content' : ''} 1fr;\n grid-template-columns: ${hasIcon ? 'min-content' : ''} 1fr;\n -ms-grid-rows: ${hasIcon ? 'min-content' : ''} 1fr;\n grid-auto-rows: ${hasIcon ? 'min-content' : ''} 1fr;\n `}\n\n & > * + * {\n margin-left: ${spacings.nudge * 2}px;\n }\n`;\n\nconst CompanyInfo: FC<{\n isInverted?: boolean;\n companyName: string;\n address?: Address;\n customIcon?: (isInverted?: boolean) => React.ReactNode;\n}> = ({ isInverted, companyName, address, customIcon }) => {\n return (\n <AddressContainer hasIcon={!!customIcon}>\n {customIcon && <span> {customIcon()} </span>}\n <div>\n <Copy type=\"copy-b\" size=\"big\" isInverted={isInverted}>\n {companyName}\n </Copy>\n {address && (\n <Copy type=\"copy-b\" size=\"big\" isInverted={isInverted}>\n <div>{address.street}</div>\n <div>{`${address.postalCode} ${address.city}`}</div>\n <div>{address.country}</div>\n </Copy>\n )}\n </div>\n </AddressContainer>\n );\n};\n\nconst Desc = styled(Copy)`\n @media ${mq.semilarge} {\n margin-top: ${spacings.spacer * 2.5}px;\n }\n`;\n\nconst LocationInfoCard: FC<\n MapLocation & {\n isInverted?: boolean;\n }\n> = ({\n isInverted,\n title,\n titleAs,\n superTitle,\n superTitleAs,\n companyName,\n address,\n addressIcon,\n contact,\n description,\n}) => {\n const { colors } = useLibTheme();\n\n const addressIconContent = addressIcon ? (\n addressIcon({ isInverted })\n ) : (\n <LocationPin\n iconColor={isInverted ? colors.text.inverted : colors.text.default}\n />\n );\n\n const phoneIconContent = contact?.telephone?.icon ? (\n contact.telephone.icon({\n isInverted,\n })\n ) : (\n <Phone />\n );\n\n const mailIconContent = contact?.email?.icon ? (\n contact.email.icon({ isInverted })\n ) : (\n <Mail />\n );\n\n return (\n <InfoCardView>\n <CardHeader>\n <IntroBlock\n colorMode={isInverted ? 'inverted' : 'default'}\n title={title}\n titleAs={titleAs}\n superTitle={superTitle}\n superTitleAs={superTitleAs}\n />\n </CardHeader>\n {companyName && (\n <CompanyInfo\n companyName={companyName || ''}\n address={address}\n customIcon={\n addressIconContent\n ? () => addressIconContent\n : undefined\n }\n isInverted={isInverted}\n />\n )}\n {contact && (\n <ContactList isInverted={isInverted}>\n {contact?.telephone?.label && (\n <li>\n {phoneIconContent && (\n <span>{phoneIconContent}</span>\n )}\n <ContactListLink\n isInverted={isInverted}\n href={`tel:${\n contact.telephone.link ||\n contact.telephone.label\n }`}\n >\n {contact.telephone?.label}\n </ContactListLink>\n </li>\n )}\n {contact?.email?.label && (\n <li>\n {mailIconContent && <span>{mailIconContent}</span>}\n <ContactListLink\n isInverted={isInverted}\n href={`mailto:${\n contact?.email.link || contact.email.label\n }`}\n >\n {contact?.email.label}\n </ContactListLink>\n </li>\n )}\n </ContactList>\n )}\n\n <Desc isInverted={isInverted} innerHTML={description} />\n </InfoCardView>\n );\n};\n\nconst Controls = styled.div`\n flex: 1 0 20%;\n max-width: 20%;\n display: flex;\n flex-direction: column;\n align-self: flex-start;\n margin-left: auto;\n text-align: right;\n\n & > * + * {\n margin-top: ${spacings.nudge}px;\n }\n`;\n\nconst FylToCtrlContainer = styled.button`\n position: absolute;\n top: 0;\n right: 0;\n z-index: 1000;\n background: none;\n border: none;\n margin: 0;\n padding: 0;\n\n margin-top: ${spacings.spacer}px;\n margin-right: ${spacings.spacer}px;\n color: ${({ theme }) => color(theme).elementBg.dark};\n\n cursor: pointer;\n`;\n\nexport interface LocationIcon {\n url: string;\n size: [number, number];\n anchor: [number, number];\n\n sizeActive: [number, number];\n anchorActive: [number, number];\n}\n\nexport interface MapLocation {\n id: string;\n position: [number, number];\n icon?: LocationIcon;\n\n title?: string; // Rich Text\n titleAs?: HeadlineTag;\n superTitle?: string;\n superTitleAs?: HeadlineTag;\n\n companyName?: string;\n address?: Address;\n addressIcon?: (props: { isInverted?: boolean }) => React.ReactNode;\n contact?: {\n telephone?: {\n link?: string;\n label?: string;\n icon?: (props: { isInverted?: boolean }) => React.ReactNode;\n };\n email?: {\n link?: string;\n label?: string;\n icon?: (props: { isInverted?: boolean }) => React.ReactNode;\n };\n };\n image?: string[];\n description?: string;\n}\n\nconst Map: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n\n /** Switch horizontal order of map and location info text */\n isMirrored?: boolean;\n\n /** Map tile provider */\n provider?: string;\n\n /** Map attribution text (richtext) */\n attribution?: string;\n\n /** Initial center of the map */\n center?: [number, number];\n\n /** Initial map zoom */\n zoom?: number;\n\n /** Zoom if map jumps to location */\n flyToZoom?: number;\n\n /** Initial location */\n initialLocation?: string;\n\n /** Array of location settings */\n locations?: Array<MapLocation>;\n\n /** Show all markers on first load */\n allMarkersOnInit?: boolean;\n\n /** Map container padding for show all markers */\n fitBoundsPadding?: [number, number];\n\n /** Icon element for flight to the current active location */\n flyToControl?: React.ReactNode;\n\n /** Injection function to replace default control button */\n controlNext?: (props: {\n isInverted?: boolean;\n isActive?: boolean;\n name?: string;\n clickHandler?: (ev: React.SyntheticEvent<HTMLButtonElement>) => void;\n }) => React.ReactNode;\n\n /** Injection function to replace default control button */\n controlPrev?: (props: {\n isInverted?: boolean;\n isActive?: boolean;\n name?: string;\n clickHandler?: (ev: React.SyntheticEvent<HTMLButtonElement>) => void;\n }) => React.ReactNode;\n}> = ({\n anchorId,\n bgMode,\n isMirrored = false,\n provider,\n attribution,\n center = [51.505, -0.09],\n zoom = 5,\n flyToZoom,\n initialLocation,\n locations,\n allMarkersOnInit = false,\n fitBoundsPadding,\n flyToControl,\n controlNext,\n controlPrev,\n}) => {\n const { colors } = useLibTheme();\n\n const [activeLocationId, setActiveLocationId] = useState<string>(\n initialLocation || ''\n );\n const [isDirty, setIsDirty] = useState<boolean>(false);\n const activeLocation = useMemo(\n () => locations?.find((l) => l.id === activeLocationId),\n [activeLocationId, locations]\n );\n\n const hasBg = bgMode === 'full';\n const isInverted = bgMode === 'inverted';\n\n const defaultMarker: LocationIcon = {\n size: [28, 28],\n anchor: [14, 28],\n sizeActive: [70, 70],\n anchorActive: [35, 70],\n url: getSVGData(<LocationPin />),\n };\n const {\n isLoaded,\n setContainer: setMapContainer,\n flyToActive,\n showAllMarkers,\n } = useLeafletMap({\n url: provider,\n attribution,\n center,\n zoom,\n activeMarkerId: activeLocationId,\n markers: locations?.map(({ id, position, icon }) => ({\n id,\n position,\n icon: icon || defaultMarker,\n isInteractive: true,\n })),\n fitBoundsPadding,\n onMarkerClick: setActiveLocationId,\n });\n\n const goToNext = () => {\n setActiveLocationId((prev) => {\n if (!locations) return prev;\n const currentIndex = locations.findIndex(\n (l) => l.id === activeLocationId\n );\n if (currentIndex === -1) return prev;\n\n // get new index\n const newIndex = (currentIndex + 1) % locations.length;\n return locations[newIndex].id;\n });\n };\n\n const goToPrevious = () => {\n setActiveLocationId((prev) => {\n if (!locations) return prev;\n const currentIndex = locations.findIndex(\n (l) => l.id === activeLocationId\n );\n if (currentIndex === -1) return prev;\n\n // get new index\n const newIndex =\n currentIndex - 1 < 0 ? locations.length - 1 : currentIndex - 1;\n return locations[newIndex].id;\n });\n };\n\n useEffect(() => {\n if (isLoaded && !isDirty) {\n if (allMarkersOnInit) showAllMarkers();\n } else {\n flyToActive(flyToZoom);\n }\n }, [\n activeLocationId,\n allMarkersOnInit,\n flyToActive,\n flyToZoom,\n initialLocation,\n isDirty,\n isLoaded,\n showAllMarkers,\n ]);\n\n useEffect(() => {\n if (!isDirty && activeLocationId !== initialLocation) setIsDirty(true);\n }, [activeLocationId, initialLocation, isDirty]);\n\n return (\n <MapSection\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : hasBg\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n {locations && generateLocalBusiness(locations)}\n <MapContainer ref={setMapContainer} isMirrored={isMirrored}>\n {flyToControl && (\n <FylToCtrlContainer\n onClick={(ev) => {\n ev.stopPropagation();\n flyToActive(flyToZoom);\n }}\n >\n {flyToControl}\n </FylToCtrlContainer>\n )}\n </MapContainer>\n\n <CardWrapper addWhitespace clampWidth=\"normal\">\n <Grid.Row>\n <Grid.Col\n semilarge={{\n span: 6 / 12,\n move: (isMirrored ? 6 : 0) / 12,\n }}\n ></Grid.Col>\n <Grid.Col\n semilarge={{\n span: 6 / 12,\n move: (isMirrored ? -6 : 0) / 12,\n }}\n >\n <CardContainer isMirrored={isMirrored}>\n {isValidArray(locations, false) && (\n <React.Fragment>\n {activeLocation && (\n <LocationInfoCard\n {...activeLocation}\n isInverted={isInverted}\n />\n )}\n {locations.length > 1 && (\n <Controls>\n {controlNext ? (\n controlNext({\n isInverted,\n isActive: true,\n clickHandler: goToNext,\n name: 'control_next_head',\n })\n ) : (\n <Control\n isInverted={isInverted}\n isDisabled={false}\n onClick={goToNext}\n >\n <Icons.ArrowRightGhost />\n </Control>\n )}\n {controlPrev ? (\n controlPrev({\n isInverted,\n isActive: true,\n clickHandler: goToPrevious,\n name: 'control_prev_head',\n })\n ) : (\n <Control\n isInverted={isInverted}\n isDisabled={false}\n onClick={goToPrevious}\n >\n <Icons.ArrowLeftGhost />\n </Control>\n )}\n </Controls>\n )}\n </React.Fragment>\n )}\n </CardContainer>\n </Grid.Col>\n </Grid.Row>\n </CardWrapper>\n </MapSection>\n );\n};\n\nexport const MapComponent = Map;\nexport default withLibTheme(Map);\n","import 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 React from 'react';\nimport styled from 'styled-components';\n\nimport 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 { getColors as color, mq, spacings } from 'utils/styles';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\n\nconst Seperator = styled.div<{ isInverted?: boolean; isTop?: boolean }>`\n border-bottom: solid 1px\n ${({ isInverted, theme }) =>\n isInverted\n ? color(theme).elementBg.light\n : color(theme).elementBg.dark};\n\n margin-top: ${({ isTop }) => !isTop && spacings.spacer}px;\n margin-bottom: ${({ isTop }) => isTop && spacings.spacer}px;\n`;\n\nconst AuthorContainer = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n\n & > * + * {\n margin-top: ${spacings.spacer}px;\n }\n\n @media ${mq.medium} {\n flex-direction: row;\n justify-content: flex-start;\n text-align: left;\n\n & > * + * {\n margin-top: 0;\n margin-left: ${spacings.spacer}px;\n }\n }\n`;\n\nconst Avatar = styled.img`\n border-radius: 50%; ;\n`;\n\nconst Author = styled.div``;\n\nconst StyledCopy = styled(Copy)`\n text-transform: uppercase;\n margin-bottom: ${spacings.nudge * 3}px;\n`;\n\nconst NewsAuthorCard: React.FC<{\n /** Text above author name */\n label?: string;\n\n /** Article's author name */\n author?: string;\n\n /** Author avatar image */\n avatar?: { src: string; alt?: string };\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n}> = ({ label, author, avatar, bgMode }) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n\n return (\n <Section\n addSeperation\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 clampWidth=\"small\" addWhitespace>\n {author && (\n <React.Fragment>\n <Seperator isTop isInverted={isInverted} />\n <AuthorContainer>\n {avatar && (\n <Avatar src={avatar.src} alt={avatar.alt} />\n )}\n <Author>\n {author && (\n <StyledCopy\n isInverted={isInverted}\n type=\"copy-b\"\n >\n {label || 'Written By'}\n </StyledCopy>\n )}\n <Heading\n isInverted={isInverted}\n size=\"heading-2\"\n >\n {author}\n </Heading>\n </Author>\n </AuthorContainer>\n </React.Fragment>\n )}\n <Seperator isInverted={isInverted} />\n </Wrapper>\n </Section>\n );\n};\n\nexport const NewsAuthorCardComponent = NewsAuthorCard;\nexport default withLibTheme(NewsAuthorCard);\n","import React, { forwardRef, useMemo } from 'react';\nimport styled from 'styled-components';\n\nimport {\n spacings,\n getGlobals as global,\n getFonts as font,\n getColors,\n} from 'utils/styles';\nimport Copy, { copyStyle } from 'components/typography/Copy';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport Tag, { TagProps } from 'components/blocks/Tag';\nimport StatusFormatter from 'utils/statusFormatter';\nimport Link, { LinkProps } from 'components/typography/Link';\nimport { useLibTheme } from 'utils/LibThemeProvider';\nimport { isValidArray } from 'utils/arrays';\n\nconst View = styled.div`\n position: relative;\n text-decoration: none;\n margin: 0;\n padding: 0;\n`;\n\nconst ImageLink = styled(Link)`\n display: block;\n width: 100%;\n`;\n\nconst StyledImage = styled(Image)`\n overflow: hidden;\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n`;\n\nconst BorderPlaceholder = styled.div<{ hasBg?: boolean }>`\n border-top: 1px solid\n ${({ theme, hasBg }) =>\n hasBg\n ? getColors(theme).elementBg.light\n : getColors(theme).elementBg.medium};\n`;\n\nconst TitleLink = styled(Link)`\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\nconst Head = styled.div`\n display: flex;\n\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n\n &:not(:first-child) {\n margin-top: ${spacings.nudge * 3}px;\n }\n\n &:not(:last-child) {\n margin-bottom: ${spacings.nudge * 3}px;\n }\n\n & > * + * {\n margin-left: ${spacings.nudge * 3}px;\n }\n`;\n\nconst Tags = styled.div`\n display: flex;\n overflow: scroll;\n scrollbar-width: none;\n\n &::-webkit-scrollbar {\n width: 0;\n height: 0;\n display: none;\n }\n\n & > * + * {\n margin-left: ${spacings.nudge}px;\n }\n`;\n\nconst PublishDate = styled(Copy)`\n &:only-child {\n margin-left: auto;\n }\n`;\n\nconst Main = styled.div`\n max-width: 95%;\n\n & > * + * {\n margin-top: ${spacings.nudge * 3}px;\n }\n`;\n\nconst Text = styled(Copy)`\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 6; /* number of lines to show */\n line-clamp: 6;\n -webkit-box-orient: vertical;\n\n & > * {\n margin: 0 !important;\n }\n\n & > p:not(:first-of-type) {\n display: none;\n }\n\n & > ul,\n & > ol,\n & > table {\n display: none;\n }\n`;\n\nconst Action = styled.div`\n margin-top: ${spacings.nudge * 3}px;\n`;\n\nexport interface NewsCardProps {\n /** Invert text and background for use on dark sections */\n isInverted?: boolean;\n\n /** News tag name */\n tags?: TagProps[];\n\n /** News publish date */\n publishDate?: Date;\n\n /** News title */\n title?: string;\n\n /** News text */\n text?: string;\n\n /** News image settings */\n image?: Omit<ImageProps, 'coverSpace'>;\n\n /** News link settings */\n link?: LinkProps;\n\n /** Callback function if tag in news iten has been clicked */\n onTagClick?: (tag: TagProps) => void;\n\n /** Function to inject primary action */\n action?: (isInverted?: boolean) => React.ReactNode;\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 clickHandler?: (ev?: React.SyntheticEvent<HTMLAnchorElement>) => void;\n }) => React.ReactNode;\n\n hasBg?: boolean;\n}\n\nconst NewsCard = forwardRef<\n HTMLDivElement,\n NewsCardProps & {\n className?: string;\n }\n>(\n (\n {\n tags,\n onTagClick,\n publishDate,\n title,\n text,\n image,\n link,\n isInverted,\n action,\n customTag,\n className,\n hasBg,\n },\n ref\n ) => {\n const { globals } = useLibTheme();\n\n let publishedAt = '';\n if (publishDate) {\n const formatter = new StatusFormatter(\n publishDate.getTime(),\n '',\n globals.sections.newsDateFormat(publishDate),\n globals.sections.newsTimeFormat(publishDate),\n globals.sections.newsLocaleKey\n );\n publishedAt = formatter.getFormattedDate();\n }\n\n const handleTagClick = (tag: TagProps) =>\n onTagClick\n ? (ev?: React.SyntheticEvent<HTMLAnchorElement>) => {\n ev?.preventDefault();\n onTagClick(tag);\n }\n : undefined;\n\n const filteredTags = useMemo(() => {\n return tags?.filter((tag) => tag.name);\n }, [tags]);\n\n return (\n <View ref={ref} className={className}>\n {image ? (\n <ImageLink {...link} ariaLabel={title}>\n <StyledImage\n {...image}\n coverSpace\n isInverted={isInverted}\n />\n </ImageLink>\n ) : (\n <BorderPlaceholder hasBg={hasBg} />\n )}\n <Head data-sheet=\"head\">\n {isValidArray(filteredTags, false) && (\n <Tags>\n {filteredTags.map((tag, i) => {\n if (customTag) {\n return customTag({\n key: i,\n name: tag.name || '',\n isInverted: isInverted,\n isActive: false,\n link: tag.link,\n clickHandler: handleTagClick(tag),\n });\n } else {\n return (\n <Tag\n key={i}\n isInverted={isInverted}\n name={tag.name}\n link={tag.link}\n onClick={handleTagClick(tag)}\n />\n );\n }\n })}\n </Tags>\n )}\n {publishedAt && (\n <PublishDate\n size=\"small\"\n renderAs=\"div\"\n isInverted={isInverted}\n >\n {publishedAt}\n </PublishDate>\n )}\n </Head>\n <Main>\n {title && (\n <TitleLink\n {...link}\n ariaLabel={title}\n isInverted={isInverted}\n dataSheet=\"title\"\n >\n {title}\n </TitleLink>\n )}\n {text && (\n <Text\n isInverted={isInverted}\n type=\"copy\"\n innerHTML={text}\n data-sheet=\"text\"\n size=\"medium\"\n />\n )}\n </Main>\n {action && <Action>{action(isInverted)}</Action>}\n </View>\n );\n }\n);\n\nNewsCard.displayName = 'NewsCard';\n\nexport default NewsCard;\n","import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport styled, { DefaultTheme } from 'styled-components';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\n\nimport NewsCard, { NewsCardProps } from 'components/blocks/NewsCard';\nimport { mq, spacings } from 'utils/styles';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Tag, { TagProps } from 'components/blocks/Tag';\nimport { useMediaQuery } from 'utils/useMediaQuery';\nimport { useEqualSheetHeight } from 'utils/useEqualSheetHeight';\nimport { useObserverSupport } from 'utils/useObserverSupport';\nimport Copy from 'components/typography/Copy';\nimport { useScrollTo } from 'utils/useScrollTo';\nimport Pointer from 'components/buttons/Pointer';\nimport { isValidArray } from 'utils/arrays';\nimport { deleteUrlParam, getUrlParams, setUrlParam } from 'utils/urlParams';\nimport Filter from 'components/base/icons/Filter';\nimport useUpdateEffect from 'utils/useUpdateEffect';\nimport useMounted from 'utils/useMounted';\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 News = styled.ul`\n list-style: none;\n margin: 0;\n margin-top: -${spacings.nudge * 6}px;\n margin-left: -${spacings.spacer}px;\n padding: 0;\n\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n justify-content: flex-start;\n\n flex-wrap: wrap;\n`;\n\nconst NewsItem = styled.li`\n padding-top: ${spacings.nudge * 6}px;\n padding-left: ${spacings.spacer}px;\n flex: 1 0 100%;\n\n @media ${mq.medium} {\n flex: 1 0 50%;\n max-width: 50%;\n }\n\n @media ${mq.large} {\n flex: 1 0 33.33%;\n max-width: 33.33%;\n }\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\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\nexport const getNewsFilterParams = (\n url: string,\n theme: DefaultTheme,\n tags: string[] = []\n) => {\n if (!url) return '';\n if (!isValidArray(tags, false)) return url;\n\n const filterName = theme.globals.sections.newsFilterName;\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\ntype NewsOverviewMq = 'small' | 'semilarge' | 'large';\n\nexport type NewsItem = Omit<\n NewsCardProps,\n 'customTag' | 'isInverted' | 'onTagClick'\n>;\n\nconst NewsOverview: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array of news item settings */\n news?: NewsItem[];\n\n /** Tags for news 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 anchorId,\n news,\n tags,\n initial,\n showMoreText,\n bgMode,\n\n onTagClick,\n customTag,\n}) => {\n const { colors, globals } = useLibTheme();\n const filterName = globals.sections.newsFilterName;\n\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n\n const [selectedTags, setSelectedTags] = useState<string[]>(\n initial?.activeTags || []\n );\n\n const mqs: NewsOverviewMq[] = ['small', 'semilarge', 'large'];\n const currentMq = useMediaQuery(mqs) as NewsOverviewMq | undefined;\n const [itemsPerRow, setItemsPerRow] = useState(3);\n const [visibleRows, setVisibleRows] = useState(initial?.visibleRows || 3);\n const isMounted = useMounted();\n\n const targetRef = useRef<HTMLDivElement>(null);\n const observerSupported = useObserverSupport();\n\n const newsCount = news?.length || 0;\n\n const setNewPos = useScrollTo(800);\n const { sheetRefs: cardRefs, triggerCalculation } =\n useEqualSheetHeight<HTMLDivElement>({\n listLength: Math.min(visibleRows * itemsPerRow, newsCount),\n identifiers: [\n '[data-sheet=\"head\"]',\n '[data-sheet=\"title\"]',\n '[data-sheet=\"text\"]',\n ],\n responsive: {\n small: 1,\n medium: 1,\n semilarge: 2,\n large: 3,\n xlarge: 3,\n },\n });\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 const paramRows = parseInt(getUrlParams()['rows']);\n\n setVisibleRows(paramRows || 3);\n\n if (isValidArray(paramTags, false)) {\n setSelectedTags(paramTags);\n }\n\n // trigger equal sheet height recalculation\n triggerCalculation();\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 useEffect(() => {\n switch (currentMq) {\n case 'large':\n setItemsPerRow(3);\n break;\n\n case 'semilarge':\n setItemsPerRow(2);\n break;\n\n case 'small':\n setItemsPerRow(1);\n if (visibleRows < 3) setVisibleRows(3);\n break;\n\n default:\n setItemsPerRow(1);\n }\n }, [currentMq, visibleRows]);\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 // trigger equal sheet height recalculation\n triggerCalculation();\n setVisibleRows(3);\n };\n\n const filteredNews = useMemo(() => {\n const tagFilterFn = (item: NewsItem) => {\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(news) ? [...news] : [];\n\n // adding filter\n filtered = filtered?.filter(tagFilterFn);\n\n return filtered;\n }, [news, selectedTags]);\n\n const visibleNews: NewsItem[] = useMemo(() => {\n return (\n filteredNews?.filter((_, i) => i < visibleRows * itemsPerRow) || []\n );\n }, [filteredNews, 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 news\n if (\n visibleRows <\n Math.ceil(filteredNews.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 newsCount,\n visibleRows,\n observerSupported,\n filteredNews.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 : colors.sectionBg.light\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 <News>\n {visibleNews.map((item, i) => (\n <NewsItem key={`${i}_news_${item.title}`}>\n <NewsCard\n hasBg={hasBg || isInverted}\n ref={cardRefs[i]}\n {...item}\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({ name: tag.name }, true);\n }\n }}\n customTag={customTag}\n />\n </NewsItem>\n ))}\n </News>\n <div ref={targetRef} />\n {!observerSupported && (\n <ListFooter>\n {news && news.length > 0 && (\n <Copy\n type=\"copy\"\n size=\"medium\"\n isInverted={isInverted}\n >\n <ShowMore\n itemCount={news.length}\n onClick={(ev) => {\n ev.preventDefault();\n if (\n visibleRows <\n Math.ceil(\n filteredNews.length /\n itemsPerRow\n )\n ) {\n setVisibleRows((prev) => prev + 1);\n }\n }}\n >\n {visibleRows <\n filteredNews.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 NewsOverviewComponent = NewsOverview;\nexport default withLibTheme(NewsOverview);\n","import React from 'react';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport NewsCard, { NewsCardProps } from 'components/blocks/NewsCard';\nimport { useEffect, useState } from 'react';\nimport { useMediaQuery } from 'utils/useMediaQuery';\nimport { useEqualSheetHeight } from 'utils/useEqualSheetHeight';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Grid from 'components/base/Grid';\nimport { LinkProps } from 'components/typography/Link';\nimport { getNewsFilterParams } from './NewsOverview';\n\ntype NewsFooterMq = 'small' | 'semilarge';\n\nexport type NewsItem = Omit<\n NewsCardProps,\n 'isInverted' | 'onTagClick' | 'customTag'\n>;\n\nconst NewsFooter: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array of news item settings */\n news: NewsItem[];\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\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, news, bgMode, customTag }) => {\n const { colors, theme } = useLibTheme();\n const newsCount = news?.length || 0;\n\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n\n const mqs: NewsFooterMq[] = ['small', 'semilarge'];\n const currentMq = useMediaQuery(mqs) as NewsFooterMq | undefined;\n const [itemsPerRow, setItemsPerRow] = useState(2);\n const [visibleRows, setVisibleRows] = useState(1);\n\n const { sheetRefs: cardRefs } = useEqualSheetHeight<HTMLDivElement>({\n listLength: Math.min(visibleRows * itemsPerRow, newsCount),\n identifiers: [\n '[data-sheet=\"head\"]',\n '[data-sheet=\"title\"]',\n '[data-sheet=\"text\"]',\n ],\n responsive: {\n small: 1,\n medium: 1,\n semilarge: 2,\n large: 2,\n xlarge: 2,\n },\n });\n\n useEffect(() => {\n switch (currentMq) {\n case 'semilarge':\n setItemsPerRow(2);\n break;\n\n case 'small':\n setItemsPerRow(1);\n if (visibleRows < 3) setVisibleRows(3);\n break;\n\n default:\n setItemsPerRow(1);\n }\n }, [currentMq, visibleRows]);\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 clampWidth=\"small\">\n <Grid.Row>\n {news\n ?.filter((_, i) => i < visibleRows * itemsPerRow)\n .map((item, i) => (\n <Grid.Col\n medium={{ span: 6 / 12 }}\n key={`${i}_news_${item.title}`}\n >\n <NewsCard\n key={i}\n ref={cardRefs[i]}\n {...item}\n tags={item.tags?.map((tag) => {\n let tagHref: string | undefined =\n undefined;\n\n if (tag.name && tag.link?.href) {\n tagHref = getNewsFilterParams(\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 customTag={customTag}\n />\n </Grid.Col>\n ))}\n </Grid.Row>\n </Wrapper>\n </Section>\n );\n};\n\nexport const NewsFooterComponent = NewsFooter;\nexport default withLibTheme(NewsFooter);\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport { getGlobals as global } from 'utils/styles';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\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 NewsImages: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** List of gallery images */\n images?: ImageType[];\n\n /** Image style */\n isFull?: boolean;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n}> = ({ anchorId, images, bgMode }) => {\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 clampWidth=\"small\" addWhitespace>\n <Grid.Row>\n {images\n ?.filter((img) => img.small)\n ?.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 {/* {images && (imageStyle === 'half' || images.length >= 2) ? (\n <Grid.Row>\n {images.map((img, i) => {\n return (\n <Grid.Col medium={{ span: 6 / 12 }} key={i}>\n <div>\n <StyledImage\n {...img}\n coverSpace\n isInverted={isInverted}\n />\n </div>\n </Grid.Col>\n );\n })}\n </Grid.Row>\n ) : (\n images && (\n <div>\n {images.map((img, i) => {\n return (\n <StyledImage\n key={i}\n {...img}\n coverSpace\n isInverted={isInverted}\n />\n );\n })}\n </div>\n )\n )} */}\n </Wrapper>\n </Section>\n );\n};\n\nexport const NewsImagesComponent = NewsImages;\nexport default withLibTheme(NewsImages);\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 Image, { ImageProps } from 'components/blocks/Image';\nimport Title from 'components/blocks/Title';\nimport Copy from 'components/typography/Copy';\nimport Tag, { TagProps } from 'components/blocks/Tag';\nimport { mq, spacings } from 'utils/styles';\nimport StatusFormatter from 'utils/statusFormatter';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { LinkProps } from 'components/typography/Link';\nimport { getNewsFilterParams } from './NewsOverview';\n\nconst Content = styled.div`\n & > * + * {\n margin-top: ${spacings.nudge * 3}px;\n }\n`;\n\nconst IntroHead = styled(Copy)`\n display: flex;\n\n flex-direction: column;\n align-items: flex-start;\n justify-content: space-between;\n\n & > * + * {\n margin-top: ${spacings.nudge * 2}px;\n }\n\n @media ${mq.medium} {\n flex-direction: row;\n align-items: center;\n\n & > * + * {\n margin-top: 0;\n margin-left: ${spacings.nudge * 2}px;\n }\n }\n`;\n\nconst Tags = styled.div`\n flex: 1 1 80%;\n\n display: flex;\n flex-wrap: wrap;\n margin-top: -${spacings.nudge}px;\n margin-left: -${spacings.nudge}px;\n`;\n\nconst TagWrapper = styled.span`\n display: inline-block;\n padding-top: ${spacings.nudge}px;\n padding-left: ${spacings.nudge}px;\n`;\n\nconst MetaBlock = styled.div`\n flex: 1 0 auto;\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: flex-end;\n align-items: center;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n\n & > * + * {\n margin-left: ${spacings.nudge * 3}px;\n }\n`;\n\nconst StyledTitle = styled(Title)<{ clampTitle?: boolean }>`\n max-width: ${({ clampTitle }) =>\n clampTitle && (13 / 28) * spacings.wrapperSmall + 'px'};\n`;\n\nconst ContentBlock = styled(Copy)<{\n clampText?: boolean;\n isCentered?: boolean;\n}>`\n display: block;\n margin: ${({ isCentered }) => isCentered && '0 auto'};\n max-width: ${({ clampText }) =>\n clampText && (19 / 28) * spacings.wrapper + 'px'};\n\n :not(:first-child) {\n padding-top: ${spacings.spacer}px;\n }\n`;\n\nconst NewsIntro: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array of news tags */\n tags?: TagProps[];\n\n /** News article's meta informations */\n meta?: { date?: Date; author?: string };\n\n /** Title of news article */\n title?: string;\n\n /** Main image of news article */\n image?: Omit<ImageProps, 'coverSpace'>;\n\n /** Text of news article (richtext) */\n text?: string;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\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, tags, meta, title, text, image, bgMode, customTag }) => {\n const { globals, colors, theme } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n\n let publishedAt = '';\n if (meta?.date) {\n const formatter = new StatusFormatter(\n meta.date.getTime(),\n '',\n globals.sections.newsDateFormat(meta.date),\n globals.sections.newsTimeFormat(meta.date),\n globals.sections.newsLocaleKey\n );\n publishedAt = formatter.getFormattedDate();\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 clampWidth=\"small\" addWhitespace>\n <Content>\n <IntroHead isInverted={isInverted}>\n <Tags>\n {tags?.map((tag, i) => {\n let tagLink: LinkProps | undefined = undefined;\n\n if (tag.name && tag.link?.href) {\n tagLink = {\n ...tag.link,\n href: getNewsFilterParams(\n tag.link.href,\n theme,\n [tag.name]\n ),\n };\n }\n\n return (\n <TagWrapper key={`headtag-${i}`}>\n {customTag ? (\n customTag({\n key: `headtag-${i}`,\n name: tag.name || '',\n isInverted: isInverted,\n isActive: false,\n link: tagLink,\n })\n ) : (\n <Tag\n link={tagLink}\n isInverted={isInverted}\n >\n {tag.name}\n </Tag>\n )}\n </TagWrapper>\n );\n })}\n </Tags>\n {(publishedAt || meta?.author) && (\n <MetaBlock>\n {meta?.author && <div>{meta?.author}</div>}\n {publishedAt && <div>{publishedAt}</div>}\n </MetaBlock>\n )}\n </IntroHead>\n <div>\n <StyledTitle\n colorMode={isInverted ? 'inverted' : 'default'}\n title={title}\n />\n {text && (\n <ContentBlock\n isInverted={isInverted}\n type=\"copy-b\"\n innerHTML={text}\n />\n )}\n </div>\n {image?.small && (\n <Image\n {...image}\n coverSpace\n allowEdgeRadius\n isInverted={isInverted}\n />\n )}\n </Content>\n </Wrapper>\n </Section>\n );\n};\n\nexport const NewsIntroComponent = NewsIntro;\nexport default withLibTheme(NewsIntro);\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';\n\nimport NewsCard, { NewsCardProps } from 'components/blocks/NewsCard';\nimport { mq, spacings } from 'utils/styles';\nimport { useEqualSheetHeight } from 'utils/useEqualSheetHeight';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { LinkProps } from 'components/typography/Link';\nimport { getNewsFilterParams } from './NewsOverview';\n\nconst News = styled.ul`\n list-style: none;\n margin: 0;\n margin-top: -${spacings.nudge * 6}px;\n margin-left: -${spacings.spacer}px;\n padding: 0;\n\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n justify-content: flex-start;\n\n flex-wrap: wrap;\n`;\n\nconst NewsItem = styled.li`\n padding-top: ${spacings.nudge * 6}px;\n padding-left: ${spacings.spacer}px;\n flex: 1 0 100%;\n max-width: 100%;\n\n @media ${mq.medium} {\n flex: 1 0 50%;\n max-width: 50%;\n }\n\n @media ${mq.large} {\n flex: 1 0 33.33%;\n max-width: 33.33%;\n }\n`;\n\nexport type NewsItem = Omit<\n NewsCardProps,\n 'isInverted' | 'onTagClick' | 'customTag'\n>;\n\nconst NewsList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Show a short version of three or a expanded version of six news items */\n mode?: 'short' | 'expanded';\n\n /** Array of news card settings */\n news?: NewsItem[];\n\n /** Sections background */\n bgMode?: 'full' | 'inverted';\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, mode = 'short', news, bgMode, customTag }) => {\n const { colors, theme } = useLibTheme();\n\n const items = useMemo<NewsCardProps[]>(() => {\n if (!news) return [];\n if (mode === 'expanded') return news.slice(0, 6);\n else return news.slice(0, 3);\n }, [news, mode]);\n\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n\n const { sheetRefs: cardRefs } = useEqualSheetHeight<HTMLDivElement>({\n listLength: items.length,\n identifiers: [\n '[data-sheet=\"head\"]',\n '[data-sheet=\"title\"]',\n '[data-sheet=\"text\"]',\n ],\n responsive: {\n small: 1,\n medium: 2,\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, true)}\n >\n <Wrapper addWhitespace>\n <News>\n {items?.map((item, i) => (\n <NewsItem key={i}>\n <NewsCard\n key={i}\n ref={cardRefs[i]}\n {...item}\n isInverted={isInverted}\n tags={item.tags?.map((tag) => {\n let tagHref: string | undefined = undefined;\n\n if (tag.name && tag.link?.href) {\n tagHref = getNewsFilterParams(\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 customTag={customTag}\n />\n </NewsItem>\n ))}\n </News>\n </Wrapper>\n </Section>\n );\n};\n\nexport const NewsListComponent = NewsList;\nexport default withLibTheme(NewsList);\n","import Copy from 'components/typography/Copy';\nimport React, { forwardRef } from 'react';\nimport styled from 'styled-components';\n\nimport { getColors as color, spacings } from 'utils/styles';\n\nconst View = styled.div`\n &:focus {\n outline: 1px dashed ${({ theme }) => color(theme).primary.default};\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n }\n`;\n\nconst Caption = styled(Copy)`\n margin-bottom: ${spacings.nudge}px;\n padding: 0 ${spacings.nudge * 2}px;\n text-align: left;\n`;\n\nconst TableContainer = styled.div`\n overflow-x: scroll;\n overflow-y: hidden;\n white-space: nowrap;\n\n &:focus {\n outline: none;\n border: 1px solid ${({ theme }) => color(theme).primary.default};\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n border: none;\n }\n\n &::-webkit-scrollbar {\n display: none;\n scrollbar-width: none;\n }\n`;\n\nconst TableBody = styled.table`\n width: 100%;\n max-width: 100%;\n\n border-collapse: separate;\n border-spacing: 0 ${spacings.nudge * 0.5}px;\n\n padding: 0 ${spacings.nudge * 2}px;\n`;\n\nconst TableHead = styled(Copy)<{\n isInverted?: boolean;\n alignRight?: boolean;\n}>`\n text-align: left;\n color: ${({ theme, isInverted }) =>\n isInverted ? color(theme).text.inverted : color(theme).text.default};\n background-color: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).elementBg.dark\n : color(theme).elementBg.medium};\n\n padding: 0 ${spacings.nudge * 3}px;\n height: 56px;\n box-sizing: content-box;\n\n :last-child {\n padding-right: ${spacings.spacer * 2.5}px;\n text-align: ${({ alignRight }) => (alignRight ? 'right' : 'left')};\n }\n`;\n\nconst TableData = styled(Copy)<{\n hasBack?: boolean;\n alignRight?: boolean;\n}>`\n padding: 0 ${spacings.nudge * 3}px;\n height: 56px;\n box-sizing: content-box;\n\n background-color: ${({ hasBack, theme }) =>\n hasBack ? color(theme).elementBg.light : color(theme).elementBg.medium};\n\n :last-child {\n text-align: ${({ alignRight }) => (alignRight ? 'right' : 'left')};\n padding-right: ${spacings.spacer * 2.5}px;\n }\n`;\n\nexport interface TableProps {\n tableTitle?: string;\n rowTitle?: string[];\n row: Array<{\n cols: string[];\n }>;\n isInverted?: boolean;\n hasBack?: boolean;\n lastCol?: 'left' | 'right';\n}\n\nconst TableBlock = forwardRef<HTMLDivElement, TableProps>(\n (\n {\n row,\n tableTitle,\n rowTitle,\n isInverted = false,\n hasBack = false,\n lastCol = 'left',\n },\n ref\n ) => {\n return (\n <View ref={ref}>\n <TableContainer tabIndex={1}>\n <TableBody>\n {tableTitle && (\n <Caption\n renderAs=\"caption\"\n type=\"copy-b\"\n isInverted={isInverted}\n >\n {tableTitle}\n </Caption>\n )}\n {rowTitle && (\n <thead>\n <tr>\n {rowTitle.map((item, ii) => (\n <TableHead\n key={ii}\n type=\"copy-b\"\n renderAs=\"th\"\n isInverted={!isInverted}\n alignRight={lastCol === 'right'}\n >\n {item}\n </TableHead>\n ))}\n </tr>\n </thead>\n )}\n <tbody>\n {row.map(({ cols }, i) => (\n <tr key={i}>\n {cols.map((itemText, ii) => {\n return (\n <TableData\n key={ii}\n renderAs=\"td\"\n hasBack={hasBack}\n alignRight={lastCol === 'right'}\n innerHTML={itemText}\n />\n );\n })}\n </tr>\n ))}\n </tbody>\n </TableBody>\n </TableContainer>\n </View>\n );\n }\n);\n\nTableBlock.displayName = 'TableBlock';\n\nexport default TableBlock;\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 NewsTable: 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 clampWidth=\"small\">\n {tableItems.map((item, i) => {\n return (\n <TableBlock\n {...item}\n key={i}\n hasBack={hasBg}\n isInverted={isInverted}\n />\n );\n })}\n </TableWrapper>\n </Section>\n );\n};\n\nexport const NewsTableComponent = NewsTable;\nexport default withLibTheme(NewsTable);\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Copy from 'components/typography/Copy';\nimport Wrapper from 'components/base/Wrapper';\nimport { spacings } from 'utils/styles';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\n\nconst ContentBlock = styled(Copy)<{\n clampText?: boolean;\n isCentered?: boolean;\n}>`\n display: block;\n margin: ${({ isCentered }) => isCentered && '0 auto'};\n max-width: ${({ clampText }) =>\n clampText && (19 / 28) * spacings.wrapperSmall + 'px'};\n\n :not(:first-child) {\n padding-top: ${spacings.nudge * 5}px;\n }\n`;\n\nconst NewsText: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Main text (RichText) */\n text: string;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n}> = ({ anchorId, text, bgMode }) => {\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 <Wrapper clampWidth=\"small\" addWhitespace>\n {text && (\n <ContentBlock\n isInverted={isInverted}\n type=\"copy\"\n innerHTML={text}\n />\n )}\n </Wrapper>\n </Section>\n );\n};\n\nexport const NewsTextComponent = NewsText;\nexport default withLibTheme(NewsText);\n","import React, { FC, useState } from 'react';\nimport styled from 'styled-components';\n\nimport { ImageProps } from 'components/blocks/Image';\nimport {\n mq,\n getColors as color,\n getGlobals as global,\n spacings,\n} from 'utils/styles';\nimport Play from 'components/base/icons/Play';\nimport {\n CookieConsentData,\n selectors,\n} from 'utils/cookie-consent/useCookieConsent';\nimport { Cookie, getCookie } from 'utils/cookie-consent/cookie';\nimport Copy from 'components/typography/Copy';\nimport ButtonGhost from 'components/buttons/ButtonGhost';\nimport { useLibTheme } from 'utils/LibThemeProvider';\n\nconst View = styled.div<{\n bgImage?: ImageProps;\n isActive?: boolean;\n onClick?: () => void;\n}>`\n text-align: center;\n\n cursor: ${({ onClick }) => onClick && 'pointer'};\n position: relative;\n\n padding-bottom: 56.25%;\n\n background-image: url('${({ bgImage }) => (bgImage ? 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 &:before {\n content: ${({ isActive, bgImage }) => !isActive && bgImage && '\"\"'};\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n background-color: ${({ theme }) => color(theme).elementBg.medium};\n opacity: ${({ bgImage }) => (bgImage ? '0.3' : '0')};\n\n pointer-events: none;\n }\n\n &:after {\n content: ${({ isActive, bgImage }) => !isActive && bgImage && '\"\"'};\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 ${View}:hover > & > * {\n transform: scale(1.05);\n opacity: 1;\n }\n\n ${View}: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 ConsentOverlay = styled.div<{ isVisible?: boolean }>`\n display: ${({ isVisible }) => (isVisible ? 'flex' : 'none')};\n justify-content: center;\n align-items: center;\n\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 2;\n background-color: rgba(0, 0, 0, 0.6);\n pointer-events: ${({ isVisible }) => (isVisible ? 'all' : 'none')};\n`;\n\nconst ConsentContent = styled.div`\n max-width: 330px;\n text-align: center;\n\n & > * + * {\n margin-top: ${spacings.nudge * 3}px;\n }\n`;\n\nconst ConsentText = styled(Copy)``;\n\nconst Iframe = styled.iframe`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n\n border: none;\n`;\n\nexport interface VideoCardProps {\n bgImage: ImageProps;\n embedId: string;\n playIcon?: React.ReactNode;\n consentText?: string;\n consentAction?: (props: {\n handleClick?: () => void;\n consentProps: Record<string, string>;\n }) => React.ReactNode;\n}\n\nconst VideoCard: FC<VideoCardProps & { className?: string }> = ({\n bgImage,\n embedId,\n playIcon,\n consentText = 'Für die Wiedergabe von Videos muss der Nutzung von Cookies & Daten zugestimmt werden.',\n consentAction,\n className,\n}) => {\n const { globals } = useLibTheme();\n const [isActive, setIsActive] = useState(false);\n const [showConsent, setShowConsent] = useState(false);\n\n const handlePlayClick = () => {\n const cookie = getCookie(\n globals.cookie.name\n ) as Cookie<CookieConsentData>;\n\n const isAccepted =\n globals.cookie.videoCookieTypeRestrictions.reduce<boolean>(\n (acc, current) => {\n if (!acc) return acc;\n if (!cookie || !cookie?.data.types) return false;\n\n // set acc to false if type is not defined or set to false\n acc = !!cookie?.data?.types?.[current];\n return acc;\n },\n true\n );\n\n if (isAccepted) {\n setIsActive(true);\n setShowConsent(false);\n } else {\n setShowConsent(true);\n }\n };\n\n const handleConsentActionClick = () => {\n setShowConsent(false);\n };\n\n return (\n <View\n onClick={!showConsent ? handlePlayClick : undefined}\n bgImage={isActive ? undefined : bgImage}\n isActive={isActive}\n className={className}\n >\n {!isActive && !showConsent && (\n <VideoControls>\n {playIcon || <Play iconColor=\"#000\" />}\n </VideoControls>\n )}\n {isActive && (\n <Iframe\n id=\"ytplayer\"\n src={`https://www.youtube.com/embed/${embedId}?autoplay=1`}\n allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\"\n />\n )}\n <ConsentOverlay isVisible={showConsent}>\n <ConsentContent>\n {consentText && (\n <ConsentText isInverted>{consentText}</ConsentText>\n )}\n {consentAction ? (\n consentAction({\n handleClick: handleConsentActionClick,\n consentProps: {\n [selectors.buttons.attribute]: '',\n },\n })\n ) : (\n <ButtonGhost.View\n as=\"button\"\n isInverted\n onClick={handleConsentActionClick}\n className={selectors.buttons.class}\n >\n <ButtonGhost.Label>\n Zustimmung ändern\n </ButtonGhost.Label>\n </ButtonGhost.View>\n )}\n </ConsentContent>\n </ConsentOverlay>\n </View>\n );\n};\n\nexport default VideoCard;\n","import React from 'react';\n\nimport { ImageProps } from 'components/blocks/Image';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Wrapper from 'components/base/Wrapper';\nimport VideoCard from 'components/blocks/VideoCard';\n\nconst NewsVideo: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Placeholder image */\n bgImage?: ImageProps;\n\n /** Embed video ID. E.g. from Youtube */\n embedId?: string;\n\n /** Custom play icon */\n playIcon?: React.ReactNode;\n\n /** Text for cookie consent overlay */\n consentText?: string;\n\n /** Function to inject custom action on cookie consent overlay */\n consentAction?: (props: {\n handleClick?: () => void;\n consentProps: Record<string, string>;\n }) => React.ReactNode;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n}> = ({\n anchorId,\n bgImage,\n embedId,\n playIcon,\n consentText,\n consentAction,\n bgMode,\n}) => {\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 clampWidth=\"small\">\n {embedId && bgImage && (\n <VideoCard\n bgImage={bgImage}\n embedId={embedId}\n playIcon={playIcon}\n consentText={consentText}\n consentAction={consentAction}\n />\n )}\n </Wrapper>\n </Section>\n );\n};\n\nexport const NewsVideoComponent = NewsVideo;\nexport default withLibTheme(NewsVideo);\n","import * as React from 'react';\nimport styled, { css } from 'styled-components';\nimport { useLibTheme } from 'utils/LibThemeProvider';\nimport {\n CalloutFontOptionType,\n getFonts as font,\n mq,\n styleTextColor,\n withRange,\n} from 'utils/styles';\n\n// Styles\nconst BaseStyles = styled.h1<{\n size: CalloutFontOptionType;\n hyphens?: boolean;\n hasShadow?: boolean;\n textColor?: string;\n textGradient?: string;\n}>`\n margin: 0;\n padding: 0;\n ${({ textColor, textGradient }) => styleTextColor(textColor, textGradient)}\n\n hyphens: auto;\n\n ${(props: { hyphens?: boolean }) =>\n !props.hyphens &&\n css`\n @media ${mq.large} {\n hyphens: none;\n }\n `}\n\n text-shadow: ${({ hasShadow }) =>\n hasShadow && '1px 2px 8px rgba(0, 0, 0, 0.25)'};\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n margin: 0;\n padding: 0;\n border: 0;\n outline: 0;\n font-weight: inherit;\n font-style: inherit;\n font-size: 100%;\n font-family: inherit;\n vertical-align: baseline;\n }\n`;\n\nconst View = styled(BaseStyles)`\n font-family: ${({ theme, size }) => font(theme).callout[size].family};\n font-weight: ${({ theme, size }) => font(theme).callout[size].weight};\n font-style: ${({ theme, size }) => font(theme).callout[size].style};\n ${({ theme, size }) =>\n withRange(font(theme).callout[size].size, 'font-size')}\n line-height: ${({ theme, size }) => font(theme).callout[size].lineHeight};\n letter-spacing: ${({ theme, size }) =>\n font(theme).callout[size].letterSpacing};\n text-transform: ${({ theme, size }) =>\n font(theme).callout[size].textTransform};\n text-decoration: ${({ theme, size }) =>\n font(theme).callout[size].textDecoration};\n`;\n\nexport type CalloutTag =\n | 'h1'\n | 'h2'\n | 'h3'\n | 'h4'\n | 'h5'\n | 'h6'\n | 'span'\n | 'div'\n | 'blockquote';\n\nconst Callout: React.FC<{\n isInverted?: boolean;\n renderAs?: CalloutTag;\n size?: CalloutFontOptionType;\n textColor?: string;\n textGradient?: string;\n hyphens?: boolean;\n hasShadow?: boolean;\n innerHTML?: string;\n\n className?: string;\n children?: React.ReactNode;\n}> = ({\n isInverted,\n renderAs = 'h2',\n className,\n size = 'medium',\n textColor,\n textGradient,\n hyphens = false,\n hasShadow = false,\n innerHTML,\n children,\n ...rest\n}) => {\n const { fonts } = useLibTheme();\n const fontSettings = fonts?.callout?.[size];\n\n return (\n <View\n as={renderAs}\n size={size}\n textColor={\n textColor ||\n (isInverted ? fontSettings.colorInverted : fontSettings.color)\n }\n textGradient={\n textGradient ||\n (!textColor\n ? isInverted\n ? fontSettings.colorGradientInverted\n : fontSettings.colorGradient\n : undefined)\n }\n hyphens={hyphens}\n hasShadow={hasShadow}\n dangerouslySetInnerHTML={\n innerHTML && !children ? { __html: innerHTML } : undefined\n }\n className={className}\n {...rest}\n >\n {children}\n </View>\n );\n};\n\nCallout.defaultProps = {\n renderAs: 'h1',\n size: 'medium',\n};\n\nexport default Callout;\n","import Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Callout from 'components/typography/Callout';\nimport React, { forwardRef, useContext } from 'react';\nimport styled, { ThemeContext } from 'styled-components';\nimport {\n getColors as color,\n spacings,\n getGlobals as global,\n} from 'utils/styles';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Copy from 'components/typography/Copy';\nimport { useEqualSheetHeight } from 'utils/useEqualSheetHeight';\nimport Image, { ImageProps } from 'components/blocks/Image';\n\nconst CARD_MIN_WIDTH = 240;\nconst CARD_MAX_WIDTH = 440;\nconst MEDIA_QUERIES = {\n medium: '(min-width: 36.5em)',\n semilarge: '(min-width: 54.75em)',\n large: '(min-width: 73em)',\n xlarge: '(min-width: 90em)',\n};\n\nconst View = styled.li<{ isCentered?: boolean }>`\n text-align: ${({ isCentered }) => (isCentered ? 'center' : 'left')};\n\n & > * {\n margin: ${({ isCentered }) => (isCentered ? '0 auto' : 0)};\n margin-right: auto;\n }\n\n & > * + * {\n margin-top: ${spacings.nudge * 3}px;\n }\n`;\n\nconst ImageContainer = styled.div<{ isCentered?: boolean }>`\n display: flex;\n justify-content: ${({ isCentered }) =>\n isCentered ? 'center' : 'flex-start'};\n margin-bottom: ${spacings.nudge * 3}px;\n max-width: 100%;\n`;\n\nconst StyledImage = styled(Image)`\n overflow: hidden;\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n`;\n\nconst Label = styled(Copy)``;\n\nconst Text = styled(Copy)``;\n\nexport interface NumberListCardProps {\n image?: ImageProps;\n digit?: string;\n label?: string;\n text?: string;\n}\n\nconst NumberListCard = forwardRef<\n HTMLLIElement,\n NumberListCardProps & {\n isInverted?: boolean;\n isCentered?: boolean;\n className?: string;\n }\n>(({ image, label, digit, isInverted, isCentered, text, className }, ref) => {\n const { colors } = useLibTheme();\n\n return (\n <View ref={ref} isCentered={isCentered} className={className}>\n {image?.small && (\n <ImageContainer isCentered={isCentered}>\n <StyledImage\n isInverted={isInverted}\n small={image.small}\n medium={image.medium}\n semilarge={image.semilarge}\n large={image.large}\n xlarge={image.xlarge}\n alt={image.alt}\n coverSpace={image.coverSpace}\n ratios={image.ratios}\n showPlaceholder={image.showPlaceholder}\n />\n </ImageContainer>\n )}\n <Callout\n data-sheet=\"digit\"\n size=\"mediumBold\"\n renderAs=\"div\"\n isInverted={isInverted}\n >\n {digit}\n </Callout>\n <Label\n type=\"copy-b\"\n size=\"big\"\n textColor={\n isInverted\n ? colors.primary.inverted\n : colors.primary.default\n }\n data-sheet=\"label\"\n >\n {label}\n </Label>\n {text && (\n <Text\n type=\"copy\"\n size=\"medium\"\n isInverted={isInverted}\n data-sheet=\"text\"\n innerHTML={text}\n />\n )}\n </View>\n );\n});\n\nNumberListCard.displayName = 'NumberListCard';\n\nconst CardList = styled.ul`\n display: flex;\n flex-direction: column;\n flex-wrap: wrap;\n justify-content: flex-start;\n align-items: center;\n\n list-style: none;\n padding: 0;\n margin: 0;\n margin-left: -${spacings.spacer}px;\n margin-top: -${spacings.nudge * 6}px;\n\n & > * {\n flex: 0 0 100%;\n width: 100%;\n min-width: ${CARD_MIN_WIDTH + spacings.spacer}px;\n max-width: ${CARD_MAX_WIDTH + spacings.spacer}px;\n padding-left: ${spacings.spacer}px;\n padding-top: ${spacings.nudge * 6}px;\n }\n\n @media ${MEDIA_QUERIES.medium} {\n flex-direction: row;\n justify-content: center;\n align-items: flex-start;\n\n margin-top: -${spacings.nudge * 10}px;\n\n & > * {\n flex: 0 0 50%;\n padding-top: ${spacings.nudge * 10}px;\n }\n\n & > li:first-child:nth-last-child(1) {\n /* -or- li:only-child { */\n flex: 0 0 100%;\n }\n }\n\n @media ${MEDIA_QUERIES.semilarge} {\n & > * {\n flex: 0 0 33.33%;\n }\n\n /* one item */\n & > li:first-child:nth-last-child(1) {\n /* -or- li:only-child { */\n flex: 0 0 100%;\n }\n\n /* two items */\n & > li:first-child:nth-last-child(2),\n & > li:first-child:nth-last-child(2) ~ li {\n flex: 0 0 50%;\n }\n }\n\n @media ${MEDIA_QUERIES.large} {\n & > * {\n flex: 0 0 25%;\n }\n\n /* one item */\n & > li:first-child:nth-last-child(1) {\n /* -or- li:only-child { */\n flex: 0 0 100%;\n }\n\n /* two items */\n & > li:first-child:nth-last-child(2),\n & > li:first-child:nth-last-child(2) ~ li {\n flex: 0 0 50%;\n }\n\n /* three items */\n & > li:first-child:nth-last-child(3),\n & > li:first-child:nth-last-child(3) ~ li {\n flex: 0 0 33.33%;\n }\n }\n`;\n\nexport interface NumberListItem {\n image?: ImageProps;\n digit?: string;\n label?: string;\n text?: string;\n}\n\nconst NumberList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n items?: NumberListItem[];\n\n /** Center texts in every card item */\n isCentered?: boolean;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n}> = ({ anchorId, items, bgMode, isCentered = true }) => {\n const theme = useContext(ThemeContext);\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n\n const { sheetRefs: numbersRef } = useEqualSheetHeight<HTMLDivElement>({\n listLength: items?.length || 0,\n identifiers: [\n '[data-sheet=\"digit\"]',\n '[data-sheet=\"label\"]',\n '[data-sheet=\"text\"]',\n ],\n responsive: {\n small: 1,\n medium: 2,\n semilarge: 3,\n large: 4,\n xlarge: 4,\n },\n customMediaQueries: MEDIA_QUERIES,\n });\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? color(theme).sectionBg.dark\n : hasBg\n ? color(theme).sectionBg.medium\n : color(theme).sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper addWhitespace>\n <CardList>\n {items?.map((item, i) => {\n return (\n <NumberListCard\n key={i}\n ref={numbersRef[i] as any}\n {...item}\n isInverted={isInverted}\n isCentered={isCentered}\n />\n );\n })}\n </CardList>\n </Wrapper>\n </Section>\n );\n};\n\nexport const NumberListComponent = NumberList;\nexport default withLibTheme(NumberList);\n","import React, { FC, useEffect, useRef, useState } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport { spacings } from 'utils/styles';\n\nconst View = styled.section`\n position: relative;\n width: 100vw;\n z-index: -1;\n`;\n\nconst Parallax = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n margin-left: 0;\n width: 100%;\n`;\n\nconst Content = styled.div<{\n contentWidth?: number;\n hAlign?: 'left' | 'center' | 'right';\n}>`\n margin-left: ${({ hAlign }) =>\n (hAlign === 'right' || hAlign === 'center') && 'auto'};\n margin-right: ${({ hAlign }) =>\n (hAlign === 'left' || hAlign === 'center') && 'auto'};\n\n width: ${({ contentWidth }) =>\n contentWidth\n ? contentWidth === -1\n ? 'auto'\n : contentWidth * 100 + '%'\n : undefined};\n\n max-width: ${spacings.wrapperLarge}px;\n overflow: hidden;\n\n & > * {\n width: ${({ contentWidth }) => contentWidth !== -1 && '100%'};\n }\n`;\n\nconst StyledImage = styled(Image)<{\n coverSpace?: boolean;\n hAlign?: 'left' | 'center' | 'right';\n}>`\n max-width: ${({ coverSpace }) => !coverSpace && 'none'};\n float: ${({ hAlign }) =>\n hAlign === 'left' || hAlign === 'right' ? hAlign : undefined};\n ${({ coverSpace, hAlign }) =>\n !coverSpace &&\n hAlign === 'center' &&\n css`\n transform: translateX(-50%);\n margin-left: 50%;\n `}\n`;\n\nexport type ParallaxWidth = '1/4' | 'half' | '3/4' | 'full' | 'auto';\n\nconst ParallaxBackground: FC<{\n image?: ImageProps;\n hAlign?: 'left' | 'center' | 'right';\n contentWidth?: ParallaxWidth | number;\n moveRatio?: number;\n direction?: 'down' | 'up';\n className?: string;\n}> = ({\n image,\n hAlign = 'left',\n contentWidth = 1,\n moveRatio = 0.2,\n direction = 'up',\n className,\n}) => {\n const [isLoaded, setIsLoaded] = useState<boolean>(false);\n const [yTransform, setYTransform] = useState<number>(0);\n // const cRef = useRef<HTMLDivElement>(null);\n const [cRef, setContainerRef] = useState<HTMLElement | null>(null);\n const parallaxRef = useRef<HTMLDivElement>(null);\n\n let width = 1;\n if (typeof contentWidth === 'string') {\n switch (contentWidth) {\n case '1/4': {\n width = 0.25;\n break;\n }\n\n case 'half': {\n width = 0.5;\n break;\n }\n\n case '3/4': {\n width = 0.75;\n break;\n }\n\n case 'auto': {\n width = -1;\n break;\n }\n\n default:\n case 'full': {\n width = 1;\n break;\n }\n }\n } else if (!isNaN(contentWidth)) {\n width = contentWidth;\n }\n\n useEffect(() => {\n setIsLoaded(true);\n }, []);\n\n useEffect(() => {\n const prevEl = cRef?.previousElementSibling;\n if (prevEl) {\n const bgIdent = (prevEl as HTMLElement).dataset.bgIdent;\n const stackIdent = (prevEl as HTMLElement).dataset.stackIdent;\n\n if (bgIdent) {\n // set data background from previous element\n cRef?.setAttribute('data-bg-ident', bgIdent);\n }\n\n if (stackIdent) {\n // set data stack flag from previous element\n cRef?.setAttribute('data-stack-ident', stackIdent);\n }\n }\n }, [cRef]);\n\n useEffect(() => {\n const handleScroll = () => {\n if (!cRef) return;\n\n const containerPos = cRef.getBoundingClientRect().top;\n const ratio = containerPos * moveRatio;\n const offset = ratio * (direction === 'up' ? 1 : -1);\n\n setYTransform(offset);\n };\n\n handleScroll();\n window.addEventListener('scroll', handleScroll);\n\n return () => {\n window.removeEventListener('scroll', handleScroll);\n };\n }, [cRef, direction, moveRatio]);\n\n return (\n <>\n {isLoaded && (\n <View ref={setContainerRef} data-bg-ident=\"transparent\">\n <Parallax\n ref={parallaxRef}\n style={{\n transform: `translate3d(0px, ${yTransform}px, 0px)`,\n }}\n className={className}\n >\n <Content hAlign={hAlign} contentWidth={width}>\n {image && (\n <StyledImage\n hAlign={hAlign}\n coverSpace={width !== -1}\n {...image}\n />\n )}\n </Content>\n </Parallax>\n </View>\n )}\n </>\n );\n};\n\nexport default ParallaxBackground;\n","import React, { FC } from 'react';\nimport styled from 'styled-components';\n\nimport Section from 'components/base/Section';\nimport Wrapper, { wrapperWhitespace } from 'components/base/Wrapper';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport { spacings, getGlobals as global } from 'utils/styles';\nimport IntroBlock, { IntroActionProps } from 'components/blocks/IntroBlock';\nimport { HeadlineTag } from 'components/typography/Heading';\nimport { withLibTheme } from 'utils/LibThemeProvider';\n\nconst Container = styled.figure<{\n hasContent?: boolean;\n verticallyCentered?: boolean;\n}>`\n position: relative;\n width: 100%;\n max-height: 550px;\n padding: 0;\n margin: 0;\n\n &:after {\n content: ${({ hasContent }) => hasContent && '\"\"'};\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n background: ${({ theme, verticallyCentered }) =>\n verticallyCentered\n ? global(theme).sections.imageTextGradientCentered\n : global(theme).sections.imageTextGradient};\n pointer-events: none;\n z-index: 0;\n }\n`;\n\nconst StyledImage = styled(Image)`\n img {\n height: 550px;\n }\n`;\n\nconst Intro = styled(IntroBlock)<{\n verticallyCentered?: boolean;\n horizontallyCentered?: boolean;\n}>`\n position: absolute;\n bottom: ${({ verticallyCentered }) => !verticallyCentered && '0'};\n top: ${({ verticallyCentered }) => verticallyCentered && '50%'};\n left: 50%;\n right: 0;\n max-height: 100%;\n max-width: ${spacings.wrapper}px;\n\n padding: ${wrapperWhitespace + spacings.nudge * 2}px;\n z-index: 1;\n\n transform: ${({ verticallyCentered }) =>\n verticallyCentered ? 'translate(-50%, -50%)' : 'translateX(-50%)'};\n`;\n\nconst Poster: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Clamp width of poster image to content wrapper or large wrapper */\n width?: 'full' | 'content';\n\n /** The poster image settings */\n image: Omit<ImageProps, 'coverSpace' | 'ratios'>;\n\n /** Main title text */\n title?: string;\n\n /** Main title HTML tag type (h2, h3, h4...) */\n titleAs?: HeadlineTag;\n\n /** Superior title that stands above main title */\n superTitle?: string;\n\n /** Superior title HTML tag type (h3, h4 ...) */\n superTitleAs?: HeadlineTag;\n\n /** Text underneath the title (richtext) */\n text?: string;\n\n /** Function to inject custom primary button */\n primaryAction?: (props: IntroActionProps) => React.ReactNode;\n\n /** Function to inject custom secondary button */\n secondaryAction?: (props: IntroActionProps) => React.ReactNode;\n\n /** Align text and actions vertically */\n verticallyCentered?: boolean;\n\n /** Align text and actions horizontally */\n horizontallyCentered?: boolean;\n}> = ({\n anchorId,\n width = 'content',\n title,\n titleAs,\n superTitle,\n superTitleAs,\n text,\n primaryAction,\n secondaryAction,\n image,\n verticallyCentered,\n horizontallyCentered,\n}) => {\n const isCentered = verticallyCentered && horizontallyCentered;\n\n return (\n <Section anchorId={anchorId} bgColor=\"image\" bgMode=\"full\">\n <Wrapper clampWidth={width === 'content' ? 'normal' : 'large'}>\n <Container\n hasContent={!!title || !!text}\n verticallyCentered={verticallyCentered}\n >\n <StyledImage {...image} coverSpace ratios={undefined} />\n {title && (\n <Intro\n verticallyCentered={verticallyCentered}\n horizontallyCentered={horizontallyCentered}\n renderAs=\"figcaption\"\n colorMode=\"onImage\"\n title={title}\n titleAs={titleAs}\n superTitle={superTitle}\n superTitleAs={superTitleAs}\n text={text}\n secondaryAction={secondaryAction}\n primaryAction={primaryAction}\n clampTitle\n maxTitleLines={3}\n clampText\n maxTextLines={4}\n isCentered={horizontallyCentered || isCentered}\n />\n )}\n </Container>\n </Wrapper>\n </Section>\n );\n};\n\nexport const PosterComponent = Poster;\nexport default withLibTheme(Poster);\n","import React from 'react';\nimport styled from 'styled-components';\nimport { getColors as color, mq, spacings } from 'utils/styles';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Copy from 'components/typography/Copy';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\n\nconst ItemList = styled.ul`\n margin: 0;\n padding: 0;\n list-style: none;\n\n & > * + * {\n margin-top: ${spacings.nudge}px;\n }\n`;\n\nconst ItemBlock = styled.li<{ hasBg?: boolean }>`\n max-width: 100%;\n padding: ${spacings.nudge * 2}px;\n\n background: ${({ theme, hasBg }) =>\n hasBg ? color(theme).elementBg.light : color(theme).elementBg.medium};\n\n & > * + * {\n margin-top: ${spacings.nudge * 2}px;\n }\n\n @media ${mq.semilarge} {\n padding: ${spacings.nudge * 3}px;\n }\n`;\n\nconst ListHead = styled.div`\n display: flex;\n justify-content: space-between;\n\n & > * + * {\n margin-left: ${spacings.nudge * 2}px;\n }\n`;\n\nconst Title = styled(Copy)`\n max-width: 880px;\n`;\n\nconst Price = styled(Copy)`\n white-space: nowrap;\n`;\n\nconst Description = styled(Copy)`\n max-width: 880px;\n`;\n\nexport interface PriceItems {\n /** Title of the price item */\n title?: string;\n /** Description text of price item (richtext) */\n text?: string;\n /** The price value (Currency not included) */\n price?: string;\n}\n\nexport const PriceBlock: React.FC<PriceItems & { hasBg?: boolean }> = ({\n text,\n price,\n hasBg = false,\n title,\n}) => {\n return (\n <ItemBlock hasBg={hasBg}>\n <ListHead>\n {title && <Title type=\"copy-b\">{title}</Title>}\n {price && <Price type=\"copy-b\">{price}</Price>}\n </ListHead>\n {text && <Description type=\"copy\" innerHTML={text} />}\n </ItemBlock>\n );\n};\n\nconst PriceList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array with price items */\n items?: PriceItems[];\n\n /** Section background */\n bgMode?: 'inverted' | 'full';\n}> = ({ anchorId, bgMode, items }) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const hasBack = isInverted || bgMode === 'full';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode === 'full'\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper addWhitespace>\n <ItemList>\n {items?.map((item, i) => (\n <PriceBlock key={i} {...item} hasBg={hasBack} />\n ))}\n </ItemList>\n </Wrapper>\n </Section>\n );\n};\n\nexport const PriceListComponent = PriceList;\nexport default withLibTheme(PriceList);\n","import {\n spacings,\n getColors as color,\n getGlobals as global,\n} from 'utils/styles';\nimport React, { forwardRef } from 'react';\nimport styled from 'styled-components';\nimport Copy from 'components/typography/Copy';\nimport Actions from './Actions';\nimport Callout from 'components/typography/Callout';\n\nconst View = styled.div<{\n isInverted?: boolean;\n isCentered?: boolean;\n hasBg?: boolean;\n isHighlighted?: boolean;\n}>`\n padding: ${spacings.spacer}px;\n\n border: 1px solid transparent;\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n\n background: ${({ theme, hasBg, isInverted, isHighlighted }) =>\n isInverted\n ? isHighlighted\n ? color(theme).primary.inverted\n : color(theme).elementBg.medium\n : isHighlighted\n ? color(theme).primary.default\n : hasBg\n ? color(theme).elementBg.light\n : color(theme).elementBg.medium};\n\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n text-align: ${({ isCentered }) => (isCentered ? 'center' : 'left')};\n\n & > * + * {\n margin-top: ${spacings.nudge * 3}px;\n }\n`;\n\nconst StyledActions = styled(Actions)`\n display: block;\n margin-top: auto;\n padding-top: ${spacings.spacer}px;\n text-align: center;\n`;\n\nexport interface PriceTagProps {\n title?: string;\n superTitle?: string;\n text?: string;\n action?: (props: {\n isInverted?: boolean;\n isHighlighted?: boolean;\n }) => React.ReactNode;\n isInverted?: boolean;\n isCentered?: boolean;\n hasBackground?: boolean;\n isHighlighted?: boolean;\n}\n\nconst PriceTag = forwardRef<\n HTMLDivElement,\n PriceTagProps & { className?: string }\n>(\n (\n {\n superTitle,\n title,\n text,\n action,\n isInverted,\n isCentered,\n isHighlighted,\n hasBackground,\n className,\n },\n ref\n ) => {\n const inverted = isHighlighted ? !isInverted : false;\n\n return (\n <View\n ref={ref}\n isInverted={isInverted}\n isCentered={isCentered}\n isHighlighted={isHighlighted}\n hasBg={hasBackground}\n className={className}\n >\n {superTitle && (\n <Copy\n type=\"copy-b\"\n size=\"big\"\n isInverted={inverted}\n innerHTML={superTitle}\n data-sheet=\"superTitle\"\n />\n )}\n {title && (\n <Callout\n renderAs=\"div\"\n size=\"big\"\n isInverted={inverted}\n innerHTML={title}\n data-sheet=\"title\"\n />\n )}\n {text && (\n <Copy\n size=\"medium\"\n isInverted={inverted}\n innerHTML={text}\n data-sheet=\"desc\"\n />\n )}\n <StyledActions\n mode=\"cover\"\n primary={\n action &&\n action({\n isInverted: inverted,\n isHighlighted: isHighlighted,\n })\n }\n />\n </View>\n );\n }\n);\n\nPriceTag.displayName = 'PriceTag';\n\nexport default PriceTag;\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport PriceTag, { PriceTagProps } from 'components/blocks/PriceTag';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { useEqualSheetHeight } from 'utils/useEqualSheetHeight';\nimport { gridSettings } from 'components/base/Grid';\nimport { mq } from 'utils/styles';\n\nconst Tag = styled(PriceTag)`\n min-height: 500px;\n`;\n\nconst Items = styled.div`\n display: flex;\n justify-content: center;\n flex-wrap: wrap;\n\n margin-top: -${gridSettings.gutter}px;\n margin-left: -${gridSettings.gutter}px;\n\n & > * {\n flex: 1 1 25%;\n min-width: 286px;\n max-width: 320px;\n margin-top: ${gridSettings.gutter}px;\n margin-left: ${gridSettings.gutter}px;\n }\n\n @media ${mq.large} {\n & > * {\n max-width: 286px;\n }\n }\n`;\n\nconst PriceTable: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n /** Array of PriceTag card items */\n items: Array<Omit<PriceTagProps, 'isInverted'>>;\n /** Center text inside card items */\n isCentered?: boolean;\n /** Section background */\n bgMode?: 'full' | 'inverted';\n}> = ({ anchorId, items, isCentered, bgMode }) => {\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n const priceTagCount = items?.length || 0;\n\n const { colors } = useLibTheme();\n\n const { sheetRefs: cardRefs } = useEqualSheetHeight<HTMLDivElement>({\n listLength: priceTagCount,\n identifiers: [\n '[data-sheet=\"superTitle\"]',\n '[data-sheet=\"title\"]',\n '[data-sheet=\"desc\"]',\n ],\n responsive: {\n small: 1,\n medium: 1,\n semilarge: 2,\n large: 3,\n xlarge: 3,\n },\n });\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : hasBg\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n >\n <Wrapper addWhitespace>\n <Items>\n {items?.map((item, i) => (\n <Tag\n key={i}\n ref={cardRefs[i]}\n {...item}\n isInverted={isInverted}\n isCentered={isCentered}\n hasBackground={hasBg}\n />\n ))}\n </Items>\n </Wrapper>\n </Section>\n );\n};\n\nexport const PriceTableComponent = PriceTable;\nexport default withLibTheme(PriceTable);\n","import React, { FC } from 'react';\nimport styled from 'styled-components';\n\nimport { mq, spacings } from 'utils/styles';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Callout from 'components/typography/Callout';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Copy from 'components/typography/Copy';\n\nconst Content = styled.figure`\n margin: 0;\n padding: 0;\n\n & > * + * {\n margin-top: ${spacings.spacer}px;\n }\n\n @media ${mq.medium} {\n max-width: 960px;\n margin: 0 auto;\n }\n`;\n\nconst Text = styled(Callout)`\n text-align: center;\n margin-left: 0;\n margin-right: 0;\n padding: 0;\n`;\n\nconst Source = styled(Copy)`\n text-align: center;\n margin-left: 0;\n margin-right: 0;\n padding: 0;\n`;\n\nconst Quote: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Text of the blockquote (richtext) */\n text?: string;\n\n /** Source of the quote e.g. author (richtext) */\n source?: string;\n\n /** URL for additional cite informations */\n citeUrl?: string;\n\n /** Section backgrounds */\n bgMode?: 'full' | 'inverted';\n}> = ({ anchorId, bgMode, text, source, citeUrl }) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode === 'full'\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper clampWidth=\"normal\" addWhitespace>\n <Content>\n {text && (\n <Text\n size=\"small\"\n renderAs=\"blockquote\"\n isInverted={isInverted}\n innerHTML={text}\n {...{ cite: citeUrl }}\n />\n )}\n {source && (\n <Source\n isInverted={isInverted}\n renderAs=\"figcaption\"\n innerHTML={source}\n />\n )}\n </Content>\n </Wrapper>\n </Section>\n );\n};\n\nexport const QuoteComponent = Quote;\nexport default withLibTheme(Quote);\n","import React, { FC, useContext } from 'react';\nimport styled, { ThemeContext } from 'styled-components';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport Wrapper from 'components/base/Wrapper';\nimport { getColors } from 'utils/styles';\nimport { withLibTheme } from 'utils/LibThemeProvider';\n\nconst ImageWrapper = styled(Wrapper)<{ hAlign?: 'left' | 'center' | 'right' }>`\n display: flex;\n justify-content: ${({ hAlign }) => {\n switch (hAlign) {\n case 'center':\n return 'center';\n case 'right':\n return 'flex-end';\n default:\n return 'flex-start';\n }\n }};\n`;\n\nconst SimpleImage: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Image settings */\n image?: ImageProps;\n\n /** Horizontal alignment of the image */\n hAlign?: 'left' | 'center' | 'right';\n\n /** Allow reduced section spacing to next section */\n isStackable?: boolean;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n}> = ({ anchorId, image, hAlign = 'left', bgMode, isStackable }) => {\n const theme = useContext(ThemeContext);\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n isStackable={isStackable}\n bgColor={\n isInverted\n ? getColors(theme).sectionBg.dark\n : hasBg\n ? getColors(theme).sectionBg.medium\n : getColors(theme).sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n >\n <ImageWrapper hAlign={hAlign}>\n {image && <Image {...image} />}\n </ImageWrapper>\n </Section>\n );\n};\n\nexport const SimpleImageComponent = SimpleImage;\nexport default withLibTheme(SimpleImage);\n","import React from 'react';\nimport styled from 'styled-components';\nimport {\n getColors as color,\n mq,\n spacings,\n getGlobals as global,\n} from 'utils/styles';\n\nimport Instagram from 'components/base/icons/socials/Instagram';\nimport Heading from 'components/typography/Heading';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Link, { LinkProps } from 'components/typography/Link';\nimport { gridSettings } from 'components/base/Grid';\nimport Image, { ImageProps } from 'components/blocks/Image';\n\nconst Cards = styled.ul`\n display: flex;\n flex-wrap: wrap;\n margin: 0;\n padding: 0;\n list-style: none;\n\n margin-top: -${spacings.spacer}px;\n margin-left: -${spacings.spacer}px;\n\n & > * {\n flex: 1 1 100%;\n margin-top: ${spacings.spacer}px;\n margin-left: ${spacings.spacer}px;\n }\n\n @media ${mq.medium} {\n & > * {\n flex: 1 1 calc(50% - ${gridSettings.gutter}px);\n max-width: calc(50% - ${gridSettings.gutter}px);\n }\n }\n\n @media ${mq.large} {\n & > * {\n flex: 1 1 calc(${(1 / 3) * 100}% - ${gridSettings.gutter}px);\n max-width: calc(${(1 / 3) * 100}% - ${gridSettings.gutter}px);\n }\n }\n`;\n\nconst Item = styled.li`\n display: block;\n position: relative;\n padding: 0;\n`;\n\nconst Card = styled(Link)<{ isInverted?: boolean }>`\n position: relative;\n display: block;\n text-decoration: none;\n color: '#fff';\n outline-color: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n overflow: hidden;\n\n &:before {\n content: '';\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).secondary.inverted\n : color(theme).secondary.default};\n\n opacity: 0;\n pointer-events: none;\n z-index: 1;\n transition: opacity 0.2s ease-in-out;\n }\n\n &:hover {\n &:before {\n opacity: 1;\n pointer-events: all;\n }\n }\n\n &:focus {\n &:before {\n opacity: 1;\n pointer-events: all;\n }\n }\n`;\n\nconst StyledImage = styled(Image)`\n display: block;\n height: 100%;\n z-index: 0;\n`;\n\nconst TextContainer = styled.div`\n position: absolute;\n top: 50%;\n left: 50%;\n width: 100%;\n transform: translate(-50%, -50%);\n text-align: center;\n\n padding: ${spacings.nudge * 2}px;\n\n opacity: 0;\n pointer-events: none;\n z-index: 2;\n transition: opacity 0.2s ease-in-out;\n\n & > * + * {\n margin-top: ${spacings.nudge * 2}px;\n }\n\n ${Card}:hover & {\n opacity: 1;\n pointer-events: all;\n }\n\n ${Card}:focus & {\n opacity: 1;\n pointer-events: all;\n }\n`;\n\nconst FollowUs = styled(Heading)`\n text-transform: uppercase;\n`;\n\nconst InstagramIcon = styled.div`\n position: absolute;\n left: 20px;\n bottom: 20px;\n color: ${({ theme }) => color(theme).text.inverted};\n z-index: 2;\n\n & > * {\n fill: #fff;\n\n ${Card}:hover & {\n color: ${({ theme }) => color(theme).text.inverted};\n }\n }\n`;\n\nconst SocialWall: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array with item settings */\n items?: Array<{\n link?: LinkProps;\n image?: Omit<ImageProps, 'coverSpace' | 'ratio'>;\n }>;\n\n /** Text for main social media follow call */\n followUs?: string;\n\n /** Text for e.g. social media hashtag */\n hashTag?: string;\n\n /** Function to inject custom social icon on bottom left corner */\n socialIcon?: React.ReactNode;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n}> = ({ anchorId, items, hashTag, followUs, socialIcon, bgMode }) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n\n return (\n <Section\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : hasBg\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n addSeperation\n >\n <Wrapper addWhitespace>\n <Cards>\n {items?.map((item, i) => (\n <Item key={i}>\n <Card\n isExternal\n {...item.link}\n isInverted={isInverted}\n ariaLabel={item?.image?.alt}\n >\n {item.image && (\n <StyledImage\n {...item.image}\n coverSpace\n ratios={{\n small: { w: 1, h: 1 },\n }}\n isInverted={isInverted}\n />\n )}\n <TextContainer>\n <FollowUs size=\"super\" isInverted>\n {followUs\n ? followUs\n : 'Follow Us On Instagram'}\n </FollowUs>\n {hashTag && (\n <Heading size=\"heading-2\" isInverted>\n {hashTag}\n </Heading>\n )}\n </TextContainer>\n <InstagramIcon>\n {socialIcon || <Instagram />}\n </InstagramIcon>\n </Card>\n </Item>\n ))}\n </Cards>\n </Wrapper>\n </Section>\n );\n};\n\nexport const SocialWallComponent = SocialWall;\nexport default withLibTheme(SocialWall);\n","import React from 'react';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport TableBlock, { TableProps } from 'components/blocks/TableBlock';\nimport styled from 'styled-components';\nimport { spacings } from 'utils/styles';\n\nconst 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, {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useRef,\n} from 'react';\nimport styled, { css } from 'styled-components';\nimport { getGlobals as global, mq } from 'utils/styles';\n\nconst AspectContainer = styled.div<{\n ratios?: VideoAspectRatios;\n isInverted?: boolean;\n}>`\n position: relative;\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n overflow: hidden;\n\n aspect-ratio: ${({ ratios }) => ratios?.small};\n width: ${({ ratios }) => ratios?.small && '100%'};\n max-width: 100%;\n\n background: ${({ theme, isInverted }) =>\n isInverted\n ? global(theme).sections.imagePlaceholderBg.inverted\n : global(theme).sections.imagePlaceholderBg.default};\n object-position: center;\n\n @supports not (aspect-ratio: auto) {\n height: ${({ ratios }) => ratios?.small && 0};\n padding-top: ${({ ratios }) =>\n ratios?.small && `calc(100% / ${ratios?.small})`};\n }\n\n @media ${mq.medium} {\n aspect-ratio: ${({ ratios }) => ratios?.medium};\n\n @supports not (aspect-ratio: auto) {\n padding-top: ${({ ratios }) =>\n ratios?.medium && `calc(100% / ${ratios?.medium})`};\n }\n }\n\n @media ${mq.semilarge} {\n aspect-ratio: ${({ ratios }) => ratios?.semilarge};\n\n @supports not (aspect-ratio: auto) {\n padding-top: ${({ ratios }) =>\n ratios?.semilarge && `calc(100% / ${ratios?.semilarge})`};\n }\n }\n\n @media ${mq.large} {\n aspect-ratio: ${({ ratios }) => ratios?.large};\n\n @supports not (aspect-ratio: auto) {\n padding-top: ${({ ratios }) =>\n ratios?.large && `calc(100% / ${ratios?.large})`};\n }\n }\n\n @media ${mq.xlarge} {\n aspect-ratio: ${({ ratios }) => ratios?.xlarge};\n\n @supports not (aspect-ratio: auto) {\n padding-top: ${({ ratios }) =>\n ratios?.xlarge && `calc(100% / ${ratios?.xlarge})`};\n }\n }\n\n ${({ ratios }) =>\n ratios &&\n css`\n video {\n height: 100%;\n width: 100%;\n object-fit: cover;\n\n @supports not (aspect-ratio: auto) {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n }\n }\n `}\n`;\n\nconst Video = styled.video`\n display: block;\n`;\n\nexport interface VideoAspectRatios {\n small: number;\n medium?: number;\n semilarge?: number;\n large?: number;\n xlarge?: number;\n}\n\nexport interface VideoProps {\n urls?: string[];\n ratios?: VideoAspectRatios;\n isInverted?: boolean;\n\n muted?: boolean;\n autoPlay?: boolean;\n loop?: boolean;\n controls?: boolean;\n playsInline?: boolean;\n onCanPlayThrough?: () => void;\n}\n\nconst VideoBlock = forwardRef<\n HTMLVideoElement,\n VideoProps & { className?: string }\n>(\n (\n {\n urls,\n ratios,\n isInverted,\n muted = false,\n autoPlay = false,\n loop = false,\n controls = false,\n playsInline = true,\n onCanPlayThrough,\n className,\n },\n ref\n ) => {\n const videoRef = useRef<HTMLVideoElement | null>(null);\n\n useImperativeHandle<HTMLVideoElement | null, HTMLVideoElement | null>(\n ref,\n () => videoRef.current\n );\n\n useEffect(() => {\n if (videoRef.current && videoRef.current.readyState > 3) {\n onCanPlayThrough?.();\n }\n }, [onCanPlayThrough]);\n\n return (\n <AspectContainer\n ratios={ratios}\n isInverted={isInverted}\n className={className}\n >\n <Video\n ref={videoRef}\n muted={muted}\n autoPlay={autoPlay}\n loop={loop}\n controls={controls}\n onCanPlayThrough={onCanPlayThrough}\n playsInline={playsInline}\n >\n {urls?.map((url, i) => (\n <source src={url} key={i} />\n ))}\n </Video>\n </AspectContainer>\n );\n }\n);\n\nVideoBlock.displayName = 'VideoBlock';\n\nexport default VideoBlock;\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","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst SVG = styled.svg`\n display: block;\n`;\n\nconst Magnifier: React.FC<{\n iconColor?: string;\n className?: string;\n ariaHidden?: boolean;\n}> = ({ iconColor = 'currentColor', className, ariaHidden = true }) => (\n <SVG\n viewBox=\"0 0 18 18\"\n width=\"18\"\n height=\"18\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden={ariaHidden}\n className={className}\n >\n <path\n d=\"M12.5 11h-.79l-.28-.27A6.471 6.471 0 0 0 13 6.5 6.5 6.5 0 1 0 6.5 13c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L17.49 16l-4.99-5Zm-6 0C4.01 11 2 8.99 2 6.5S4.01 2 6.5 2 11 4.01 11 6.5 8.99 11 6.5 11Z\"\n fill={iconColor}\n />\n </SVG>\n);\n\nexport default Magnifier;\n","import React, { FC, useEffect } from 'react';\nimport styled from 'styled-components';\n\nimport { copyStyle } from 'components/typography/Copy';\nimport {\n spacings,\n getColors as color,\n getFonts as font,\n mq,\n} from 'utils/styles';\nimport Magnifier from 'components/base/icons/Magnifier';\nimport useLazyInput from 'utils/useLazyInput';\nimport Cross from 'components/base/icons/Cross';\n\nconst View = styled.div<{ isInverted?: boolean }>`\n display: flex;\n min-height: 50px;\n border: solid 1px\n ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).elementBg.light\n : color(theme).elementBg.dark};\n\n color: ${({ theme, isInverted }) =>\n isInverted\n ? font(theme).copy.medium.colorInverted\n : font(theme).copy.medium.color};\n\n &:focus-within {\n outline: ${({ theme, isInverted }) =>\n `1px solid ${\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default\n }`};\n outline-offset: 0;\n }\n\n &:focus-within & > input:not(:focus-visible) {\n outline: none;\n }\n\n @media ${mq.medium} {\n max-width: 400px;\n }\n`;\n\nconst Field = styled.input<{ isInverted?: boolean }>`\n flex: 1 1 auto;\n background-color: transparent;\n box-shadow: none;\n border: none;\n border-right: none;\n border-radius: 0px;\n outline: none;\n -webkit-appearance: none;\n color: inherit;\n ${copyStyle('copy', 'medium')}\n line-height: 1;\n\n padding: ${spacings.nudge * 2}px;\n padding-right: ${spacings.nudge}px;\n\n &::placeholder {\n color: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).text.subtileInverted\n : color(theme).text.subtile};\n }\n`;\n\nconst SearchIcon = styled.div`\n display: flex;\n align-items: center;\n padding-right: ${spacings.nudge * 2}px;\n padding-left: ${spacings.nudge * 2}px;\n color: inherit;\n\n transition: transform 0.2s ease-in-out;\n`;\n\nconst ClearBtn = styled.button<{ isInverted?: boolean }>`\n display: flex;\n align-items: center;\n background: none;\n border: none;\n cursor: pointer;\n\n padding-right: ${spacings.nudge * 2}px;\n padding-left: ${spacings.nudge * 2}px;\n color: inherit;\n\n transition: transform 0.2s ease-in-out;\n\n &:focus {\n text-decoration: underline;\n transform: scale(1.012);\n\n outline: ${({ theme, isInverted }) =>\n `2px solid ${\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default\n }`};\n outline-offset: -4px;\n outline-style: dashed;\n }\n\n &:focus:not(:focus-visible) {\n text-decoration: none;\n outline: none;\n }\n\n &:active {\n transform: scale(0.95);\n }\n\n & > * {\n height: 20px;\n width: 20px;\n }\n`;\n\nconst FilterField: FC<{\n isInverted?: boolean;\n value?: string;\n initialValue?: string;\n placeholder?: string;\n onSubmit?: (value: string) => void;\n onBlur?: (ev: React.SyntheticEvent<HTMLInputElement>) => void;\n submitIcon?: (isInverted?: boolean) => React.ReactNode;\n clearIcon?: (isInverted?: boolean) => React.ReactNode;\n className?: string;\n}> = ({\n isInverted,\n value,\n initialValue,\n placeholder,\n onSubmit,\n onBlur,\n submitIcon,\n clearIcon,\n className,\n}) => {\n const {\n update,\n value: getValue,\n forceUpdate,\n } = useLazyInput((value) => {\n onSubmit?.(value);\n }, initialValue || '');\n\n useEffect(() => {\n if (value !== undefined) {\n update(value);\n }\n }, [update, value]);\n\n return (\n <View isInverted={isInverted} className={className}>\n <Field\n type=\"text\"\n isInverted={isInverted}\n value={getValue}\n placeholder={placeholder}\n onChange={(ev) => {\n const newValue = ev?.currentTarget?.value;\n if (newValue !== undefined) {\n update(newValue, newValue === '');\n }\n }}\n onBlur={onBlur}\n onKeyDown={(ev) => {\n if (ev.key === 'Enter') {\n forceUpdate();\n }\n }}\n />\n {getValue === '' && (\n <SearchIcon>\n {submitIcon ? submitIcon(isInverted) : <Magnifier />}\n </SearchIcon>\n )}\n {getValue !== '' && (\n <ClearBtn\n isInverted={isInverted}\n aria-label=\"clear filter\"\n onClick={() => {\n update('', true);\n }}\n >\n {clearIcon ? clearIcon(isInverted) : <Cross />}\n </ClearBtn>\n )}\n </View>\n );\n};\n\nexport default FilterField;\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 Check from 'components/base/icons/Check';\nimport { copyStyle } from 'components/typography/Copy';\nimport React from 'react';\nimport styled from 'styled-components';\nimport { getColors as color, spacings } from 'utils/styles';\n\nconst View = styled.div`\n display: inline-flex;\n flex-direction: row;\n flex-wrap: wrap;\n\n margin-top: -${spacings.nudge}px;\n margin-left: -${spacings.nudge * 2}px;\n\n &:not(:first-child) {\n margin-top: ${spacings.nudge * 3}px;\n }\n`;\n\nconst FactsWrapper = styled.div`\n padding-top: ${spacings.nudge}px;\n padding-left: ${spacings.nudge * 2}px;\n`;\n\nconst Fact = styled.span<{ isInverted?: boolean }>`\n display: inline-flex;\n align-items: center;\n ${copyStyle('copy', 'medium')}\n color: ${({ theme, isInverted }) =>\n isInverted ? color(theme).text.copyInverted : color(theme).text.copy};\n\n & > * + * {\n margin-left: ${spacings.nudge * 0.5}px;\n }\n`;\n\nconst POIFacts: React.FC<{\n facts: string[];\n customFact?: (props: {\n key: React.Key;\n name: string;\n isInverted?: boolean;\n }) => React.ReactNode;\n isInverted?: boolean;\n}> = ({ facts, customFact, isInverted }) => {\n return (\n <View>\n {facts.map((fact, i) => (\n <FactsWrapper key={'tag_' + i}>\n {customFact ? (\n customFact({\n key: `headtag-${i}`,\n name: fact || '',\n isInverted: isInverted,\n })\n ) : (\n <Fact isInverted={isInverted}>\n <Check />\n <span>{fact}</span>\n </Fact>\n )}\n </FactsWrapper>\n ))}\n </View>\n );\n};\n\nexport default POIFacts;\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 React from 'react';\nimport styled from 'styled-components';\n\nimport POIFacts from 'components/blocks/POIFacts';\nimport Copy from 'components/typography/Copy';\nimport { isValidArray } from 'utils/arrays';\nimport { getColors as color, mq, spacings } from 'utils/styles';\nimport InfoList, { Info } from './InfoList';\n\nconst View = styled.div<{ isInverted?: boolean }>`\n border: 1px solid\n ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).elementBg.light\n : color(theme).elementBg.dark};\n padding: ${spacings.nudge * 2}px;\n border-radius: ${spacings.nudge}px;\n overflow: hidden;\n\n & > * + * {\n margin-top: ${spacings.nudge * 3}px;\n }\n`;\n\nconst Title = styled(Copy)`\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 Description = styled(Copy)`\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 Body = styled.div<{ isInverted?: boolean }>`\n display: flex;\n flex-direction: row;\n /* align-items: flex-start; */\n\n @media ${mq.semilarge} {\n margin-left: -${spacings.spacer}px;\n margin-right: -${spacings.spacer}px;\n\n & > * + * {\n border-left: 1px solid\n ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).elementBg.light\n : color(theme).elementBg.dark};\n }\n }\n`;\n\nconst Col = styled.div`\n flex: 1 0 100%;\n\n & > * + * {\n margin-top: ${spacings.nudge * 3}px;\n }\n\n @media ${mq.semilarge} {\n flex: 1 0 60%;\n padding: 0 ${spacings.spacer}px;\n }\n\n @media ${mq.large} {\n flex: 1 0 ${(2 / 3) * 100}%;\n }\n`;\n\nconst InfoCol = styled(Col)`\n display: none;\n margin-bottom: ${spacings.nudge * 2}px;\n\n @media ${mq.semilarge} {\n display: block;\n flex: 1 0 40%;\n }\n\n @media ${mq.large} {\n display: block;\n flex: 1 0 ${(1 / 3) * 100}%;\n }\n`;\n\nconst Action = styled.div``;\n\nexport type POILocation = {\n address: string;\n street: string;\n postalCode: string;\n city: string;\n coordinates?: { lat: number; long: number };\n mail: string;\n phone: string;\n web: string;\n};\n\nexport type POIContact = {\n name: string;\n position: string;\n street: string;\n postalCode: string;\n city: string;\n mail: string;\n phone: string;\n};\n\nexport interface POICardProps {\n /** Invert text and background for use on dark sections */\n isInverted?: boolean;\n\n /** POI name */\n name: string;\n\n /** Short POI description text (RichText) */\n shortDescription?: string;\n\n /** Array of additional POI informations */\n infos?: Info[];\n\n /** Array of POI facts */\n facts?: string[];\n\n /** Function to inject custom fact node */\n customFact?: (props: {\n key: React.Key;\n name: string;\n isInverted?: boolean;\n }) => React.ReactNode;\n\n /** Function to inject custom action node */\n action?: (isInverted?: boolean) => React.ReactNode;\n}\n\nconst POICard: React.FC<POICardProps> = ({\n isInverted,\n name,\n shortDescription,\n facts,\n infos,\n customFact,\n action,\n}) => {\n const hasFacts = isValidArray(facts, false);\n const hasInfos = isValidArray(infos, false);\n\n return (\n <View isInverted={isInverted}>\n {name && (\n <Title type=\"copy-b\" size=\"big\" isInverted={isInverted}>\n {name}\n </Title>\n )}\n {(hasFacts || shortDescription || hasInfos || action) && (\n <Body isInverted={isInverted}>\n <Col>\n {isValidArray(facts, false) && (\n <POIFacts\n facts={facts}\n isInverted={isInverted}\n customFact={customFact}\n />\n )}\n {shortDescription && (\n <Description\n isInverted={isInverted}\n innerHTML={shortDescription}\n />\n )}\n {action && <Action>{action(isInverted)}</Action>}\n </Col>\n {isValidArray(infos, false) && (\n <InfoCol>\n <InfoList\n isInverted={isInverted}\n items={[\n {\n items: infos,\n },\n ]}\n />\n </InfoCol>\n )}\n </Body>\n )}\n </View>\n );\n};\n\nexport default POICard;\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","import React, { FC } from 'react';\nimport styled from 'styled-components';\nimport { useLibTheme } from 'utils/LibThemeProvider';\n\nimport {\n getColors as color,\n getFonts as font,\n mq,\n spacings,\n withRange,\n} from 'utils/styles';\n\nconst View = styled.form`\n width: 100%;\n display: flex;\n flex-direction: column;\n\n color: ${({ theme }) => color(theme).text.default};\n\n @media ${mq.medium} {\n flex-direction: row;\n }\n`;\n\nconst InputField = styled.input<{ backColor?: string }>`\n display: block;\n width: 100%;\n height: 49px;\n max-height: 49px;\n padding: ${spacings.nudge}px ${spacings.nudge * 3}px;\n color: inherit;\n\n background-color: ${({ backColor }) => backColor && backColor};\n box-shadow: none;\n border: none;\n border-right: none;\n border-radius: 0px;\n outline: none;\n -webkit-appearance: none;\n\n font-family: ${({ theme }) => font(theme).copy.small.family};\n font-weight: ${({ theme }) => font(theme).copy.small.weight};\n ${({ theme }) => withRange(font(theme).copy.small.size, 'font-size')}\n line-height: ${({ theme }) => font(theme).copy.small.lineHeight};\n\n &:focus {\n outline: ${({ theme }) => `2px solid ${color(theme).primary.default}`};\n outline-offset: 0;\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n }\n\n &::placeholder {\n color: inherit;\n }\n`;\n\nconst SubmitBtn = styled.button<{ isInverted?: boolean }>`\n display: inline-flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 49px;\n\n margin-top: ${spacings.spacer * 0.5}px;\n\n background-color: ${({ theme }) => color(theme).primary.default};\n color: ${({ theme }) => color(theme).text.inverted};\n\n outline: none;\n border: none;\n user-select: none;\n cursor: pointer;\n transition: all ease-in-out 0.2s;\n\n @media ${mq.medium} {\n width: 100px;\n margin-top: 0;\n }\n\n &:hover {\n transform: scale(1.05);\n }\n\n &:focus {\n text-decoration: underline;\n transform: scale(1.012);\n }\n\n &:focus:not(:focus-visible) {\n text-decoration: none;\n }\n\n &:active {\n transform: scale(0.95);\n }\n`;\n\nconst CompactForm: FC<{\n mode?: 'onSoft' | 'onDark' | 'default';\n value?: string;\n placeholder?: string;\n method?: string;\n action?: string;\n buttonIcon?: React.ReactNode;\n onSubmit?: (ev: React.SyntheticEvent<HTMLFormElement>) => void;\n onClick?: (ev: React.SyntheticEvent<HTMLInputElement>) => void;\n onFocus?: (ev: React.SyntheticEvent<HTMLInputElement>) => void;\n onBlur?: (ev: React.SyntheticEvent<HTMLInputElement>) => void;\n className?: string;\n}> = ({\n mode = 'default',\n value,\n placeholder,\n method,\n action,\n buttonIcon,\n onSubmit,\n onClick,\n onBlur,\n onFocus,\n className,\n}) => {\n const { colors } = useLibTheme();\n const bgColor =\n mode === 'default' ? colors.elementBg.medium : colors.elementBg.light;\n\n return (\n <View\n onSubmit={onSubmit}\n method={method}\n action={action}\n className={className}\n >\n <InputField\n placeholder={placeholder}\n value={value}\n onClick={onClick}\n onBlur={onBlur}\n onFocus={onFocus}\n backColor={bgColor}\n />\n {buttonIcon && (\n <SubmitBtn isInverted={mode === 'onDark'}>\n {buttonIcon}\n </SubmitBtn>\n )}\n </View>\n );\n};\n\nexport default CompactForm;\n","import React, { FC } from 'react';\nimport styled from 'styled-components';\n\nimport {\n getColors as color,\n getFonts as font,\n spacings,\n withRange,\n} from 'utils/styles';\n\nconst View = styled.div<{ isInverted?: boolean }>`\n position: relative;\n width: 100%;\n display: flex;\n flex-direction: row;\n\n color: ${({ theme }) => color(theme).text.default};\n\n background-color: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).elementBg.light\n : color(theme).elementBg.medium};\n`;\n\nconst InputField = styled.input<{\n hasLeftIcon?: boolean;\n hasRightIcon?: boolean;\n}>`\n display: block;\n width: 100%;\n height: 100%;\n padding: ${spacings.nudge * 3}px ${spacings.nudge * 3.5}px;\n padding-left: ${({ hasLeftIcon }) =>\n hasLeftIcon && spacings.spacer * 2.5 + 'px'};\n padding-right: ${({ hasRightIcon }) =>\n hasRightIcon && spacings.spacer * 2.5 + 'px'};\n color: inherit;\n\n background-color: transparent;\n box-shadow: none;\n border: none;\n border-right: none;\n border-radius: 0px;\n outline: none;\n -webkit-appearance: none;\n\n font-family: ${({ theme }) => font(theme).copy.small.family};\n font-weight: 400;\n ${({ theme }) => withRange(font(theme).copy.small.size, 'font-size')}\n line-height: 1.25;\n\n &::placeholder {\n color: inherit;\n }\n\n &:focus {\n outline: ${({ theme }) => `1px solid ${color(theme).primary.default}`};\n outline-offset: 0;\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n }\n`;\n\nconst ControlBtn = styled.button<{ isInverted?: boolean }>`\n display: inline-flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: 53px;\n\n margin: -2px;\n background-color: transparent;\n color: ${({ theme }) => color(theme).text.default};\n\n outline: none;\n border: none;\n user-select: none;\n cursor: pointer;\n /* transition: all ease-in-out 0.2s; */\n\n &:hover {\n transform: scale(1.02);\n }\n\n &:focus {\n text-decoration: underline;\n transform: scale(1.012);\n }\n\n &:focus:not(:focus-visible) {\n text-decoration: none;\n }\n\n &:active {\n transform: scale(0.95);\n }\n`;\n\nconst SubmitBtn = styled(ControlBtn)`\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n`;\n\nconst ClearBtn = styled(ControlBtn)`\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n`;\n\nconst SearchInput: FC<{\n isInverted?: boolean;\n value?: string;\n placeholder?: string;\n submitIcon?: React.ReactNode;\n clearIcon?: React.ReactNode;\n onSubmit?: () => void;\n onClear?: () => void;\n onClick?: (ev: React.SyntheticEvent<HTMLInputElement>) => void;\n onBlur?: (ev: React.SyntheticEvent<HTMLInputElement>) => void;\n onFocus?: (ev: React.SyntheticEvent<HTMLInputElement>) => void;\n className?: string;\n}> = ({\n isInverted = false,\n value,\n placeholder,\n submitIcon,\n clearIcon,\n onSubmit,\n onClick,\n onClear,\n onBlur,\n onFocus,\n className,\n}) => {\n const handleKeyDown = (ev: React.KeyboardEvent<HTMLInputElement>) => {\n if (ev.keyCode === 13) {\n onSubmit && onSubmit();\n ev.preventDefault();\n }\n };\n\n return (\n <View isInverted={isInverted} className={className}>\n {submitIcon && (\n <SubmitBtn\n isInverted={isInverted}\n onClick={() => onSubmit && onSubmit()}\n >\n {submitIcon}\n </SubmitBtn>\n )}\n <InputField\n hasLeftIcon={submitIcon !== undefined}\n hasRightIcon={clearIcon !== undefined}\n placeholder={placeholder}\n value={value}\n onClick={onClick}\n onBlur={onBlur}\n onFocus={onFocus}\n onKeyDown={handleKeyDown}\n />\n {clearIcon && (\n <ClearBtn\n isInverted={isInverted}\n onClick={() => onClear && onClear()}\n >\n {clearIcon}\n </ClearBtn>\n )}\n </View>\n );\n};\n\nexport default SearchInput;\n","import * as React from 'react';\nimport styled from 'styled-components';\nimport Link from 'components/typography/Link';\n\nconst bdotColor = '#1fc2f4';\n\nconst Dot = styled(Link)`\n width: 14px;\n height: 14px;\n\n display: inline-block;\n vertical-align: middle;\n border-radius: 50%;\n\n background: ${bdotColor};\n color: ${bdotColor};\n text-decoration: none;\n\n span {\n visibility: hidden;\n font-size: 0;\n color: transparent;\n }\n`;\n\nconst Bdot: React.FC<{ className?: string }> = ({ className }) => {\n return (\n <Dot\n ariaLabel=\"b.lateral - creative agency\"\n className={className}\n href=\"https://blateral.com\"\n isExternal\n >\n <span>b.lateral - creative agency</span>\n </Dot>\n );\n};\n\nexport default Bdot;\n","import Check from 'components/base/icons/Check';\nimport Cross from 'components/base/icons/Cross';\nimport UnfoldMore from 'components/base/icons/UnfoldMore';\nimport Actions from 'components/blocks/Actions';\nimport Checkbox from 'components/fields/Checkbox';\nimport Copy from 'components/typography/Copy';\nimport React, { FC, useCallback, useEffect, useRef, useState } from 'react';\nimport styled from 'styled-components';\nimport {\n bindConsentButtons,\n isUrlInWhitelist,\n} from 'utils/cookie-consent/mutations';\nimport useCookieConsent, {\n CookieTypes,\n selectors,\n} from 'utils/cookie-consent/useCookieConsent';\nimport { hexToRgba } from 'utils/hexRgbConverter';\nimport {\n LibThemeProvider,\n ThemeMods,\n useLibTheme,\n} from 'utils/LibThemeProvider';\nimport StatusFormatter from 'utils/statusFormatter';\nimport { getColors as color, mq, spacings } from 'utils/styles';\nimport useMounted from 'utils/useMounted';\n\nconst Stage = styled.div<{ zIndex?: number; bgOpacity?: number }>`\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background-color: rgba(0, 0, 0, ${({ bgOpacity }) => bgOpacity || 0.4});\n z-index: ${({ zIndex }) => zIndex || 1000};\n`;\n\nconst View = styled.div`\n box-sizing: border-box;\n max-width: 900px;\n width: 100vw;\n\n max-height: 85%;\n overflow-y: scroll;\n padding: ${spacings.spacer}px ${spacings.nudge * 2}px;\n position: fixed;\n bottom: 0;\n left: 50%;\n transform: translate(-50%, 0);\n text-align: center;\n\n background-color: ${({ theme }) => color(theme).elementBg.light};\n box-shadow: 0 2px 44px rgba(0, 0, 0, 0.3);\n\n & > * + * {\n margin-top: ${spacings.nudge * 2}px;\n }\n\n @media ${mq.medium} {\n padding: ${spacings.nudge * 5}px;\n\n & > * + * {\n margin-top: ${spacings.nudge * 3}px;\n }\n }\n\n @media ${mq.semilarge} {\n bottom: ${spacings.spacer * 1.5}px;\n max-height: 100vh;\n overflow: auto;\n }\n`;\n\nconst Status = styled(Copy)`\n li > * + * {\n margin-left: ${spacings.nudge}px;\n }\n`;\n\nconst AcceptIcon = styled(Check)`\n display: inline-block;\n height: 20px;\n width: 20px;\n`;\n\nconst DeclineIcon = styled(Cross)`\n display: inline-block;\n height: 20px;\n width: 20px;\n`;\n\ntype RenderProps = {\n types: CookieTypes;\n acceptAll: () => void;\n acceptSelected: () => void;\n declineAll: () => void;\n setConsent: (type: keyof CookieTypes, isAccepted?: boolean) => void;\n additionalDeclineProps: {\n ['data-gtm']: string;\n };\n additionalAcceptProps: {\n ['data-gtm']: string;\n };\n};\n\nexport const CookieConsent: FC<{\n /** URL's that should be excluded from consent */\n urlWhitelist?: string[];\n zIndex?: number;\n overlayOpacity?: number;\n status?: (props: {\n updatedAt: number;\n state: CookieTypes;\n }) => React.ReactElement;\n className?: string;\n children?: (props: RenderProps) => React.ReactElement;\n theme?: ThemeMods;\n}> = ({\n /** URL's that should be excluded from consent */\n urlWhitelist = [],\n zIndex,\n overlayOpacity = 0.4,\n status,\n className,\n children,\n theme,\n}) => {\n const { globals } = useLibTheme();\n\n const statusRenderer = useCallback(\n (props: { updatedAt: number; state: CookieTypes }) => {\n const updatedDate = new Date(props.updatedAt);\n\n const formatter = new StatusFormatter(\n props.updatedAt,\n globals.cookie.consentStatusFormat,\n globals.cookie.consentDateFormat(updatedDate),\n globals.cookie.consentTimeFormat(updatedDate),\n globals.cookie.consentLocaleKey\n );\n const typeKeys: string[] = Object.keys(props.state);\n const types: CookieTypes = props.state;\n\n return (\n <Status renderAs=\"span\">\n <span>{formatter.getFormattedStatus()}</span>\n <ul>\n {typeKeys?.map((type, i) => (\n <li key={i}>\n <span>{types[type].label}</span>\n {types[type].isAccepted ? (\n <AcceptIcon />\n ) : (\n <DeclineIcon />\n )}\n </li>\n ))}\n </ul>\n </Status>\n );\n },\n [globals.cookie]\n );\n\n const [isVisible, setIsVisible] = useState(false);\n const {\n getCookieValue,\n cookieTypes,\n acceptAll,\n acceptSelected,\n declineAll,\n setConsent,\n } = useCookieConsent(\n {\n cookieName: globals.cookie.name,\n initialCookieTypes: globals.cookie.types,\n lifetime: globals.cookie.lifetime,\n },\n () => setIsVisible(false),\n status || statusRenderer\n );\n const isMounted = useMounted();\n\n useEffect(() => {\n if (isMounted) return;\n\n // bind buttons to open consent\n bindConsentButtons(\n () => setIsVisible(true),\n [`[${selectors.buttons.attribute}]`, `.${selectors.buttons.class}`]\n );\n\n // check if consent banner should be open\n const isInWhitelist = isUrlInWhitelist(\n window.location.pathname,\n urlWhitelist\n );\n if (!isInWhitelist) setIsVisible(!getCookieValue());\n }, [getCookieValue, isMounted, urlWhitelist]);\n\n useEffect(() => {\n document.body.style.overflow = isVisible ? 'hidden' : 'visible';\n }, [isVisible]);\n\n if (!isVisible) return null;\n return (\n <LibThemeProvider theme={theme}>\n <Stage zIndex={zIndex} bgOpacity={overlayOpacity}>\n <View className={className}>\n {children?.({\n types: cookieTypes,\n acceptAll,\n acceptSelected,\n setConsent,\n declineAll,\n additionalAcceptProps: {\n ['data-gtm']: 'button-cookie-consent-accept',\n },\n additionalDeclineProps: {\n ['data-gtm']: 'button-cookie-consent-decline',\n },\n })}\n </View>\n </Stage>\n </LibThemeProvider>\n );\n};\n\n/** Example Cookie icon */\nexport const CookieIcon = styled.img`\n display: block;\n margin: 0 auto;\n`;\n\n/** Example Cookie title */\nconst TitleView = styled(Copy)<{ isCentered?: boolean }>`\n text-align: ${({ isCentered }) => (isCentered ? 'center' : 'left')};\n margin-left: ${({ isCentered }) => (isCentered ? 'auto' : '0')};\n margin-right: auto;\n max-width: 670px;\n`;\n\nexport const CookieTitle: FC<{\n isCentered?: boolean;\n innerHTML?: string;\n className?: string;\n children?: React.ReactNode;\n}> = ({ isCentered, innerHTML, className, children }) => {\n return (\n <TitleView\n size=\"big\"\n type=\"copy-b\"\n innerHTML={innerHTML}\n isCentered={isCentered}\n className={className}\n >\n {children}\n </TitleView>\n );\n};\n\n/** Example Cookie title */\nconst TextView = styled.div``;\n\nconst ClampWrapper = styled.div<{ isClamped?: boolean }>`\n position: relative;\n max-height: ${({ isClamped }) => isClamped && '80px'};\n overflow: hidden;\n\n &:after {\n content: ${({ isClamped }) => isClamped && \"''\"};\n display: block;\n position: absolute;\n left: 0;\n bottom: 0;\n right: 0;\n height: 100%;\n background: linear-gradient(\n 0deg,\n ${({ theme }) => color(theme).elementBg.light} 0%,\n ${({ theme }) => hexToRgba(color(theme).elementBg.light, 0.9)} 25%,\n ${({ theme }) => hexToRgba(color(theme).elementBg.light, 0)} 100%\n );\n pointer-events: none;\n }\n`;\n\nconst Text = styled(Copy)<{ isCentered?: boolean }>`\n text-align: ${({ isCentered }) => (isCentered ? 'center' : 'left')};\n`;\n\nconst TextToggle = styled.button`\n background: none;\n margin: 0;\n padding: 0;\n border: none;\n cursor: pointer;\n\n padding: ${spacings.nudge}px ${spacings.nudge * 2}px;\n`;\n\nexport const CookieText: FC<{\n isCentered?: boolean;\n innerHTML?: string;\n allowClamping?: boolean;\n className?: string;\n children?: React.ReactNode;\n toggle?: (handleClick: () => void) => React.ReactNode;\n}> = ({\n isCentered,\n innerHTML,\n allowClamping = true,\n toggle,\n className,\n children,\n}) => {\n const [isClamped, setIsClamped] = useState<boolean>(true);\n const canClamp = useRef<boolean>(!!allowClamping);\n const cRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!canClamp.current) return;\n\n const height = cRef.current?.scrollHeight;\n if (height === undefined) return;\n\n setIsClamped(height > 130);\n }, [allowClamping]);\n\n const handleToggleClick = () => {\n setIsClamped(false);\n canClamp.current = false;\n };\n\n return (\n <TextView>\n <ClampWrapper ref={cRef} isClamped={isClamped}>\n <Text\n isCentered={isCentered}\n innerHTML={innerHTML}\n className={className}\n >\n {children}\n </Text>\n </ClampWrapper>\n {isClamped &&\n (toggle ? (\n toggle(handleToggleClick)\n ) : (\n <TextToggle onClick={handleToggleClick}>\n <UnfoldMore />\n </TextToggle>\n ))}\n </TextView>\n );\n};\n\nconst SelectView = styled.div`\n margin-left: auto;\n margin-right: auto;\n\n & > * + * {\n margin-top: ${spacings.nudge}px;\n }\n`;\n\nconst SelectTitle = styled(Copy)`\n text-align: left;\n\n &:not(:last-child) {\n margin-bottom: ${spacings.nudge * 2}px;\n }\n`;\n\nexport const CookieTypeSelect: FC<{\n title?: string;\n types: CookieTypes;\n setConsent: (typeName: keyof CookieTypes, isAccepted?: boolean) => void;\n}> = ({ title, types, setConsent }) => (\n <SelectView>\n {title && <SelectTitle type=\"copy-b\" innerHTML={title} />}\n {types &&\n Object.keys(types).map((key) => (\n <Checkbox\n key={key}\n label={types[key].label}\n isSelected={types[key].isAccepted}\n isDisabled={!types[key].isEditable}\n onChange={() => setConsent(key)}\n />\n ))}\n </SelectView>\n);\n\n/** Example Cookie actions */\nexport const CookieActions = styled(Actions)`\n margin-top: ${spacings.spacer}px;\n\n @media ${mq.medium} {\n margin-top: ${spacings.nudge * 5}px;\n }\n`;\n\nexport default CookieConsent;\n","import React, { FC } from 'react';\nimport styled from 'styled-components';\n\nimport { getColors as color, spacings } from 'utils/styles';\nimport Link from 'components/typography/Link';\nimport Copy from 'components/typography/Copy';\n\nconst View = styled.div`\n & > * {\n margin: 0;\n padding: 0;\n }\n\n & > * + * {\n margin-top: ${spacings.nudge * 2}px;\n }\n`;\n\nconst List = styled.ul`\n display: inline-flex;\n flex-direction: row;\n align-items: center;\n list-style: none;\n\n & > * + * {\n margin-left: ${spacings.nudge * 3}px;\n }\n`;\n\nconst IconContainer = styled.li`\n display: block;\n padding: 0;\n`;\n\nconst StyledLink = styled(Link)`\n display: block;\n padding: ${spacings.nudge * 2}px ${spacings.nudge * 1.5}px;\n margin: -${spacings.nudge * 2}px -${spacings.nudge * 1.5}px;\n color: ${({ theme, isInverted }) =>\n isInverted ? color(theme).text.inverted : color(theme).text.default};\n outline: none;\n\n transition: all ease-in-out 0.2s;\n\n &:focus {\n outline: none;\n }\n\n &:focus > * {\n outline: 2px solid\n ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n outline-offset: 2px;\n }\n\n &:focus:not(:focus-visible) > * {\n outline: none;\n }\n`;\n\nexport interface SocialItem {\n href: string;\n icon: (props: { isInverted?: boolean; title?: string }) => React.ReactNode;\n title?: string;\n}\n\nconst SocialList: FC<{\n isInverted?: boolean;\n title?: string;\n items?: SocialItem[];\n className?: string;\n}> = ({ isInverted = false, title, items, className }) => {\n return (\n <View className={className}>\n {title && (\n <Copy type=\"copy-b\" isInverted={isInverted}>\n {title}\n </Copy>\n )}\n <List>\n {items?.map((item, i) => (\n <IconContainer key={i}>\n <StyledLink\n isExternal\n href={item.href}\n isInverted={isInverted}\n ariaLabel={item.title || `social_${i}`}\n >\n {item.icon &&\n item.icon({ isInverted, title: item.title })}\n </StyledLink>\n </IconContainer>\n ))}\n </List>\n </View>\n );\n};\n\nexport default SocialList;\n","import React, { FC } from 'react';\n\nimport styled from 'styled-components';\nimport { spacings } from 'utils/styles';\nimport { NavMenuStates } from '../Navigation';\n\nimport SocialList, { SocialItem } from 'components/blocks/SocialList';\nimport LanguageSwitcher, { Language } from 'components/blocks/LanguageSwitcher';\nimport { isValidArray } from 'utils/arrays';\n\nconst Footer = styled.div`\n display: flex;\n flex-direction: column;\n\n padding: ${spacings.nudge * 2}px;\n margin-top: auto;\n\n & > * + * {\n margin-top: ${spacings.spacer}px;\n }\n`;\n\nconst MenuFooter: FC<{\n isInverted?: boolean;\n langs?: Language[];\n socials?: SocialItem[];\n menuStates?: NavMenuStates;\n}> = ({ isInverted, langs, socials }) => {\n const hasSocials = isValidArray(socials, false);\n const hasLangs = isValidArray(langs, false);\n\n return (\n <React.Fragment>\n {(hasSocials || hasLangs) && (\n <Footer>\n {hasSocials && (\n <SocialList isInverted={isInverted} items={socials} />\n )}\n {hasLangs && (\n <LanguageSwitcher\n isInverted={isInverted}\n langs={langs}\n />\n )}\n </Footer>\n )}\n </React.Fragment>\n );\n};\n\nexport default MenuFooter;\n","import React, { FC } from 'react';\n\nimport { NavBarStates } from '../Navigation';\nimport * as Skeletons from 'components/sections/navigation/skeletons/index';\nimport { LinkProps } from 'components/typography/Link';\n\nconst NavBarBottom: FC<{\n rootLink?: LinkProps;\n rootLabel?: string;\n navStates: NavBarStates;\n}> = ({ rootLink, rootLabel, navStates }) => {\n const isInverted =\n navStates?.size === 'large' && navStates?.pageFlow === 'overContent';\n\n return (\n <Skeletons.Breadcrumbs\n isInverted={isInverted}\n rootLink={rootLink}\n rootLabel={rootLabel}\n navItems={navStates.mainNavigation}\n />\n );\n};\n\nexport default NavBarBottom;\n","import React, { FC } from 'react';\nimport styled from 'styled-components';\n\nimport MenuBurger from 'components/base/icons/MenuBurger';\nimport { NavBarStates } from '../Navigation';\nimport * as Skeletons from 'components/sections/navigation/skeletons/index';\nimport { spacings, mq } from 'utils/styles';\nimport { LinkProps } from 'components/typography/Link';\nimport { isValidArray } from 'utils/arrays';\nimport LanguageSwitcher, { Language } from 'components/blocks/LanguageSwitcher';\n\nconst ToggleColumn = styled(Skeletons.Column)`\n display: flex;\n flex-direction: row;\n align-items: center;\n`;\n\nconst LogoColumn = styled(Skeletons.Column)`\n display: flex;\n align-items: center;\n padding: ${spacings.nudge}px 0;\n`;\n\nconst ActionsColumn = styled(Skeletons.Column)`\n display: flex;\n justify-content: flex-end;\n align-items: center;\n\n & > * + * {\n margin-left: ${spacings.nudge}px;\n }\n\n @media ${mq.medium} {\n & > * + * {\n margin-left: ${spacings.nudge * 2}px;\n }\n }\n`;\n\nconst LanguageWrapper = styled.div`\n display: none;\n\n @media ${mq.semilarge} {\n display: block;\n margin-left: ${spacings.nudge * 3}px;\n margin-top: 2px;\n }\n`;\n\nconst NavBarMain: FC<{\n isInverted?: boolean;\n logo?: {\n desktop?: { src: string; alt?: string };\n desktopInverted?: { src: string; alt?: string };\n mobile?: { src: string; alt?: string };\n mobileInverted?: { src: string; alt?: string };\n link?: Omit<LinkProps, 'coverSpace' | 'ratios'>;\n };\n customToggle?: (props: { isInverted?: boolean }) => React.ReactNode;\n langs?: Language[];\n primaryAction?: (\n props: { isInverted?: boolean } & NavBarStates\n ) => React.ReactNode;\n secondaryAction?: (\n props: { isInverted?: boolean } & NavBarStates\n ) => React.ReactNode;\n navStates: NavBarStates;\n}> = ({\n isInverted,\n logo,\n navStates,\n customToggle,\n langs,\n primaryAction,\n secondaryAction,\n}) => {\n const inverted =\n isInverted !== undefined\n ? isInverted\n : navStates?.size === 'large' &&\n navStates?.pageFlow === 'overContent';\n\n return (\n <React.Fragment>\n <ToggleColumn takeSpace vAlign=\"center\" isInverted={inverted}>\n <Skeletons.MenuToggle\n isInverted={inverted}\n isExpanded={navStates?.isMenuOpen}\n onClick={navStates?.openMenu}\n >\n {customToggle ? (\n customToggle({ isInverted: inverted })\n ) : (\n <MenuBurger ariaHidden={true} />\n )}\n </Skeletons.MenuToggle>\n {isValidArray(langs, false) && (\n <LanguageWrapper>\n <LanguageSwitcher isInverted={inverted} langs={langs} />\n </LanguageWrapper>\n )}\n </ToggleColumn>\n {logo?.desktop?.src && (\n <LogoColumn isInverted={inverted}>\n <Skeletons.Logo\n link={logo.link}\n logo={{\n small: inverted\n ? logo?.mobileInverted?.src || ''\n : logo?.mobile?.src || '',\n semilarge: inverted\n ? logo?.desktopInverted?.src || ''\n : logo?.desktop?.src || '',\n alt: logo?.desktop?.alt,\n }}\n />\n </LogoColumn>\n )}\n <ActionsColumn takeSpace vAlign=\"center\">\n {secondaryAction\n ? secondaryAction({\n isInverted: inverted,\n ...navStates,\n })\n : undefined}\n {primaryAction\n ? primaryAction({\n isInverted: inverted,\n ...navStates,\n })\n : undefined}\n </ActionsColumn>\n </React.Fragment>\n );\n};\n\nexport default NavBarMain;\n","import styled from 'styled-components';\nimport LanguageSwitcher, { Language } from 'components/blocks/LanguageSwitcher';\nimport React, { FC } from 'react';\nimport { mq, spacings } from 'utils/styles';\nimport { NavBarStates } from '../Navigation';\nimport * as Skeletons from 'components/sections/navigation/skeletons/index';\nimport { NavItem } from '../menu/Menu';\n\nconst StyledCol = styled(Skeletons.Column)`\n &:not(:first-child) {\n margin-left: ${spacings.spacer}px;\n }\n`;\n\nconst StyledNavList = styled(Skeletons.NavList)`\n display: none;\n\n @media ${mq.semilarge} {\n display: inline-flex;\n }\n`;\n\nconst NavBarTop: FC<{\n navLinks?: Array<NavItem>;\n languages?: Array<Language>;\n navStates: NavBarStates;\n}> = ({ navLinks, languages, navStates }) => {\n const isInverted =\n navStates?.size === 'large' && navStates?.pageFlow === 'overContent';\n\n return (\n <React.Fragment>\n <StyledCol>\n <StyledNavList isInverted={isInverted} navLinks={navLinks} />\n </StyledCol>\n <StyledCol>\n <LanguageSwitcher isInverted={isInverted} langs={languages} />\n </StyledCol>\n </React.Fragment>\n );\n};\n\nexport default NavBarTop;\n","import React, { FC, useMemo } from 'react';\nimport styled from 'styled-components';\n\nimport Bdot from 'components/blocks/Bdot';\nimport { copyStyle } from 'components/typography/Copy';\nimport Link from 'components/typography/Link';\n\nimport { spacings, getColors as color, mq } from 'utils/styles';\nimport { BottomLink } from '../Footer';\n\nconst View = styled.div`\n border-top: 1px solid ${({ theme }) => color(theme).elementBg.medium};\n padding: ${spacings.nudge * 2}px 0;\n\n & > * + * {\n margin-top: ${spacings.nudge * 2}px;\n }\n\n @media ${mq.semilarge} {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n\n & > * + * {\n margin-top: 0;\n margin-left: ${spacings.nudge * 2}px;\n }\n }\n`;\n\nconst LinkListView = styled.ul`\n padding: 0;\n margin: 0;\n list-style: none;\n\n display: flex;\n flex-wrap: wrap;\n flex-direction: row;\n align-items: center;\n\n margin-left: -${spacings.nudge}px;\n`;\n\nconst BottomLinkItem = styled.li`\n display: flex;\n align-items: center;\n\n padding-left: ${spacings.nudge}px;\n`;\n\nconst StyledLink = styled(Link)<{ isInverted?: boolean }>`\n display: block;\n text-decoration: none;\n\n ${copyStyle('copy', 'small')}\n color: ${({ theme, isInverted }) =>\n isInverted ? color(theme).text.inverted : color(theme).text.default};\n`;\n\nconst LinkList: FC<{\n isInverted?: boolean;\n links?: BottomLink[];\n brandIcon?: (isInverted?: boolean) => React.ReactNode | null;\n className?: string;\n}> = ({ isInverted, links, brandIcon, className }) => {\n const brand = useMemo(\n () => brandIcon?.(isInverted),\n [brandIcon, isInverted]\n );\n\n return (\n <LinkListView className={className}>\n {links?.map((item, i) => (\n <BottomLinkItem key={i}>\n <StyledLink {...item.link} isInverted={isInverted}>\n {item.label}\n </StyledLink>\n </BottomLinkItem>\n ))}\n {brand !== null && (\n <BottomLinkItem>{brand || <Bdot />}</BottomLinkItem>\n )}\n </LinkListView>\n );\n};\n\nconst FooterBottomGrid: FC<{\n className?: string;\n children?: React.ReactNode;\n}> = ({ className, children }) => {\n return <View className={className}>{children}</View>;\n};\n\nexport default {\n View: FooterBottomGrid,\n LinkList: LinkList,\n};\n","import React, { FC } from 'react';\n\nimport LanguageSwitcher, { Language } from 'components/blocks/LanguageSwitcher';\nimport FooterBottomGrid from '../skeletons/FooterBottomGrid';\nimport { BottomLink } from '../Footer';\nimport * as Icons from 'components/base/icons/Icons';\nimport { isValidArray } from 'utils/arrays';\nimport styled from 'styled-components';\nimport { spacings } from 'utils/styles';\n\nconst LeftWrapper = styled.div`\n display: flex;\n flex-wrap: wrap;\n margin-left: -${spacings.spacer}px;\n\n & > * {\n padding-left: ${spacings.spacer}px;\n }\n`;\n\nconst FooterBottomBar: FC<{\n isInverted?: boolean;\n languages?: Language[];\n linksLeft?: BottomLink[];\n linksRight?: BottomLink[];\n brandIcon?: (isInverted?: boolean) => React.ReactNode;\n languageIcon?: (isInverted?: boolean) => React.ReactNode;\n className?: string;\n}> = ({\n isInverted,\n languages,\n linksLeft,\n linksRight,\n brandIcon,\n languageIcon,\n className,\n}) => {\n return (\n <FooterBottomGrid.View className={className}>\n <LeftWrapper>\n {languages && (\n <LanguageSwitcher\n isInverted={isInverted}\n langs={languages}\n languageIcon={\n languageIcon\n ? languageIcon\n : () => <Icons.Language />\n }\n textSize=\"small\"\n />\n )}\n {isValidArray(linksLeft, false) && (\n <FooterBottomGrid.LinkList\n links={linksLeft}\n isInverted={isInverted}\n brandIcon={() => null}\n />\n )}\n </LeftWrapper>\n {isValidArray(linksRight) && (\n <FooterBottomGrid.LinkList\n links={linksRight}\n isInverted={isInverted}\n brandIcon={brandIcon}\n />\n )}\n </FooterBottomGrid.View>\n );\n};\n\nexport default FooterBottomBar;\n","import Grid from 'components/base/Grid';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport { Language } from 'components/blocks/LanguageSwitcher';\nimport Copy, { copyStyle } from 'components/typography/Copy';\nimport Link, { LinkProps } from 'components/typography/Link';\nimport React, { useMemo } from 'react';\nimport styled from 'styled-components';\nimport { useLibTheme } from 'utils/LibThemeProvider';\nimport { getColors as color, mq, spacings, withRange } from 'utils/styles';\nimport { withLibTheme } from 'utils/LibThemeProvider';\nimport FooterBottomBar from './partials/FooterBottomBar';\nimport { isValidArray } from 'utils/arrays';\n\nconst FooterSection = styled(Section)`\n ${withRange([0], 'padding-bottom')}\n ${withRange([0], 'margin-bottom')}\n`;\n\nconst MainView = styled.div`\n & > * {\n margin-bottom: ${spacings.nudge * 2}px;\n }\n`;\n\nconst ColTitle = styled(Copy)`\n margin-bottom: ${spacings.nudge * 2}px;\n`;\n\nconst StyledLink = styled(Link)<{ isInverted?: boolean }>`\n display: inline-block;\n text-decoration: none;\n\n ${copyStyle('copy', 'medium')}\n color: ${({ theme, isInverted }) =>\n isInverted ? color(theme).text.inverted : color(theme).text.default};\n`;\n\nconst LinkList = styled.ul`\n padding: 0;\n margin: 0;\n list-style: none;\n`;\n\nconst LinkItem = styled.li`\n & + & {\n margin-top: ${spacings.nudge}px;\n }\n`;\n\nconst CustomCol = styled.div`\n & > * + * {\n margin-top: ${spacings.nudge * 5}px;\n }\n\n @media ${mq.semilarge} {\n & > * + * {\n margin-top: ${spacings.spacer}px;\n }\n }\n`;\n\nconst FootNote = styled(Copy)`\n margin-top: ${spacings.nudge * 5}px;\n\n @media ${mq.semilarge} {\n margin-top: ${spacings.spacer}px;\n }\n`;\n\nexport interface SiteLinkGroup {\n title?: string;\n links?: Array<{ label?: string; link?: LinkProps }>;\n}\n\nexport interface FooterState {\n isInverted?: boolean;\n siteLinks?: SiteLinkGroup[];\n bottomLinksLeft?: BottomLink[];\n bottomLinksRight?: BottomLink[];\n languages?: Language[];\n}\n\nexport interface BottomLink {\n label?: string;\n link?: LinkProps;\n}\n\nconst Footer: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n\n /** Array of sitelink groups */\n siteLinks?: SiteLinkGroup[];\n\n /** Function to inject custom footer column content */\n customColumn?: (props: FooterState) => React.ReactNode;\n\n /** Footnote text of main section (richtext) */\n footNote?: string;\n\n /** Link list in left bottom bar */\n bottomLinksLeft?: BottomLink[];\n\n /** Link list in right bottom bar */\n bottomLinksRight?: BottomLink[];\n\n /** Language toggler settings */\n languages?: Language[];\n\n /** Inject function to suppress bottom bar or define a custom definition */\n bottomBar?: ((props: FooterState) => React.ReactNode | null) | null;\n}> = ({\n bgMode,\n siteLinks,\n customColumn,\n footNote,\n bottomBar,\n bottomLinksLeft,\n bottomLinksRight,\n languages,\n}) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n\n const customCol = useMemo(() => {\n return customColumn\n ? customColumn({\n isInverted,\n siteLinks,\n languages,\n bottomLinksLeft,\n bottomLinksRight,\n })\n : undefined;\n }, [\n bottomLinksLeft,\n bottomLinksRight,\n customColumn,\n isInverted,\n languages,\n siteLinks,\n ]);\n\n const bottom = useMemo(() => {\n return bottomBar\n ? bottomBar({\n isInverted,\n siteLinks,\n languages,\n bottomLinksLeft,\n bottomLinksRight,\n })\n : undefined;\n }, [\n bottomBar,\n bottomLinksLeft,\n bottomLinksRight,\n isInverted,\n languages,\n siteLinks,\n ]);\n\n const hasBottomBar = useMemo(() => {\n if (bottomBar === null) return false;\n if (bottom) return true;\n if (bottom === null) return false;\n\n return (\n isValidArray(languages, false) ||\n isValidArray(bottomLinksLeft, false) ||\n isValidArray(bottomLinksRight, false)\n );\n }, [bottom, bottomBar, bottomLinksLeft, bottomLinksRight, languages]);\n\n return (\n <FooterSection\n addSeperation\n renderAs=\"footer\"\n clampSolidBg={false}\n bgMode={mapToBgMode(bgMode, true)}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n >\n <Wrapper addWhitespace>\n <MainView>\n <Grid.Row\n gutter={spacings.nudge * 5}\n medium={{ gutter: spacings.spacer }}\n >\n {siteLinks?.map(({ title, links }, i) => {\n return (\n <Grid.Col\n key={i}\n medium={{ span: 6 / 12 }}\n semilarge={{ span: 4 / 12 }}\n large={{ span: 3 / 12 }}\n valign=\"top\"\n >\n <ColTitle\n type=\"copy-b\"\n isInverted={isInverted}\n >\n {title}\n </ColTitle>\n <LinkList>\n {links?.map(({ link, label }, ii) => (\n <LinkItem key={ii}>\n <StyledLink\n {...link}\n isInverted={isInverted}\n >\n {label}\n </StyledLink>\n </LinkItem>\n ))}\n </LinkList>\n </Grid.Col>\n );\n })}\n {customCol && (\n <Grid.Col\n large={{ span: 3 / 12 }}\n toRight\n valign=\"top\"\n >\n <CustomCol>{customCol}</CustomCol>\n </Grid.Col>\n )}\n </Grid.Row>\n {footNote && (\n <FootNote\n size=\"small\"\n isInverted={isInverted}\n innerHTML={footNote}\n />\n )}\n </MainView>\n {bottom ? (\n bottom\n ) : hasBottomBar ? (\n <FooterBottomBar\n isInverted={isInverted}\n linksLeft={bottomLinksLeft}\n linksRight={bottomLinksRight}\n languages={languages}\n />\n ) : null}\n </Wrapper>\n </FooterSection>\n );\n};\n\nexport const FooterComponent = Footer;\nexport default withLibTheme(Footer);\n","import React, { FC } from 'react';\nimport styled from 'styled-components';\nimport { spacings } from 'utils/styles';\n\nimport Copy from 'components/typography/Copy';\n\nconst View = styled.div`\n & > * + * {\n margin-top: ${spacings.nudge * 2}px;\n }\n`;\n\nconst FooterArticle: FC<{\n isInverted?: boolean;\n title?: string;\n text?: string;\n action?: (props: { isInverted?: boolean }) => React.ReactNode;\n className?: string;\n}> = ({ isInverted, title, text, action, className }) => {\n return (\n <View className={className}>\n {title && (\n <Copy type=\"copy-b\" isInverted={isInverted}>\n {title}\n </Copy>\n )}\n {text && (\n <Copy size=\"small\" isInverted={isInverted} innerHTML={text} />\n )}\n {action && action({ isInverted })}\n </View>\n );\n};\n\nexport default FooterArticle;\n","import SocialList, { SocialItem } from 'components/blocks/SocialList';\nimport React, { FC } from 'react';\nimport FooterArticle from '../skeletons/FooterArticle';\n\nconst FooterColumn: FC<{\n isInverted?: boolean;\n title?: string;\n text?: string;\n action?: (props: { isInverted?: boolean }) => React.ReactNode;\n socialTitle?: string;\n socials?: SocialItem[];\n}> = ({ isInverted, title, text, action, socialTitle, socials }) => {\n return (\n <React.Fragment>\n {(title || text || action) && (\n <FooterArticle\n isInverted={isInverted}\n title={title}\n text={text}\n action={action}\n />\n )}\n {socials && socials.length > 0 && (\n <SocialList\n isInverted={isInverted}\n title={socialTitle}\n items={socials}\n />\n )}\n </React.Fragment>\n );\n};\n\nexport default FooterColumn;\n","import { useEffect, useRef, useState } from 'react';\n\ninterface Settings {\n openMenuIdent: string;\n closeMenuIdent: string;\n}\n\n/**\n * Hooks in to menu state to control it with keyboard inputs\n * @param initialMenuState\n * @param settings\n * @returns\n */\nexport const useMenuKeyboard = (\n initialMenuState: boolean,\n settings: Partial<Settings>\n) => {\n const [isMenuOpen, setIsMenuOpen] = useState(initialMenuState);\n const prevMenuState = useRef<boolean>(false);\n\n const [root, setRoot] = useState<HTMLElement | null>(null);\n const openBtnRef = useRef<HTMLButtonElement | null>(null);\n const closeBtnRef = useRef<HTMLButtonElement | null>(null);\n\n const defaultSettings: Settings = {\n openMenuIdent: 'button[aria-label=\"open menu\"]',\n closeMenuIdent: 'button[aria-label=\"close menu\"]',\n ...settings,\n };\n\n useEffect(() => {\n if (!root) return;\n\n // setting up menu toggle button refs\n if (!openBtnRef.current) {\n openBtnRef.current = root.querySelector(\n defaultSettings.openMenuIdent\n );\n }\n if (!closeBtnRef.current) {\n closeBtnRef.current = root.querySelector(\n defaultSettings.closeMenuIdent\n );\n }\n }, [\n defaultSettings.closeMenuIdent,\n defaultSettings.openMenuIdent,\n isMenuOpen,\n root,\n ]);\n\n useEffect(() => {\n const handleKeyDown = (ev: KeyboardEvent) => {\n if (ev.key === 'Escape' && isMenuOpen) {\n setIsMenuOpen(false);\n }\n };\n\n // settings focus if menu is open\n if (isMenuOpen) {\n closeBtnRef?.current?.focus();\n } else if (prevMenuState.current) {\n openBtnRef?.current?.focus();\n }\n\n prevMenuState.current = isMenuOpen;\n\n window.addEventListener('keydown', handleKeyDown);\n\n return () => {\n window.removeEventListener('keydown', handleKeyDown);\n };\n }, [isMenuOpen]);\n\n return {\n setRoot,\n isMenuOpen,\n setIsMenuOpen,\n };\n};\n","export const getBgImage = (\n bgImage: {\n small: string;\n medium?: string;\n semilarge?: string;\n large?: string;\n xlarge?: string;\n },\n mq?: 'small' | 'medium' | 'semilarge' | 'large' | 'xlarge'\n): string => {\n switch (mq) {\n default:\n case 'small':\n return bgImage.small;\n\n case 'medium':\n return (\n bgImage.medium ||\n bgImage.semilarge ||\n bgImage.large ||\n bgImage.xlarge ||\n bgImage.small\n );\n\n case 'semilarge':\n return (\n bgImage.semilarge ||\n bgImage.large ||\n bgImage.xlarge ||\n bgImage.medium ||\n bgImage.small\n );\n\n case 'large':\n return (\n bgImage.large ||\n bgImage.xlarge ||\n bgImage.semilarge ||\n bgImage.medium ||\n bgImage.small\n );\n\n case 'xlarge':\n return (\n bgImage.xlarge ||\n bgImage.large ||\n bgImage.semilarge ||\n bgImage.medium ||\n bgImage.small\n );\n }\n};\n","import { DefaultTheme } from 'styled-components';\nimport { getGlobals as global } from 'utils/styles';\n\nexport const getLinkIcon = (\n theme: DefaultTheme,\n href: string,\n isInverted?: boolean\n): string => {\n const linkIcons = global(theme).icons.linkIcons;\n\n const fileExtension = `.${href?.split('.').pop() || ''}`;\n const result = linkIcons.find((icon) => {\n return icon.patterns?.find((pattern) => pattern.match(fileExtension));\n });\n\n return result?.iconChar || result?.iconUrl?.(isInverted) || '';\n};\n","import React from 'react';\n\ninterface FontFallback {\n name: string;\n altFont: string;\n sizeAdjust: string;\n}\n\nexport interface Font {\n rootPath: string;\n sourcePath: string;\n fallbacks?: FontFallback[];\n}\n\nexport const importFonts = (fonts: Font[]) => {\n return (\n <React.Fragment>\n {fonts && fonts.length > 0 && (\n <style\n dangerouslySetInnerHTML={{\n __html: fonts?.reduce((acc, current) => {\n if (current?.fallbacks) {\n acc += current?.fallbacks?.reduce(\n (fallAcc, f) => {\n fallAcc += `@font-face { font-family: '${f.name}'; size-adjust: ${f.sizeAdjust}; src: local('${f.altFont}'); } `;\n return fallAcc;\n },\n\n ''\n );\n return acc;\n } else return acc;\n }, ''),\n }}\n />\n )}\n\n {fonts?.map((font, i) => (\n <link\n key={i}\n rel=\"preconnect\"\n href={font.rootPath}\n crossOrigin=\"true\"\n />\n ))}\n {fonts?.map((font, i) => (\n <link key={i} rel=\"preload\" as=\"style\" href={font.sourcePath} />\n ))}\n\n <style\n dangerouslySetInnerHTML={{\n __html: `</style>${fonts?.reduce<string>(\n (prev, current) => {\n return (prev += `\n <link rel=\"stylesheet\" href=\"${current.sourcePath}\" media=\"print\" onload=\"this.media='all'\" />`);\n },\n ''\n )}<style>`,\n }}\n />\n\n <noscript>\n {fonts?.map((font, i) => (\n <link key={i} rel=\"stylesheet\" href={font.sourcePath} />\n ))}\n </noscript>\n </React.Fragment>\n );\n};\n","import { useState } from 'react';\n\nconst useArray = <T>(defaultValue?: Array<T>) => {\n const [array, setArray] = useState<Array<T>>(defaultValue || []);\n\n const push = (element: T | T[]) => {\n if (Array.isArray(element)) {\n setArray((prev) => [...prev, ...element]);\n } else {\n setArray((prev) => [...prev, element]);\n }\n };\n\n const pop = () => {\n let lastEl: T | undefined;\n\n setArray((prev) => {\n const copy = [...prev];\n lastEl = copy.pop();\n return copy;\n });\n return lastEl;\n };\n\n const filter = (\n callback: (value: T, index: number, array: T[]) => void\n ) => {\n setArray((prev) => prev.filter(callback));\n };\n\n const update = (index: number, newEl: T) => {\n setArray((prev) => [\n ...prev.slice(0, index),\n newEl,\n ...prev.slice(index + 1, prev.length),\n ]);\n };\n\n const remove = (index: number) => {\n setArray((prev) => [\n ...prev.slice(0, index),\n ...prev.slice(index + 1, prev.length),\n ]);\n };\n\n const clear = () => {\n setArray([]);\n };\n\n return {\n array,\n set: setArray,\n push,\n filter,\n update,\n remove,\n clear,\n pop,\n };\n};\n\nexport default useArray;\n","import { ImageProps } from 'components/blocks/Image';\nimport { useEffect, useState } from 'react';\nimport { MediaQueryType } from './styles';\nimport { useMediaQuery } from './useMediaQuery';\n\nexport const useImgPreload = (\n imageUrls: ImageProps[],\n mqs: MediaQueryType[] = ['semilarge', 'large']\n) => {\n const [isReady, setReady] = useState(false);\n const [isLoaded, setLoaded] = useState(false);\n const currentMq = useMediaQuery(mqs as MediaQueryType[]);\n const [loadedImages, setLoadedImages] = useState<{\n [key: string]: { id: number | string; image: string }[];\n }>({\n small: [],\n medium: [],\n semilarge: [],\n large: [],\n xlarge: [],\n xxlarge: [],\n xxxLarge: [],\n });\n\n const preloadImages = (imageUrls: (string | undefined)[]) => {\n const images = (imageUrls.filter((img) => img) as string[]).map(\n (src, i) => {\n return new Promise((res) => {\n const img = new window.Image();\n img.src = src;\n img.onload = () => res({ url: src, i });\n });\n }\n );\n\n return images;\n };\n\n useEffect(() => {\n if (isReady && loadedImages && currentMq) {\n const loadedForMq = loadedImages[currentMq];\n\n if (loadedForMq.length < imageUrls.length && imageUrls.length > 0) {\n const requestedImages = imageUrls.map((img) => img[currentMq]);\n\n const resolve = async (items: any) => {\n for (const item of items) {\n const x = await item;\n\n setLoadedImages((prev) => {\n // check if image id already exists in array\n if (!prev[currentMq].find((e) => e.id === x.i)) {\n return {\n ...prev,\n [currentMq]: [\n ...prev[currentMq],\n {\n id: x.i,\n image: x.url,\n },\n ],\n };\n } else return prev;\n });\n }\n };\n\n resolve(preloadImages(requestedImages));\n }\n }\n }, [currentMq, imageUrls, isReady, loadedImages]);\n\n useEffect(() => {\n if (loadedImages && currentMq) {\n const imgCount = imageUrls.filter((img) => img[currentMq]).length;\n setLoaded(loadedImages[currentMq].length >= imgCount);\n }\n }, [currentMq, imageUrls, loadedImages]);\n\n return {\n loadedImages: currentMq && loadedImages[currentMq],\n isLoaded,\n setReady,\n };\n};\n","import { useCallback, useEffect, useRef } from 'react';\n\nexport default function useInterval(callback: () => void, delay: number) {\n const callbackRef = useRef(callback);\n const intervalRef = useRef<number>();\n\n // Remember the latest callback.\n useEffect(() => {\n callbackRef.current = callback;\n }, [callback]);\n\n const set = useCallback(() => {\n intervalRef.current = window.setInterval(\n () => callbackRef.current?.(),\n delay\n );\n }, [delay]);\n\n const clear = useCallback(() => {\n intervalRef.current && window.clearTimeout(intervalRef.current);\n }, []);\n\n useEffect(() => {\n set();\n return clear;\n }, [delay, set, clear]);\n\n const reset = useCallback(() => {\n clear();\n set();\n }, [clear, set]);\n\n return { clear, reset };\n}\n","import { useEffect, useState } from 'react';\n\nexport const useItemHeight = () => {\n const [element, setElement] = useState<HTMLElement | null>(null);\n const [height, setHeight] = useState<number>(0);\n\n useEffect(() => {\n const calcHeight = () => {\n if (element) setHeight(element.offsetHeight);\n };\n\n if (element) {\n calcHeight();\n window.addEventListener('resize', calcHeight);\n }\n\n return () => {\n window.removeEventListener('resize', calcHeight);\n };\n }, [element]);\n\n return {\n setElement,\n height,\n };\n};\n"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","__rest","e","indexOf","getOwnPropertySymbols","propertyIsEnumerable","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","rejected","result","adopt","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","Symbol","iterator","v","op","TypeError","pop","push","__spreadArray","to","from","pack","ar","l","Array","slice","concat","__makeTemplateObject","cooked","raw","defineProperty","ScrollDirection","SVG","styled","svg","templateObject_1","CalendarToday","_a","_b","iconColor","className","_c","ariaHidden","React","createElement","viewBox","width","height","fill","xmlns","d","DateRange","ArrowDown","ArrowRightGhost","ArrowLeftGhost","ArrowLeftRight","clipPath","AngleUp","AngleDown","AngleLeft","AngleRight","UnfoldMore","UploadFile","Excel","id","Image","Pdf","PowerPoint","Word","Zip","External","BoxArrowUpRight","fillRule","clipRule","Instagram","Mail","Phone","Play","MenuBurger","LanguageIcon","Cross","Check","Info","LocationPin","MyLocation","Plus","Minus","DeleteForever","CurrentLocation","fillOpacity","ToggleOn","ToggleOff","LocationSearch","ClockFilled","getSVGDataImg","encode","svgString","renderToString","window","btoa","baseString","Buffer","toString","mq","medium","semilarge","large","xlarge","xxlarge","spacings","nudge","spacer","wrapperSmall","wrapper","wrapperLarge","withRange","range","property","min","max","undefined","getSizeByRange","styleTextColor","fallbackColor","gradient","css","templateObject_2","defaultColors","text","default","inverted","error","errorInverted","heading","headingInverted","copy","copyInverted","subtile","subtileInverted","sectionBg","light","dark","elementBg","lightHover","mediumHover","darkHover","primary","hover","invertedHover","secondary","copyBase","family","weight","style","lineHeight","letterSpacing","size","textTransform","color","colorInverted","headingBase","defaultFonts","small","big","super","callout","mediumBold","link","colorHover","colorHoverInverted","navigation","featured","main","sub","getLinkIconScale","props","type","defaultGlobalSettings","sections","seperation","forcePadding","padding","stackable","margin","edgeRadius","imageTextGradient","imageTextGradientCentered","imagePlaceholderBg","newsDateFormat","newsTimeFormat","newsLocaleKey","eventDateFormat","eventTimeFormat","eventTimespanFormat","eventLocaleKey","datepickerLocaleKey","datepickerDateFormat","newsFilterName","eventFilterName","jobFilterName","poiFilterName","cookie","name","lifetime","types","essentials","isAccepted","isEditable","analytics","functionals","consentDateFormat","consentTimeFormat","consentLocaleKey","consentStatusFormat","videoCookieTypeRestrictions","navBar","topHeight","mainHeight","bottomHeight","menu","headerHeight","icons","linkIcons","iconUrl","isInverted","getSVGData","Icons.BoxArrowUpRight","patterns","isExternal","scale","Icons.Mail","Icons.Phone","Icons.Pdf","Icons.Word","Icons.Excel","Icons.PowerPoint","Icons.Image","Icons.Zip","baseTheme","colors","fonts","globals","getTheme","theme","getColors","getFonts","getGlobals","isBrowser","document","checkMq","cmq","checkMqs","matchMedia","matches","getMediaQuery","getMediaQueries","useMediaQueries","useState","mediaQueries","setMediaQueries","useEffect","handleResize","newMediaQueries","prev","currentMqs","newMqs","isDifferent","key","isEqual","addEventListener","removeEventListener","useMediaQuery","mqs","useMemo","mediaQuery","setMediaQuery","newMediaQuery","useFontsLoaded","allFontsLoaded","setFontLoaded","ready","waitForFonts","useResizeThrottle","timeout","callback","throttledState","setThrottledState","timeoutRef","useRef","lastState","clientWidth","clientHeight","innerHeight","innerWidth","updateResizeState","current","documentElement","setTimeout","useEqualSheetHeight","defaultResponsive","responsive","queries","keys","reduce","acc","getMq","newQueryState","setQueries","newQueries","useDynamicMediaQueries","customMediaQueries","itemsPerRow","sheetRefs","setSheetRefs","fontsLoaded","setHeights","useCallback","heights","selector","refs","heightsInRows","index","arr","forEach","rowHeights","highest","filter","sort","vA","vB","x","el","querySelector","setAttribute","resizeState","resizeThrottleTimeout","resizeHandler","identifierSizes","Map","identifiers","set","ref","element","prevHeights","get","removeAttribute","getBoundingClientRect","triggerCalculation","listLength","map","createRef","setCookie","data","days","path","cookieString","stringifiedData","JSON","stringify","encodeURIComponent","err","console","warn","date","Date","setTime","getTime","toUTCString","getCookie","b","match","cookieValue","decodeURIComponent","parse","useIE","initialValue","isIE","setIE","msTouchAction","useScrollTo","fallbackScrollDuration","startTime","firstPos","targetPos","setTargetPos","scroll","top","left","behavior","animate_1","timestamp","elapsed","easeProgress","toFixed","newPos","scrollTo","cancelAnimationFrame","requestAnimationFrame","pageYOffset","scrollTop","canUseWebP","elem","getContext","toDataURL","useUpdateEffect","effect","deps","firstRenderRef","useMounted","isMountedRef","useTimeout","delay","callbackRef","clear","clearTimeout","reset","useDebounce","useScrollThrottle","scrollX","scrollY","updateScrollState","handleScroll","useLazyInput","initial","setValue","update","withoutDelay","forceUpdate","clampValue","Math","hexToRgba","hex","alpha","fullHex","split","char","join","toFullHex","rgb","parseInt","isNaN","getCurrentNavItem","items","includeHidden","findCurrent","item","isCurrent","hideFromMenu","subItems","root","rootIndex","getCurrentNavPath","exludeHrefs","excludes","getPathToCurrent","href","includes","isItemValid","subPath","isValidArray","array","allowEmpty","isArray","values","delimeter","parts","values_1","_i","useLeafletMap","settings","container","setContainer","L","setLeaflet","setMap","_d","markersLayerGroup","setMarkersLayerGroup","prevMarkerId","_e","isLoaded","setLoaded","isRenderedRef","lastValidCenter","mapSettings","center","zoom","touchZoom","scrollWheelZoom","showZoomControls","zoomControlPosition","onlyScrollOnFocus","url","attribution","markers","fitBoundsPadding","leaflet","zoomControl","minZoom","maxZoom","control","position","addTo","once","enable","disable","on","ev","onClick","getZoom","tileLayer","group","FeatureGroup","clearLayers","icon","isInteractive","isActive","activeMarkerId","markerIcon","iconSize","sizeActive","iconAnchor","anchorActive","anchor","marker","latLng","riseOnHover","interactive","onMarkerClick","addLayer","onActiveMarkerChanged","markerId","onReady","handleMapMove","restrictToMarkersArea","markersBounds","getBounds","pad","isValid","northEdge","getNorth","eastEdge","getEast","southEdge","getSouth","westEdge","getWest","getCenter","newLat","newLng","lat","lng","panTo","animate","off","showAllMarkers","fitBounds","point","flyToActive","mapZoom","find","m","flyTo","flyToPosition","panToPosition","recalculateMapSize","invalidateSize","getCurrentZoom","isSupported","getParamsObj","params","obj","paramsObj","fromEntries","URLSearchParams","location","search","param","useGeolocation","enableHighAccuracy","autostart","setIsSupported","isEnabled","setIsEnabled","setLocation","setError","watchRef","navigator","cancel","geolocation","clearWatch","watchPosition","handleSuccess","handleError","watch","log","useObserverSupport","inital","observerSupported","setObserverSupport","IntersectionObserverEntry","getUrlParams","setUrlParam","currentParams","updateUrl","deleteUrlParam","delete","pathname","hash","history","replaceState","selectors","buttons","class","attribute","status","script","useCookieConsent","onSubmit","statusRenderer","cookieName","initialCookieTypes","cookieTypes","setCookieTypes","updateStatus","statusMsg","statusHtml","updatedAt","state","ReactDOMServer","renderToStaticMarkup","content","statusElements","querySelectorAll","len","innerHTML","updateConsentStatus","cPrev","handleScriptActivation","mapToCookieData","acceptAll","info","declineAll","acceptSelected","scriptTypeSelectors","scriptElements","newScriptElements","newScriptElement","hasAttribute","src","getAttribute","async","parentNode","removeChild","appendChild","activateTrackingScripts","setConsent","getCookieValue","assignFontBase","target","source","tKey","sKey","assignTo","output","sourceVal","targetVal","LibThemeProvider","children","ctx","useTheme","newTheme","modifyTheme","ThemeProvider","Fragment","activeTheme","modifications","combinedBaseTheme","base","combinedTheme","useLibTheme","withLibTheme","Component","View","section","templateObject_3","as","addSeperation","isStackable","bgIdent","global","paddingStacked","bgColor","marginStacked","bgColorPart","Back","div","templateObject_4","bgMode","clampSolidBg","mode","bgValue","getBackground","Section","forwardRef","anchorId","renderAs","noPadIdent","ident","displayName","mapToBgMode","preventSplit","isMirrored","wrapperWhitespace","clampWidth","addWhitespace","Wrapper","textColor","textGradient","hyphens","hasShadow","headingStyle","font","textDecoration","h1","headingType","Heading","rest","tag","fontSettings","colorGradientInverted","colorGradient","dangerouslySetInnerHTML","__html","defaultProps","copyStyle","columns","copyType","allowLinkIcons","iconChar","iconFont","iconScale","isFontIcon","isValidIconChar","vAlign","externalFilter","pseudoSelectors","String","fromCharCode","templateObject_5","Copy","_f","distinct","gridSettings","cols","gutter","getGridWidth","gridWidth","gridGutter","gridCols","validateValue","getGutter","mediumGutter","semilargeGutter","largeGutter","xlargeGutter","propertyTop","propertyLeft","templateObject_16","templateObject_13","templateObject_14","templateObject_15","mapVerticalAlign","alignMode","getVerticalAlign","selfAlign","valign","mediumAlign","semilargelAlign","largeAlign","xlargeAlign","templateObject_26","templateObject_23","templateObject_24","templateObject_25","mapHorizontalAlign","StyledCol","span","mediumSpan","semilargeSpan","largeSpan","xlargeSpan","templateObject_6","mediumMove","move","semilargeMove","largeMove","xlargeMove","templateObject_11","templateObject_7","templateObject_8","templateObject_9","templateObject_10","mediumTextAlign","textAlign","semilargeTextAlign","largeTextAlign","xlargeTextAlign","templateObject_18","templateObject_19","templateObject_20","toRight","templateObject_32","toLeft","templateObject_33","StyledGrid","hAlign","halign","templateObject_27","templateObject_28","templateObject_30","mapGutterToCol","colSettings","Grid","Children","comp","Grid$1","Row","Col","AccordionContainer","details","AccordionHead","summary","hasBg","Column","AccordionText","AccordionBlock","aside","isSelected","itemIcon","open","onToggle","hasAside","Accordion$1","currentItems","setCurrentItems","JsonLd","mainEntity","acceptedAnswer","generateFAQ","splice","a","linkStyles","Link","ariaLabel","tabIndex","dataSheet","rel","StatusFormatter","input","dateFormat","timeFormat","localeKey","_this","dateReplacements","dddd","weekDays","long","getDay","DDDD","ddd","short","DDD","dd","DD","MMMM","monthNames","getMonth","mmmm","MMM","mmm","mm","MM","yyyy","getYear","YYYY","yy","substr","YY","timeReplacements","hh","getHours","HH","hs","getHours12h","HS","getMinutes","ss","getSeconds","SS","ap","AP","setDate","setLocale","getFormattedStatus","placeholders","getFormattedDate","getFormattedTime","replace","foundString","dataKeys","formattedDate","RegExp","formattedTime","areOnSameDay","first","second","getFullYear","getDate","getFormattedTimespan","format","duration","seperator","endTime","endDate","setSeconds","endTimeFormatter","getDoubleDigitString","hours","de","en","Icon","MainLabel","Content","Title","ViewLink","Alert","title","description","customIcon","List","ul","ListItem","li","AlertList$1","alertCount","alertRefs","isCentered","SuperTitle","MainTitle","maxLines","colorMode","superTitle","superTitleAs","titleAs","titleSize","titleHyphens","isCovered","TertiaryWrapper","Actions","tertiary","StyledTitle","ContentText","StyledActions","Article$1","intro","asideText","halfAside","primaryAction","secondaryAction","hasContent","getAspectRatio","ratio","w","h","aspectFallback","AspectContainer","allowEdgeRadius","ratios","coverSpace","Img","img","showPlaceholder","Copyright","alt","copyright","imgRef","setIsLoaded","handleLoad","complete","srcSet","media","loading","clamp","ContentBlock","MobileImageContainer","DesktopImageContainer","IntroBlock","abstract","textType","textSize","_g","_h","clampTitle","_j","clampAbstract","maxTitleLines","maxAbstractLines","_k","clampText","maxTextLines","image","isTextCentered","ContactView","Avatar","Description","StyledIntro","hasDecorator","StyledContactBox","avatar","NewsletterWrapper","Badge","CallToAction$1","contact","badge","hasNewsletter","newsFormMain","SolidView","cardColor","hasLink","ImageView","StyledImage","hasIcon","TextContainer","Footer","SubLabel","templateObject_12","CardLink","Card","subLabel","decorator","CardView","defaultCardColor","CardItem","threeCols","CardList$2","maxThreeCols","num","Images","BackgroundImg","ForegroundContainer","hasTransition","hasAnim","initalValue","ForegroundImg","ForegroundOverlay","ImageLabel","ForegroundLabel","BackgroundLabel","ControlContainer","Control","ComparisonSlider$1","foregroundImg","backgroundImg","foregroundLabel","backgroundLabel","overlayColor","labelColor","dragControl","enableControlAnim","slideValue","setSlideValue","isHolding","setIsHolding","isDragging","setIsDragging","interacted","setInteracted","sideOffset","setSideOffset","controlRef","offsetWidth","handleInitalLoad","observer","IntersectionObserver","entries","isIntersecting","unobserve","rootMargin","threshold","observe","readyState","setCurrentPos","clientX","relativeClientX","percentage","currentTarget","onMouseMove","onMouseDown","onMouseUp","onMouseLeave","onTouchMove","touches","onTouchStart","onTouchEnd","clickable","IntroContainer","ExternalIconHolder","PromotionCard","externalLinkIcon","linkObj","externalIconString","isMain","CrossPromotion$1","card","Button","isDisabled","Button$1","Label","FieldHead","FieldMessage","FieldWrapper$1","Head","isRequired","Messages","errorMessage","infoMessage","getFormFieldTextSize","MapWrapper","isVisible","MapContainer","ViewToggle","button","ToggleText","ResetMap","ResetMapControl","TrackLocation","TrackLocationControl","FieldView","Area","textarea","hasError","memo","placeholder","initialMapCenter","onChange","onBlur","customToggle","customLocationControl","customResetControl","toggleLabel","trackLocationLabel","useMapView","setUseMapView","getValue","prevValue","setMarkers","_l","descValue","setDescValue","getMarkersFromPositions","positions","defaultMarker","markerList","positions_1","_m","mapClickHandler","setMapContainer","doubleClickTimerRef","_o","isGeolocationSupported","resetLocationTracking","cancelGeolocation","setMapToInitial","handleTrackClick","setToCurrentLocation","latlng","handleMapClick","coords","latitude","longitude","toggleViewState","FieldWrapper","preventDefault","viewState","handleClick","Icons.ToggleOn","Icons.ToggleOff","Icons.LocationSearch","required","enableMemo","toInteger","dirtyNumber","NaN","number","Number","ceil","floor","requiredArgs","args","toDate","argument","argStr","Error","stack","addMilliseconds","dirtyDate","dirtyAmount","amount","getTimezoneOffsetInMilliseconds","utcDate","UTC","getMilliseconds","setUTCFullYear","isDate","formatDistanceLocale","lessThanXSeconds","one","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","buildFormatLongFn","options","defaultWidth","formats","formatLong","full","time","dateTime","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","buildLocalizeFn","dirtyIndex","dirtyOptions","valuesArray","context","formattingValues","defaultFormattingWidth","_defaultWidth","_width","argumentCallback","localize","ordinalNumber","_options","rem100","era","narrow","abbreviated","wide","quarter","month","day","dayPeriod","am","pm","midnight","noon","morning","afternoon","evening","night","buildMatchFn","string","matchPattern","matchPatterns","defaultMatchWidth","matchResult","matchedString","parsePatterns","defaultParseWidth","findIndex","pattern","test","findKey","valueCallback","object","predicate","buildMatchPatternFn","parseResult","parsePattern","any","locale","code","formatDistance","token","count","tokenValue","addSuffix","comparison","formatRelative","_date","_baseDate","weekStartsOn","firstWeekContainsDate","subMilliseconds","startOfUTCISOWeek","getUTCDay","diff","setUTCDate","getUTCDate","setUTCHours","getUTCISOWeekYear","year","getUTCFullYear","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfUTCISOWeekYear","fourthOfJanuary","startOfUTCWeek","localeWeekStartsOn","defaultWeekStartsOn","RangeError","getUTCWeekYear","localeFirstWeekContainsDate","defaultFirstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","startOfUTCWeekYear","firstWeek","addLeadingZeros","targetLength","sign","abs","formatters","signedYear","getUTCMonth","getUTCHours","getUTCMinutes","getUTCSeconds","numberOfDigits","milliseconds","getUTCMilliseconds","pow","dayPeriodEnum","G","unit","lightFormatters","Y","signedWeekYear","weekYear","R","u","Q","q","M","week","round","getUTCWeek","I","isoWeek","getUTCISOWeek","D","dayOfYear","setUTCMonth","startOfYearTimestamp","difference","getUTCDayOfYear","E","dayOfWeek","localDayOfWeek","c","isoDayOfWeek","dayPeriodEnumValue","toLowerCase","B","H","K","k","S","X","_localize","timezoneOffset","_originalDate","getTimezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","O","formatTimezoneShort","z","originalDate","T","offset","dirtyDelimiter","absOffset","minutes","delimiter","dateLongFormatter","timeLongFormatter","longFormatters","dateTimeFormat","datePattern","timePattern","protectedDayOfYearTokens","protectedWeekYearTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","throwProtectedError","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","dirtyFormatStr","formatStr","defaultLocale","formatterOptions","substring","firstCharacter","longFormatter","cleanEscapedString","formatter","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","dirtyLeftDate","dirtyRightDate","dateLeft","dateRight","standalone","withPreposition","monthValues","formattingMonthValues","ButtonGhost","ButtonGhost$1","PickerView","DatepickerButton","hasDateValue","DatepickerButtonMain","DatepickerFoot","FootFlex","ButtonLabel","ButtonGhostLabel","PickerButton","isFocused","altText","startDate","setFocused","singleSelect","Icons.CalendarToday","Icons.DateRange","PickerHeader","dateSubmitLabel","dateDeleteLabel","minDate","maxDate","onDataChange","deleteAction","submitAction","nextCtrlUrl","prevCtrlUrl","pickerRef","pickerBtnRef","isSmall","setIsSmall","setStartDate","setEndDate","focused","_interopNamespace","require","shouldBeSmall","setOpen","prevMonthAction","nextMonthAction","handleSubmit","handleReset","ReactDatePicker","dirtyDateToCompare","dateToCompare","isBefore","selected","monthsShown","shouldCloseOnSelect","customInput","showPopperArrow","disabledKeyboardNavigation","isClearable","onClickOutside","stopPropagation","renderCustomHeader","monthDate","customHeaderCount","decreaseMonth","increaseMonth","visibility","prevDateStart","prevDateEnd","nextDateStart","nextDateEnd","RadioContainer","Original","StyledRadioButton","checked","CheckboxContainer","Box","StyledCheck","FieldSet","fieldset","Fields","InputField","Select","isOpen","SelectMain","Indicator","Flyout","ItemStyle","Item","ClearItem","Container","selectedItem","indicator","setIsOpen","activeItemIndex","setActiveItemIndex","selectItems","setSelectItems","selectBtnRef","isMounted","itemHasBeenClicked","newItem","activeItem","onKeyDown","focus","FieldMain","FileItem","UploadItem","DeleteIcon","onUploadFiles","acceptedFormats","uploadLabel","customDeleteIcon","customUploadIcon","selectedFiles","setSelectedFiles","fileInputRef","previews","setPreviews","file","preview","fileName","uid","Icons.DeleteForever","click","Icons.UploadFile","files","newFiles","promises","isUploading","reader","FileReader","onload","readAsDataURL","readFileAsync","all","multiple","disabled","accept","fieldValidator","config","inputType","errorMsg","areaValidator","selectValidator","datepickerValidator","single","singleDateError","multiDateError","locationValidator","fieldGroupValidator","groupType","selectValues","uploadValidator","StyledSection","Form","form","FieldContainer","FormFooter","Status","ActionContainer","DynamicForm$1","fields","definitions","subjectLine","targetEmails","submitReponse","setSubmitResponse","initalData","initialOption","initialDates","initalArray_1","field","initialChecked","every","useFormik","initialValues","helpers","valuesAndMails","setSubmitting","response","resetForm","isError","validateOnBlur","validateOnChange","validate","errors","error_1","error_2","error_3","error_4","error_5","error_6","error_7","handleChange","handleBlur","setFieldTouched","validateField","submitForm","setValues","isSubmitting","touched","dirty","latestValuesRef","setField","shouldValidate","fieldKeys","noValidate","isTouched","setTouched","Textfield","renderField","area","Textarea","renderAreaField","datepicker","dates","start","end","DatepickerCmp","renderDatepickerField","locationData","mappedData","LocationField","renderLocationField","checkbox","groupData","ci","Checkbox","cIndex","renderCheckboxGroupField","radio","fi","RadioButton","renderRadioGroupField","select","SelectDropdown","dropdownItems","selectedOption","renderSelectField","upload","FileUploadCmp","addBtnLabel","renderUploadField","message","generateTextField","NewsletterForm$1","customField","action","method","formRef","initialData","submit","generationProps","isClickable","Tag","ImageFlex","CardImage","MainContent","TagContainer","TextWrapper","TagWrapper","TitleLink","Text","EventBlock","customTag","onTagClick","images","tags","publishedAt","handleTagClick","filteredTags","cardImages","clickHandler","Filter","Pointer","Pointer$1","Events","FilterIcon","EventItem","ListFooter","ShowMore","itemCount","EventOverview$1","events","showMoreText","filterName","activeTags","selectedTags","setSelectedTags","visibleRows","setVisibleRows","targetRef","eventCount","setNewPos","getFilters","filters","tagsFilter","paramTags","enableToggling","prevCopy","itemIndex","filteredEvents","filtered","hasTags","visibleEvents","entry","disconnect","timespan","address","EventList$1","event","tagHref","validUrl","URL","newParams","getEventFilterParams","Infos","InfoList","groupItems","hasItems","ii","ImageContainer","ImageBackground","StyledTextImage","EventTitle","EventDateTime","EventAddress","EventText","EventDetail$1","infos","hasInfos","secondaryImage","backgroundImage","SubTitle","Fact","subTitle","FactFill","FactGrid$1","facts","factCount","cardRefs","fact","FactsContainer","FactItem","hasBack","hasText","FactList$1","ArticleContent","Action","Feature","PageScrollDirection","FeatureList$1","features","featureCount","isHalf","feature","Gallery$1","isFull","AnimationContainer","PosterImage","AnimationImage","opacity","zoomPoint","AnimationImages","interval","intervalRef","initialTimeoutRef","activeImg","setActiveImg","changeImage","clearInterval","setInterval","imgZoom","imgZoomPoint","getValidZoomPoint","zIndex","HeaderKenBurns","onImageChange","currentMq","loadedImages","setLoadedImages","imagePromises","requestedImages","req","preloadImages","promise","loadedImg","imagePromises_1","PosterView","BgImage","HeaderPoster","bgImage","PlaceholderImg","AutoplayVideo","video","HeaderVideo","loadOnMobile","placeholderImg","videoUrl","videoRef","viewRef","isObserverSupported","isMobile","isVideoAllowed","isVideoActive","setVideoActive","viewEl","muted","autoPlay","loop","playsInline","onCanPlayThrough","nav","NavLink","showOnMobile","showOnDesktop","NavLabel","Seperator","BackIconContainer","BreadcrumbItem","BarBreadcrumbs","rootLink","rootLabel","navItems","back","currentNavPath","rootItem","takeSpace","Logo","BarLogo","logo","Toggle","BarMenuToggle","isExpanded","BarNavList","navLinks","SelectView","LanguageLink","LanguageSwitcher","langs","languageIcon","lang","Header","LanguageCol","MenuHeader","menuStates","Skeletons.MenuToggle","closeMenu","navigationStyle","Backdrop","Stage","getMenuHeaderHeights","navBarSize","ScrollContainer","ScrollArea","NavView","NavList","hasNonFeaturedItems","NavItemView","NavItemContent","isFeatured","NavItemIcon","NavItemLabel","NavItemCollapse","NavItemCollapseIcon","isCollapsed","NavItemLink","NavItemButton","templateObject_17","SubNavList","isIndented","NavigationItem","subNavTitle","onItemClick","collapseIcon","canFocus","hasSubItems","MenuNav","SubItem","SubNavItem","SubNavLink","NavigationSubItem","SecondaryNavList","templateObject_21","SecondaryNavLink","templateObject_22","SubList","menuFilter","MenuFlyout","isIndexPage","mainNavigation","subNavigation","backdropFilter","header","footer","onClose","navItemsHeader","flyoutRef","hasHeader","largeHeights","smallHeights","hasMenuHeader","mainList","subList","activeItems","setActiveItems","currentNavEl","setCurrentNavEl","currentSubNavEl","setCurrentSubNavEl","handleFocus","contains","scrollIntoView","block","inline","hasCurrentSubItem","subItem","Menu","typeSettings","getTopHeights","hasTopBar","getMainHeights","getBottomHeights","hasBottomBar","getFullHeight","exclude","includeTop","includeMain","includeBottom","topHeights","mainHeights","bottomHeights","isSticky","isAnimated","bgGradient","background","Main","TopContent","BottomContent","BarSpacer","hasFooter","NavBar","pageFlow","topBg","mainBg","bottomBg","onContentBg","topBar","mainBar","bottomBar","clampContent","isOverContent","showBg","topBackground","mainBackground","bottomBackground","onContentBackground","topBarContent","mainBarContent","bottomBarContent","Skeletons.Column","getNavbarState","navbarIdent","hasTop","hasMain","hasBottom","isStickable","generateNavbarIdent","stateArray","getFullNavbarHeights","genHeightStyles","mainIdent","genIdent","mainTopIdent","mainBottomIdent","fullIdent","navMainHeight","getNavHeight","navMainTopHeight","navMainBottomHeight","navFullHeight","mapToSelector","idents","refHeight","StyledPoster","HeaderSection","HeaderSectionSmall","kenBurnsZoom","kenBurnsZoomPoint","kenBurnsInterval","Overlay","textOnImage","ContentMobile","Header$1","focusPoint","customImgOverlay","overlay","ItemContainer","Items","ItemLink","IconList$1","toggle","showLessText","enableToggle","showMore","setShowMore","handleToggleClick","isToggled","additionalProps","IndexLink","LinkLabel","IconWrapper","IndexList$1","scrollToOffset","topOffset","setTopOffset","handleLinkClick","getElementById","pushState","navbarHeights","Intro$2","MapSection","CardWrapper","CardContainer","InfoCardView","CardHeader","ContactList","ContactListLink","AddressContainer","CompanyInfo","companyName","street","postalCode","city","country","Desc","LocationInfoCard","addressIcon","addressIconContent","phoneIconContent","telephone","mailIconContent","email","Controls","FylToCtrlContainer","Map$3","provider","flyToZoom","initialLocation","locations","allMarkersOnInit","flyToControl","controlNext","controlPrev","activeLocationId","setActiveLocationId","isDirty","setIsDirty","activeLocation","goToNext","currentIndex","newIndex","goToPrevious","geo","streetAddress","addressLocality","addressRegion","addressCountry","generateLocalBusiness","Icons.ArrowRightGhost","Icons.ArrowLeftGhost","TitleIcon","NavBlock","customTitleIcon","NavList$1","isTop","AuthorContainer","Author","StyledCopy","NewsAuthorCard$1","author","ImageLink","BorderPlaceholder","Tags","PublishDate","NewsCard","publishDate","News","NewsItem","getNewsFilterParams","NewsOverview$1","news","setItemsPerRow","newsCount","paramRows","filteredNews","visibleNews","NewsFooter$1","NewsImages$1","IntroHead","MetaBlock","NewsIntro$1","meta","tagLink","NewsList$1","Caption","TableContainer","TableBody","table","TableHead","alignRight","TableData","TableBlock","row","tableTitle","rowTitle","lastCol","itemText","TableWrapper","NewsTable$1","tableItems","NewsText$1","VideoControls","ConsentOverlay","ConsentContent","ConsentText","Iframe","iframe","VideoCard","embedId","playIcon","consentText","consentAction","setIsActive","showConsent","setShowConsent","handleConsentActionClick","allow","consentProps","NewsVideo$1","BaseStyles","Callout","MEDIA_QUERIES","NumberListCard","digit","CardList","NumberList$1","useContext","ThemeContext","numbersRef","Parallax","contentWidth","figure","verticallyCentered","Intro","Poster$1","horizontallyCentered","ItemList","ItemBlock","ListHead","Price","PriceBlock","price","PriceList$1","isHighlighted","PriceTag","hasBackground","PriceTable$1","priceTagCount","Source","Quote$1","citeUrl","cite","ImageWrapper","SimpleImage$1","Cards","FollowUs","InstagramIcon","SocialWall$1","hashTag","followUs","socialIcon","Table$1","Video","VideoBlock","urls","controls","useImperativeHandle","Figure","isSplitted","mapToTeaserBgMode","Teaser$1","hasVideo","aspectRatios","getGridColOfContent","WideVideo","WideImage","TeaserWide$1","TimelineBlock","isSwitched","TimelineText","ItemTitle","ItemTextBlock","Timeline$1","targetRefs","setTargetRefs","observerRef","setActiveItem","Video$2","VideoContainer","RawVideo$1","videoUrls","autoplay","isStarted","setIsStarted","JobInfos","JobCard","jobTitle","employmentTypes","totalLocations","allLocationsLabel","modelIcon","locationIcon","hasEmploymentType","validLocations","loc","hasLocations","locationText","Magnifier","Field","SearchIcon","ClearBtn","FilterField","submitIcon","clearIcon","newValue","escapeRegExp","removeMatchIntersections","prioItem","filterJobs","filterQuery","jobs","prioList","job","exactNameMatches","jobExactTitleFilter","priority","nameMatches","preparedQuery","perparedJobTitle","jobSoftTitleFilter","locationNameMatches","regex","preparedName","jobLocationNameFilter","typeMatches","preparedText","jobTypesFilter","JobList$1","totalJobLocations","allJobLocationsLabel","initialFilterQuery","filterPlaceholder","hasFilter","filterSubmitIcon","filterClearIcon","jobCount","setFilterQuery","jobMatches","queryParts","part","trim","searchMatches","queryParts_1","intersectionIndex","sItem","intersections","matches_1","getFilter","urlFilter","ArticleHead","JobArticle$1","organization","datePosted","jsonLd","jobDesc","directApply","toISOString","employmentType","hiringOrganization","jobLocation","generateJob","FactsWrapper","POIFacts","customFact","Facts","PoiTitle","PoiText","PointOfInterestDetail$1","Body","InfoCol","POICard","shortDescription","hasFacts","filterPois","pois","poi","poiExactNameFilter","poiSoftNameFilter","factMatches","preparedFact","poiFactFilter","infoMatches","poiInfoFilter","descMatches","preparedDesc","poiDescriptionFilter","PointOfInterestOverview$1","enableFiltering","poiMatches","PoiMapSection","isLarge","RequestGeolocationBtn","CardStage","MapCardView","MapCardHeader","CloseBtn","MapCard","customClose","PointOfInterestMap$1","initialPointOfInterest","showOwnPosition","currentPosMarker","customCardClose","customLocationRequest","activePoiId","setActivePoiId","activePOI","resetGeolocation","mapMarkers","defaultPosMarker","currentZoom","zoom_1","zoom_2","backColor","SubmitBtn","hasLeftIcon","hasRightIcon","ControlBtn","Dot","Bdot","bgOpacity","AcceptIcon","DeclineIcon","CookieIcon","TitleView","TextView","ClampWrapper","isClamped","TextToggle","SelectTitle","CookieActions","IconContainer","StyledLink","SocialList","MenuFooter","socials","hasSocials","hasLangs","NavBarBottom","navStates","Skeletons.Breadcrumbs","ToggleColumn","LogoColumn","ActionsColumn","LanguageWrapper","NavBarMain","isMenuOpen","openMenu","desktop","Skeletons.Logo","mobileInverted","mobile","desktopInverted","StyledNavList","Skeletons.NavList","NavBarTop","languages","LinkListView","BottomLinkItem","FooterBottomGrid$1","LinkList","links","brandIcon","brand","LeftWrapper","FooterBottomBar","linksLeft","linksRight","FooterBottomGrid","Icons.Language","FooterSection","MainView","ColTitle","LinkItem","CustomCol","FootNote","Footer$1","siteLinks","customColumn","footNote","bottomLinksLeft","bottomLinksRight","customCol","bottom","FooterArticle","socialTitle","buttonIcon","onFocus","urlWhitelist","overlayOpacity","updatedDate","typeKeys","setIsVisible","allConsentButtons","bindConsentButtons","urlString","whitelist","isInWhiteList","isUrlInWhitelist","overflow","additionalAcceptProps","additionalDeclineProps","allowClamping","setIsClamped","canClamp","cRef","scrollHeight","isCollapsible","isNavBarSticky","setIsNavBarSticky","isNavBarOpen","setNavBarOpen","setIsTop","isInOffset","setIsInOffset","leftOffsetFromTop","setLeftOffsetFromTop","lastScrollPos","pxSinceLastSwitch","DOWN","scrollDirection","setScrollDirection","directionDownOffset","directionOffset","down","directionUpOffset","up","scrollState","onLeftOffset","absAccPx","UP","usePageScroll","navbarSize","initialMenuState","setIsMenuOpen","prevMenuState","setRoot","openBtnRef","closeBtnRef","defaultSettings","openMenuIdent","closeMenuIdent","handleKeyDown","useMenuKeyboard","isOnPageTop","isInTopOffset","menuHeader","menuFooter","menuNavItemsHeader","getNavBarIdent","moveRatio","direction","yTransform","setYTransform","setContainerRef","parallaxRef","prevEl","previousElementSibling","dataset","stackIdent","containerPos","transform","onClear","keyCode","fileExtension","fallbacks","fallAcc","sizeAdjust","altFont","rootPath","crossOrigin","sourcePath","pre","defaultValue","setArray","newEl","remove","lastEl","imageUrls","isReady","setReady","xxxLarge","res","items_1","imgCount","setElement","setHeight","calcHeight","offsetHeight","setParams","posterImage","currentImage","setCurrentImage","workingImage","webp","initialTopOffset","onEnterOffset","canTouch","setCanTouch","maxTouchPoints","msMaxTouchPoints"],"mappings":"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"}