@treely/strapi-slices 2.0.0 → 2.2.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 (246) hide show
  1. package/package.json +1 -2
  2. package/src/components/SEOTags/SEOTags.tsx +53 -0
  3. package/src/components/SEOTags/index.ts +1 -0
  4. package/src/constants/metadata.ts +3 -0
  5. package/src/constants/sectionsConfig.ts +20 -0
  6. package/src/index.tsx +119 -0
  7. package/src/models/HeaderType.ts +6 -0
  8. package/src/models/Image.ts +6 -0
  9. package/src/models/PageMetadata.ts +11 -0
  10. package/src/models/PageProps.ts +32 -0
  11. package/src/models/strapi/StrapiBlogPostProps.ts +7 -0
  12. package/src/models/strapi/StrapiCustomerStoryProps.ts +9 -0
  13. package/src/models/strapi/StrapiPageProps.ts +7 -0
  14. package/src/models/strapi/StrapiProjectProps.ts +7 -0
  15. package/src/test/mocks/getStaticPropsContext.ts +9 -0
  16. package/src/utils/mergeGlobalAndStrapiBlogPostData.test.ts +154 -0
  17. package/src/utils/mergeGlobalAndStrapiBlogPostData.ts +68 -0
  18. package/src/utils/mergeGlobalAndStrapiCustomerStoryData.test.ts +149 -0
  19. package/src/utils/mergeGlobalAndStrapiCustomerStoryData.ts +68 -0
  20. package/src/utils/mergeGlobalAndStrapiPageData.test.ts +254 -0
  21. package/src/utils/mergeGlobalAndStrapiPageData.ts +81 -0
  22. package/src/utils/mergeGlobalAndStrapiProjectData.test.ts +243 -0
  23. package/src/utils/mergeGlobalAndStrapiProjectData.ts +79 -0
  24. package/dist/components/ContextProvider/ContextProvider.d.ts +0 -8
  25. package/dist/components/ContextProvider/index.d.ts +0 -1
  26. package/dist/components/CreditsAvailableBadge/CreditsAvailableBadge.d.ts +0 -8
  27. package/dist/components/CreditsAvailableBadge/index.d.ts +0 -2
  28. package/dist/components/CreditsAvailableBadge/messages.de.d.ts +0 -7
  29. package/dist/components/CreditsAvailableBadge/messages.en.d.ts +0 -7
  30. package/dist/components/FullScreenImage/FullScreenImage.d.ts +0 -9
  31. package/dist/components/FullScreenImage/ZoomableImage.d.ts +0 -8
  32. package/dist/components/FullScreenImage/index.d.ts +0 -2
  33. package/dist/components/MinimalProviders/MinimalProviders.d.ts +0 -7
  34. package/dist/components/MinimalProviders/index.d.ts +0 -2
  35. package/dist/components/SliceRenderer/SliceRenderer.d.ts +0 -19
  36. package/dist/components/SliceRenderer/index.d.ts +0 -1
  37. package/dist/components/StrapiLinkButton/StrapiLinkButton.d.ts +0 -18
  38. package/dist/components/StrapiLinkButton/index.d.ts +0 -2
  39. package/dist/components/StrapiLinkButtonWithIcon/StrapiLinkButtonWithIcon.d.ts +0 -7
  40. package/dist/components/StrapiLinkButtonWithIcon/index.d.ts +0 -2
  41. package/dist/components/portfolio/Contact/Contact.d.ts +0 -10
  42. package/dist/components/portfolio/Contact/index.d.ts +0 -2
  43. package/dist/components/portfolio/DocumentsDownloadList/DocumentsDownloadList.d.ts +0 -6
  44. package/dist/components/portfolio/DocumentsDownloadList/index.d.ts +0 -2
  45. package/dist/components/portfolio/DocumentsDownloadList/messages.de.d.ts +0 -5
  46. package/dist/components/portfolio/DocumentsDownloadList/messages.en.d.ts +0 -5
  47. package/dist/components/portfolio/ProjectInfo/ProjectInfo.d.ts +0 -18
  48. package/dist/components/portfolio/ProjectInfo/index.d.ts +0 -2
  49. package/dist/components/portfolio/ProjectInfo/messages.de.d.ts +0 -15
  50. package/dist/components/portfolio/ProjectInfo/messages.en.d.ts +0 -15
  51. package/dist/components/portfolio/SmallCheckout/SmallCheckout.d.ts +0 -14
  52. package/dist/components/portfolio/SmallCheckout/index.d.ts +0 -2
  53. package/dist/components/portfolio/SmallCheckout/messages.de.d.ts +0 -16
  54. package/dist/components/portfolio/SmallCheckout/messages.en.d.ts +0 -16
  55. package/dist/constants/animations.d.ts +0 -1
  56. package/dist/constants/api.d.ts +0 -3
  57. package/dist/constants/breakpoints.d.ts +0 -8
  58. package/dist/constants/domain.d.ts +0 -2
  59. package/dist/constants/fontCustomizations.d.ts +0 -6
  60. package/dist/constants/formatter.d.ts +0 -6
  61. package/dist/constants/globalStyle.d.ts +0 -1
  62. package/dist/constants/mapbox.d.ts +0 -17
  63. package/dist/constants/strapi.d.ts +0 -1
  64. package/dist/icons/LinkedInIcon.d.ts +0 -3
  65. package/dist/index.d.ts +0 -1
  66. package/dist/index.js +0 -8
  67. package/dist/models/BBox.d.ts +0 -2
  68. package/dist/models/CreditsAvailableState.d.ts +0 -7
  69. package/dist/models/Locale.d.ts +0 -2
  70. package/dist/models/PortfolioProject.d.ts +0 -7
  71. package/dist/models/forms/CheckoutForm.d.ts +0 -4
  72. package/dist/models/fpm/FPMProject.d.ts +0 -37
  73. package/dist/models/fpm/Issuer.d.ts +0 -6
  74. package/dist/models/strapi/IStrapi.d.ts +0 -4
  75. package/dist/models/strapi/IStrapiData.d.ts +0 -5
  76. package/dist/models/strapi/IStrapiResponse.d.ts +0 -13
  77. package/dist/models/strapi/StrapiAuthor.d.ts +0 -10
  78. package/dist/models/strapi/StrapiAvatarWithName.d.ts +0 -8
  79. package/dist/models/strapi/StrapiBanner.d.ts +0 -9
  80. package/dist/models/strapi/StrapiBlogPost.d.ts +0 -25
  81. package/dist/models/strapi/StrapiButtonWithVariant.d.ts +0 -6
  82. package/dist/models/strapi/StrapiCategory.d.ts +0 -8
  83. package/dist/models/strapi/StrapiContactArea.d.ts +0 -10
  84. package/dist/models/strapi/StrapiCustomerStory.d.ts +0 -21
  85. package/dist/models/strapi/StrapiDefaultHeader.d.ts +0 -6
  86. package/dist/models/strapi/StrapiGlobal.d.ts +0 -26
  87. package/dist/models/strapi/StrapiGlossaryItem.d.ts +0 -6
  88. package/dist/models/strapi/StrapiHeroCard.d.ts +0 -13
  89. package/dist/models/strapi/StrapiImage.d.ts +0 -10
  90. package/dist/models/strapi/StrapiImageFormat.d.ts +0 -12
  91. package/dist/models/strapi/StrapiImageWithLink.d.ts +0 -6
  92. package/dist/models/strapi/StrapiLink.d.ts +0 -11
  93. package/dist/models/strapi/StrapiLinkList.d.ts +0 -7
  94. package/dist/models/strapi/StrapiLinkPage.d.ts +0 -10
  95. package/dist/models/strapi/StrapiLinkWithIcon.d.ts +0 -7
  96. package/dist/models/strapi/StrapiLocalization.d.ts +0 -7
  97. package/dist/models/strapi/StrapiMedia.d.ts +0 -27
  98. package/dist/models/strapi/StrapiMetadata.d.ts +0 -13
  99. package/dist/models/strapi/StrapiNavMenu.d.ts +0 -13
  100. package/dist/models/strapi/StrapiPage.d.ts +0 -17
  101. package/dist/models/strapi/StrapiPortfolio.d.ts +0 -10
  102. package/dist/models/strapi/StrapiPortfolioCard.d.ts +0 -15
  103. package/dist/models/strapi/StrapiProject.d.ts +0 -23
  104. package/dist/models/strapi/StrapiProjectCard.d.ts +0 -18
  105. package/dist/models/strapi/StrapiQuoteCard.d.ts +0 -7
  106. package/dist/models/strapi/StrapiShapesCard.d.ts +0 -11
  107. package/dist/models/strapi/StrapiTextCardWithIcons.d.ts +0 -8
  108. package/dist/models/strapi/StrapiTopBanner.d.ts +0 -7
  109. package/dist/rootMessages.de.d.ts +0 -58
  110. package/dist/rootMessages.en.d.ts +0 -58
  111. package/dist/slices/Blog/Blog.d.ts +0 -10
  112. package/dist/slices/Blog/index.d.ts +0 -2
  113. package/dist/slices/Blog/styles.d.ts +0 -7
  114. package/dist/slices/BlogCards/BlogCards.d.ts +0 -18
  115. package/dist/slices/BlogCards/index.d.ts +0 -2
  116. package/dist/slices/Comparison/Comparison.d.ts +0 -33
  117. package/dist/slices/Comparison/Icon.d.ts +0 -7
  118. package/dist/slices/Comparison/index.d.ts +0 -2
  119. package/dist/slices/Comparison/messages.de.d.ts +0 -4
  120. package/dist/slices/Comparison/messages.en.d.ts +0 -4
  121. package/dist/slices/Cta/Cta.d.ts +0 -26
  122. package/dist/slices/Cta/index.d.ts +0 -2
  123. package/dist/slices/Cta/messages.de.d.ts +0 -5
  124. package/dist/slices/Cta/messages.en.d.ts +0 -5
  125. package/dist/slices/CtaOnly/CtaOnly.d.ts +0 -8
  126. package/dist/slices/CtaOnly/index.d.ts +0 -2
  127. package/dist/slices/CustomerStories/CustomerStories.d.ts +0 -10
  128. package/dist/slices/CustomerStories/index.d.ts +0 -2
  129. package/dist/slices/CustomerStories/messages.de.d.ts +0 -4
  130. package/dist/slices/CustomerStories/messages.en.d.ts +0 -4
  131. package/dist/slices/Facts/Facts.d.ts +0 -16
  132. package/dist/slices/Facts/index.d.ts +0 -2
  133. package/dist/slices/FullWidthHighlightQuote/FullWidthHighlightQuote.d.ts +0 -10
  134. package/dist/slices/FullWidthHighlightQuote/index.d.ts +0 -2
  135. package/dist/slices/FullWidthImage/FullWidthImage.d.ts +0 -11
  136. package/dist/slices/FullWidthImage/index.d.ts +0 -2
  137. package/dist/slices/FullWidthImageSlider/FullWidthImageSlider.d.ts +0 -12
  138. package/dist/slices/FullWidthImageSlider/index.d.ts +0 -2
  139. package/dist/slices/FullWidthImageSlider/styles.d.ts +0 -290
  140. package/dist/slices/FullWidthImageSlider/utils.d.ts +0 -1
  141. package/dist/slices/FullWidthImageSlider/utils.test.d.ts +0 -1
  142. package/dist/slices/Glossary/Glossary.d.ts +0 -9
  143. package/dist/slices/Glossary/index.d.ts +0 -2
  144. package/dist/slices/Glossary/messages.de.d.ts +0 -6
  145. package/dist/slices/Glossary/messages.en.d.ts +0 -6
  146. package/dist/slices/Hero/Hero.d.ts +0 -17
  147. package/dist/slices/Hero/index.d.ts +0 -2
  148. package/dist/slices/IconGrid/IconGrid.d.ts +0 -18
  149. package/dist/slices/IconGrid/index.d.ts +0 -2
  150. package/dist/slices/ImageGrid/ImageGrid.d.ts +0 -18
  151. package/dist/slices/ImageGrid/index.d.ts +0 -2
  152. package/dist/slices/ImageTextSequence/ImageTextSequence.d.ts +0 -19
  153. package/dist/slices/ImageTextSequence/index.d.ts +0 -2
  154. package/dist/slices/LeftTextRightCard/LeftTextRightCard.d.ts +0 -17
  155. package/dist/slices/LeftTextRightCard/index.d.ts +0 -2
  156. package/dist/slices/LinkCardsGrid/LinkCardsGrid.d.ts +0 -18
  157. package/dist/slices/LinkCardsGrid/index.d.ts +0 -2
  158. package/dist/slices/LogoGridWithText/LogoGridWithText.d.ts +0 -12
  159. package/dist/slices/LogoGridWithText/index.d.ts +0 -2
  160. package/dist/slices/MapHero/MapHero.d.ts +0 -15
  161. package/dist/slices/MapHero/index.d.ts +0 -2
  162. package/dist/slices/MapHero/styles.d.ts +0 -16
  163. package/dist/slices/ProjectFacts/ProjectFacts.d.ts +0 -34
  164. package/dist/slices/ProjectFacts/index.d.ts +0 -2
  165. package/dist/slices/ProjectFacts/messages.de.d.ts +0 -5
  166. package/dist/slices/ProjectFacts/messages.en.d.ts +0 -5
  167. package/dist/slices/ProjectsGrid/ProjectsGrid.d.ts +0 -8
  168. package/dist/slices/ProjectsGrid/index.d.ts +0 -2
  169. package/dist/slices/ProjectsMap/MapMarker.d.ts +0 -11
  170. package/dist/slices/ProjectsMap/ProjectsMap.d.ts +0 -16
  171. package/dist/slices/ProjectsMap/index.d.ts +0 -2
  172. package/dist/slices/ProjectsMap/mapboxStyle.d.ts +0 -2
  173. package/dist/slices/ProjectsMap/messages.de.d.ts +0 -4
  174. package/dist/slices/ProjectsMap/messages.en.d.ts +0 -4
  175. package/dist/slices/QAndA/QAndA.d.ts +0 -43
  176. package/dist/slices/QAndA/index.d.ts +0 -2
  177. package/dist/slices/QuoteCards/QuoteCards.d.ts +0 -15
  178. package/dist/slices/QuoteCards/index.d.ts +0 -2
  179. package/dist/slices/RichTextSection/RichTextSection.d.ts +0 -7
  180. package/dist/slices/RichTextSection/index.d.ts +0 -2
  181. package/dist/slices/ShopCheckout/ShopCheckout.d.ts +0 -16
  182. package/dist/slices/ShopCheckout/index.d.ts +0 -2
  183. package/dist/slices/ShopCheckout/messages.de.d.ts +0 -15
  184. package/dist/slices/ShopCheckout/messages.en.d.ts +0 -15
  185. package/dist/slices/SideBySideImages/SideBySideImages.d.ts +0 -12
  186. package/dist/slices/SideBySideImages/index.d.ts +0 -2
  187. package/dist/slices/SmallHero/SmallHero.d.ts +0 -20
  188. package/dist/slices/SmallHero/index.d.ts +0 -2
  189. package/dist/slices/Steps/Steps.d.ts +0 -19
  190. package/dist/slices/Steps/index.d.ts +0 -2
  191. package/dist/slices/TextCardGrid/TextCardGrid.d.ts +0 -20
  192. package/dist/slices/TextCardGrid/index.d.ts +0 -2
  193. package/dist/slices/TextCarousel/TextCarousel.d.ts +0 -13
  194. package/dist/slices/TextCarousel/index.d.ts +0 -2
  195. package/dist/slices/TextCarousel/styles.d.ts +0 -281
  196. package/dist/slices/TextWithCard/TextWithCard.d.ts +0 -20
  197. package/dist/slices/TextWithCard/index.d.ts +0 -2
  198. package/dist/slices/TextWithTextCards/TextWithTextCards.d.ts +0 -15
  199. package/dist/slices/TextWithTextCards/index.d.ts +0 -2
  200. package/dist/slices/Video/Video.d.ts +0 -10
  201. package/dist/slices/Video/index.d.ts +0 -2
  202. package/dist/strapi-slices.cjs.development.js +0 -4653
  203. package/dist/strapi-slices.cjs.development.js.map +0 -1
  204. package/dist/strapi-slices.cjs.production.min.js +0 -2
  205. package/dist/strapi-slices.cjs.production.min.js.map +0 -1
  206. package/dist/strapi-slices.esm.js +0 -4640
  207. package/dist/strapi-slices.esm.js.map +0 -1
  208. package/dist/test/defaultMocks/next.d.ts +0 -2
  209. package/dist/test/integrationMocks/fpmProjectMock.d.ts +0 -3
  210. package/dist/test/mocks/portfolioProjectMock.d.ts +0 -3
  211. package/dist/test/setupTests.d.ts +0 -1
  212. package/dist/test/storybookMocks/storybookMedia.d.ts +0 -1
  213. package/dist/test/storybookMocks/storybookStrapiMedia.d.ts +0 -8
  214. package/dist/test/strapiMocks/minimalGlobalData.d.ts +0 -4
  215. package/dist/test/strapiMocks/strapiAvatarWithName.d.ts +0 -12
  216. package/dist/test/strapiMocks/strapiBlogPost.d.ts +0 -3
  217. package/dist/test/strapiMocks/strapiContact.d.ts +0 -2
  218. package/dist/test/strapiMocks/strapiCustomerStory.d.ts +0 -3
  219. package/dist/test/strapiMocks/strapiHeroCard.d.ts +0 -2
  220. package/dist/test/strapiMocks/strapiLinkPage.d.ts +0 -3
  221. package/dist/test/strapiMocks/strapiMedia.d.ts +0 -3
  222. package/dist/test/strapiMocks/strapiMetadata.d.ts +0 -2
  223. package/dist/test/strapiMocks/strapiPage.d.ts +0 -3
  224. package/dist/test/strapiMocks/strapiPortfolioCard.d.ts +0 -2
  225. package/dist/test/strapiMocks/strapiPortfolioMock.d.ts +0 -3
  226. package/dist/test/strapiMocks/strapiProject.d.ts +0 -3
  227. package/dist/test/strapiMocks/strapiProjectCard.d.ts +0 -2
  228. package/dist/test/strapiMocks/strapiQuoteCard.d.ts +0 -2
  229. package/dist/test/testUtils.d.ts +0 -6
  230. package/dist/unit.messages.de.d.ts +0 -5
  231. package/dist/unit.messages.en.d.ts +0 -5
  232. package/dist/utils/convertAreaM2ToHa.d.ts +0 -2
  233. package/dist/utils/convertAreaM2ToHa.test.d.ts +0 -1
  234. package/dist/utils/convertCo2AmountKgToTons.d.ts +0 -2
  235. package/dist/utils/convertToKebabCase.d.ts +0 -2
  236. package/dist/utils/convertToKebabCase.test.d.ts +0 -1
  237. package/dist/utils/getTimeSpanInYears.d.ts +0 -2
  238. package/dist/utils/getTimeSpanInYears.test.d.ts +0 -1
  239. package/dist/utils/mergeBoundingBoxes.d.ts +0 -3
  240. package/dist/utils/mergeBoundingBoxes.test.d.ts +0 -1
  241. package/dist/utils/mergeDeep.d.ts +0 -12
  242. package/dist/utils/openHubSpotChat.d.ts +0 -2
  243. package/dist/utils/strapiLinkUrl.d.ts +0 -3
  244. package/dist/utils/strapiLinkUrl.test.d.ts +0 -1
  245. package/dist/utils/strapiMediaUrl.d.ts +0 -5
  246. package/dist/utils/strapiMediaUrl.test.d.ts +0 -1
@@ -1,4653 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var React = require('react');
6
- var boemly = require('boemly');
7
- var Image = require('next/image');
8
- var reactUse = require('react-use');
9
- var react = require('@phosphor-icons/react');
10
- var Head = require('next/head');
11
- var Link = require('next/link');
12
- var adblockDetectReact = require('adblock-detect-react');
13
- var router = require('next/router');
14
- var styled = require('@emotion/styled');
15
- var react$1 = require('@emotion/react');
16
- var framerMotion = require('framer-motion');
17
- var reactIntl = require('react-intl');
18
- var mapboxgl = require('mapbox-gl');
19
- var client = require('react-dom/client');
20
- var formik = require('formik');
21
-
22
- function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
23
-
24
- var React__default = /*#__PURE__*/_interopDefault(React);
25
- var Image__default = /*#__PURE__*/_interopDefault(Image);
26
- var Head__default = /*#__PURE__*/_interopDefault(Head);
27
- var Link__default = /*#__PURE__*/_interopDefault(Link);
28
- var styled__default = /*#__PURE__*/_interopDefault(styled);
29
- var mapboxgl__default = /*#__PURE__*/_interopDefault(mapboxgl);
30
-
31
- function _regeneratorRuntime() {
32
- _regeneratorRuntime = function () {
33
- return e;
34
- };
35
- var t,
36
- e = {},
37
- r = Object.prototype,
38
- n = r.hasOwnProperty,
39
- o = Object.defineProperty || function (t, e, r) {
40
- t[e] = r.value;
41
- },
42
- i = "function" == typeof Symbol ? Symbol : {},
43
- a = i.iterator || "@@iterator",
44
- c = i.asyncIterator || "@@asyncIterator",
45
- u = i.toStringTag || "@@toStringTag";
46
- function define(t, e, r) {
47
- return Object.defineProperty(t, e, {
48
- value: r,
49
- enumerable: !0,
50
- configurable: !0,
51
- writable: !0
52
- }), t[e];
53
- }
54
- try {
55
- define({}, "");
56
- } catch (t) {
57
- define = function (t, e, r) {
58
- return t[e] = r;
59
- };
60
- }
61
- function wrap(t, e, r, n) {
62
- var i = e && e.prototype instanceof Generator ? e : Generator,
63
- a = Object.create(i.prototype),
64
- c = new Context(n || []);
65
- return o(a, "_invoke", {
66
- value: makeInvokeMethod(t, r, c)
67
- }), a;
68
- }
69
- function tryCatch(t, e, r) {
70
- try {
71
- return {
72
- type: "normal",
73
- arg: t.call(e, r)
74
- };
75
- } catch (t) {
76
- return {
77
- type: "throw",
78
- arg: t
79
- };
80
- }
81
- }
82
- e.wrap = wrap;
83
- var h = "suspendedStart",
84
- l = "suspendedYield",
85
- f = "executing",
86
- s = "completed",
87
- y = {};
88
- function Generator() {}
89
- function GeneratorFunction() {}
90
- function GeneratorFunctionPrototype() {}
91
- var p = {};
92
- define(p, a, function () {
93
- return this;
94
- });
95
- var d = Object.getPrototypeOf,
96
- v = d && d(d(values([])));
97
- v && v !== r && n.call(v, a) && (p = v);
98
- var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);
99
- function defineIteratorMethods(t) {
100
- ["next", "throw", "return"].forEach(function (e) {
101
- define(t, e, function (t) {
102
- return this._invoke(e, t);
103
- });
104
- });
105
- }
106
- function AsyncIterator(t, e) {
107
- function invoke(r, o, i, a) {
108
- var c = tryCatch(t[r], t, o);
109
- if ("throw" !== c.type) {
110
- var u = c.arg,
111
- h = u.value;
112
- return h && "object" == typeof h && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) {
113
- invoke("next", t, i, a);
114
- }, function (t) {
115
- invoke("throw", t, i, a);
116
- }) : e.resolve(h).then(function (t) {
117
- u.value = t, i(u);
118
- }, function (t) {
119
- return invoke("throw", t, i, a);
120
- });
121
- }
122
- a(c.arg);
123
- }
124
- var r;
125
- o(this, "_invoke", {
126
- value: function (t, n) {
127
- function callInvokeWithMethodAndArg() {
128
- return new e(function (e, r) {
129
- invoke(t, n, e, r);
130
- });
131
- }
132
- return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
133
- }
134
- });
135
- }
136
- function makeInvokeMethod(e, r, n) {
137
- var o = h;
138
- return function (i, a) {
139
- if (o === f) throw new Error("Generator is already running");
140
- if (o === s) {
141
- if ("throw" === i) throw a;
142
- return {
143
- value: t,
144
- done: !0
145
- };
146
- }
147
- for (n.method = i, n.arg = a;;) {
148
- var c = n.delegate;
149
- if (c) {
150
- var u = maybeInvokeDelegate(c, n);
151
- if (u) {
152
- if (u === y) continue;
153
- return u;
154
- }
155
- }
156
- if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) {
157
- if (o === h) throw o = s, n.arg;
158
- n.dispatchException(n.arg);
159
- } else "return" === n.method && n.abrupt("return", n.arg);
160
- o = f;
161
- var p = tryCatch(e, r, n);
162
- if ("normal" === p.type) {
163
- if (o = n.done ? s : l, p.arg === y) continue;
164
- return {
165
- value: p.arg,
166
- done: n.done
167
- };
168
- }
169
- "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg);
170
- }
171
- };
172
- }
173
- function maybeInvokeDelegate(e, r) {
174
- var n = r.method,
175
- o = e.iterator[n];
176
- if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y;
177
- var i = tryCatch(o, e.iterator, r.arg);
178
- if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y;
179
- var a = i.arg;
180
- return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y);
181
- }
182
- function pushTryEntry(t) {
183
- var e = {
184
- tryLoc: t[0]
185
- };
186
- 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);
187
- }
188
- function resetTryEntry(t) {
189
- var e = t.completion || {};
190
- e.type = "normal", delete e.arg, t.completion = e;
191
- }
192
- function Context(t) {
193
- this.tryEntries = [{
194
- tryLoc: "root"
195
- }], t.forEach(pushTryEntry, this), this.reset(!0);
196
- }
197
- function values(e) {
198
- if (e || "" === e) {
199
- var r = e[a];
200
- if (r) return r.call(e);
201
- if ("function" == typeof e.next) return e;
202
- if (!isNaN(e.length)) {
203
- var o = -1,
204
- i = function next() {
205
- for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;
206
- return next.value = t, next.done = !0, next;
207
- };
208
- return i.next = i;
209
- }
210
- }
211
- throw new TypeError(typeof e + " is not iterable");
212
- }
213
- return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", {
214
- value: GeneratorFunctionPrototype,
215
- configurable: !0
216
- }), o(GeneratorFunctionPrototype, "constructor", {
217
- value: GeneratorFunction,
218
- configurable: !0
219
- }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) {
220
- var e = "function" == typeof t && t.constructor;
221
- return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name));
222
- }, e.mark = function (t) {
223
- return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t;
224
- }, e.awrap = function (t) {
225
- return {
226
- __await: t
227
- };
228
- }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {
229
- return this;
230
- }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {
231
- void 0 === i && (i = Promise);
232
- var a = new AsyncIterator(wrap(t, r, n, o), i);
233
- return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {
234
- return t.done ? t.value : a.next();
235
- });
236
- }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () {
237
- return this;
238
- }), define(g, "toString", function () {
239
- return "[object Generator]";
240
- }), e.keys = function (t) {
241
- var e = Object(t),
242
- r = [];
243
- for (var n in e) r.push(n);
244
- return r.reverse(), function next() {
245
- for (; r.length;) {
246
- var t = r.pop();
247
- if (t in e) return next.value = t, next.done = !1, next;
248
- }
249
- return next.done = !0, next;
250
- };
251
- }, e.values = values, Context.prototype = {
252
- constructor: Context,
253
- reset: function (e) {
254
- if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);
255
- },
256
- stop: function () {
257
- this.done = !0;
258
- var t = this.tryEntries[0].completion;
259
- if ("throw" === t.type) throw t.arg;
260
- return this.rval;
261
- },
262
- dispatchException: function (e) {
263
- if (this.done) throw e;
264
- var r = this;
265
- function handle(n, o) {
266
- return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o;
267
- }
268
- for (var o = this.tryEntries.length - 1; o >= 0; --o) {
269
- var i = this.tryEntries[o],
270
- a = i.completion;
271
- if ("root" === i.tryLoc) return handle("end");
272
- if (i.tryLoc <= this.prev) {
273
- var c = n.call(i, "catchLoc"),
274
- u = n.call(i, "finallyLoc");
275
- if (c && u) {
276
- if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);
277
- if (this.prev < i.finallyLoc) return handle(i.finallyLoc);
278
- } else if (c) {
279
- if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);
280
- } else {
281
- if (!u) throw new Error("try statement without catch or finally");
282
- if (this.prev < i.finallyLoc) return handle(i.finallyLoc);
283
- }
284
- }
285
- }
286
- },
287
- abrupt: function (t, e) {
288
- for (var r = this.tryEntries.length - 1; r >= 0; --r) {
289
- var o = this.tryEntries[r];
290
- if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) {
291
- var i = o;
292
- break;
293
- }
294
- }
295
- i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);
296
- var a = i ? i.completion : {};
297
- return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a);
298
- },
299
- complete: function (t, e) {
300
- if ("throw" === t.type) throw t.arg;
301
- return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y;
302
- },
303
- finish: function (t) {
304
- for (var e = this.tryEntries.length - 1; e >= 0; --e) {
305
- var r = this.tryEntries[e];
306
- if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;
307
- }
308
- },
309
- catch: function (t) {
310
- for (var e = this.tryEntries.length - 1; e >= 0; --e) {
311
- var r = this.tryEntries[e];
312
- if (r.tryLoc === t) {
313
- var n = r.completion;
314
- if ("throw" === n.type) {
315
- var o = n.arg;
316
- resetTryEntry(r);
317
- }
318
- return o;
319
- }
320
- }
321
- throw new Error("illegal catch attempt");
322
- },
323
- delegateYield: function (e, r, n) {
324
- return this.delegate = {
325
- iterator: values(e),
326
- resultName: r,
327
- nextLoc: n
328
- }, "next" === this.method && (this.arg = t), y;
329
- }
330
- }, e;
331
- }
332
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
333
- try {
334
- var info = gen[key](arg);
335
- var value = info.value;
336
- } catch (error) {
337
- reject(error);
338
- return;
339
- }
340
- if (info.done) {
341
- resolve(value);
342
- } else {
343
- Promise.resolve(value).then(_next, _throw);
344
- }
345
- }
346
- function _asyncToGenerator(fn) {
347
- return function () {
348
- var self = this,
349
- args = arguments;
350
- return new Promise(function (resolve, reject) {
351
- var gen = fn.apply(self, args);
352
- function _next(value) {
353
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
354
- }
355
- function _throw(err) {
356
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
357
- }
358
- _next(undefined);
359
- });
360
- };
361
- }
362
- function _extends() {
363
- _extends = Object.assign ? Object.assign.bind() : function (target) {
364
- for (var i = 1; i < arguments.length; i++) {
365
- var source = arguments[i];
366
- for (var key in source) {
367
- if (Object.prototype.hasOwnProperty.call(source, key)) {
368
- target[key] = source[key];
369
- }
370
- }
371
- }
372
- return target;
373
- };
374
- return _extends.apply(this, arguments);
375
- }
376
- function _objectWithoutPropertiesLoose(source, excluded) {
377
- if (source == null) return {};
378
- var target = {};
379
- var sourceKeys = Object.keys(source);
380
- var key, i;
381
- for (i = 0; i < sourceKeys.length; i++) {
382
- key = sourceKeys[i];
383
- if (excluded.indexOf(key) >= 0) continue;
384
- target[key] = source[key];
385
- }
386
- return target;
387
- }
388
- function _taggedTemplateLiteralLoose(strings, raw) {
389
- if (!raw) {
390
- raw = strings.slice(0);
391
- }
392
- strings.raw = raw;
393
- return strings;
394
- }
395
-
396
- var STRAPI_URI = process.env.NEXT_PUBLIC_STRAPI_URI || 'http://127.0.0.1:1337';
397
-
398
- var strapiMediaUrl = function strapiMediaUrl(media, preferredSize) {
399
- if (preferredSize === void 0) {
400
- preferredSize = 'native';
401
- }
402
- var _ref = media.data.attributes || {},
403
- url = _ref.url;
404
- if (preferredSize !== 'native' && media.data.attributes.ext !== '.svg') {
405
- var _media$data$attribute;
406
- url = ((_media$data$attribute = media.data.attributes.formats[preferredSize]) == null ? void 0 : _media$data$attribute.url) || url;
407
- }
408
- if (url && (url.indexOf('http://') === 0 || url.indexOf('https://') === 0)) {
409
- return url;
410
- }
411
- return "" + ((STRAPI_URI.includes('127.0.0.1') || STRAPI_URI.includes('localhost')) && !process.env.STORYBOOK ? STRAPI_URI : '') + url;
412
- };
413
-
414
- var ZoomableImage = function ZoomableImage(_ref) {
415
- var image = _ref.image,
416
- _ref$zoom = _ref.zoom,
417
- zoom = _ref$zoom === void 0 ? 200 : _ref$zoom;
418
- // define and set default values to the states of the component
419
- var _useState = React.useState(false),
420
- isZoomed = _useState[0],
421
- setIsZoomed = _useState[1];
422
- var _useState2 = React.useState('50% 50%'),
423
- backgroundPos = _useState2[0],
424
- setBackgroundPos = _useState2[1];
425
- var imageSrc = strapiMediaUrl(image.img, 'xLarge');
426
- var zoomInPosition = function zoomInPosition(e) {
427
- // This will handle the calculations of the area where the image needs to zoom in depending on the user interaction
428
- var zoomer = e.currentTarget.getBoundingClientRect();
429
- var x = (e.clientX - zoomer.x) / zoomer.width * 100;
430
- var y = (e.clientY - zoomer.y) / zoomer.height * 100;
431
- setBackgroundPos(x + "% " + y + "%");
432
- };
433
- var toggleZoomImage = function toggleZoomImage(e) {
434
- if (isZoomed) {
435
- setIsZoomed(false);
436
- } else {
437
- // Zoom in and set the background position correctly
438
- setIsZoomed(true);
439
- zoomInPosition(e);
440
- }
441
- };
442
- var handleClick = function handleClick(e) {
443
- toggleZoomImage(e);
444
- };
445
- var handleMove = function handleMove(e) {
446
- if (isZoomed) {
447
- zoomInPosition(e);
448
- }
449
- };
450
- return React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(Head__default.default, null, React__default.default.createElement("link", {
451
- rel: "prefetch",
452
- as: "image",
453
- href: imageSrc
454
- })), React__default.default.createElement(boemly.Box, {
455
- position: "relative",
456
- display: "inline-block",
457
- width: "full",
458
- height: "full",
459
- overflow: "hidden",
460
- flexShrink: "0",
461
- scrollSnapAlign: "center",
462
- scrollSnapStop: "always",
463
- draggable: "false",
464
- cursor: isZoomed ? 'zoom-out' : 'zoom-in',
465
- backgroundImage: isZoomed ? "url( " + imageSrc + " )" : 'none',
466
- backgroundSize: zoom + "%",
467
- backgroundPosition: backgroundPos,
468
- onClick: function onClick(e) {
469
- return handleClick(e);
470
- },
471
- onMouseMove: function onMouseMove(e) {
472
- return handleMove(e);
473
- }
474
- }, React__default.default.createElement(Image__default.default, {
475
- src: imageSrc,
476
- alt: image.alt,
477
- fill: true,
478
- style: {
479
- visibility: isZoomed ? 'hidden' : 'visible',
480
- objectFit: 'contain'
481
- }
482
- })));
483
- };
484
-
485
- var FullScreenImage = function FullScreenImage(_ref) {
486
- var images = _ref.images,
487
- isOpen = _ref.isOpen,
488
- onClose = _ref.onClose,
489
- openIndex = _ref.openIndex;
490
- var _useState = React.useState(0),
491
- imageIndex = _useState[0],
492
- setImageIndex = _useState[1];
493
- var containerRef = React.useRef(null);
494
- reactUse.useLockBodyScroll(isOpen);
495
- var canMoveRight = imageIndex < images.length - 1;
496
- var canMoveLeft = imageIndex !== 0;
497
- var onRight = function onRight() {
498
- return setImageIndex(function (p) {
499
- return canMoveRight ? p + 1 : p;
500
- });
501
- };
502
- var onLeft = function onLeft() {
503
- return setImageIndex(function (p) {
504
- return canMoveLeft ? p - 1 : p;
505
- });
506
- };
507
- reactUse.useKey('ArrowRight', onRight, {}, [onRight]);
508
- reactUse.useKey('ArrowLeft', onLeft, {}, [onLeft]);
509
- React.useEffect(function () {
510
- if (openIndex !== undefined) {
511
- setImageIndex(openIndex);
512
- }
513
- }, [openIndex]);
514
- React.useEffect(function () {
515
- if (containerRef.current) {
516
- containerRef.current.scrollTo({
517
- left: imageIndex * containerRef.current.clientWidth,
518
- behavior: 'smooth'
519
- });
520
- }
521
- }, [imageIndex, containerRef]);
522
- var onCloseLocal = function onCloseLocal() {
523
- setImageIndex(0);
524
- onClose();
525
- };
526
- return React__default.default.createElement(boemly.BoemlyModal, {
527
- onClose: onCloseLocal,
528
- isOpen: isOpen,
529
- title: "",
530
- trigger: "",
531
- size: "full",
532
- content: React__default.default.createElement(boemly.Flex, {
533
- position: "absolute",
534
- insetY: "16",
535
- insetX: "0",
536
- alignItems: "center",
537
- justifyContent: "center"
538
- }, React__default.default.createElement(boemly.Flex, {
539
- ref: containerRef,
540
- flexGrow: "1",
541
- flexBasis: "100%",
542
- flexShrink: "1",
543
- gap: "4",
544
- marginX: "24",
545
- scrollSnapType: "x mandatory",
546
- overflow: "hidden",
547
- position: "relative",
548
- height: "full",
549
- width: "full"
550
- }, images.map(function (image) {
551
- return React__default.default.createElement(ZoomableImage, {
552
- key: image.id,
553
- image: image
554
- });
555
- })), React__default.default.createElement(boemly.Flex, {
556
- position: "absolute",
557
- inset: "6",
558
- justifyContent: "space-between",
559
- alignItems: "center",
560
- pointerEvents: "none"
561
- }, React__default.default.createElement(boemly.IconButton, {
562
- visibility: canMoveLeft ? 'visible' : 'hidden',
563
- onClick: onLeft,
564
- icon: React__default.default.createElement(react.CaretLeft, {
565
- size: 16
566
- }),
567
- "aria-label": "Previous picture",
568
- variant: "outline",
569
- pointerEvents: "all",
570
- mr: "6"
571
- }), React__default.default.createElement(boemly.IconButton, {
572
- visibility: canMoveRight ? 'visible' : 'hidden',
573
- onClick: onRight,
574
- icon: React__default.default.createElement(react.CaretRight, {
575
- size: 16
576
- }),
577
- "aria-label": "Next picture",
578
- variant: "outline",
579
- pointerEvents: "all",
580
- ml: "4"
581
- })))
582
- });
583
- };
584
-
585
- var BREAKPOINT_MD = '768px';
586
- var BREAKPOINT_LG = '960px';
587
- var BREAKPOINT_MD_QUERY = "(max-width: " + BREAKPOINT_MD + ")";
588
- var BREAKPOINT_LG_QUERY = "(max-width: " + BREAKPOINT_LG + ")";
589
-
590
- var FullWidthImage = function FullWidthImage(_ref) {
591
- var slice = _ref.slice;
592
- var _useState = React.useState(false),
593
- isOpen = _useState[0],
594
- setIsOpen = _useState[1];
595
- var _useMediaQuery = boemly.useMediaQuery(BREAKPOINT_MD_QUERY),
596
- isMobile = _useMediaQuery[0];
597
- return React__default.default.createElement(boemly.DefaultSectionContainer, {
598
- title: slice.title
599
- }, React__default.default.createElement(boemly.Wrapper, null, React__default.default.createElement(boemly.DefaultSectionHeader, {
600
- isHero: true,
601
- tagline: slice.tagline,
602
- title: slice.title,
603
- text: slice.text,
604
- taglineProps: {
605
- textAlign: 'center',
606
- mt: ['32', null, null, '56']
607
- },
608
- titleProps: {
609
- textAlign: 'center',
610
- maxW: '6xl',
611
- marginX: 'auto'
612
- },
613
- textProps: {
614
- textAlign: 'center',
615
- maxW: '3xl',
616
- marginX: 'auto'
617
- }
618
- }), React__default.default.createElement(boemly.Box, {
619
- position: "relative",
620
- mt: "20",
621
- height: ['3xs', null, 'xl']
622
- }, React__default.default.createElement(Image__default.default, {
623
- src: strapiMediaUrl(slice.image.img, 'xLarge'),
624
- alt: slice.image.alt,
625
- fill: true,
626
- style: {
627
- objectFit: slice.image.objectFit || 'cover',
628
- cursor: isMobile ? 'unset' : 'pointer',
629
- borderRadius: 'var(--boemly-radii-2xl)'
630
- },
631
- onClick: function onClick() {
632
- return !isMobile && setIsOpen(true);
633
- }
634
- }), React__default.default.createElement(FullScreenImage, {
635
- images: [slice.image],
636
- isOpen: isOpen,
637
- onClose: function onClose() {
638
- return setIsOpen(false);
639
- }
640
- }))));
641
- };
642
-
643
- var strapiLinkUrl = function strapiLinkUrl(strapiLink) {
644
- var _strapiLink, _strapiLink2;
645
- if (strapiLink === void 0) {
646
- strapiLink = undefined;
647
- }
648
- if ((_strapiLink = strapiLink) != null && (_strapiLink = _strapiLink.page) != null && _strapiLink.data) {
649
- return "/" + strapiLink.page.data.attributes.slug;
650
- }
651
- return ((_strapiLink2 = strapiLink) == null ? void 0 : _strapiLink2.url) || '/';
652
- };
653
-
654
- var openHubSpotChat = function openHubSpotChat() {
655
- var w = window;
656
- if (w.HubSpotConversations) {
657
- w.HubSpotConversations.widget.open();
658
- } else {
659
- w.hsConversationsOnReady = [function () {
660
- w.HubSpotConversations.widget.open();
661
- }];
662
- }
663
- };
664
-
665
- var _excluded$1 = ["link"];
666
- var StrapiLinkButton = function StrapiLinkButton(_ref) {
667
- var link = _ref.link,
668
- buttonProps = _objectWithoutPropertiesLoose(_ref, _excluded$1);
669
- var adBlockDetected = adblockDetectReact.useDetectAdBlock();
670
- if (link.intercomLauncher) {
671
- if (adBlockDetected) {
672
- return React__default.default.createElement(boemly.Button, _extends({}, buttonProps, {
673
- as: Link__default.default,
674
- href: "mailto:hello@tree.ly"
675
- }), link.text);
676
- }
677
- return React__default.default.createElement(boemly.Button, _extends({}, buttonProps, {
678
- onClick: openHubSpotChat
679
- }), link.text);
680
- }
681
- return React__default.default.createElement(boemly.Button, _extends({}, buttonProps, {
682
- as: Link__default.default,
683
- href: strapiLinkUrl(link)
684
- }), link.text);
685
- };
686
-
687
- var Hero = function Hero(_ref) {
688
- var slice = _ref.slice;
689
- return React__default.default.createElement(boemly.Box, {
690
- position: "relative",
691
- width: "full",
692
- height: "var(--default-hero-height)",
693
- minHeight: "2xl",
694
- backgroundColor: "gray.900",
695
- overflowX: "hidden"
696
- }, slice.image && React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(Image__default.default, {
697
- src: strapiMediaUrl(slice.image.img, 'xLarge'),
698
- alt: slice.image.alt,
699
- fill: true,
700
- style: {
701
- objectFit: slice.image.objectFit || 'cover'
702
- }
703
- }), React__default.default.createElement(boemly.Gradient, null)), slice.shape && React__default.default.createElement(boemly.Box, {
704
- position: "absolute",
705
- bottom: "0",
706
- borderTopRightRadius: "full",
707
- width: ['3xs', null, '2xs', null, 'sm'],
708
- height: ['3xs', null, '2xs', null, 'sm'],
709
- right: ['-16', null, '24']
710
- }, React__default.default.createElement(Image__default.default, {
711
- src: strapiMediaUrl(slice.shape.img, 'medium'),
712
- alt: slice.shape.alt,
713
- fill: true,
714
- style: {
715
- objectFit: slice.shape.objectFit || 'cover',
716
- borderTopRightRadius: 'var(--boemly-radii-full)'
717
- }
718
- })), React__default.default.createElement(boemly.Box, {
719
- position: "absolute",
720
- left: "0",
721
- top: "56%",
722
- width: "full",
723
- textAlign: slice.textAlign,
724
- transform: "translateY(-50%)"
725
- }, React__default.default.createElement(boemly.Wrapper, null, React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(boemly.DefaultSectionHeader, {
726
- isHero: true,
727
- tagline: slice.tagline,
728
- title: slice.title,
729
- text: slice.subTitle,
730
- taglineProps: {
731
- color: 'white'
732
- },
733
- titleProps: {
734
- color: 'white',
735
- maxW: slice.textAlign === 'center' ? '4xl' : '3xl',
736
- mx: slice.textAlign === 'center' ? 'auto' : 'unset',
737
- textAlign: slice.textAlign
738
- },
739
- textProps: {
740
- maxW: '2xl',
741
- mx: slice.textAlign === 'center' ? 'auto' : 'unset',
742
- textAlign: slice.textAlign,
743
- color: 'white'
744
- }
745
- }), React__default.default.createElement(boemly.Flex, {
746
- gap: "8",
747
- justifyContent: slice.textAlign === 'center' ? 'center' : 'start'
748
- }, slice.button && React__default.default.createElement(StrapiLinkButton, {
749
- key: slice.button.id,
750
- mt: "10",
751
- size: "xl",
752
- link: slice.button
753
- }), slice.additionalButtons.map(function (button) {
754
- return React__default.default.createElement(StrapiLinkButton, {
755
- key: button.button.id,
756
- mt: "10",
757
- size: "xl",
758
- variant: button.variant,
759
- link: button.button
760
- });
761
- }))))));
762
- };
763
-
764
- var IconGrid = function IconGrid(_ref) {
765
- var slice = _ref.slice;
766
- return React__default.default.createElement(boemly.DefaultSectionContainer, null, React__default.default.createElement(boemly.Wrapper, null, slice.title ? React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(boemly.Flex, {
767
- alignItems: "center",
768
- flexDirection: "column"
769
- }, React__default.default.createElement(boemly.DefaultSectionHeader, {
770
- tagline: slice.tagline,
771
- title: slice.title,
772
- text: slice.subTitle,
773
- taglineProps: {
774
- maxW: '2xl',
775
- textAlign: 'center'
776
- },
777
- titleProps: {
778
- maxW: '3xl',
779
- textAlign: 'center'
780
- },
781
- textProps: {
782
- maxW: '3xl',
783
- textAlign: 'center'
784
- }
785
- })), React__default.default.createElement(boemly.Spacer, {
786
- h: "20"
787
- })) : React__default.default.createElement(React__default.default.Fragment, null), React__default.default.createElement(boemly.SimpleGrid, {
788
- columns: [1, null, null, 2],
789
- gap: "32",
790
- rowGap: ['16', null, null, '28']
791
- }, slice.iconsWithTextAndButton.map(function (iconWithTextAndButton) {
792
- return React__default.default.createElement(boemly.Box, {
793
- key: iconWithTextAndButton.id
794
- }, React__default.default.createElement(boemly.Box, {
795
- margin: "0 auto",
796
- backgroundColor: "primary.50",
797
- borderRadius: "full",
798
- display: "flex",
799
- alignItems: "center",
800
- justifyContent: "space-around",
801
- width: "6.5rem",
802
- height: "6.5rem"
803
- }, React__default.default.createElement(boemly.Box, {
804
- position: "absolute",
805
- width: "12",
806
- height: "12"
807
- }, React__default.default.createElement(Image__default.default, {
808
- src: strapiMediaUrl(iconWithTextAndButton.icon.img, 'xSmall'),
809
- alt: iconWithTextAndButton.icon.alt,
810
- fill: true,
811
- style: {
812
- objectFit: iconWithTextAndButton.icon.objectFit || 'contain'
813
- }
814
- }))), React__default.default.createElement(boemly.Heading, {
815
- size: "xl",
816
- textAlign: "center",
817
- mb: "4",
818
- mt: "8"
819
- }, iconWithTextAndButton.title), React__default.default.createElement(boemly.Text, {
820
- size: "mdRegularNormal",
821
- textAlign: "center"
822
- }, iconWithTextAndButton.text), iconWithTextAndButton.button && React__default.default.createElement(boemly.Box, {
823
- textAlign: "center"
824
- }, React__default.default.createElement(StrapiLinkButton, {
825
- key: iconWithTextAndButton.button.id,
826
- mt: "8",
827
- size: "md",
828
- variant: "outline",
829
- link: iconWithTextAndButton.button
830
- })));
831
- }))));
832
- };
833
-
834
- var LinkedInIcon = function LinkedInIcon() {
835
- return React__default.default.createElement("svg", {
836
- width: "14",
837
- height: "14",
838
- viewBox: "0 0 14 14",
839
- fill: "none",
840
- xmlns: "http://www.w3.org/2000/svg"
841
- }, React__default.default.createElement("g", {
842
- clipPath: "url(#clip0_112_606)"
843
- }, React__default.default.createElement("path", {
844
- d: "M11.9286 11.9285H9.85424V8.67998C9.85424 7.90534 9.84042 6.90813 8.77539 6.90813C7.695 6.90813 7.52969 7.75213 7.52969 8.62357V11.9283H5.45533V5.24799H7.44671V6.16093H7.47459C7.67388 5.82018 7.96186 5.53986 8.30786 5.34984C8.65386 5.15981 9.04493 5.06719 9.4394 5.08183C11.5418 5.08183 11.9295 6.46473 11.9295 8.2638L11.9286 11.9285ZM3.11477 4.33484C2.87669 4.33489 2.64393 4.26433 2.44595 4.13209C2.24796 3.99985 2.09365 3.81188 2.0025 3.59193C1.91135 3.37199 1.88746 3.12995 1.93387 2.89644C1.98027 2.66292 2.09488 2.44841 2.26321 2.28003C2.43153 2.11164 2.646 1.99696 2.8795 1.95047C3.11301 1.90398 3.35504 1.92778 3.57502 2.01884C3.795 2.10992 3.98303 2.26417 4.11533 2.46211C4.24764 2.66004 4.31829 2.89277 4.31833 3.13085C4.31836 3.28894 4.28725 3.44547 4.22678 3.59153C4.1663 3.7376 4.07767 3.87031 3.96591 3.98211C3.85415 4.09392 3.72146 4.18261 3.57541 4.24313C3.42937 4.30365 3.27286 4.33481 3.11477 4.33484ZM4.15194 11.9285H2.07544V5.24799H4.15194V11.9285ZM12.9628 0.000953808H1.03307C0.762304 -0.00210183 0.501383 0.102466 0.307673 0.291681C0.113961 0.480895 0.00330461 0.739273 0 1.01004V12.9892C0.00319151 13.2602 0.113783 13.5187 0.307487 13.7081C0.501192 13.8975 0.762169 14.0023 1.03307 13.9994H12.9628C13.2342 14.0028 13.496 13.8983 13.6904 13.7089C13.8848 13.5195 13.9962 13.2607 14 12.9892V1.00918C13.9961 0.737873 13.8846 0.479199 13.6902 0.28999C13.4958 0.10078 13.2341 -0.00348904 12.9628 8.91429e-05",
845
- fill: "#0A66C2"
846
- })), React__default.default.createElement("defs", null, React__default.default.createElement("clipPath", {
847
- id: "clip0_112_606"
848
- }, React__default.default.createElement("rect", {
849
- width: "14",
850
- height: "14",
851
- fill: "white"
852
- }))));
853
- };
854
-
855
- var _excluded = ["link"];
856
- var StrapiLinkButtonWithIcon = function StrapiLinkButtonWithIcon(_ref) {
857
- var link = _ref.link,
858
- props = _objectWithoutPropertiesLoose(_ref, _excluded);
859
- var getLinkIcon = function getLinkIcon(destination) {
860
- switch (destination) {
861
- case 'linkedin':
862
- {
863
- return React__default.default.createElement(LinkedInIcon, null);
864
- }
865
- case 'web':
866
- {
867
- return React__default.default.createElement(react.Globe, null);
868
- }
869
- default:
870
- {
871
- return React__default.default.createElement(react.CaretRight, null);
872
- }
873
- }
874
- };
875
- return React__default.default.createElement(StrapiLinkButton, _extends({}, props, {
876
- link: link.link,
877
- rightIcon: getLinkIcon(link.destination)
878
- }));
879
- };
880
-
881
- var ImageGrid = function ImageGrid(_ref) {
882
- var slice = _ref.slice;
883
- var _useToken = boemly.useToken('colors', ['primary.50']),
884
- primary50 = _useToken[0];
885
- return React__default.default.createElement(boemly.DefaultSectionContainer, {
886
- backgroundColor: primary50,
887
- title: slice.title
888
- }, React__default.default.createElement(boemly.Wrapper, null, React__default.default.createElement(boemly.DefaultSectionHeader, {
889
- tagline: slice.tagline,
890
- title: slice.title,
891
- text: slice.text,
892
- taglineProps: {
893
- textAlign: 'center'
894
- },
895
- titleProps: {
896
- textAlign: 'center',
897
- maxW: '6xl',
898
- marginX: 'auto'
899
- },
900
- textProps: {
901
- textAlign: 'center',
902
- maxW: '2xl',
903
- marginX: 'auto'
904
- }
905
- }), React__default.default.createElement(boemly.SimpleGrid, {
906
- mt: "24",
907
- columns: 3,
908
- gap: "24",
909
- rowGap: "16",
910
- minChildWidth: "16rem"
911
- }, slice.images.map(function (_ref2) {
912
- var id = _ref2.id,
913
- title = _ref2.title,
914
- subTitle = _ref2.subTitle,
915
- image = _ref2.image,
916
- links = _ref2.links;
917
- return React__default.default.createElement(boemly.Box, {
918
- key: id
919
- }, React__default.default.createElement(boemly.Box, {
920
- position: "relative",
921
- height: "sm",
922
- borderRadius: "xl"
923
- }, React__default.default.createElement(Image__default.default, {
924
- src: strapiMediaUrl(image.img, 'medium'),
925
- alt: image.alt,
926
- fill: true,
927
- style: {
928
- objectFit: image.objectFit || 'cover',
929
- borderRadius: 'var(--boemly-radii-xl)'
930
- }
931
- })), React__default.default.createElement(boemly.Heading, {
932
- size: "xl",
933
- mt: "4"
934
- }, title), subTitle && React__default.default.createElement(boemly.Text, {
935
- size: "mdRegularNormal"
936
- }, subTitle), links && links.length > 0 && React__default.default.createElement(boemly.Flex, {
937
- mt: "3",
938
- flexDir: "row",
939
- gap: "2",
940
- flexWrap: "wrap"
941
- }, links.map(function (link) {
942
- return React__default.default.createElement(StrapiLinkButtonWithIcon, {
943
- key: link.id,
944
- link: link,
945
- size: "sm",
946
- variant: "outline"
947
- });
948
- })));
949
- }))));
950
- };
951
-
952
- process.env.NEXT_PUBLIC_API_URI || 'http://localhost:4001';
953
- var FPM_API_URI = process.env.NEXT_PUBLIC_FPM_API_URI || 'https://api.fpm.t-staging.com';
954
- var CDN_URI = 'https://cdn.tree.ly';
955
-
956
- var ImageTextSequence = function ImageTextSequence(_ref) {
957
- var slice = _ref.slice;
958
- var _useMediaQuery = boemly.useMediaQuery(BREAKPOINT_LG_QUERY),
959
- oneColumnGrid = _useMediaQuery[0];
960
- var _useToken = boemly.useToken('colors', ['primary.50']),
961
- primary50 = _useToken[0];
962
- var _useToken2 = boemly.useToken('colors', ['gray.700']),
963
- gray700 = _useToken2[0];
964
- return React__default.default.createElement(boemly.DefaultSectionContainer, {
965
- backgroundColor: primary50,
966
- title: slice.title
967
- }, slice.background ? React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(boemly.Box, {
968
- position: "absolute",
969
- top: "0",
970
- right: "24",
971
- display: ['none', null, null, 'unset']
972
- }, React__default.default.createElement(Image__default.default, {
973
- src: CDN_URI + "/assets/v3/strapi-slices/desktop-map-border.svg",
974
- alt: "Map",
975
- width: "786",
976
- height: "897"
977
- })), React__default.default.createElement(boemly.Box, {
978
- position: "absolute",
979
- top: "64",
980
- right: "-14",
981
- display: ['unset', null, null, 'none']
982
- }, React__default.default.createElement(Image__default.default, {
983
- src: CDN_URI + "/assets/v3/strapi-slices/mobile-map-border.svg",
984
- alt: "Map",
985
- width: "227",
986
- height: "452"
987
- }))) : React__default.default.createElement(React__default.default.Fragment, null), React__default.default.createElement(boemly.Wrapper, null, React__default.default.createElement(boemly.DefaultSectionHeader, {
988
- tagline: slice.tagline,
989
- title: slice.title,
990
- text: slice.text,
991
- taglineProps: {
992
- textAlign: ['left', null, null, null, 'center']
993
- },
994
- titleProps: {
995
- maxW: '6xl',
996
- marginX: ['0', null, null, null, 'auto'],
997
- textAlign: ['left', null, null, null, 'center']
998
- },
999
- textProps: {
1000
- maxW: '2xl',
1001
- marginX: ['0', null, null, null, 'auto'],
1002
- textAlign: ['left', null, null, null, 'center'],
1003
- color: 'black'
1004
- }
1005
- }), React__default.default.createElement(boemly.SimpleGrid, {
1006
- gap: "16",
1007
- mt: ['28', null, null, null, '40'],
1008
- columns: [1, null, null, null, 2]
1009
- }, slice.imageTextRows.map(function (_ref2, index) {
1010
- var id = _ref2.id,
1011
- title = _ref2.title,
1012
- text = _ref2.text,
1013
- button = _ref2.button,
1014
- image = _ref2.image;
1015
- var imageBox = React__default.default.createElement(boemly.Box, null, React__default.default.createElement(boemly.Box, {
1016
- position: "relative",
1017
- width: "full",
1018
- minHeight: ['2xs', null, null, 'sm']
1019
- }, React__default.default.createElement(Image__default.default, {
1020
- src: strapiMediaUrl(image.img, 'large'),
1021
- alt: image.alt,
1022
- fill: true,
1023
- style: {
1024
- objectFit: image.objectFit || 'contain'
1025
- }
1026
- })));
1027
- return React__default.default.createElement(React.Fragment, {
1028
- key: id
1029
- }, (oneColumnGrid || index % 2 !== 0) && imageBox, React__default.default.createElement(boemly.Box, {
1030
- display: "flex",
1031
- alignItems: "flex-start",
1032
- flexDirection: "column",
1033
- justifyContent: "center"
1034
- }, React__default.default.createElement(boemly.Heading, {
1035
- as: "h2",
1036
- size: "xl",
1037
- mb: "4"
1038
- }, title), React__default.default.createElement(boemly.Text, {
1039
- size: "mdRegularNormal"
1040
- }, text), button && React__default.default.createElement(StrapiLinkButton, {
1041
- mt: "5",
1042
- link: button,
1043
- size: "sm",
1044
- variant: "outline",
1045
- rightIcon: React__default.default.createElement(react.CaretRight, {
1046
- size: "10",
1047
- color: gray700
1048
- })
1049
- })), !oneColumnGrid && index % 2 === 0 && imageBox);
1050
- }))));
1051
- };
1052
-
1053
- var LeftTextRightCard = function LeftTextRightCard(_ref) {
1054
- var slice = _ref.slice;
1055
- var _useRouter = router.useRouter(),
1056
- push = _useRouter.push;
1057
- return React__default.default.createElement(boemly.DefaultSectionContainer, {
1058
- title: slice.title
1059
- }, React__default.default.createElement(boemly.Wrapper, null, React__default.default.createElement(boemly.Grid, {
1060
- templateColumns: ['repeat(8, 1fr)', null, null, null, 'repeat(12, 1fr)'],
1061
- templateRows: ['repeat(2, 1fr)', null, null, null, 'repeat(1, 1fr)'],
1062
- rowGap: "12"
1063
- }, React__default.default.createElement(boemly.GridItem, {
1064
- colSpan: 8,
1065
- rowSpan: 1,
1066
- pr: ['0', null, null, null, '28']
1067
- }, React__default.default.createElement(boemly.DefaultSectionHeader, {
1068
- tagline: slice.tagline,
1069
- title: slice.title,
1070
- text: slice.text
1071
- }), slice.checkMarkLabels && React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(boemly.Spacer, {
1072
- height: "10"
1073
- }), React__default.default.createElement(boemly.BoemlyList, {
1074
- listItems: slice.checkMarkLabels
1075
- }), React__default.default.createElement(boemly.Spacer, {
1076
- height: "10"
1077
- })), slice.button && React__default.default.createElement(StrapiLinkButton, {
1078
- link: slice.button,
1079
- size: "md",
1080
- colorScheme: "white",
1081
- variant: "outline",
1082
- rightIcon: React__default.default.createElement(react.ArrowRight, null)
1083
- })), React__default.default.createElement(boemly.GridItem, {
1084
- colSpan: [8, null, null, null, 4],
1085
- rowSpan: 1,
1086
- position: "relative"
1087
- }, slice.card && React__default.default.createElement(boemly.PortfolioCard, {
1088
- title: slice.card.title,
1089
- button: slice.card.button && {
1090
- text: slice.card.button.text,
1091
- onClick: function onClick() {
1092
- var _slice$card;
1093
- return push(strapiLinkUrl((_slice$card = slice.card) == null ? void 0 : _slice$card.button));
1094
- }
1095
- },
1096
- facts: slice.card.facts,
1097
- image: React__default.default.createElement(Image__default.default, {
1098
- src: strapiMediaUrl(slice.card.image.img, 'medium'),
1099
- alt: slice.card.image.alt,
1100
- fill: true,
1101
- style: {
1102
- objectFit: slice.card.image.objectFit || 'cover'
1103
- }
1104
- }),
1105
- portfolioNumber: slice.card.portfolioNumber
1106
- })))));
1107
- };
1108
-
1109
- var LogoGridWithText = function LogoGridWithText(_ref) {
1110
- var slice = _ref.slice;
1111
- var _useToken = boemly.useToken('colors', ['primary.50']),
1112
- primary50 = _useToken[0];
1113
- return React__default.default.createElement(boemly.DefaultSectionContainer, {
1114
- backgroundColor: primary50,
1115
- title: slice.title
1116
- }, React__default.default.createElement(boemly.Wrapper, null, React__default.default.createElement(boemly.SimpleGrid, {
1117
- columns: 2,
1118
- gap: "28",
1119
- minChildWidth: "16rem"
1120
- }, React__default.default.createElement(boemly.Box, {
1121
- display: "flex",
1122
- flexDirection: "column",
1123
- justifyContent: "center",
1124
- alignItems: "flex-start"
1125
- }, React__default.default.createElement(boemly.Heading, {
1126
- as: "h2",
1127
- size: "3xl",
1128
- mb: "4"
1129
- }, slice.title), React__default.default.createElement(boemly.RichText, {
1130
- content: slice.text
1131
- }), slice.button && React__default.default.createElement(StrapiLinkButton, {
1132
- link: slice.button,
1133
- size: "md",
1134
- colorScheme: "white",
1135
- variant: "outline",
1136
- mt: "6",
1137
- rightIcon: React__default.default.createElement(react.ArrowRight, null)
1138
- })), React__default.default.createElement(boemly.Flex, {
1139
- flexDir: "row",
1140
- flexWrap: "wrap",
1141
- gap: ['12', null, null, '28']
1142
- }, slice.logos.map(function (logo) {
1143
- return React__default.default.createElement(boemly.Flex, {
1144
- key: logo.id,
1145
- justifyContent: "center",
1146
- alignItems: "center",
1147
- flexGrow: 1,
1148
- flexShrink: 0,
1149
- flexBasis: slice.logos.length > 2 ? '34%' : '90%'
1150
- }, React__default.default.createElement(boemly.Box, {
1151
- position: "relative",
1152
- height: "20",
1153
- width: "100%"
1154
- }, logo.link ? React__default.default.createElement("a", {
1155
- href: strapiLinkUrl(logo.link)
1156
- }, React__default.default.createElement(Image__default.default, {
1157
- src: strapiMediaUrl(logo.img, 'small'),
1158
- alt: logo.alt,
1159
- fill: true,
1160
- style: {
1161
- objectFit: logo.objectFit || 'contain'
1162
- }
1163
- })) : React__default.default.createElement(Image__default.default, {
1164
- src: strapiMediaUrl(logo.img, 'small'),
1165
- alt: logo.alt,
1166
- fill: true,
1167
- style: {
1168
- objectFit: logo.objectFit || 'contain'
1169
- }
1170
- })));
1171
- })))));
1172
- };
1173
-
1174
- var _templateObject$7, _templateObject2$4, _templateObject3$2, _templateObject4$1, _templateObject5$1;
1175
- var MapHeroContainer = /*#__PURE__*/styled__default.default(boemly.Box)(_templateObject$7 || (_templateObject$7 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n position: relative;\n width: 100vw;\n height: var(--default-hero-height);\n min-height: var(--boemly-sizes-3xl);\n background-color: var(--boemly-colors-primary-50);\n overflow: hidden;\n z-index: var(--boemly-zIndices-base);\n\n @media screen and (max-width: ", ") {\n height: auto;\n }\n"])), BREAKPOINT_LG);
1176
- var MapHeroTextContainer = /*#__PURE__*/styled__default.default(boemly.Box)(_templateObject2$4 || (_templateObject2$4 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n position: absolute;\n width: 100vw;\n top: 56%;\n left: 0;\n transform: translateY(-50%);\n z-index: var(--boemly-zIndices-aboveBase);\n\n @media screen and (max-width: ", ") {\n position: relative;\n transform: unset;\n\n padding-top: var(--boemly-space-32);\n }\n"])), BREAKPOINT_LG);
1177
- var ShapeContainer = /*#__PURE__*/styled__default.default(boemly.Box)(_templateObject3$2 || (_templateObject3$2 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n position: absolute;\n bottom: calc(var(--boemly-space-8) * -1);\n left: 0;\n\n width: var(--boemly-sizes-sm);\n height: var(--boemly-sizes-sm);\n\n border-top-right-radius: var(--boemly-radii-full);\n\n & span,\n div {\n border-top-right-radius: var(--boemly-radii-full);\n }\n\n @media screen and (max-width: ", ") {\n display: none;\n }\n"])), BREAKPOINT_LG);
1178
- var MapContainer = /*#__PURE__*/styled__default.default(boemly.Box)(_templateObject4$1 || (_templateObject4$1 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n position: absolute;\n\n width: 50%;\n height: 100%;\n\n right: 0;\n top: 0;\n\n & img {\n object-fit: cover !important;\n }\n\n @media screen and (max-width: ", ") {\n width: 100%;\n height: var(--boemly-sizes-4xl);\n position: relative;\n margin-top: calc(var(--boemly-space-72) * -1);\n background-color: var(--boemly-colors-white);\n\n & img {\n object-fit: contain !important;\n }\n }\n"])), BREAKPOINT_LG);
1179
- var MapGradient = /*#__PURE__*/styled__default.default(boemly.Box)(_templateObject5$1 || (_templateObject5$1 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n position: absolute;\n top: 0;\n right: 0;\n width: 100%;\n height: 100%;\n\n background: linear-gradient(\n 90deg,\n var(--boemly-colors-primary-50) 0%,\n var(--boemly-colors-primary-50) 10%,\n rgba(243, 246, 245, 0.6) 28%,\n rgba(243, 246, 245, 0) 40%,\n rgba(243, 246, 245, 0) 100%\n );\n\n @media screen and (max-width: ", ") {\n background: linear-gradient(\n 180deg,\n var(--boemly-colors-primary-50) 0%,\n var(--boemly-colors-primary-50) 36%,\n rgba(243, 246, 245, 0.12) 46%,\n rgba(243, 246, 245, 0) 100%\n );\n }\n"])), BREAKPOINT_LG);
1180
-
1181
- var MapHero = function MapHero(_ref) {
1182
- var slice = _ref.slice;
1183
- var _useMediaQuery = boemly.useMediaQuery(BREAKPOINT_LG_QUERY),
1184
- belowBreakpoint = _useMediaQuery[0];
1185
- return React__default.default.createElement(MapHeroContainer, null, slice.shape && React__default.default.createElement(ShapeContainer, null, React__default.default.createElement(Image__default.default, {
1186
- src: strapiMediaUrl(slice.shape.img, 'medium'),
1187
- alt: slice.shape.alt,
1188
- fill: true,
1189
- style: {
1190
- objectFit: slice.shape.objectFit || 'cover'
1191
- }
1192
- })), React__default.default.createElement(MapHeroTextContainer, null, React__default.default.createElement(boemly.Wrapper, null, React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(boemly.DefaultSectionHeader, {
1193
- isHero: true,
1194
- tagline: slice.tagline,
1195
- title: slice.title,
1196
- text: slice.subTitle,
1197
- titleProps: {
1198
- maxW: ['100%', null, null, null, '60%']
1199
- },
1200
- textProps: {
1201
- maxW: ['100%', null, null, null, '55%']
1202
- }
1203
- }), slice.buttons && slice.buttons.length > 0 && React__default.default.createElement(boemly.Flex, {
1204
- mt: "10",
1205
- flexDir: "row",
1206
- gap: "5"
1207
- }, React__default.default.createElement(StrapiLinkButton, {
1208
- link: slice.buttons[0],
1209
- size: "xl"
1210
- }), slice.buttons.length === 2 && React__default.default.createElement(StrapiLinkButton, {
1211
- link: slice.buttons[1],
1212
- variant: "outline",
1213
- size: "xl"
1214
- }))))), React__default.default.createElement(MapContainer, null, belowBreakpoint ? React__default.default.createElement(Image__default.default, {
1215
- src: strapiMediaUrl(slice.mobileMap.img, 'xLarge'),
1216
- alt: slice.mobileMap.alt,
1217
- fill: true,
1218
- style: {
1219
- objectFit: slice.mobileMap.objectFit || 'contain'
1220
- }
1221
- }) : React__default.default.createElement(Image__default.default, {
1222
- src: strapiMediaUrl(slice.map.img, 'xLarge'),
1223
- alt: slice.map.alt,
1224
- fill: true,
1225
- style: {
1226
- objectFit: slice.map.objectFit || 'cover'
1227
- }
1228
- }), React__default.default.createElement(MapGradient, null)));
1229
- };
1230
-
1231
- var convertToKebabCase = function convertToKebabCase(str) {
1232
- var matches = str && str.match(/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g);
1233
- return matches ? matches.map(function (x) {
1234
- return x.toLowerCase();
1235
- }).join('-') : '';
1236
- };
1237
-
1238
- var VARIANTS$4 = {
1239
- gray: {
1240
- backgroundColor: 'primary.50',
1241
- tagLineColor: 'primary.500',
1242
- textColor: 'black',
1243
- accordionVariant: 'black',
1244
- otherQuestionsBackground: 'primary.700'
1245
- },
1246
- green: {
1247
- backgroundColor: 'primary.800',
1248
- tagLineColor: 'white',
1249
- textColor: 'white',
1250
- accordionVariant: 'white',
1251
- otherQuestionsBackground: 'primary.900'
1252
- },
1253
- white: {
1254
- backgroundColor: 'white',
1255
- tagLineColor: 'primary.500',
1256
- textColor: 'black',
1257
- accordionVariant: 'black',
1258
- otherQuestionsBackground: 'primary.700'
1259
- }
1260
- };
1261
- var QAndA = function QAndA(_ref) {
1262
- var _slice$variant;
1263
- var slice = _ref.slice;
1264
- var _useRouter = router.useRouter(),
1265
- push = _useRouter.push;
1266
- var variant = VARIANTS$4[(_slice$variant = slice.variant) != null ? _slice$variant : 'green'];
1267
- return React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(boemly.Box, {
1268
- pb: slice.hero ? 80 : 28,
1269
- id: convertToKebabCase(slice.title),
1270
- backgroundColor: variant.backgroundColor
1271
- }, React__default.default.createElement(boemly.Wrapper, null, React__default.default.createElement(boemly.SimpleGrid, {
1272
- columns: [1, null, null, 2]
1273
- }, React__default.default.createElement(boemly.Box, {
1274
- mr: "16",
1275
- paddingY: "28"
1276
- }, React__default.default.createElement(boemly.Text, {
1277
- size: "mdMonoUppercase",
1278
- color: variant.tagLineColor
1279
- }, slice.tagline), React__default.default.createElement(boemly.Heading, {
1280
- as: "h2",
1281
- size: "3xl",
1282
- color: variant.textColor,
1283
- mt: "6",
1284
- mb: "16"
1285
- }, slice.title)), React__default.default.createElement(boemly.Box, {
1286
- maxHeight: ['unset', null, null, 'xl'],
1287
- paddingTop: ['0', null, null, '28'],
1288
- paddingRight: ['0', null, null, '6'],
1289
- overflowY: ['unset', null, null, 'scroll']
1290
- }, React__default.default.createElement(boemly.Box, null, React__default.default.createElement(boemly.BoemlyAccordion, {
1291
- rows: slice.questionsAndAnswers,
1292
- defaultIndex: 0,
1293
- variant: variant.accordionVariant
1294
- }), React__default.default.createElement(boemly.Flex, {
1295
- padding: "8",
1296
- backgroundColor: variant.otherQuestionsBackground,
1297
- borderRadius: "2xl",
1298
- mt: "14",
1299
- flexDir: ['column', null, null, 'row'],
1300
- justifyContent: ['flex-start', null, null, 'space-between'],
1301
- alignItems: ['flex-start', null, null, 'center']
1302
- }, React__default.default.createElement(boemly.Heading, {
1303
- as: "h6",
1304
- size: "sm",
1305
- color: "white"
1306
- }, slice.otherQuestions), React__default.default.createElement(boemly.Spacer, {
1307
- minHeight: ['4', null, null, '0']
1308
- }), React__default.default.createElement(StrapiLinkButton, {
1309
- size: "lg",
1310
- colorScheme: "white",
1311
- background: "white",
1312
- rightIcon: React__default.default.createElement(react.ArrowRight, null),
1313
- link: slice.button
1314
- }))))))), slice.hero && React__default.default.createElement(boemly.Box, {
1315
- pb: "28",
1316
- mt: "-56"
1317
- }, React__default.default.createElement(boemly.Wrapper, null, React__default.default.createElement(boemly.HeroCard, {
1318
- title: slice.hero.title,
1319
- subTitle: slice.hero.subTitle,
1320
- link: slice.hero.button && {
1321
- text: slice.hero.button.text,
1322
- onClick: function onClick() {
1323
- var _slice$hero;
1324
- return push(strapiLinkUrl((_slice$hero = slice.hero) == null ? void 0 : _slice$hero.button));
1325
- }
1326
- },
1327
- image: slice.hero.image && React__default.default.createElement(Image__default.default, {
1328
- src: strapiMediaUrl(slice.hero.image.img, 'xLarge'),
1329
- alt: slice.hero.image.alt,
1330
- fill: true,
1331
- style: {
1332
- objectFit: slice.hero.image.objectFit || 'cover'
1333
- }
1334
- })
1335
- }))));
1336
- };
1337
-
1338
- var QuoteCards = function QuoteCards(_ref) {
1339
- var slice = _ref.slice;
1340
- return React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(boemly.Box, {
1341
- id: convertToKebabCase(slice.title),
1342
- position: "relative",
1343
- paddingTop: "28",
1344
- paddingBottom: !!slice.hero ? '80' : '28'
1345
- }, slice.shapes && slice.shapes.length === 2 && React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(boemly.Shape, {
1346
- shape: React__default.default.createElement(Image__default.default, {
1347
- src: strapiMediaUrl(slice.shapes[0].img, 'small'),
1348
- alt: slice.shapes[0].alt,
1349
- fill: true,
1350
- style: {
1351
- objectFit: slice.shapes[0].objectFit || 'cover'
1352
- }
1353
- }),
1354
- top: "0",
1355
- right: "0",
1356
- size: "xs",
1357
- radius: "bottom-left"
1358
- }), React__default.default.createElement(boemly.Shape, {
1359
- shape: React__default.default.createElement(Image__default.default, {
1360
- src: strapiMediaUrl(slice.shapes[1].img, 'small'),
1361
- alt: slice.shapes[1].alt,
1362
- fill: true,
1363
- style: {
1364
- objectFit: slice.shapes[1].objectFit || 'cover'
1365
- }
1366
- }),
1367
- bottom: "0",
1368
- left: "0",
1369
- radius: "top-right"
1370
- })), React__default.default.createElement(boemly.Wrapper, null, React__default.default.createElement(boemly.Box, {
1371
- maxW: "3xl"
1372
- }, React__default.default.createElement(boemly.DefaultSectionHeader, {
1373
- tagline: slice.tagline,
1374
- title: slice.title,
1375
- text: slice.text
1376
- })), React__default.default.createElement(boemly.SimpleGrid, {
1377
- columns: 2,
1378
- gap: "20",
1379
- rowGap: "6",
1380
- mt: "16",
1381
- minChildWidth: ['100%', null, '16rem']
1382
- }, slice.cards.map(function (card) {
1383
- return React__default.default.createElement(boemly.Box, {
1384
- key: card.id,
1385
- width: "full",
1386
- maxWidth: "2xl"
1387
- }, React__default.default.createElement(boemly.QuoteCard, {
1388
- key: card.id,
1389
- avatar: {
1390
- name: card.avatar.name,
1391
- description: card.avatar.description,
1392
- image: React__default.default.createElement(Image__default.default, {
1393
- src: strapiMediaUrl(card.avatar.image.img, 'small'),
1394
- alt: card.avatar.image.alt,
1395
- fill: true,
1396
- style: {
1397
- objectFit: card.avatar.image.objectFit || 'cover'
1398
- }
1399
- })
1400
- },
1401
- text: card.text
1402
- }));
1403
- })))), slice.hero && React__default.default.createElement(boemly.Box, {
1404
- marginTop: "-40",
1405
- paddingBottom: "28"
1406
- }, React__default.default.createElement(boemly.Wrapper, null, React__default.default.createElement(boemly.HeroCard, {
1407
- title: slice.hero.title,
1408
- subTitle: slice.hero.subTitle,
1409
- link: slice.hero.button && {
1410
- text: slice.hero.button.text,
1411
- onClick: function onClick() {
1412
- var _slice$hero;
1413
- return strapiLinkUrl((_slice$hero = slice.hero) == null ? void 0 : _slice$hero.button);
1414
- }
1415
- },
1416
- image: slice.hero.image && React__default.default.createElement(Image__default.default, {
1417
- src: strapiMediaUrl(slice.hero.image.img, 'xLarge'),
1418
- alt: slice.hero.image.alt,
1419
- fill: true,
1420
- style: {
1421
- objectFit: slice.hero.image.objectFit || 'cover'
1422
- }
1423
- })
1424
- }))));
1425
- };
1426
-
1427
- var RichTextSection = function RichTextSection(_ref) {
1428
- var slice = _ref.slice;
1429
- return React__default.default.createElement(boemly.DefaultSectionContainer, null, React__default.default.createElement(boemly.Wrapper, null, React__default.default.createElement(boemly.Grid, {
1430
- templateColumns: "repeat(12, 1fr)",
1431
- gap: "4"
1432
- }, React__default.default.createElement(boemly.GridItem, {
1433
- colSpan: [12, null, null, 7]
1434
- }, React__default.default.createElement(boemly.RichText, {
1435
- content: slice.content
1436
- })))));
1437
- };
1438
-
1439
- var Steps = function Steps(_ref) {
1440
- var _slice$card$shapes;
1441
- var slice = _ref.slice;
1442
- var _useRouter = router.useRouter(),
1443
- push = _useRouter.push;
1444
- var _useToken = boemly.useToken('colors', ['gray.900']),
1445
- gray900 = _useToken[0];
1446
- var containerRef = React.useRef(null);
1447
- var _useState = React.useState(new Array(slice.steps.length)),
1448
- stepRefs = _useState[0],
1449
- setStepRefs = _useState[1];
1450
- var _useState2 = React.useState(new Array(slice.steps.length)),
1451
- stepProgress = _useState2[0],
1452
- setStepProgress = _useState2[1];
1453
- var _useWindowScroll = reactUse.useWindowScroll(),
1454
- offsetY = _useWindowScroll.y;
1455
- var _useWindowSize = reactUse.useWindowSize(),
1456
- windowHeight = _useWindowSize.height;
1457
- React.useEffect(function () {
1458
- setStepRefs(slice.steps.map(function () {
1459
- return React.createRef();
1460
- }));
1461
- }, []);
1462
- React.useEffect(function () {
1463
- var _containerRef$current;
1464
- var containerOffsetTop = ((_containerRef$current = containerRef.current) == null ? void 0 : _containerRef$current.offsetTop) || 0;
1465
- setStepProgress(stepRefs.map(function (ref) {
1466
- var _ref$current;
1467
- var currentItemOffsetTop = ((_ref$current = ref.current) == null ? void 0 : _ref$current.offsetTop) || 0;
1468
- return containerOffsetTop + currentItemOffsetTop < offsetY + windowHeight / 3 ? 100 : 0;
1469
- }));
1470
- }, [offsetY]);
1471
- return React__default.default.createElement("div", {
1472
- ref: containerRef
1473
- }, React__default.default.createElement(boemly.DefaultSectionContainer, {
1474
- backgroundColor: gray900,
1475
- title: slice.title
1476
- }, React__default.default.createElement(React__default.default.Fragment, null, slice.image && React__default.default.createElement(boemly.Box, {
1477
- position: "absolute",
1478
- top: "0",
1479
- left: "0",
1480
- width: "full",
1481
- height: "full"
1482
- }, React__default.default.createElement(Image__default.default, {
1483
- src: strapiMediaUrl(slice.image.img, 'xLarge'),
1484
- alt: slice.image.alt,
1485
- fill: true,
1486
- style: {
1487
- objectFit: slice.image.objectFit || 'cover'
1488
- }
1489
- }), React__default.default.createElement(boemly.Gradient, null))), React__default.default.createElement(boemly.Wrapper, null, React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(boemly.DefaultSectionHeader, {
1490
- tagline: slice.tagline,
1491
- title: slice.title,
1492
- text: slice.text,
1493
- taglineProps: {
1494
- textAlign: 'center'
1495
- },
1496
- titleProps: {
1497
- textAlign: 'center',
1498
- maxW: '2xl',
1499
- marginX: 'auto',
1500
- color: 'white'
1501
- },
1502
- textProps: {
1503
- textAlign: 'center',
1504
- maxW: 'xl',
1505
- marginX: 'auto',
1506
- color: 'whiteAlpha.800'
1507
- }
1508
- }), React__default.default.createElement(boemly.Box, {
1509
- marginTop: ['16', null, '24']
1510
- }, slice.steps.map(function (_ref2, index) {
1511
- var id = _ref2.id,
1512
- step = _ref2.step,
1513
- title = _ref2.title,
1514
- text = _ref2.text;
1515
- return React__default.default.createElement(boemly.Flex, {
1516
- flexDir: "column",
1517
- alignItems: "center",
1518
- key: id
1519
- }, React__default.default.createElement(boemly.Center, {
1520
- width: "10",
1521
- height: "10",
1522
- borderRadius: "full",
1523
- backgroundColor: "white"
1524
- }, React__default.default.createElement(boemly.Text, {
1525
- size: "smRegularNormal",
1526
- color: "black"
1527
- }, step)), React__default.default.createElement(boemly.Heading, {
1528
- size: "lg",
1529
- color: "white",
1530
- mt: "4",
1531
- textAlign: "center"
1532
- }, title), text && React__default.default.createElement(boemly.Box, {
1533
- maxW: "xl",
1534
- mt: "4"
1535
- }, React__default.default.createElement(boemly.RichText, {
1536
- options: {
1537
- forceBlock: true
1538
- },
1539
- content: text,
1540
- textProps: {
1541
- size: 'mdRegularNormal',
1542
- color: 'whiteAlpha.700',
1543
- textAlign: 'center'
1544
- }
1545
- })), (index + 1 < slice.steps.length || slice.card) && React__default.default.createElement(boemly.Box, {
1546
- ref: stepRefs[index],
1547
- position: "relative",
1548
- marginTop: "4",
1549
- marginBottom: "6",
1550
- height: "12"
1551
- }, React__default.default.createElement(boemly.Box, {
1552
- position: "absolute",
1553
- height: "full",
1554
- borderLeft: "dashed 1px white",
1555
- opacity: "0.5"
1556
- }), React__default.default.createElement(boemly.Box, {
1557
- position: "absolute",
1558
- height: stepProgress[index] + "%",
1559
- borderRight: "solid 1px white",
1560
- opacity: "1",
1561
- transition: "height ease var(--medium-transition-duration)"
1562
- })));
1563
- })), slice.card && React__default.default.createElement(boemly.ShapesCard, {
1564
- tagline: slice.card.tagline,
1565
- title: slice.card.title,
1566
- text: slice.card.text,
1567
- shapes: slice.card.shapes && ((_slice$card$shapes = slice.card.shapes) == null ? void 0 : _slice$card$shapes.map(function (shape) {
1568
- return React__default.default.createElement(Image__default.default, {
1569
- src: strapiMediaUrl(shape.img, 'small'),
1570
- alt: shape.alt,
1571
- fill: true,
1572
- style: {
1573
- objectFit: shape.objectFit || 'cover'
1574
- }
1575
- });
1576
- })),
1577
- button: slice.card.button && {
1578
- text: slice.card.button.text,
1579
- onClick: function onClick() {
1580
- var _slice$card;
1581
- return push(strapiLinkUrl((_slice$card = slice.card) == null ? void 0 : _slice$card.button));
1582
- }
1583
- }
1584
- })))));
1585
- };
1586
-
1587
- var _oppositesOfCorners, _templateObject$6, _templateObject2$3;
1588
- var ShapePosition;
1589
- (function (ShapePosition) {
1590
- ShapePosition["topLeft"] = "top-left";
1591
- ShapePosition["topRight"] = "top-right";
1592
- ShapePosition["bottomLeft"] = "bottom-left";
1593
- ShapePosition["bottomRight"] = "bottom-right";
1594
- ShapePosition["unset"] = "unset";
1595
- })(ShapePosition || (ShapePosition = {}));
1596
- var shapePositions = [ShapePosition.topLeft, ShapePosition.bottomRight, ShapePosition.topRight, ShapePosition.bottomLeft, ShapePosition.topRight, ShapePosition.bottomLeft, ShapePosition.topLeft, ShapePosition.bottomRight];
1597
- var oppositesOfCorners = (_oppositesOfCorners = {}, _oppositesOfCorners[ShapePosition.bottomLeft] = ShapePosition.topRight, _oppositesOfCorners[ShapePosition.topRight] = ShapePosition.bottomLeft, _oppositesOfCorners[ShapePosition.bottomRight] = ShapePosition.topLeft, _oppositesOfCorners[ShapePosition.topLeft] = ShapePosition.bottomRight, _oppositesOfCorners[ShapePosition.unset] = ShapePosition.unset, _oppositesOfCorners);
1598
- var variants = {
1599
- shape: {
1600
- padding: ['6', null, null, '8'],
1601
- positionIcon: function positionIcon(index) {
1602
- return shapePositions[index];
1603
- },
1604
- width: '40',
1605
- height: '40',
1606
- position: 'absolute',
1607
- mb: 'unset'
1608
- },
1609
- image: {
1610
- padding: ['6', null, null, '8'],
1611
- positionIcon: function positionIcon() {
1612
- return ShapePosition.unset;
1613
- },
1614
- width: '24',
1615
- height: '24',
1616
- position: 'relative',
1617
- mb: '10'
1618
- }
1619
- };
1620
- var TextCardGrid = function TextCardGrid(_ref) {
1621
- var slice = _ref.slice;
1622
- var _useToken = boemly.useToken('colors', ['primary.800']),
1623
- primary800 = _useToken[0];
1624
- return React__default.default.createElement(boemly.DefaultSectionContainer, {
1625
- backgroundColor: primary800,
1626
- title: slice.title
1627
- }, React__default.default.createElement(boemly.Wrapper, null, React__default.default.createElement(boemly.DefaultSectionHeader, {
1628
- tagline: slice.tagline,
1629
- title: slice.title,
1630
- text: slice.text,
1631
- taglineProps: {
1632
- textAlign: 'center',
1633
- color: 'white'
1634
- },
1635
- titleProps: {
1636
- textAlign: 'center',
1637
- maxW: '2xl',
1638
- marginX: 'auto',
1639
- color: 'white'
1640
- },
1641
- textProps: {
1642
- textAlign: 'center',
1643
- maxW: 'xl',
1644
- marginX: 'auto',
1645
- color: 'whiteAlpha.800'
1646
- }
1647
- }), React__default.default.createElement(boemly.SimpleGrid, {
1648
- mt: ['14', null, null, '24'],
1649
- columns: 3,
1650
- justifyItems: "center",
1651
- gap: "20",
1652
- rowGap: "16",
1653
- minChildWidth: ['100%', null, '16rem']
1654
- }, slice.cards.map(function (_ref2, index) {
1655
- var id = _ref2.id,
1656
- tagline = _ref2.tagline,
1657
- title = _ref2.title,
1658
- text = _ref2.text,
1659
- image = _ref2.image,
1660
- buttons = _ref2.buttons;
1661
- return React__default.default.createElement(boemly.Box, {
1662
- key: id,
1663
- backgroundColor: "white",
1664
- zIndex: "base",
1665
- padding: variants[slice.variant].padding,
1666
- boxShadow: "lg",
1667
- borderRadius: "2xl",
1668
- minHeight: "2xs",
1669
- width: "full",
1670
- maxWidth: slice.cards.length > 1 ? 'unset' : 'xl',
1671
- position: "relative",
1672
- display: "flex",
1673
- flexDir: "column",
1674
- alignItems: "flex-start",
1675
- justifyContent: slice.variant === 'shape' ? 'flex-end' : 'flex-start',
1676
- overflow: "hidden"
1677
- }, React__default.default.createElement(boemly.Box, {
1678
- position: variants[slice.variant].position,
1679
- width: variants[slice.variant].width,
1680
- height: variants[slice.variant].height,
1681
- mb: variants[slice.variant].mb,
1682
- top: variants[slice.variant].positionIcon(index).includes('top') ? '-4' : 'unset',
1683
- left: variants[slice.variant].positionIcon(index).includes('left') ? '-4' : 'unset',
1684
- right: variants[slice.variant].positionIcon(index).includes('right') ? '-4' : 'unset',
1685
- bottom: variants[slice.variant].positionIcon(index).includes('bottom') ? '-4' : 'unset',
1686
- borderBottomRightRadius: oppositesOfCorners[variants[slice.variant].positionIcon(index)].includes('bottomRight') ? 'full' : 'unset',
1687
- borderBottomLeftRadius: oppositesOfCorners[variants[slice.variant].positionIcon(index)].includes('bottomLeft') ? 'full' : 'unset',
1688
- borderTopRightRadius: oppositesOfCorners[variants[slice.variant].positionIcon(index)].includes('topRight') ? 'full' : 'unset',
1689
- borderTopLeftRadius: oppositesOfCorners[variants[slice.variant].positionIcon(index)].includes('topLeft') ? 'full' : 'unset',
1690
- css: variants[slice.variant].positionIcon(index).includes('unset') ? react$1.css(_templateObject$6 || (_templateObject$6 = _taggedTemplateLiteralLoose(["\n & span,\n div,\n img {\n border-radius: var(--boemly-radii-xl);\n }\n "]))) : react$1.css(_templateObject2$3 || (_templateObject2$3 = _taggedTemplateLiteralLoose(["\n & span,\n div,\n img {\n border-", "-radius: var(--boemly-radii-full);\n }\n "])), oppositesOfCorners[variants[slice.variant].positionIcon(index)])
1691
- }, React__default.default.createElement(Image__default.default, {
1692
- src: strapiMediaUrl(image.img, 'small'),
1693
- alt: image.alt,
1694
- fill: true,
1695
- style: {
1696
- objectFit: image.objectFit || 'cover'
1697
- }
1698
- })), React__default.default.createElement(boemly.Box, {
1699
- zIndex: "aboveBase",
1700
- width: "full"
1701
- }, tagline && React__default.default.createElement(boemly.Text, {
1702
- color: "black",
1703
- size: "smMonoNormal",
1704
- mb: "2"
1705
- }, tagline), React__default.default.createElement(boemly.Heading, {
1706
- as: "h4",
1707
- size: "xl",
1708
- mb: "3"
1709
- }, title), React__default.default.createElement(boemly.RichText, {
1710
- content: text,
1711
- listProps: {
1712
- textColor: 'gray.500',
1713
- textSize: 'smRegularNormal'
1714
- },
1715
- textProps: {
1716
- color: 'gray.500',
1717
- size: 'smRegularNormal'
1718
- }
1719
- }), buttons && !!buttons.length && React__default.default.createElement(boemly.Flex, {
1720
- mt: "4",
1721
- gap: "3",
1722
- flexDir: ['column', null, null, null, 'row']
1723
- }, buttons.map(function (button, buttonIndex) {
1724
- return React__default.default.createElement(StrapiLinkButton, {
1725
- key: button.id,
1726
- link: button,
1727
- size: "sm",
1728
- rightIcon: buttonIndex === 0 ? React__default.default.createElement(react.CaretRight, {
1729
- size: "10",
1730
- weight: "bold"
1731
- }) : undefined,
1732
- variant: buttonIndex === 0 ? 'outline' : 'ghost'
1733
- });
1734
- }))));
1735
- }))));
1736
- };
1737
-
1738
- var _templateObject$5, _templateObject2$2, _templateObject3$1;
1739
- var CarouselContainer = /*#__PURE__*/styled__default.default(boemly.Box)(_templateObject$5 || (_templateObject$5 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n overflow-x: scroll;\n\n margin-top: var(--boemly-space-6);\n padding: var(--boemly-space-8) 0;\n\n scrollbar-width: none;\n\n &::-webkit-scrollbar {\n display: none;\n }\n @media screen and (max-width: ", ") {\n margin-top: var(--boemly-space-4);\n }\n"])), BREAKPOINT_MD);
1740
- var CarouselInnerContainer = /*#__PURE__*/styled__default.default(framerMotion.motion.div)(_templateObject2$2 || (_templateObject2$2 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n display: flex;\n justify-content: center;\n width: calc(\n (var(--boemly-sizes-sm) + var(--boemly-space-16)) *\n ", " +\n var(--boemly-space-16)\n );\n min-width: var(--boemly-sizes-full);\n\n @media screen and (max-width: ", ") {\n width: calc(\n (var(--boemly-sizes-xs) + var(--boemly-space-4)) *\n ", " +\n var(--boemly-space-6)\n );\n }\n"])), function (_ref) {
1741
- var numberOfItems = _ref.numberOfItems;
1742
- return numberOfItems;
1743
- }, BREAKPOINT_MD, function (_ref2) {
1744
- var numberOfItems = _ref2.numberOfItems;
1745
- return numberOfItems;
1746
- });
1747
- var CardContainer = /*#__PURE__*/styled__default.default(boemly.Box)(_templateObject3$1 || (_templateObject3$1 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n width: ", ";\n\n margin-right: var(--boemly-space-16);\n\n &:first-of-type {\n margin-left: var(--boemly-space-16);\n }\n\n @media screen and (max-width: ", ") {\n width: var(--boemly-sizes-xs);\n\n margin-right: var(--boemly-space-4);\n\n &:first-of-type {\n margin-left: var(--boemly-space-6);\n }\n }\n"])), function (_ref3) {
1748
- var numberOfItems = _ref3.numberOfItems;
1749
- return numberOfItems === 3 ? 'var(--boemly-sizes-xl)' : 'var(--boemly-sizes-sm)';
1750
- }, BREAKPOINT_MD);
1751
-
1752
- var TextCarousel = function TextCarousel(_ref) {
1753
- var slice = _ref.slice;
1754
- var _useToken = boemly.useToken('colors', ['primary.50']),
1755
- primary50 = _useToken[0];
1756
- var containerRef = React.useRef(null);
1757
- return React__default.default.createElement(boemly.DefaultSectionContainer, {
1758
- backgroundColor: primary50,
1759
- title: slice.title
1760
- }, React__default.default.createElement(boemly.Wrapper, null, React__default.default.createElement(boemly.DefaultSectionHeader, {
1761
- tagline: slice.tagline,
1762
- title: slice.title,
1763
- text: slice.text,
1764
- taglineProps: {
1765
- textAlign: 'center'
1766
- },
1767
- titleProps: {
1768
- textAlign: 'center',
1769
- maxW: '6xl',
1770
- marginX: 'auto'
1771
- },
1772
- textProps: {
1773
- textAlign: 'center',
1774
- maxW: '2xl',
1775
- marginX: 'auto'
1776
- }
1777
- })), React__default.default.createElement(CarouselContainer, {
1778
- ref: containerRef
1779
- }, React__default.default.createElement(CarouselInnerContainer, {
1780
- drag: "x",
1781
- dragConstraints: containerRef,
1782
- numberOfItems: slice.slides.length
1783
- }, slice.slides.map(function (_ref2) {
1784
- var id = _ref2.id,
1785
- title = _ref2.title,
1786
- text = _ref2.text,
1787
- icon = _ref2.icon;
1788
- return React__default.default.createElement(CardContainer, {
1789
- key: id,
1790
- numberOfItems: slice.slides.length
1791
- }, React__default.default.createElement(boemly.TextCardWithIcon, {
1792
- title: title,
1793
- text: text,
1794
- icon: React__default.default.createElement(Image__default.default, {
1795
- src: strapiMediaUrl(icon.img, 'small'),
1796
- alt: icon.alt,
1797
- fill: true,
1798
- style: {
1799
- objectFit: icon.objectFit || 'contain'
1800
- }
1801
- }),
1802
- displayAs: "column"
1803
- }));
1804
- }))), React__default.default.createElement(React__default.default.Fragment, null, slice.button && React__default.default.createElement(boemly.Wrapper, null, React__default.default.createElement(boemly.Center, null, React__default.default.createElement(StrapiLinkButton, {
1805
- link: slice.button,
1806
- size: "xl",
1807
- mt: ['8', null, '14']
1808
- })))));
1809
- };
1810
-
1811
- var TextWithTextCards = function TextWithTextCards(_ref) {
1812
- var slice = _ref.slice;
1813
- var _useRouter = router.useRouter(),
1814
- push = _useRouter.push;
1815
- var _useToken = boemly.useToken('colors', ['white']),
1816
- white = _useToken[0];
1817
- var _useMediaQuery = boemly.useMediaQuery(BREAKPOINT_LG_QUERY),
1818
- belowBreakpoint = _useMediaQuery[0];
1819
- return React__default.default.createElement(boemly.DefaultSectionContainer, {
1820
- backgroundColor: white,
1821
- title: slice.title
1822
- }, React__default.default.createElement(React__default.default.Fragment, null, slice.shape && React__default.default.createElement(boemly.Box, {
1823
- position: "absolute",
1824
- right: ['-28', null, null, '-136'],
1825
- top: ['96', null, null, '-28'],
1826
- width: ['sm', null, null, '4xl'],
1827
- height: ['sm', null, null, '4xl'],
1828
- borderBottomRightRadius: "full"
1829
- }, React__default.default.createElement(Image__default.default, {
1830
- src: strapiMediaUrl(slice.shape.img, 'medium'),
1831
- alt: slice.shape.alt,
1832
- fill: true,
1833
- style: {
1834
- objectFit: slice.shape.objectFit || 'cover',
1835
- borderBottomRightRadius: 'var(--boemly-radii-full)'
1836
- }
1837
- }))), React__default.default.createElement(boemly.Wrapper, null, React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(boemly.Grid, {
1838
- templateColumns: ['repeat(8, 1fr)', null, null, null, 'repeat(16, 1fr)'],
1839
- templateRows: ['repeat(2, auto)', null, null, null, 'repeat(1, auto)'],
1840
- rowGap: "12"
1841
- }, React__default.default.createElement(boemly.GridItem, {
1842
- colSpan: [8, null, null, null, 9],
1843
- rowSpan: 1,
1844
- pr: ['0', null, null, null, '32']
1845
- }, React__default.default.createElement(boemly.DefaultSectionHeader, {
1846
- tagline: slice.tagline,
1847
- title: slice.title,
1848
- text: slice.text,
1849
- textProps: {
1850
- pr: ['0', null, null, null, '10']
1851
- }
1852
- }), slice.contact && !belowBreakpoint && React__default.default.createElement(boemly.ContactArea, {
1853
- title: slice.contact.title,
1854
- text: slice.contact.text,
1855
- avatar: {
1856
- name: slice.contact.avatar.name,
1857
- description: slice.contact.avatar.description,
1858
- image: React__default.default.createElement(Image__default.default, {
1859
- src: strapiMediaUrl(slice.contact.avatar.image.img, 'small'),
1860
- alt: slice.contact.avatar.image.alt,
1861
- fill: true,
1862
- style: {
1863
- objectFit: slice.contact.avatar.image.objectFit || 'cover'
1864
- }
1865
- })
1866
- },
1867
- link: {
1868
- text: slice.contact.button.text,
1869
- onClick: function onClick() {
1870
- var _slice$contact;
1871
- return push(strapiLinkUrl((_slice$contact = slice.contact) == null ? void 0 : _slice$contact.button));
1872
- }
1873
- }
1874
- })), React__default.default.createElement(boemly.GridItem, {
1875
- colSpan: [8, null, null, null, 7],
1876
- rowSpan: 1,
1877
- position: "relative"
1878
- }, slice.cards.map(function (card) {
1879
- return React__default.default.createElement(boemly.TextCardWithIcon, {
1880
- key: card.id,
1881
- title: card.title,
1882
- text: card.text,
1883
- icon: React__default.default.createElement(Image__default.default, {
1884
- src: strapiMediaUrl(card.icon.img, 'small'),
1885
- alt: card.icon.alt,
1886
- fill: true,
1887
- style: {
1888
- objectFit: card.icon.objectFit || 'contain'
1889
- }
1890
- })
1891
- });
1892
- }))), slice.contact && belowBreakpoint && React__default.default.createElement(boemly.ContactArea, {
1893
- title: slice.contact.title,
1894
- text: slice.contact.text,
1895
- avatar: {
1896
- name: slice.contact.avatar.name,
1897
- description: slice.contact.avatar.description,
1898
- image: React__default.default.createElement(Image__default.default, {
1899
- src: strapiMediaUrl(slice.contact.avatar.image.img, 'small'),
1900
- alt: slice.contact.avatar.image.alt,
1901
- fill: true,
1902
- style: {
1903
- objectFit: slice.contact.avatar.image.objectFit || 'cover'
1904
- }
1905
- })
1906
- },
1907
- link: {
1908
- text: slice.contact.button.text,
1909
- onClick: function onClick() {
1910
- var _slice$contact2;
1911
- return push(strapiLinkUrl((_slice$contact2 = slice.contact) == null ? void 0 : _slice$contact2.button));
1912
- }
1913
- }
1914
- }))));
1915
- };
1916
-
1917
- var TextWithCard = function TextWithCard(_ref) {
1918
- var slice = _ref.slice;
1919
- var card = React__default.default.createElement(boemly.GridItem, {
1920
- colSpan: [4, null, null, null, 2],
1921
- rowSpan: 1,
1922
- position: "relative",
1923
- "data-testid": "card-position-" + slice.cardPosition
1924
- }, slice.card && React__default.default.createElement(boemly.ProjectCard, {
1925
- facts: slice.card.facts,
1926
- footerSubTitle: slice.card.footerSubTitle,
1927
- footerTitle: slice.card.footerTitle,
1928
- title: slice.card.title,
1929
- image: React__default.default.createElement(Image__default.default, {
1930
- src: strapiMediaUrl(slice.card.image.img, 'medium'),
1931
- alt: slice.card.image.alt,
1932
- fill: true,
1933
- style: {
1934
- objectFit: slice.card.image.objectFit || 'cover'
1935
- }
1936
- })
1937
- }));
1938
- return React__default.default.createElement(boemly.DefaultSectionContainer, {
1939
- title: slice.title
1940
- }, React__default.default.createElement(boemly.Wrapper, null, React__default.default.createElement(boemly.Grid, {
1941
- templateColumns: ['repeat(4, auto)', null, null, null, 'repeat(6, auto)'],
1942
- templateRows: ['repeat(2, auto)', null, null, null, 'repeat(1, auto)'],
1943
- rowGap: "12",
1944
- columnGap: ['0', null, null, null, '28']
1945
- }, slice.cardPosition === 'left' && card, React__default.default.createElement(boemly.GridItem, {
1946
- colSpan: 4,
1947
- rowSpan: 1,
1948
- position: "relative"
1949
- }, React__default.default.createElement(boemly.DefaultSectionHeader, {
1950
- tagline: slice.tagline,
1951
- title: slice.title,
1952
- text: slice.text
1953
- }), slice.listItems && React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(boemly.Spacer, {
1954
- height: "10"
1955
- }), React__default.default.createElement(boemly.BoemlyList, {
1956
- listItems: slice.listItems
1957
- }), React__default.default.createElement(boemly.Spacer, {
1958
- height: "10"
1959
- })), slice.button && React__default.default.createElement(StrapiLinkButton, {
1960
- link: slice.button,
1961
- size: "md",
1962
- colorScheme: "white",
1963
- variant: "outline",
1964
- rightIcon: React__default.default.createElement(react.ArrowRight, null)
1965
- })), slice.cardPosition === 'right' && card)));
1966
- };
1967
-
1968
- var MEDIUM_TRANSITION_DURATION = 0.2;
1969
-
1970
- var LinkCardsGrid = function LinkCardsGrid(_ref) {
1971
- var slice = _ref.slice;
1972
- return React__default.default.createElement(boemly.DefaultSectionContainer, {
1973
- title: slice.title
1974
- }, React__default.default.createElement(boemly.Wrapper, null, React__default.default.createElement(boemly.DefaultSectionHeader, {
1975
- tagline: slice.tagline,
1976
- title: slice.title,
1977
- text: slice.text
1978
- }), React__default.default.createElement(boemly.SimpleGrid, {
1979
- mt: "16",
1980
- columns: [1, null, null, null, 2],
1981
- gap: "4"
1982
- }, slice.cards.map(function (_ref2) {
1983
- var id = _ref2.id,
1984
- title = _ref2.title,
1985
- text = _ref2.text,
1986
- link = _ref2.link;
1987
- return React__default.default.createElement(boemly.Box, {
1988
- key: id,
1989
- as: Link__default.default,
1990
- href: strapiLinkUrl(link),
1991
- "data-testid": "link",
1992
- px: "10",
1993
- py: "8",
1994
- borderStyle: "solid",
1995
- borderWidth: "thin",
1996
- borderColor: "gray.200",
1997
- borderRadius: "2xl",
1998
- display: "flex",
1999
- flexDir: "row",
2000
- alignItems: "center",
2001
- justifyContent: "space-between",
2002
- cursor: "pointer",
2003
- transitionDuration: MEDIUM_TRANSITION_DURATION + "s",
2004
- _hover: {
2005
- backgroundColor: 'gray.50'
2006
- }
2007
- }, React__default.default.createElement("div", null, React__default.default.createElement(boemly.Heading, {
2008
- as: "h4",
2009
- size: "lg"
2010
- }, title), text && React__default.default.createElement(boemly.Text, {
2011
- mt: "2",
2012
- size: "smRegularNormal"
2013
- }, text)), React__default.default.createElement(boemly.Box, {
2014
- display: "flex",
2015
- alignItems: "center",
2016
- justifyContent: "center",
2017
- borderStyle: "solid",
2018
- borderWidth: "thin",
2019
- borderColor: "gray.200",
2020
- borderRadius: "2xl",
2021
- height: "12",
2022
- width: "12",
2023
- minWidth: "12",
2024
- minHeight: "12",
2025
- ml: "6",
2026
- backgroundColor: "white"
2027
- }, React__default.default.createElement(react.CaretRight, null)));
2028
- }))));
2029
- };
2030
-
2031
- var colors = {
2032
- dark: {
2033
- tagline: 'white',
2034
- title: 'white',
2035
- text: 'white',
2036
- background: 'gray.900'
2037
- },
2038
- light: {
2039
- tagline: 'primary.500',
2040
- title: 'black',
2041
- text: 'gray.500',
2042
- background: 'primary.50'
2043
- }
2044
- };
2045
- var SmallHero = function SmallHero(_ref) {
2046
- var slice = _ref.slice,
2047
- theme = _ref.theme;
2048
- return React__default.default.createElement(boemly.Box, {
2049
- position: "relative",
2050
- width: "full",
2051
- height: "xl",
2052
- backgroundColor: colors[theme].background
2053
- }, slice.image && React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(Image__default.default, {
2054
- src: strapiMediaUrl(slice.image.img, 'xLarge'),
2055
- alt: slice.image.alt,
2056
- fill: true,
2057
- style: {
2058
- objectFit: slice.image.objectFit || 'cover'
2059
- }
2060
- }), slice.gradient && React__default.default.createElement(boemly.Gradient, null)), React__default.default.createElement(boemly.Box, {
2061
- position: "absolute",
2062
- left: "0",
2063
- top: "60%",
2064
- width: "full",
2065
- textAlign: "center",
2066
- transform: "translateY(-50%)"
2067
- }, React__default.default.createElement(boemly.Wrapper, null, React__default.default.createElement(React__default.default.Fragment, null, slice.tags && React__default.default.createElement(boemly.Flex, {
2068
- direction: "row",
2069
- justify: "center",
2070
- gap: "2",
2071
- mb: "4",
2072
- wrap: "wrap"
2073
- }, slice.tags.map(function (_ref2) {
2074
- var id = _ref2.id,
2075
- text = _ref2.text,
2076
- colorScheme = _ref2.colorScheme;
2077
- return React__default.default.createElement(boemly.Tag, {
2078
- key: id,
2079
- colorScheme: colorScheme,
2080
- size: "md",
2081
- variant: "subtle"
2082
- }, text);
2083
- })), React__default.default.createElement(boemly.DefaultSectionHeader, {
2084
- isHero: true,
2085
- tagline: slice.tagline,
2086
- title: slice.title,
2087
- text: slice.subTitle,
2088
- taglineProps: {
2089
- color: colors[theme].tagline,
2090
- textAlign: 'center',
2091
- mx: 'auto'
2092
- },
2093
- titleProps: {
2094
- color: colors[theme].title,
2095
- maxW: '4xl',
2096
- textAlign: 'center',
2097
- mx: 'auto'
2098
- },
2099
- textProps: {
2100
- maxW: '2xl',
2101
- textAlign: 'center',
2102
- mx: 'auto',
2103
- color: colors[theme].text
2104
- }
2105
- }), slice.button && React__default.default.createElement(StrapiLinkButton, {
2106
- link: slice.button,
2107
- mt: "6",
2108
- size: "lg"
2109
- })))));
2110
- };
2111
-
2112
- var _templateObject$4, _templateObject2$1;
2113
- var BlogItemContainer = /*#__PURE__*/styled__default.default(boemly.Link)(_templateObject$4 || (_templateObject$4 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n text-decoration: none;\n\n & div img {\n transition: transform var(--default-ease) var(--medium-transition-duration);\n }\n\n &:hover {\n text-decoration: none;\n\n & > div:first-of-type img {\n transform: scale(1.03);\n }\n }\n"])));
2114
- var ImageContainer$1 = /*#__PURE__*/styled__default.default(boemly.Box)(_templateObject2$1 || (_templateObject2$1 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n width: 100%;\n height: var(--boemly-sizes-xs);\n position: relative;\n border-radius: var(--boemly-radii-2xl);\n\n // Fixes the flickering of borders during animation in Safari\n -webkit-mask-image: -webkit-radial-gradient(white, black);\n\n & span,\n div {\n border-radius: var(--boemly-radii-2xl);\n }\n\n @media screen and (max-width: ", ") {\n height: var(--boemly-sizes-3xs);\n }\n"])), BREAKPOINT_MD);
2115
-
2116
- var comparisonMessagesDe = {
2117
- 'sections.comparison.backgroundShapes': 'Hintergrundformen'
2118
- };
2119
-
2120
- var ctaMessagesDe = {
2121
- 'sections.cta.backgroundShapes': 'Dunkle Hintergrundformen',
2122
- 'sections.cta.backgroundShapesLight': 'Helle Hintergrundformen'
2123
- };
2124
-
2125
- var customerStoriesDe = {
2126
- 'sections.customerStories.more': 'Weiterlesen'
2127
- };
2128
-
2129
- var glossaryMessagesDe = {
2130
- 'sections.glossary.copyButtonLabel': 'Kopiere den Link zu diesem Abschnitt in die Zwischenablage',
2131
- 'sections.glossary.copySuccessMessage': 'Link in die Zwischenablage kopiert',
2132
- 'sections.glossary.copyFailureMessage': 'Link konnte nicht in die Zwischenablage kopiert werden'
2133
- };
2134
-
2135
- var projectFactsMessagesDe = {
2136
- 'sections.projectFacts.projectInfo.value': 'Projekt Infos',
2137
- 'projects.projectFacts.properties.area': 'Fläche'
2138
- };
2139
-
2140
- var projectsMapMessagesDe = {
2141
- 'sections.projectsMap.link.text': 'Mehr Infos'
2142
- };
2143
-
2144
- var shopCheckoutMessagesDe = {
2145
- 'sections.shopCheckout.intro.price': 'Preis',
2146
- 'sections.shopCheckout.contributionValue.label.EUR': 'Geben sie einen Betrag in € ein',
2147
- 'sections.shopCheckout.contributionValue.label.CHF': 'Geben sie einen Betrag in CHF ein',
2148
- 'sections.shopCheckout.contributionValue.unit.EUR': '€',
2149
- 'sections.shopCheckout.contributionValue.unit.CHF': 'CHF',
2150
- 'sections.shopCheckout.contributionValue.validation.empty': 'Bitte geben sie einen Betrag ein',
2151
- 'sections.shopCheckout.contributionValue.validation.tooLow.EUR': 'Der Betrag muss mindestens 10 Euro sein',
2152
- 'sections.shopCheckout.contributionValue.validation.tooLow.CHF': 'Der Betrag muss mindestens 10 CHF sein',
2153
- 'sections.shopCheckout.contributionValue.validation.tooHigh': 'Für größere Einkäufe kontaktieren Sie bitte unser Verkaufsteam über office@tree.ly',
2154
- 'sections.shopCheckout.summary.kg': 'Menge',
2155
- 'sections.shopCheckout.summary.price': 'Preis',
2156
- 'sections.shopCheckout.submit': 'Kaufen'
2157
- };
2158
-
2159
- var creditsAvailableBadgeMessagesDe = {
2160
- 'components.creditsAvailableBadge.text.yes': 'Credits verfügbar',
2161
- 'components.creditsAvailableBadge.text.some': 'Einige verbleibende Credits',
2162
- 'components.creditsAvailableBadge.text.no': 'Keine verbleibenden Credits',
2163
- 'components.creditsAvailableBadge.text.notYet': 'Noch keine Credits verfügbar'
2164
- };
2165
-
2166
- var portfolioDocumentsDownloadListMessagesDe = {
2167
- 'features.portfolio.documentsDownloadList.projectDocuments': 'Projektdokumente',
2168
- 'features.portfolio.documentsDownloadList.downloadDocument': 'Dokument herunterladen'
2169
- };
2170
-
2171
- var portfolioProjectInfoMessagesDe = {
2172
- 'features.projectInfo.projectInfo.value': 'Projekt Infos',
2173
- 'features.projectInfo.properties.area': 'Projekt Fläche',
2174
- 'features.projectInfo.properties.location': 'Standort',
2175
- 'features.projectInfo.properties.start': 'Projekt Start Datum',
2176
- 'features.projectInfo.properties.timeSpan': 'Projekt Zeitraum',
2177
- 'features.projectInfo.properties.projectType': 'Projekt Typ',
2178
- 'features.projectInfo.properties.projectDeveloper': 'Projekt Entwickler',
2179
- 'features.projectInfo.properties.verificationStandard.label': 'Verifizierungsstandard',
2180
- 'features.projectInfo.properties.verificationStandard.value.SilvaconsultFCSISO14': 'SILVACONSULT® Forest Carbon Standard, ISO 14064-2',
2181
- 'features.projectInfo.properties.forecastedAmountYear.label': 'Projektvolumen',
2182
- 'features.projectInfo.properties.riskBuffer': 'Anteil Risikopuffer',
2183
- 'features.projectInfo.properties.year': '{years} {years, plural, one {Jahr} other {Jahre} }'
2184
- };
2185
-
2186
- var portfolioSmallCheckoutMessagesDe = {
2187
- 'portfolio.smallCheckout.contributionValueCurrency.label.CHF': 'Geben Sie den Beitrag in Fr. ein',
2188
- 'portfolio.smallCheckout.contributionValueCurrency.label.EUR': 'Geben Sie den Beitrag in € ein',
2189
- 'portfolio.smallCheckout.contributionValueCurrency.unit.EUR': '€',
2190
- 'portfolio.smallCheckout.contributionValueCurrency.unit.CHF': 'Fr.',
2191
- 'portfolio.smallCheckout.contributionValueCurrency.validation.tooLow.CHF': 'Der Wert muss mindestens 10 CHF betragen',
2192
- 'portfolio.smallCheckout.contributionValueCurrency.validation.tooLow.EUR': 'Der Wert muss mindestens 10 Euro betragen.',
2193
- 'portfolio.smallCheckout.contributionValueCurrency.validation.empty': 'Bitte geben Sie einen Wert ein',
2194
- 'portfolio.smallCheckout.contributionValueCurrency.validation.tooHigh': 'Für größere Einkäufe kontaktieren Sie bitte unser Verkaufsteam über den unten stehenden Button',
2195
- 'portfolio.smallCheckout.contributionValueKgs.label': 'Beitrag in Tonnen',
2196
- 'portfolio.smallCheckout.submitButton': 'Credits kaufen',
2197
- 'portfolio.smallCheckout.cta.title': 'Möchten Sie mehr als 10.000 tCO₂ kaufen?',
2198
- 'portfolio.smallCheckout.cta.subTitle': 'Für Unternehmenskunden bieten wir individuelle Lösungen an. Kontaktieren Sie uns.',
2199
- 'portfolio.smallCheckout.cta.button': 'Unser Vertriebsteam kontaktieren'
2200
- };
2201
-
2202
- var unitMessagesEn = {
2203
- 'unit.formatter.tonsCo2': '{number} /tCO₂',
2204
- 'unit.formatter.tonsCo2PerYear': '{number} tCO₂/year'
2205
- };
2206
-
2207
- var rootMessagesDe = /*#__PURE__*/_extends({}, creditsAvailableBadgeMessagesDe, portfolioDocumentsDownloadListMessagesDe, portfolioProjectInfoMessagesDe, portfolioSmallCheckoutMessagesDe, comparisonMessagesDe, ctaMessagesDe, customerStoriesDe, glossaryMessagesDe, projectFactsMessagesDe, projectsMapMessagesDe, shopCheckoutMessagesDe, unitMessagesEn);
2208
-
2209
- var comparisonMessagesEn = {
2210
- 'sections.comparison.backgroundShapes': 'Background shapes'
2211
- };
2212
-
2213
- var ctaMessagesEn = {
2214
- 'sections.cta.backgroundShapesDark': 'Dark background shapes',
2215
- 'sections.cta.backgroundShapesLight': 'Light background shapes'
2216
- };
2217
-
2218
- var customerStoriesEn = {
2219
- 'sections.customerStories.more': 'Read more'
2220
- };
2221
-
2222
- var glossaryMessagesEn = {
2223
- 'sections.glossary.copyButtonLabel': 'Copy a link to this section to your clipboard',
2224
- 'sections.glossary.copySuccessMessage': 'Copied the link to your clipboard',
2225
- 'sections.glossary.copyFailureMessage': 'Could not copy link to clipboard'
2226
- };
2227
-
2228
- var projectFactsMessagesEn = {
2229
- 'sections.projectFacts.projectInfo.value': 'Project Infos',
2230
- 'projects.projectFacts.properties.area': 'Area'
2231
- };
2232
-
2233
- var projectsMapMessagesEn = {
2234
- 'sections.projectsMap.link.text': 'Show more info'
2235
- };
2236
-
2237
- var shopCheckoutMessagesEn = {
2238
- 'sections.shopCheckout.intro.price': 'Price',
2239
- 'sections.shopCheckout.contributionValue.label.EUR': 'Enter contribution value in €',
2240
- 'sections.shopCheckout.contributionValue.label.CHF': 'Enter contribution value in CHF',
2241
- 'sections.shopCheckout.contributionValue.unit.EUR': '€',
2242
- 'sections.shopCheckout.contributionValue.unit.CHF': 'CHF',
2243
- 'sections.shopCheckout.contributionValue.validation.empty': 'Please enter a value',
2244
- 'sections.shopCheckout.contributionValue.validation.tooLow.EUR': 'Der Betrag muss mindestens 10 Euro sein',
2245
- 'sections.shopCheckout.contributionValue.validation.tooLow.CHF': 'Der Betrag muss mindestens 10 CHF sein',
2246
- 'sections.shopCheckout.contributionValue.validation.tooHigh': 'For bigger purchases please contact our sales team via office@tree.ly',
2247
- 'sections.shopCheckout.summary.kg': 'Quantity',
2248
- 'sections.shopCheckout.summary.price': 'Price',
2249
- 'sections.shopCheckout.submit': 'Checkout'
2250
- };
2251
-
2252
- var creditsAvailableBadgeMessagesEn = {
2253
- 'components.creditsAvailableBadge.text.yes': 'Credits available',
2254
- 'components.creditsAvailableBadge.text.some': 'Some remaining credits',
2255
- 'components.creditsAvailableBadge.text.no': 'No remaining credits',
2256
- 'components.creditsAvailableBadge.text.notYet': 'No credits available yet'
2257
- };
2258
-
2259
- var portfolioDocumentsDownloadListMessagesEn = {
2260
- 'features.portfolio.documentsDownloadList.projectDocuments': 'Project documents',
2261
- 'features.portfolio.documentsDownloadList.downloadDocument': 'Download document'
2262
- };
2263
-
2264
- var portfolioProjectInfoMessagesEn = {
2265
- 'features.projectInfo.projectInfo.value': 'Project Infos',
2266
- 'features.projectInfo.properties.area': 'Project Area',
2267
- 'features.projectInfo.properties.location': 'Location',
2268
- 'features.projectInfo.properties.start': 'Project Start Date',
2269
- 'features.projectInfo.properties.timeSpan': 'Project Time Span',
2270
- 'features.projectInfo.properties.projectType': 'Project Type',
2271
- 'features.projectInfo.properties.projectDeveloper': 'Project Developer',
2272
- 'features.projectInfo.properties.verificationStandard.label': 'Verification Standard',
2273
- 'features.projectInfo.properties.verificationStandard.value.SilvaconsultFCSISO14': 'SILVACONSULT® Forest Carbon Standard, ISO 14064-2',
2274
- 'features.projectInfo.properties.forecastedAmountYear.label': 'Project Volume',
2275
- 'features.projectInfo.properties.riskBuffer': 'Risk Buffer Share',
2276
- 'features.projectInfo.properties.year': '{years} {years, plural, one {year} other {years} }'
2277
- };
2278
-
2279
- var portfolioSmallCheckoutMessagesEn = {
2280
- 'portfolio.smallCheckout.contributionValueCurrency.label.CHF': 'Contribution Amount in CHF',
2281
- 'portfolio.smallCheckout.contributionValueCurrency.label.EUR': 'Contribution Amount in €',
2282
- 'portfolio.smallCheckout.contributionValueCurrency.unit.EUR': '€',
2283
- 'portfolio.smallCheckout.contributionValueCurrency.unit.CHF': 'CHF',
2284
- 'portfolio.smallCheckout.contributionValueCurrency.validation.tooLow.CHF': 'The value must be at least 10 CHF',
2285
- 'portfolio.smallCheckout.contributionValueCurrency.validation.tooLow.EUR': 'The value must be at least 10 Euro',
2286
- 'portfolio.smallCheckout.contributionValueCurrency.validation.empty': 'Please enter a value',
2287
- 'portfolio.smallCheckout.contributionValueCurrency.validation.tooHigh': 'For bigger purchases please contact our sales team via office@tree.ly',
2288
- 'portfolio.smallCheckout.contributionValueKgs.label': 'Contribution Amount in Tons',
2289
- 'portfolio.smallCheckout.submitButton': 'Buy credits',
2290
- 'portfolio.smallCheckout.cta.title': 'Looking to buy more than 10.000 tCO₂?',
2291
- 'portfolio.smallCheckout.cta.subTitle': 'For enterprise-customers we offer custom solutions. Feel free to contact us.',
2292
- 'portfolio.smallCheckout.cta.button': 'Contact our Sales Team'
2293
- };
2294
-
2295
- var rootMessagesEn = /*#__PURE__*/_extends({}, creditsAvailableBadgeMessagesEn, portfolioDocumentsDownloadListMessagesEn, portfolioProjectInfoMessagesEn, portfolioSmallCheckoutMessagesEn, comparisonMessagesEn, ctaMessagesEn, customerStoriesEn, glossaryMessagesEn, projectFactsMessagesEn, projectsMapMessagesEn, shopCheckoutMessagesEn, unitMessagesEn);
2296
-
2297
- var _templateObject$3;
2298
- var GLOBAL_STYLE = /*#__PURE__*/react$1.css(_templateObject$3 || (_templateObject$3 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n // GintoNord\n @font-face {\n font-family: 'GintoNord';\n src: url('", "/assets/v3/fonts/ABCGintoNord-Bold.woff2')\n format('woff2');\n font-style: normal;\n font-weight: 700;\n font-display: block;\n }\n // Inter\n @font-face {\n font-family: 'Inter';\n src: url('", "/assets/v3/fonts/Inter-Regular.woff2') format('woff2');\n font-style: normal;\n font-weight: 400;\n font-display: block;\n }\n @font-face {\n font-family: 'Inter';\n src: url('", "/assets/v3/fonts/Inter-Medium.woff2') format('woff2');\n font-style: normal;\n font-weight: 500;\n font-display: block;\n }\n @font-face {\n font-family: 'Inter';\n src: url('", "/assets/v3/fonts/Inter-SemiBold.woff2') format('woff2');\n font-style: normal;\n font-weight: 600;\n font-display: block;\n }\n @font-face {\n font-family: 'Inter';\n src: url('", "/assets/v3/fonts/Inter-Bold.woff2') format('woff2');\n font-style: normal;\n font-weight: 700;\n font-display: block;\n }\n // SpaceMono\n @font-face {\n font-family: 'SpaceMono';\n src: url('", "/assets/v3/fonts/SpaceMono-Bold.woff2') format('woff2');\n font-style: normal;\n font-weight: 700;\n font-display: block;\n }\n\n :root {\n --default-hero-height: calc(100vh - var(--boemly-space-24));\n }\n\n a {\n text-decoration: none;\n }\n"])), CDN_URI, CDN_URI, CDN_URI, CDN_URI, CDN_URI, CDN_URI);
2299
-
2300
- var FONT_CUSTOMIZATIONS = {
2301
- body: 'Inter',
2302
- heading: 'Inter',
2303
- display: 'GintoNord',
2304
- mono: 'SpaceMono'
2305
- };
2306
-
2307
- var cache = /*#__PURE__*/reactIntl.createIntlCache();
2308
- var intlFactory = function intlFactory(locale) {
2309
- return reactIntl.createIntl({
2310
- locale: locale,
2311
- messages: {
2312
- de: rootMessagesDe,
2313
- en: rootMessagesEn
2314
- }[locale]
2315
- }, cache);
2316
- };
2317
- var IntlContext = /*#__PURE__*/React.createContext( /*#__PURE__*/intlFactory('en'));
2318
- var ContextProvider = function ContextProvider(_ref) {
2319
- var children = _ref.children,
2320
- locale = _ref.locale;
2321
- return React__default.default.createElement(boemly.BoemlyThemeProvider, {
2322
- fonts: FONT_CUSTOMIZATIONS
2323
- }, React__default.default.createElement(react$1.Global, {
2324
- styles: {
2325
- GLOBAL_STYLE: GLOBAL_STYLE
2326
- }
2327
- }), React__default.default.createElement(IntlContext.Provider, {
2328
- value: intlFactory(locale)
2329
- }, children));
2330
- };
2331
-
2332
- var Blog = function Blog(_ref) {
2333
- var slice = _ref.slice,
2334
- blogPosts = _ref.blogPosts;
2335
- var _useContext = React.useContext(IntlContext),
2336
- formatDate = _useContext.formatDate;
2337
- var sortedBlogPosts = slice.blog_posts.sort(function (a, b) {
2338
- return new Date(b.attributes.createdAt).getTime() - new Date(a.attributes.createdAt).getTime();
2339
- });
2340
- return React__default.default.createElement(boemly.DefaultSectionContainer, null, React__default.default.createElement(boemly.Wrapper, null, React__default.default.createElement(boemly.SimpleGrid, {
2341
- columns: [1, null, null, 2],
2342
- spacingX: 56,
2343
- spacingY: 24
2344
- }, sortedBlogPosts.map(function (_ref2) {
2345
- var attributes = _ref2.attributes;
2346
- var blogPost = blogPosts.find(function (bp) {
2347
- return bp.attributes.slug === attributes.slug;
2348
- });
2349
- if (!blogPost) {
2350
- return null;
2351
- }
2352
- return React__default.default.createElement(BlogItemContainer, {
2353
- key: blogPost.attributes.slug,
2354
- as: Link__default.default,
2355
- href: "/blog/" + blogPost.attributes.slug
2356
- }, React__default.default.createElement(ImageContainer$1, null, React__default.default.createElement(Image__default.default, {
2357
- src: strapiMediaUrl(blogPost.attributes.img.img, 'large'),
2358
- alt: blogPost.attributes.img.alt,
2359
- fill: true,
2360
- style: {
2361
- objectFit: blogPost.attributes.img.objectFit || 'cover'
2362
- }
2363
- })), React__default.default.createElement(boemly.Box, {
2364
- px: "2",
2365
- py: "8"
2366
- }, blogPost.attributes.category && React__default.default.createElement(boemly.Text, {
2367
- size: "smMonoUppercase",
2368
- color: "primary.800",
2369
- mb: "2"
2370
- }, blogPost.attributes.category.data.attributes.name), React__default.default.createElement(boemly.Heading, {
2371
- size: "lg"
2372
- }, blogPost.attributes.title), blogPost.attributes.teaser && React__default.default.createElement(boemly.Text, {
2373
- size: "mdRegularNormal",
2374
- mt: "2"
2375
- }, blogPost.attributes.teaser), React__default.default.createElement(boemly.Spacer, {
2376
- height: "4"
2377
- }), React__default.default.createElement(boemly.DatePersonPair, {
2378
- date: formatDate(blogPost.attributes.createdAt),
2379
- person: blogPost.attributes.author ? {
2380
- name: blogPost.attributes.author.data.attributes.name,
2381
- image: React__default.default.createElement(Image__default.default, {
2382
- src: strapiMediaUrl(blogPost.attributes.author.data.attributes.img.img, 'thumbnail'),
2383
- alt: blogPost.attributes.author.data.attributes.img.alt,
2384
- fill: true,
2385
- style: {
2386
- objectFit: blogPost.attributes.author.data.attributes.img.objectFit || 'cover'
2387
- }
2388
- })
2389
- } : undefined
2390
- })));
2391
- }))));
2392
- };
2393
-
2394
- var ConditionalWrapper = function ConditionalWrapper(_ref) {
2395
- var condition = _ref.condition,
2396
- wrapper = _ref.wrapper,
2397
- children = _ref.children;
2398
- return condition ? wrapper(children) : children;
2399
- };
2400
- var ProjectsGrid = function ProjectsGrid(_ref2) {
2401
- var slice = _ref2.slice;
2402
- return React__default.default.createElement(boemly.DefaultSectionContainer, null, React__default.default.createElement(boemly.Wrapper, null, React__default.default.createElement(boemly.SimpleGrid, {
2403
- columns: [1, null, null, 2, null, 3],
2404
- gap: "16"
2405
- }, slice.projects.map(function (card) {
2406
- var _card$project;
2407
- return React__default.default.createElement(ConditionalWrapper, {
2408
- key: card.id,
2409
- condition: !!((_card$project = card.project) != null && _card$project.data),
2410
- wrapper: function wrapper(children) {
2411
- var _card$project2;
2412
- return React__default.default.createElement(Link__default.default, {
2413
- href: "/portfolio/" + ((_card$project2 = card.project) == null || (_card$project2 = _card$project2.data) == null ? void 0 : _card$project2.attributes.slug),
2414
- passHref: true,
2415
- key: card.id,
2416
- legacyBehavior: true
2417
- }, children);
2418
- }
2419
- }, React__default.default.createElement(boemly.Box, {
2420
- as: "a",
2421
- cursor: "pointer",
2422
- borderRadius: "2xl",
2423
- width: "fit-content",
2424
- height: "fit-content",
2425
- transition: "box-shadow ease " + MEDIUM_TRANSITION_DURATION + "s",
2426
- _hover: {
2427
- boxShadow: 'lg'
2428
- }
2429
- }, React__default.default.createElement(boemly.ProjectCard, {
2430
- title: card.title,
2431
- facts: card.facts,
2432
- footerTitle: card.footerTitle,
2433
- footerSubTitle: card.footerSubTitle,
2434
- image: React__default.default.createElement(Image__default.default, {
2435
- src: strapiMediaUrl(card.image.img, 'medium'),
2436
- alt: card.image.alt,
2437
- fill: true,
2438
- style: {
2439
- objectFit: card.image.objectFit || 'cover'
2440
- }
2441
- })
2442
- })));
2443
- }))));
2444
- };
2445
-
2446
- var MAPBOX_TOKEN = 'pk.eyJ1IjoidHJlZS1seSIsImEiOiJja25rNG1heHgwNThjMnZwZTl2eThmeXUwIn0.SOrYUKfevZkbx8jZPxJesA';
2447
- var MapBoxStyle;
2448
- (function (MapBoxStyle) {
2449
- MapBoxStyle["Outdoors"] = "mapbox://styles/mapbox/outdoors-v11";
2450
- MapBoxStyle["SatelliteStreets"] = "mapbox://styles/mapbox/satellite-streets-v11";
2451
- MapBoxStyle["Satellite"] = "mapbox://styles/mapbox/satellite-v9";
2452
- MapBoxStyle["CaliTerrain"] = "mapbox://styles/tree-ly/clna54iq603ht01pbc199cszw";
2453
- })(MapBoxStyle || (MapBoxStyle = {}));
2454
- (process.env.NEXT_PUBLIC_MAPBOX_TILES_URL || 'http://localhost:8123') + "/vectortiles/v1/plots/{z}/{x}/{y}.mvt";
2455
- var MAPBOX_MAX_ZOOM = 19;
2456
- var MAPBOX_INITIAL_ZOOM = 13;
2457
-
2458
- var mergeBoundingBoxes = function mergeBoundingBoxes(boundingBoxes) {
2459
- var minLeft = 180;
2460
- var minBottom = 90;
2461
- var maxRight = -180;
2462
- var maxTop = -90;
2463
- boundingBoxes.forEach(function (_ref) {
2464
- var left = _ref[0],
2465
- bottom = _ref[1],
2466
- right = _ref[2],
2467
- top = _ref[3];
2468
- if (left < minLeft) minLeft = left;
2469
- if (bottom < minBottom) minBottom = bottom;
2470
- if (right > maxRight) maxRight = right;
2471
- if (top > maxTop) maxTop = top;
2472
- });
2473
- return [minLeft, minBottom, maxRight, maxTop];
2474
- };
2475
-
2476
- var messages = {
2477
- en: rootMessagesEn,
2478
- de: rootMessagesDe
2479
- };
2480
- var MinimalProviders = function MinimalProviders(_ref) {
2481
- var children = _ref.children,
2482
- locale = _ref.locale;
2483
- return React__default.default.createElement(reactIntl.IntlProvider, {
2484
- messages: messages[locale],
2485
- locale: locale
2486
- }, React__default.default.createElement(boemly.BoemlyThemeProvider, {
2487
- fonts: FONT_CUSTOMIZATIONS
2488
- }, children));
2489
- };
2490
-
2491
- var CreditsAvailableState;
2492
- (function (CreditsAvailableState) {
2493
- CreditsAvailableState["YES"] = "yes";
2494
- CreditsAvailableState["SOME"] = "some";
2495
- CreditsAvailableState["NO"] = "no";
2496
- CreditsAvailableState["NOT_YET"] = "notYet";
2497
- })(CreditsAvailableState || (CreditsAvailableState = {}));
2498
- var CreditsAvailableState$1 = CreditsAvailableState;
2499
-
2500
- var CreditsAvailableBadge = function CreditsAvailableBadge(_ref) {
2501
- var _variants;
2502
- var status = _ref.status,
2503
- href = _ref.href;
2504
- var _useContext = React.useContext(IntlContext),
2505
- formatMessage = _useContext.formatMessage;
2506
- var variants = (_variants = {}, _variants[CreditsAvailableState$1.YES] = {
2507
- color: 'green',
2508
- text: formatMessage({
2509
- id: 'components.creditsAvailableBadge.text.yes'
2510
- })
2511
- }, _variants[CreditsAvailableState$1.SOME] = {
2512
- color: 'orange',
2513
- text: formatMessage({
2514
- id: 'components.creditsAvailableBadge.text.some'
2515
- })
2516
- }, _variants[CreditsAvailableState$1.NO] = {
2517
- color: 'red',
2518
- text: formatMessage({
2519
- id: 'components.creditsAvailableBadge.text.no'
2520
- })
2521
- }, _variants[CreditsAvailableState$1.NOT_YET] = {
2522
- color: 'blue',
2523
- text: formatMessage({
2524
- id: 'components.creditsAvailableBadge.text.notYet'
2525
- })
2526
- }, _variants);
2527
- var variant = variants[status];
2528
- return React__default.default.createElement(boemly.Badge, {
2529
- as: href ? Link__default.default : undefined,
2530
- href: href,
2531
- colorScheme: variant.color,
2532
- width: "fit-content"
2533
- }, variant.text);
2534
- };
2535
-
2536
- var MapMarker = function MapMarker(_ref) {
2537
- var title = _ref.title,
2538
- projectDeveloper = _ref.projectDeveloper,
2539
- slug = _ref.slug,
2540
- creditsAvailable = _ref.creditsAvailable,
2541
- _ref$isPublic = _ref.isPublic,
2542
- isPublic = _ref$isPublic === void 0 ? false : _ref$isPublic;
2543
- var _useContext = React.useContext(IntlContext),
2544
- formatMessage = _useContext.formatMessage;
2545
- var _useDisclosure = boemly.useDisclosure(),
2546
- isOpen = _useDisclosure.isOpen,
2547
- onOpen = _useDisclosure.onOpen,
2548
- onClose = _useDisclosure.onClose;
2549
- var blue600 = boemly.useToken('colors', 'blue.600');
2550
- return React__default.default.createElement(boemly.Flex, {
2551
- position: "absolute",
2552
- gap: "4",
2553
- onMouseEnter: onOpen,
2554
- onMouseLeave: onClose,
2555
- cursor: "grab"
2556
- }, React__default.default.createElement(boemly.Box, {
2557
- as: slug ? Link__default.default : undefined,
2558
- href: slug && "/portfolio/" + slug
2559
- }, React__default.default.createElement(react.MapPin, {
2560
- size: "40px",
2561
- color: blue600,
2562
- weight: "fill",
2563
- "data-testid": "mapmarker-pin",
2564
- filter: "drop-shadow(0px 0px 2px #FFF)"
2565
- })), isPublic && isOpen && React__default.default.createElement(boemly.Container, {
2566
- shadow: "md",
2567
- width: "max-content",
2568
- minWidth: "3xs",
2569
- maxWidth: ['3xs', null, null, 'sm']
2570
- }, React__default.default.createElement(boemly.Flex, {
2571
- direction: "column"
2572
- }, creditsAvailable && React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(CreditsAvailableBadge, {
2573
- status: creditsAvailable,
2574
- href: slug && "/portfolio/" + slug
2575
- }), React__default.default.createElement(boemly.Box, {
2576
- height: "3"
2577
- })), React__default.default.createElement(boemly.Heading, {
2578
- size: "md"
2579
- }, title), projectDeveloper && React__default.default.createElement(boemly.Text, {
2580
- size: "smLowNormal",
2581
- mt: "1"
2582
- }, projectDeveloper), slug && React__default.default.createElement(boemly.Button, {
2583
- width: "fit-content",
2584
- variant: "outline",
2585
- size: "sm",
2586
- as: Link__default.default,
2587
- href: "/portfolio/" + slug,
2588
- mt: "4",
2589
- whiteSpace: "nowrap"
2590
- }, formatMessage({
2591
- id: 'sections.projectsMap.link.text'
2592
- })))));
2593
- };
2594
-
2595
- var _templateObject$2;
2596
- var mapboxStyle = /*#__PURE__*/react$1.css(_templateObject$2 || (_templateObject$2 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n .mapboxgl-map {\n -webkit-tap-highlight-color: rgb(0 0 0/0);\n font: 12px/20px Helvetica Neue, Arial, Helvetica, sans-serif;\n overflow: hidden;\n position: relative;\n }\n .mapboxgl-canvas {\n left: 0;\n position: absolute;\n top: 0;\n }\n .mapboxgl-map:-webkit-full-screen {\n height: 100%;\n width: 100%;\n }\n .mapboxgl-canary {\n background-color: salmon;\n }\n .mapboxgl-canvas-container.mapboxgl-interactive,\n .mapboxgl-ctrl-group button.mapboxgl-ctrl-compass {\n cursor: grab;\n -webkit-user-select: none;\n user-select: none;\n }\n .mapboxgl-canvas-container.mapboxgl-interactive.mapboxgl-track-pointer {\n cursor: pointer;\n }\n .mapboxgl-canvas-container.mapboxgl-interactive:active,\n .mapboxgl-ctrl-group button.mapboxgl-ctrl-compass:active {\n cursor: grabbing;\n }\n .mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate,\n .mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate .mapboxgl-canvas {\n touch-action: pan-x pan-y;\n }\n .mapboxgl-canvas-container.mapboxgl-touch-drag-pan,\n .mapboxgl-canvas-container.mapboxgl-touch-drag-pan .mapboxgl-canvas {\n touch-action: pinch-zoom;\n }\n .mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate.mapboxgl-touch-drag-pan,\n .mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate.mapboxgl-touch-drag-pan\n .mapboxgl-canvas {\n touch-action: none;\n }\n .mapboxgl-ctrl-bottom-left,\n .mapboxgl-ctrl-bottom-right,\n .mapboxgl-ctrl-top-left,\n .mapboxgl-ctrl-top-right {\n pointer-events: none;\n position: absolute;\n z-index: 2;\n }\n .mapboxgl-ctrl-top-left {\n left: 0;\n top: 0;\n }\n .mapboxgl-ctrl-top-right {\n right: 0;\n top: 0;\n }\n .mapboxgl-ctrl-bottom-left {\n bottom: 0;\n left: 0;\n }\n .mapboxgl-ctrl-bottom-right {\n bottom: 0;\n right: 0;\n }\n .mapboxgl-ctrl {\n clear: both;\n pointer-events: auto;\n transform: translate(0);\n }\n .mapboxgl-ctrl-top-left .mapboxgl-ctrl {\n float: left;\n margin: 10px 0 0 10px;\n }\n .mapboxgl-ctrl-top-right .mapboxgl-ctrl {\n float: right;\n margin: 10px 10px 0 0;\n }\n .mapboxgl-ctrl-bottom-left .mapboxgl-ctrl {\n float: left;\n margin: 0 0 10px 10px;\n }\n .mapboxgl-ctrl-bottom-right .mapboxgl-ctrl {\n float: right;\n margin: 0 10px 10px 0;\n }\n .mapboxgl-ctrl-group {\n background: #fff;\n border-radius: 4px;\n }\n .mapboxgl-ctrl-group:not(:empty) {\n box-shadow: 0 0 0 2px rgba(0, 0, 0, 0.1);\n }\n @media (-ms-high-contrast: active) {\n .mapboxgl-ctrl-group:not(:empty) {\n box-shadow: 0 0 0 2px ButtonText;\n }\n }\n .mapboxgl-ctrl-group button {\n background-color: transparent;\n border: 0;\n box-sizing: border-box;\n cursor: pointer;\n display: block;\n height: 29px;\n outline: none;\n overflow: hidden;\n padding: 0;\n width: 29px;\n }\n .mapboxgl-ctrl-group button + button {\n border-top: 1px solid #ddd;\n }\n .mapboxgl-ctrl button .mapboxgl-ctrl-icon {\n background-position: 50%;\n background-repeat: no-repeat;\n display: block;\n height: 100%;\n width: 100%;\n }\n @media (-ms-high-contrast: active) {\n .mapboxgl-ctrl-icon {\n background-color: transparent;\n }\n .mapboxgl-ctrl-group button + button {\n border-top: 1px solid ButtonText;\n }\n }\n .mapboxgl-ctrl-attrib-button:focus,\n .mapboxgl-ctrl-group button:focus {\n box-shadow: 0 0 2px 2px #0096ff;\n }\n .mapboxgl-ctrl button:disabled {\n cursor: not-allowed;\n }\n .mapboxgl-ctrl button:disabled .mapboxgl-ctrl-icon {\n opacity: 0.25;\n }\n .mapboxgl-ctrl-group button:first-child {\n border-radius: 4px 4px 0 0;\n }\n .mapboxgl-ctrl-group button:last-child {\n border-radius: 0 0 4px 4px;\n }\n .mapboxgl-ctrl-group button:only-child {\n border-radius: inherit;\n }\n .mapboxgl-ctrl button:not(:disabled):hover {\n background-color: rgb(0 0 0/5%);\n }\n .mapboxgl-ctrl-group button:focus:focus-visible {\n box-shadow: 0 0 2px 2px #0096ff;\n }\n .mapboxgl-ctrl-group button:focus:not(:focus-visible) {\n box-shadow: none;\n }\n .mapboxgl-ctrl button.mapboxgl-ctrl-zoom-out .mapboxgl-ctrl-icon {\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23333' viewBox='0 0 29 29'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-9z'/%3E%3C/svg%3E\");\n }\n .mapboxgl-ctrl button.mapboxgl-ctrl-zoom-in .mapboxgl-ctrl-icon {\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23333' viewBox='0 0 29 29'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5z'/%3E%3C/svg%3E\");\n }\n @media (-ms-high-contrast: active) {\n .mapboxgl-ctrl button.mapboxgl-ctrl-zoom-out .mapboxgl-ctrl-icon {\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 29 29'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-9z'/%3E%3C/svg%3E\");\n }\n .mapboxgl-ctrl button.mapboxgl-ctrl-zoom-in .mapboxgl-ctrl-icon {\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 29 29'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5z'/%3E%3C/svg%3E\");\n }\n }\n @media (-ms-high-contrast: black-on-white) {\n .mapboxgl-ctrl button.mapboxgl-ctrl-zoom-out .mapboxgl-ctrl-icon {\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23000' viewBox='0 0 29 29'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-9z'/%3E%3C/svg%3E\");\n }\n .mapboxgl-ctrl button.mapboxgl-ctrl-zoom-in .mapboxgl-ctrl-icon {\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23000' viewBox='0 0 29 29'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5z'/%3E%3C/svg%3E\");\n }\n }\n .mapboxgl-ctrl button.mapboxgl-ctrl-fullscreen .mapboxgl-ctrl-icon {\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23333' viewBox='0 0 29 29'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3h1zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16h1zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5H13zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1V7.5z'/%3E%3C/svg%3E\");\n }\n .mapboxgl-ctrl button.mapboxgl-ctrl-shrink .mapboxgl-ctrl-icon {\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 29 29'%3E%3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1h-5.5zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1v-5.5zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1v5.5zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1h5.5z'/%3E%3C/svg%3E\");\n }\n @media (-ms-high-contrast: active) {\n .mapboxgl-ctrl button.mapboxgl-ctrl-fullscreen .mapboxgl-ctrl-icon {\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 29 29'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3h1zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16h1zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5H13zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1V7.5z'/%3E%3C/svg%3E\");\n }\n .mapboxgl-ctrl button.mapboxgl-ctrl-shrink .mapboxgl-ctrl-icon {\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 29 29'%3E%3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1h-5.5zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1v-5.5zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1v5.5zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1h5.5z'/%3E%3C/svg%3E\");\n }\n }\n @media (-ms-high-contrast: black-on-white) {\n .mapboxgl-ctrl button.mapboxgl-ctrl-fullscreen .mapboxgl-ctrl-icon {\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23000' viewBox='0 0 29 29'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3h1zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16h1zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5H13zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1V7.5z'/%3E%3C/svg%3E\");\n }\n .mapboxgl-ctrl button.mapboxgl-ctrl-shrink .mapboxgl-ctrl-icon {\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23000' viewBox='0 0 29 29'%3E%3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1h-5.5zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1v-5.5zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1v5.5zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1h5.5z'/%3E%3C/svg%3E\");\n }\n }\n .mapboxgl-ctrl button.mapboxgl-ctrl-compass .mapboxgl-ctrl-icon {\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23333' viewBox='0 0 29 29'%3E%3Cpath d='M10.5 14l4-8 4 8h-8z'/%3E%3Cpath id='south' d='M10.5 16l4 8 4-8h-8z' fill='%23ccc'/%3E%3C/svg%3E\");\n }\n @media (-ms-high-contrast: active) {\n .mapboxgl-ctrl button.mapboxgl-ctrl-compass .mapboxgl-ctrl-icon {\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 29 29'%3E%3Cpath d='M10.5 14l4-8 4 8h-8z'/%3E%3Cpath id='south' d='M10.5 16l4 8 4-8h-8z' fill='%23999'/%3E%3C/svg%3E\");\n }\n }\n @media (-ms-high-contrast: black-on-white) {\n .mapboxgl-ctrl button.mapboxgl-ctrl-compass .mapboxgl-ctrl-icon {\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23000' viewBox='0 0 29 29'%3E%3Cpath d='M10.5 14l4-8 4 8h-8z'/%3E%3Cpath id='south' d='M10.5 16l4 8 4-8h-8z' fill='%23ccc'/%3E%3C/svg%3E\");\n }\n }\n .mapboxgl-ctrl button.mapboxgl-ctrl-geolocate .mapboxgl-ctrl-icon {\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23333'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle id='dot' cx='10' cy='10' r='2'/%3E%3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' display='none'/%3E%3C/svg%3E\");\n }\n .mapboxgl-ctrl button.mapboxgl-ctrl-geolocate:disabled .mapboxgl-ctrl-icon {\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23aaa'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle id='dot' cx='10' cy='10' r='2'/%3E%3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' fill='%23f00'/%3E%3C/svg%3E\");\n }\n .mapboxgl-ctrl\n button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active\n .mapboxgl-ctrl-icon {\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%2333b5e5'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle id='dot' cx='10' cy='10' r='2'/%3E%3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' display='none'/%3E%3C/svg%3E\");\n }\n .mapboxgl-ctrl\n button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active-error\n .mapboxgl-ctrl-icon {\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23e58978'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle id='dot' cx='10' cy='10' r='2'/%3E%3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' display='none'/%3E%3C/svg%3E\");\n }\n .mapboxgl-ctrl\n button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background\n .mapboxgl-ctrl-icon {\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%2333b5e5'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle id='dot' cx='10' cy='10' r='2' display='none'/%3E%3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' display='none'/%3E%3C/svg%3E\");\n }\n .mapboxgl-ctrl\n button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background-error\n .mapboxgl-ctrl-icon {\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23e54e33'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle id='dot' cx='10' cy='10' r='2' display='none'/%3E%3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' display='none'/%3E%3C/svg%3E\");\n }\n .mapboxgl-ctrl\n button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-waiting\n .mapboxgl-ctrl-icon {\n animation: mapboxgl-spin 2s linear infinite;\n }\n @media (-ms-high-contrast: active) {\n .mapboxgl-ctrl button.mapboxgl-ctrl-geolocate .mapboxgl-ctrl-icon {\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle id='dot' cx='10' cy='10' r='2'/%3E%3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' display='none'/%3E%3C/svg%3E\");\n }\n .mapboxgl-ctrl button.mapboxgl-ctrl-geolocate:disabled .mapboxgl-ctrl-icon {\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23999'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle id='dot' cx='10' cy='10' r='2'/%3E%3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' fill='%23f00'/%3E%3C/svg%3E\");\n }\n .mapboxgl-ctrl\n button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active\n .mapboxgl-ctrl-icon {\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%2333b5e5'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle id='dot' cx='10' cy='10' r='2'/%3E%3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' display='none'/%3E%3C/svg%3E\");\n }\n .mapboxgl-ctrl\n button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active-error\n .mapboxgl-ctrl-icon {\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23e58978'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle id='dot' cx='10' cy='10' r='2'/%3E%3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' display='none'/%3E%3C/svg%3E\");\n }\n .mapboxgl-ctrl\n button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background\n .mapboxgl-ctrl-icon {\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%2333b5e5'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle id='dot' cx='10' cy='10' r='2' display='none'/%3E%3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' display='none'/%3E%3C/svg%3E\");\n }\n .mapboxgl-ctrl\n button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background-error\n .mapboxgl-ctrl-icon {\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23e54e33'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle id='dot' cx='10' cy='10' r='2' display='none'/%3E%3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' display='none'/%3E%3C/svg%3E\");\n }\n }\n @media (-ms-high-contrast: black-on-white) {\n .mapboxgl-ctrl button.mapboxgl-ctrl-geolocate .mapboxgl-ctrl-icon {\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23000'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle id='dot' cx='10' cy='10' r='2'/%3E%3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' display='none'/%3E%3C/svg%3E\");\n }\n .mapboxgl-ctrl button.mapboxgl-ctrl-geolocate:disabled .mapboxgl-ctrl-icon {\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23666'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle id='dot' cx='10' cy='10' r='2'/%3E%3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' fill='%23f00'/%3E%3C/svg%3E\");\n }\n }\n @keyframes mapboxgl-spin {\n 0% {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(1turn);\n }\n }\n a.mapboxgl-ctrl-logo {\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' fill-rule='evenodd' viewBox='0 0 88 23'%3E%3Cdefs%3E%3Cpath id='logo' d='M11.5 2.25c5.105 0 9.25 4.145 9.25 9.25s-4.145 9.25-9.25 9.25-9.25-4.145-9.25-9.25 4.145-9.25 9.25-9.25zM6.997 15.983c-.051-.338-.828-5.802 2.233-8.873a4.395 4.395 0 013.13-1.28c1.27 0 2.49.51 3.39 1.42.91.9 1.42 2.12 1.42 3.39 0 1.18-.449 2.301-1.28 3.13C12.72 16.93 7 16 7 16l-.003-.017zM15.3 10.5l-2 .8-.8 2-.8-2-2-.8 2-.8.8-2 .8 2 2 .8z'/%3E%3Cpath id='text' d='M50.63 8c.13 0 .23.1.23.23V9c.7-.76 1.7-1.18 2.73-1.18 2.17 0 3.95 1.85 3.95 4.17s-1.77 4.19-3.94 4.19c-1.04 0-2.03-.43-2.74-1.18v3.77c0 .13-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V8.23c0-.12.1-.23.23-.23h1.4zm-3.86.01c.01 0 .01 0 .01-.01.13 0 .22.1.22.22v7.55c0 .12-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V15c-.7.76-1.69 1.19-2.73 1.19-2.17 0-3.94-1.87-3.94-4.19 0-2.32 1.77-4.19 3.94-4.19 1.03 0 2.02.43 2.73 1.18v-.75c0-.12.1-.23.23-.23h1.4zm26.375-.19a4.24 4.24 0 00-4.16 3.29c-.13.59-.13 1.19 0 1.77a4.233 4.233 0 004.17 3.3c2.35 0 4.26-1.87 4.26-4.19 0-2.32-1.9-4.17-4.27-4.17zM60.63 5c.13 0 .23.1.23.23v3.76c.7-.76 1.7-1.18 2.73-1.18 1.88 0 3.45 1.4 3.84 3.28.13.59.13 1.2 0 1.8-.39 1.88-1.96 3.29-3.84 3.29-1.03 0-2.02-.43-2.73-1.18v.77c0 .12-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V5.23c0-.12.1-.23.23-.23h1.4zm-34 11h-1.4c-.13 0-.23-.11-.23-.23V8.22c.01-.13.1-.22.23-.22h1.4c.13 0 .22.11.23.22v.68c.5-.68 1.3-1.09 2.16-1.1h.03c1.09 0 2.09.6 2.6 1.55.45-.95 1.4-1.55 2.44-1.56 1.62 0 2.93 1.25 2.9 2.78l.03 5.2c0 .13-.1.23-.23.23h-1.41c-.13 0-.23-.11-.23-.23v-4.59c0-.98-.74-1.71-1.62-1.71-.8 0-1.46.7-1.59 1.62l.01 4.68c0 .13-.11.23-.23.23h-1.41c-.13 0-.23-.11-.23-.23v-4.59c0-.98-.74-1.71-1.62-1.71-.85 0-1.54.79-1.6 1.8v4.5c0 .13-.1.23-.23.23zm53.615 0h-1.61c-.04 0-.08-.01-.12-.03-.09-.06-.13-.19-.06-.28l2.43-3.71-2.39-3.65a.213.213 0 01-.03-.12c0-.12.09-.21.21-.21h1.61c.13 0 .24.06.3.17l1.41 2.37 1.4-2.37a.34.34 0 01.3-.17h1.6c.04 0 .08.01.12.03.09.06.13.19.06.28l-2.37 3.65 2.43 3.7c0 .05.01.09.01.13 0 .12-.09.21-.21.21h-1.61c-.13 0-.24-.06-.3-.17l-1.44-2.42-1.44 2.42a.34.34 0 01-.3.17zm-7.12-1.49c-1.33 0-2.42-1.12-2.42-2.51 0-1.39 1.08-2.52 2.42-2.52 1.33 0 2.42 1.12 2.42 2.51 0 1.39-1.08 2.51-2.42 2.52zm-19.865 0c-1.32 0-2.39-1.11-2.42-2.48v-.07c.02-1.38 1.09-2.49 2.4-2.49 1.32 0 2.41 1.12 2.41 2.51 0 1.39-1.07 2.52-2.39 2.53zm-8.11-2.48c-.01 1.37-1.09 2.47-2.41 2.47s-2.42-1.12-2.42-2.51c0-1.39 1.08-2.52 2.4-2.52 1.33 0 2.39 1.11 2.41 2.48l.02.08zm18.12 2.47c-1.32 0-2.39-1.11-2.41-2.48v-.06c.02-1.38 1.09-2.48 2.41-2.48s2.42 1.12 2.42 2.51c0 1.39-1.09 2.51-2.42 2.51z'/%3E%3C/defs%3E%3Cmask id='clip'%3E%3Crect x='0' y='0' width='100%25' height='100%25' fill='white'/%3E%3Cuse xlink:href='%23logo'/%3E%3Cuse xlink:href='%23text'/%3E%3C/mask%3E%3Cg id='outline' opacity='0.3' stroke='%23000' stroke-width='3'%3E%3Ccircle mask='url(%23clip)' cx='11.5' cy='11.5' r='9.25'/%3E%3Cuse xlink:href='%23text' mask='url(%23clip)'/%3E%3C/g%3E%3Cg id='fill' opacity='0.9' fill='%23fff'%3E%3Cuse xlink:href='%23logo'/%3E%3Cuse xlink:href='%23text'/%3E%3C/g%3E%3C/svg%3E\");\n background-repeat: no-repeat;\n cursor: pointer;\n display: block;\n height: 23px;\n margin: 0 0 -4px -4px;\n overflow: hidden;\n width: 88px;\n }\n a.mapboxgl-ctrl-logo.mapboxgl-compact {\n width: 23px;\n }\n @media (-ms-high-contrast: active) {\n a.mapboxgl-ctrl-logo {\n background-color: transparent;\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' fill-rule='evenodd' viewBox='0 0 88 23'%3E%3Cdefs%3E%3Cpath id='logo' d='M11.5 2.25c5.105 0 9.25 4.145 9.25 9.25s-4.145 9.25-9.25 9.25-9.25-4.145-9.25-9.25 4.145-9.25 9.25-9.25zM6.997 15.983c-.051-.338-.828-5.802 2.233-8.873a4.395 4.395 0 013.13-1.28c1.27 0 2.49.51 3.39 1.42.91.9 1.42 2.12 1.42 3.39 0 1.18-.449 2.301-1.28 3.13C12.72 16.93 7 16 7 16l-.003-.017zM15.3 10.5l-2 .8-.8 2-.8-2-2-.8 2-.8.8-2 .8 2 2 .8z'/%3E%3Cpath id='text' d='M50.63 8c.13 0 .23.1.23.23V9c.7-.76 1.7-1.18 2.73-1.18 2.17 0 3.95 1.85 3.95 4.17s-1.77 4.19-3.94 4.19c-1.04 0-2.03-.43-2.74-1.18v3.77c0 .13-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V8.23c0-.12.1-.23.23-.23h1.4zm-3.86.01c.01 0 .01 0 .01-.01.13 0 .22.1.22.22v7.55c0 .12-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V15c-.7.76-1.69 1.19-2.73 1.19-2.17 0-3.94-1.87-3.94-4.19 0-2.32 1.77-4.19 3.94-4.19 1.03 0 2.02.43 2.73 1.18v-.75c0-.12.1-.23.23-.23h1.4zm26.375-.19a4.24 4.24 0 00-4.16 3.29c-.13.59-.13 1.19 0 1.77a4.233 4.233 0 004.17 3.3c2.35 0 4.26-1.87 4.26-4.19 0-2.32-1.9-4.17-4.27-4.17zM60.63 5c.13 0 .23.1.23.23v3.76c.7-.76 1.7-1.18 2.73-1.18 1.88 0 3.45 1.4 3.84 3.28.13.59.13 1.2 0 1.8-.39 1.88-1.96 3.29-3.84 3.29-1.03 0-2.02-.43-2.73-1.18v.77c0 .12-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V5.23c0-.12.1-.23.23-.23h1.4zm-34 11h-1.4c-.13 0-.23-.11-.23-.23V8.22c.01-.13.1-.22.23-.22h1.4c.13 0 .22.11.23.22v.68c.5-.68 1.3-1.09 2.16-1.1h.03c1.09 0 2.09.6 2.6 1.55.45-.95 1.4-1.55 2.44-1.56 1.62 0 2.93 1.25 2.9 2.78l.03 5.2c0 .13-.1.23-.23.23h-1.41c-.13 0-.23-.11-.23-.23v-4.59c0-.98-.74-1.71-1.62-1.71-.8 0-1.46.7-1.59 1.62l.01 4.68c0 .13-.11.23-.23.23h-1.41c-.13 0-.23-.11-.23-.23v-4.59c0-.98-.74-1.71-1.62-1.71-.85 0-1.54.79-1.6 1.8v4.5c0 .13-.1.23-.23.23zm53.615 0h-1.61c-.04 0-.08-.01-.12-.03-.09-.06-.13-.19-.06-.28l2.43-3.71-2.39-3.65a.213.213 0 01-.03-.12c0-.12.09-.21.21-.21h1.61c.13 0 .24.06.3.17l1.41 2.37 1.4-2.37a.34.34 0 01.3-.17h1.6c.04 0 .08.01.12.03.09.06.13.19.06.28l-2.37 3.65 2.43 3.7c0 .05.01.09.01.13 0 .12-.09.21-.21.21h-1.61c-.13 0-.24-.06-.3-.17l-1.44-2.42-1.44 2.42a.34.34 0 01-.3.17zm-7.12-1.49c-1.33 0-2.42-1.12-2.42-2.51 0-1.39 1.08-2.52 2.42-2.52 1.33 0 2.42 1.12 2.42 2.51 0 1.39-1.08 2.51-2.42 2.52zm-19.865 0c-1.32 0-2.39-1.11-2.42-2.48v-.07c.02-1.38 1.09-2.49 2.4-2.49 1.32 0 2.41 1.12 2.41 2.51 0 1.39-1.07 2.52-2.39 2.53zm-8.11-2.48c-.01 1.37-1.09 2.47-2.41 2.47s-2.42-1.12-2.42-2.51c0-1.39 1.08-2.52 2.4-2.52 1.33 0 2.39 1.11 2.41 2.48l.02.08zm18.12 2.47c-1.32 0-2.39-1.11-2.41-2.48v-.06c.02-1.38 1.09-2.48 2.41-2.48s2.42 1.12 2.42 2.51c0 1.39-1.09 2.51-2.42 2.51z'/%3E%3C/defs%3E%3Cmask id='clip'%3E%3Crect x='0' y='0' width='100%25' height='100%25' fill='white'/%3E%3Cuse xlink:href='%23logo'/%3E%3Cuse xlink:href='%23text'/%3E%3C/mask%3E%3Cg id='outline' opacity='1' stroke='%23000' stroke-width='3'%3E%3Ccircle mask='url(%23clip)' cx='11.5' cy='11.5' r='9.25'/%3E%3Cuse xlink:href='%23text' mask='url(%23clip)'/%3E%3C/g%3E%3Cg id='fill' opacity='1' fill='%23fff'%3E%3Cuse xlink:href='%23logo'/%3E%3Cuse xlink:href='%23text'/%3E%3C/g%3E%3C/svg%3E\");\n }\n }\n @media (-ms-high-contrast: black-on-white) {\n a.mapboxgl-ctrl-logo {\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' fill-rule='evenodd' viewBox='0 0 88 23'%3E%3Cdefs%3E%3Cpath id='logo' d='M11.5 2.25c5.105 0 9.25 4.145 9.25 9.25s-4.145 9.25-9.25 9.25-9.25-4.145-9.25-9.25 4.145-9.25 9.25-9.25zM6.997 15.983c-.051-.338-.828-5.802 2.233-8.873a4.395 4.395 0 013.13-1.28c1.27 0 2.49.51 3.39 1.42.91.9 1.42 2.12 1.42 3.39 0 1.18-.449 2.301-1.28 3.13C12.72 16.93 7 16 7 16l-.003-.017zM15.3 10.5l-2 .8-.8 2-.8-2-2-.8 2-.8.8-2 .8 2 2 .8z'/%3E%3Cpath id='text' d='M50.63 8c.13 0 .23.1.23.23V9c.7-.76 1.7-1.18 2.73-1.18 2.17 0 3.95 1.85 3.95 4.17s-1.77 4.19-3.94 4.19c-1.04 0-2.03-.43-2.74-1.18v3.77c0 .13-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V8.23c0-.12.1-.23.23-.23h1.4zm-3.86.01c.01 0 .01 0 .01-.01.13 0 .22.1.22.22v7.55c0 .12-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V15c-.7.76-1.69 1.19-2.73 1.19-2.17 0-3.94-1.87-3.94-4.19 0-2.32 1.77-4.19 3.94-4.19 1.03 0 2.02.43 2.73 1.18v-.75c0-.12.1-.23.23-.23h1.4zm26.375-.19a4.24 4.24 0 00-4.16 3.29c-.13.59-.13 1.19 0 1.77a4.233 4.233 0 004.17 3.3c2.35 0 4.26-1.87 4.26-4.19 0-2.32-1.9-4.17-4.27-4.17zM60.63 5c.13 0 .23.1.23.23v3.76c.7-.76 1.7-1.18 2.73-1.18 1.88 0 3.45 1.4 3.84 3.28.13.59.13 1.2 0 1.8-.39 1.88-1.96 3.29-3.84 3.29-1.03 0-2.02-.43-2.73-1.18v.77c0 .12-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V5.23c0-.12.1-.23.23-.23h1.4zm-34 11h-1.4c-.13 0-.23-.11-.23-.23V8.22c.01-.13.1-.22.23-.22h1.4c.13 0 .22.11.23.22v.68c.5-.68 1.3-1.09 2.16-1.1h.03c1.09 0 2.09.6 2.6 1.55.45-.95 1.4-1.55 2.44-1.56 1.62 0 2.93 1.25 2.9 2.78l.03 5.2c0 .13-.1.23-.23.23h-1.41c-.13 0-.23-.11-.23-.23v-4.59c0-.98-.74-1.71-1.62-1.71-.8 0-1.46.7-1.59 1.62l.01 4.68c0 .13-.11.23-.23.23h-1.41c-.13 0-.23-.11-.23-.23v-4.59c0-.98-.74-1.71-1.62-1.71-.85 0-1.54.79-1.6 1.8v4.5c0 .13-.1.23-.23.23zm53.615 0h-1.61c-.04 0-.08-.01-.12-.03-.09-.06-.13-.19-.06-.28l2.43-3.71-2.39-3.65a.213.213 0 01-.03-.12c0-.12.09-.21.21-.21h1.61c.13 0 .24.06.3.17l1.41 2.37 1.4-2.37a.34.34 0 01.3-.17h1.6c.04 0 .08.01.12.03.09.06.13.19.06.28l-2.37 3.65 2.43 3.7c0 .05.01.09.01.13 0 .12-.09.21-.21.21h-1.61c-.13 0-.24-.06-.3-.17l-1.44-2.42-1.44 2.42a.34.34 0 01-.3.17zm-7.12-1.49c-1.33 0-2.42-1.12-2.42-2.51 0-1.39 1.08-2.52 2.42-2.52 1.33 0 2.42 1.12 2.42 2.51 0 1.39-1.08 2.51-2.42 2.52zm-19.865 0c-1.32 0-2.39-1.11-2.42-2.48v-.07c.02-1.38 1.09-2.49 2.4-2.49 1.32 0 2.41 1.12 2.41 2.51 0 1.39-1.07 2.52-2.39 2.53zm-8.11-2.48c-.01 1.37-1.09 2.47-2.41 2.47s-2.42-1.12-2.42-2.51c0-1.39 1.08-2.52 2.4-2.52 1.33 0 2.39 1.11 2.41 2.48l.02.08zm18.12 2.47c-1.32 0-2.39-1.11-2.41-2.48v-.06c.02-1.38 1.09-2.48 2.41-2.48s2.42 1.12 2.42 2.51c0 1.39-1.09 2.51-2.42 2.51z'/%3E%3C/defs%3E%3Cmask id='clip'%3E%3Crect x='0' y='0' width='100%25' height='100%25' fill='white'/%3E%3Cuse xlink:href='%23logo'/%3E%3Cuse xlink:href='%23text'/%3E%3C/mask%3E%3Cg id='outline' opacity='1' stroke='%23fff' stroke-width='3' fill='%23fff'%3E%3Ccircle mask='url(%23clip)' cx='11.5' cy='11.5' r='9.25'/%3E%3Cuse xlink:href='%23text' mask='url(%23clip)'/%3E%3C/g%3E%3Cg id='fill' opacity='1' fill='%23000'%3E%3Cuse xlink:href='%23logo'/%3E%3Cuse xlink:href='%23text'/%3E%3C/g%3E%3C/svg%3E\");\n }\n }\n .mapboxgl-ctrl.mapboxgl-ctrl-attrib {\n background-color: hsla(0, 0%, 100%, 0.5);\n margin: 0;\n padding: 0 5px;\n }\n @media screen {\n .mapboxgl-ctrl-attrib.mapboxgl-compact {\n background-color: #fff;\n border-radius: 12px;\n margin: 10px;\n min-height: 20px;\n padding: 2px 24px 2px 0;\n position: relative;\n }\n .mapboxgl-ctrl-attrib.mapboxgl-compact-show {\n padding: 2px 28px 2px 8px;\n visibility: visible;\n }\n .mapboxgl-ctrl-bottom-left > .mapboxgl-ctrl-attrib.mapboxgl-compact-show,\n .mapboxgl-ctrl-top-left > .mapboxgl-ctrl-attrib.mapboxgl-compact-show {\n border-radius: 12px;\n padding: 2px 8px 2px 28px;\n }\n .mapboxgl-ctrl-attrib.mapboxgl-compact .mapboxgl-ctrl-attrib-inner {\n display: none;\n }\n .mapboxgl-ctrl-attrib-button {\n background-color: hsla(0, 0%, 100%, 0.5);\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill-rule='evenodd'%3E%3Cpath d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/%3E%3C/svg%3E\");\n border: 0;\n border-radius: 12px;\n box-sizing: border-box;\n cursor: pointer;\n display: none;\n height: 24px;\n outline: none;\n position: absolute;\n right: 0;\n top: 0;\n width: 24px;\n }\n .mapboxgl-ctrl-bottom-left .mapboxgl-ctrl-attrib-button,\n .mapboxgl-ctrl-top-left .mapboxgl-ctrl-attrib-button {\n left: 0;\n }\n .mapboxgl-ctrl-attrib.mapboxgl-compact .mapboxgl-ctrl-attrib-button,\n .mapboxgl-ctrl-attrib.mapboxgl-compact-show .mapboxgl-ctrl-attrib-inner {\n display: block;\n }\n .mapboxgl-ctrl-attrib.mapboxgl-compact-show .mapboxgl-ctrl-attrib-button {\n background-color: rgb(0 0 0/5%);\n }\n .mapboxgl-ctrl-bottom-right > .mapboxgl-ctrl-attrib.mapboxgl-compact:after {\n bottom: 0;\n right: 0;\n }\n .mapboxgl-ctrl-top-right > .mapboxgl-ctrl-attrib.mapboxgl-compact:after {\n right: 0;\n top: 0;\n }\n .mapboxgl-ctrl-top-left > .mapboxgl-ctrl-attrib.mapboxgl-compact:after {\n left: 0;\n top: 0;\n }\n .mapboxgl-ctrl-bottom-left > .mapboxgl-ctrl-attrib.mapboxgl-compact:after {\n bottom: 0;\n left: 0;\n }\n }\n @media screen and (-ms-high-contrast: active) {\n .mapboxgl-ctrl-attrib.mapboxgl-compact:after {\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill-rule='evenodd' fill='%23fff'%3E%3Cpath d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/%3E%3C/svg%3E\");\n }\n }\n @media screen and (-ms-high-contrast: black-on-white) {\n .mapboxgl-ctrl-attrib.mapboxgl-compact:after {\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill-rule='evenodd'%3E%3Cpath d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/%3E%3C/svg%3E\");\n }\n }\n .mapboxgl-ctrl-attrib a {\n color: rgba(0, 0, 0, 0.75);\n text-decoration: none;\n }\n .mapboxgl-ctrl-attrib a:hover {\n color: inherit;\n text-decoration: underline;\n }\n .mapboxgl-ctrl-attrib .mapbox-improve-map {\n font-weight: 700;\n margin-left: 2px;\n }\n .mapboxgl-attrib-empty {\n display: none;\n }\n .mapboxgl-ctrl-scale {\n background-color: hsla(0, 0%, 100%, 0.75);\n border: 2px solid #333;\n border-top: #333;\n box-sizing: border-box;\n color: #333;\n font-size: 10px;\n padding: 0 5px;\n white-space: nowrap;\n }\n .mapboxgl-popup {\n display: flex;\n left: 0;\n pointer-events: none;\n position: absolute;\n top: 0;\n will-change: transform;\n }\n .mapboxgl-popup-anchor-top,\n .mapboxgl-popup-anchor-top-left,\n .mapboxgl-popup-anchor-top-right {\n flex-direction: column;\n }\n .mapboxgl-popup-anchor-bottom,\n .mapboxgl-popup-anchor-bottom-left,\n .mapboxgl-popup-anchor-bottom-right {\n flex-direction: column-reverse;\n }\n .mapboxgl-popup-anchor-left {\n flex-direction: row;\n }\n .mapboxgl-popup-anchor-right {\n flex-direction: row-reverse;\n }\n .mapboxgl-popup-tip {\n border: 10px solid transparent;\n height: 0;\n width: 0;\n z-index: 1;\n }\n .mapboxgl-popup-anchor-top .mapboxgl-popup-tip {\n align-self: center;\n border-bottom-color: #fff;\n border-top: none;\n }\n .mapboxgl-popup-anchor-top-left .mapboxgl-popup-tip {\n align-self: flex-start;\n border-bottom-color: #fff;\n border-left: none;\n border-top: none;\n }\n .mapboxgl-popup-anchor-top-right .mapboxgl-popup-tip {\n align-self: flex-end;\n border-bottom-color: #fff;\n border-right: none;\n border-top: none;\n }\n .mapboxgl-popup-anchor-bottom .mapboxgl-popup-tip {\n align-self: center;\n border-bottom: none;\n border-top-color: #fff;\n }\n .mapboxgl-popup-anchor-bottom-left .mapboxgl-popup-tip {\n align-self: flex-start;\n border-bottom: none;\n border-left: none;\n border-top-color: #fff;\n }\n .mapboxgl-popup-anchor-bottom-right .mapboxgl-popup-tip {\n align-self: flex-end;\n border-bottom: none;\n border-right: none;\n border-top-color: #fff;\n }\n .mapboxgl-popup-anchor-left .mapboxgl-popup-tip {\n align-self: center;\n border-left: none;\n border-right-color: #fff;\n }\n .mapboxgl-popup-anchor-right .mapboxgl-popup-tip {\n align-self: center;\n border-left-color: #fff;\n border-right: none;\n }\n .mapboxgl-popup-close-button {\n background-color: transparent;\n border: 0;\n border-radius: 0 3px 0 0;\n cursor: pointer;\n position: absolute;\n right: 0;\n top: 0;\n }\n .mapboxgl-popup-close-button:hover {\n background-color: rgb(0 0 0/5%);\n }\n .mapboxgl-popup-content {\n background: #fff;\n border-radius: 3px;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n padding: 10px 10px 15px;\n pointer-events: auto;\n position: relative;\n }\n .mapboxgl-popup-anchor-top-left .mapboxgl-popup-content {\n border-top-left-radius: 0;\n }\n .mapboxgl-popup-anchor-top-right .mapboxgl-popup-content {\n border-top-right-radius: 0;\n }\n .mapboxgl-popup-anchor-bottom-left .mapboxgl-popup-content {\n border-bottom-left-radius: 0;\n }\n .mapboxgl-popup-anchor-bottom-right .mapboxgl-popup-content {\n border-bottom-right-radius: 0;\n }\n .mapboxgl-popup-track-pointer {\n display: none;\n }\n .mapboxgl-popup-track-pointer * {\n pointer-events: none;\n user-select: none;\n }\n .mapboxgl-map:hover .mapboxgl-popup-track-pointer {\n display: flex;\n }\n .mapboxgl-map:active .mapboxgl-popup-track-pointer {\n display: none;\n }\n .mapboxgl-marker {\n left: 0;\n opacity: 1;\n position: absolute;\n top: 0;\n transition: opacity 0.2s;\n will-change: transform;\n }\n .mapboxgl-user-location-dot,\n .mapboxgl-user-location-dot:before {\n background-color: #1da1f2;\n border-radius: 50%;\n height: 15px;\n width: 15px;\n }\n .mapboxgl-user-location-dot:before {\n animation: mapboxgl-user-location-dot-pulse 2s infinite;\n content: '';\n position: absolute;\n }\n .mapboxgl-user-location-dot:after {\n border: 2px solid #fff;\n border-radius: 50%;\n box-shadow: 0 0 3px rgba(0, 0, 0, 0.35);\n box-sizing: border-box;\n content: '';\n height: 19px;\n left: -2px;\n position: absolute;\n top: -2px;\n width: 19px;\n }\n .mapboxgl-user-location-show-heading .mapboxgl-user-location-heading {\n height: 0;\n width: 0;\n }\n .mapboxgl-user-location-show-heading .mapboxgl-user-location-heading:after,\n .mapboxgl-user-location-show-heading .mapboxgl-user-location-heading:before {\n border-bottom: 7.5px solid #4aa1eb;\n content: '';\n position: absolute;\n }\n .mapboxgl-user-location-show-heading .mapboxgl-user-location-heading:before {\n border-left: 7.5px solid transparent;\n transform: translateY(-28px) skewY(-20deg);\n }\n .mapboxgl-user-location-show-heading .mapboxgl-user-location-heading:after {\n border-right: 7.5px solid transparent;\n transform: translate(7.5px, -28px) skewY(20deg);\n }\n @keyframes mapboxgl-user-location-dot-pulse {\n 0% {\n opacity: 1;\n transform: scale(1);\n }\n 70% {\n opacity: 0;\n transform: scale(3);\n }\n to {\n opacity: 0;\n transform: scale(1);\n }\n }\n .mapboxgl-user-location-dot-stale {\n background-color: #aaa;\n }\n .mapboxgl-user-location-dot-stale:after {\n display: none;\n }\n .mapboxgl-user-location-accuracy-circle {\n background-color: #1da1f233;\n border-radius: 100%;\n height: 1px;\n width: 1px;\n }\n .mapboxgl-crosshair,\n .mapboxgl-crosshair .mapboxgl-interactive,\n .mapboxgl-crosshair .mapboxgl-interactive:active {\n cursor: crosshair;\n }\n .mapboxgl-boxzoom {\n background: #fff;\n border: 2px dotted #202020;\n height: 0;\n left: 0;\n opacity: 0.5;\n position: absolute;\n top: 0;\n width: 0;\n }\n @media print {\n .mapbox-improve-map {\n display: none;\n }\n }\n .mapboxgl-scroll-zoom-blocker,\n .mapboxgl-touch-pan-blocker {\n align-items: center;\n background: rgba(0, 0, 0, 0.7);\n color: #fff;\n display: flex;\n font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial,\n sans-serif;\n height: 100%;\n justify-content: center;\n left: 0;\n opacity: 0;\n pointer-events: none;\n position: absolute;\n text-align: center;\n top: 0;\n transition: opacity 0.75s ease-in-out;\n transition-delay: 1s;\n width: 100%;\n }\n .mapboxgl-scroll-zoom-blocker-show,\n .mapboxgl-touch-pan-blocker-show {\n opacity: 1;\n transition: opacity 0.1s ease-in-out;\n }\n .mapboxgl-canvas-container.mapboxgl-touch-pan-blocker-override.mapboxgl-scrollable-page,\n .mapboxgl-canvas-container.mapboxgl-touch-pan-blocker-override.mapboxgl-scrollable-page\n .mapboxgl-canvas {\n touch-action: pan-x pan-y;\n }\n"])));
2597
-
2598
- var _templateObject$1;
2599
- mapboxgl__default.default.accessToken = MAPBOX_TOKEN;
2600
- var ProjectsMap = function ProjectsMap(_ref) {
2601
- var slice = _ref.slice,
2602
- projects = _ref.projects;
2603
- var _useContext = React.useContext(IntlContext),
2604
- locale = _useContext.locale;
2605
- var filteredProjects = projects.filter(function (project) {
2606
- return project.geom;
2607
- });
2608
- var center = slice.defaultCenterCoordinates ? [slice.defaultCenterCoordinates.longitude, slice.defaultCenterCoordinates.latitude] : undefined;
2609
- var bounds = center ? undefined : mergeBoundingBoxes(filteredProjects.map(function (p) {
2610
- return [].concat(p.geom.coordinates.map(function (c) {
2611
- return c - 0.2;
2612
- }), p.geom.coordinates.map(function (c) {
2613
- return c + 0.2;
2614
- }));
2615
- }));
2616
- var mapContainer = React.useRef(null);
2617
- React.useEffect(function () {
2618
- var map = new mapboxgl.Map({
2619
- container: mapContainer.current || '',
2620
- style: MapBoxStyle.CaliTerrain,
2621
- center: center,
2622
- zoom: slice.defaultZoomLevel || MAPBOX_INITIAL_ZOOM,
2623
- maxZoom: MAPBOX_MAX_ZOOM,
2624
- bounds: bounds
2625
- });
2626
- filteredProjects
2627
- // Sort by longitude, so that the markers are rendeed form right to left
2628
- .sort(function (a, b) {
2629
- return b.geom.coordinates[0] - a.geom.coordinates[0];
2630
- }).forEach(function (project) {
2631
- var _project$projectDevel;
2632
- var ref = React.createRef();
2633
- ref.current = document.createElement('div');
2634
- client.createRoot(ref.current).render(React__default.default.createElement(MinimalProviders, {
2635
- locale: locale
2636
- }, React__default.default.createElement(MapMarker, {
2637
- title: project.title,
2638
- isPublic: project.isPublic,
2639
- slug: project.slug,
2640
- creditsAvailable: project.creditsAvailable,
2641
- projectDeveloper: (_project$projectDevel = project.projectDeveloper) == null ? void 0 : _project$projectDevel.name
2642
- })));
2643
- // Offset is needed to center the marker on the coordinates
2644
- var marker = new mapboxgl.Marker(ref.current, {
2645
- offset: [-20, -40]
2646
- });
2647
- // No chaining here, because the mocks don't support it
2648
- marker.setLngLat(project.geom.coordinates);
2649
- marker.addTo(map);
2650
- });
2651
- // Clean up on unmount
2652
- return function () {
2653
- return map.remove();
2654
- };
2655
- }, [locale]);
2656
- return React__default.default.createElement(boemly.DefaultSectionContainer, null, React__default.default.createElement(boemly.Box, {
2657
- css: mapboxStyle
2658
- }, React__default.default.createElement(boemly.Wrapper, null, slice.title ? React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(boemly.DefaultSectionHeader, {
2659
- tagline: slice.tagline,
2660
- title: slice.title,
2661
- text: slice.text,
2662
- taglineProps: {
2663
- textAlign: 'center'
2664
- },
2665
- titleProps: {
2666
- textAlign: 'center',
2667
- maxW: '6xl',
2668
- marginX: 'auto'
2669
- },
2670
- textProps: {
2671
- textAlign: 'center',
2672
- maxW: '3xl',
2673
- marginX: 'auto'
2674
- }
2675
- }), React__default.default.createElement(boemly.Box, {
2676
- height: "16"
2677
- })) : React__default.default.createElement(React__default.default.Fragment, null), React__default.default.createElement(boemly.Box, {
2678
- height: "xl",
2679
- ref: mapContainer,
2680
- borderRadius: "xl",
2681
- overflow: "hidden",
2682
- boxShadow: ['md', null, null, 'none'],
2683
- css: react$1.css(_templateObject$1 || (_templateObject$1 = _taggedTemplateLiteralLoose(["\n mask-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC);\n "])))
2684
- }))));
2685
- };
2686
-
2687
- var Video = function Video(_ref) {
2688
- var slice = _ref.slice;
2689
- var _useMeasure = reactUse.useMeasure(),
2690
- ref = _useMeasure[0],
2691
- width = _useMeasure[1].width;
2692
- return React__default.default.createElement(boemly.DefaultSectionContainer, null, React__default.default.createElement(boemly.Wrapper, null, React__default.default.createElement(boemly.Box, {
2693
- ref: ref,
2694
- borderRadius: "xl"
2695
- }, React__default.default.createElement("iframe", {
2696
- "data-testid": "video-iframe",
2697
- width: width,
2698
- height: width / 16 * 9,
2699
- src: "https://www.youtube.com/embed/" + slice.youTubeID,
2700
- frameBorder: "0",
2701
- allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",
2702
- allowFullScreen: true,
2703
- title: slice.title,
2704
- style: {
2705
- borderRadius: 'var(--boemly-radii-xl)'
2706
- }
2707
- }))));
2708
- };
2709
-
2710
- var FullWidthHighlightQuote = function FullWidthHighlightQuote(_ref) {
2711
- var slice = _ref.slice;
2712
- return React__default.default.createElement(boemly.DefaultSectionContainer, null, React__default.default.createElement(boemly.Wrapper, null, React__default.default.createElement(boemly.Box, {
2713
- maxWidth: "5xl",
2714
- marginX: "auto",
2715
- mb: "8"
2716
- }, slice.tagline && React__default.default.createElement(boemly.Text, {
2717
- color: "primary.700",
2718
- size: "mdMonoUppercase",
2719
- textAlign: "center",
2720
- mb: "3"
2721
- }, slice.tagline), React__default.default.createElement(boemly.Text, {
2722
- color: "black",
2723
- size: "xlRegularNormalBold",
2724
- textAlign: "center"
2725
- }, slice.quote)), React__default.default.createElement(boemly.AvatarWithName, {
2726
- name: slice.avatarWithName.name,
2727
- description: slice.avatarWithName.description,
2728
- image: React__default.default.createElement(Image__default.default, {
2729
- src: strapiMediaUrl(slice.avatarWithName.image.img, 'small'),
2730
- alt: slice.avatarWithName.image.alt,
2731
- fill: true,
2732
- style: {
2733
- objectFit: slice.avatarWithName.image.objectFit || 'cover'
2734
- }
2735
- }),
2736
- orientation: "vertical"
2737
- })));
2738
- };
2739
-
2740
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
2741
- var SliderContainer = /*#__PURE__*/styled__default.default(boemly.Box)(_templateObject || (_templateObject = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n --mobile-image-width: calc(100vw - var(--boemly-space-24));\n --desktop-image-width: var(--boemly-sizes-md);\n\n width: var(--boemly-size-full);\n\n overflow-x: hidden;\n\n padding-left: max(\n var(--boemly-space-8),\n calc(50vw - var(--boemly-sizes-7xl) / 2 + var(--boemly-space-6))\n );\n\n @media screen and (max-width: ", ") {\n overflow-x: scroll;\n padding-left: max(\n var(--boemly-space-8),\n calc(50vw - var(--boemly-sizes-7xl) / 2 + var(--boemly-space-8))\n );\n }\n"])), BREAKPOINT_MD);
2742
- var ButtonsContainer = /*#__PURE__*/styled__default.default(boemly.Box)(_templateObject2 || (_templateObject2 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n display: ", ";\n pointer-events: none;\n\n // Place at 50% of height of tallest image minus size of button\n position: absolute;\n top: calc(50% - var(--boemly-sizes-12));\n left: 0;\n width: var(--boemly-sizes-full);\n\n padding: 0 var(--boemly-sizes-32);\n justify-content: space-between;\n\n @media screen and (max-width: ", ") {\n display: none;\n }\n"])), function (_ref) {
2743
- var show = _ref.show;
2744
- return show ? 'flex' : 'none';
2745
- }, BREAKPOINT_MD);
2746
- var SliderInnerContainer = /*#__PURE__*/styled__default.default(framerMotion.motion.div)(_templateObject3 || (_templateObject3 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n display: flex;\n gap: var(--boemly-space-6);\n\n width: fit-content;\n"])));
2747
- var ItemContainer = /*#__PURE__*/styled__default.default(boemly.Box)(_templateObject4 || (_templateObject4 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n width: var(--desktop-image-width);\n\n :last-of-type {\n margin-right: var(--boemly-space-8);\n }\n\n @media screen and (max-width: ", ") {\n width: var(--mobile-image-width);\n }\n"])), BREAKPOINT_MD);
2748
- var ImageContainer = /*#__PURE__*/styled__default.default(boemly.Box)(_templateObject5 || (_templateObject5 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n position: relative;\n\n max-height: var(--boemly-sizes-xl);\n height: calc(\n var(--desktop-image-width) /\n ", "\n );\n width: var(--desktop-image-width);\n\n border-radius: var(--boemly-radii-xl);\n\n & img {\n border-radius: var(--boemly-radii-xl);\n }\n\n @media screen and (max-width: ", ") {\n height: calc(\n var(--mobile-image-width) /\n ", "\n );\n width: var(--mobile-image-width);\n }\n"])), function (_ref2) {
2749
- var aspectRatio = _ref2.aspectRatio;
2750
- return aspectRatio;
2751
- }, BREAKPOINT_MD, function (_ref3) {
2752
- var aspectRatio = _ref3.aspectRatio;
2753
- return aspectRatio;
2754
- });
2755
-
2756
- var ALLOWED_RATIOS = [2 / 3, 1 / 1, 3 / 2];
2757
- var getClosestRatio = function getClosestRatio(width, height) {
2758
- var ratio = width / height;
2759
- var minDiff = Math.abs(ratio - ALLOWED_RATIOS[0]);
2760
- var posMinDiff = 0;
2761
- ALLOWED_RATIOS.forEach(function (allowedRatio, index) {
2762
- if (Math.abs(ratio - allowedRatio) < minDiff) {
2763
- minDiff = Math.abs(ratio - allowedRatio);
2764
- posMinDiff = index;
2765
- }
2766
- });
2767
- return ALLOWED_RATIOS[posMinDiff];
2768
- };
2769
-
2770
- var FullWidthImageSlider = function FullWidthImageSlider(_ref) {
2771
- var slice = _ref.slice;
2772
- var containerRef = React.useRef(null);
2773
- var _useMeasure = reactUse.useMeasure(),
2774
- imageRef = _useMeasure[0],
2775
- imageWidth = _useMeasure[1].width;
2776
- var _useWindowSize = reactUse.useWindowSize(),
2777
- windowWidth = _useWindowSize.width;
2778
- var _useMediaQuery = boemly.useMediaQuery(BREAKPOINT_MD_QUERY),
2779
- isMobile = _useMediaQuery[0];
2780
- var _useState = React.useState(0),
2781
- sliderIndex = _useState[0],
2782
- setSliderIndex = _useState[1];
2783
- var _useState2 = React.useState(false),
2784
- isOpen = _useState2[0],
2785
- setIsOpen = _useState2[1];
2786
- var allowScroll = windowWidth / 2 / imageWidth < slice.images.length;
2787
- var canMoveRight = sliderIndex < slice.images.length - 1;
2788
- var canMoveLeft = sliderIndex !== 0;
2789
- return React__default.default.createElement(boemly.DefaultSectionContainer, null, React__default.default.createElement(SliderContainer, {
2790
- ref: containerRef
2791
- }, React__default.default.createElement(SliderInnerContainer, {
2792
- animate: {
2793
- x: imageWidth * -sliderIndex
2794
- },
2795
- transition: {
2796
- duration: 0.3,
2797
- ease: 'easeInOut'
2798
- },
2799
- imageCount: slice.images.length
2800
- }, slice.images.map(function (image, index) {
2801
- return React__default.default.createElement(ItemContainer, {
2802
- key: image.id,
2803
- ref: imageRef
2804
- }, React__default.default.createElement(boemly.Flex, {
2805
- height: "full",
2806
- width: "full",
2807
- justifyContent: "end",
2808
- flexDirection: "column",
2809
- gap: "2"
2810
- }, React__default.default.createElement(ImageContainer, {
2811
- aspectRatio: getClosestRatio(image.img.img.data.attributes.width, image.img.img.data.attributes.height)
2812
- }, React__default.default.createElement(Image__default.default, {
2813
- src: strapiMediaUrl(image.img.img, 'large'),
2814
- alt: image.img.alt,
2815
- fill: true,
2816
- style: {
2817
- objectFit: image.img.objectFit || 'cover',
2818
- cursor: isMobile ? 'unset' : 'pointer'
2819
- },
2820
- onClick: function onClick() {
2821
- setSliderIndex(index);
2822
- if (!isMobile) setIsOpen(true);
2823
- }
2824
- })), React__default.default.createElement(boemly.Text, {
2825
- height: "6"
2826
- }, image.caption)));
2827
- }))), React__default.default.createElement(ButtonsContainer, {
2828
- show: allowScroll && !isOpen
2829
- }, React__default.default.createElement(boemly.Box, null, React__default.default.createElement(framerMotion.AnimatePresence, null, canMoveLeft && React__default.default.createElement(boemly.IconButton, {
2830
- key: "leftButton",
2831
- as: framerMotion.motion.button,
2832
- initial: {
2833
- opacity: 0
2834
- },
2835
- animate: {
2836
- opacity: 1
2837
- },
2838
- exit: {
2839
- opacity: 0
2840
- },
2841
- size: "lg",
2842
- variant: "outline",
2843
- onClick: function onClick() {
2844
- return setSliderIndex(sliderIndex - 1);
2845
- },
2846
- "aria-label": "Move left",
2847
- icon: React__default.default.createElement(react.ArrowLeft, {
2848
- size: 16
2849
- }),
2850
- pointerEvents: "auto"
2851
- }))), React__default.default.createElement(boemly.Box, null, React__default.default.createElement(framerMotion.AnimatePresence, null, canMoveRight && React__default.default.createElement(boemly.IconButton, {
2852
- key: "rightButton",
2853
- as: framerMotion.motion.button,
2854
- initial: {
2855
- opacity: 0
2856
- },
2857
- animate: {
2858
- opacity: 1
2859
- },
2860
- exit: {
2861
- opacity: 0
2862
- },
2863
- size: "lg",
2864
- variant: "outline",
2865
- onClick: function onClick() {
2866
- return setSliderIndex(sliderIndex + 1);
2867
- },
2868
- "aria-label": "Move right",
2869
- icon: React__default.default.createElement(react.ArrowRight, {
2870
- size: 16
2871
- }),
2872
- pointerEvents: "auto"
2873
- })))), React__default.default.createElement(FullScreenImage, {
2874
- images: slice.images.map(function (image) {
2875
- return image.img;
2876
- }),
2877
- openIndex: sliderIndex,
2878
- isOpen: isOpen,
2879
- onClose: function onClose() {
2880
- return setIsOpen(false);
2881
- }
2882
- }));
2883
- };
2884
-
2885
- var SideBySideImages = function SideBySideImages(_ref) {
2886
- var slice = _ref.slice;
2887
- return React__default.default.createElement(boemly.DefaultSectionContainer, null, React__default.default.createElement(boemly.Wrapper, null, React__default.default.createElement(boemly.Grid, {
2888
- templateColumns: "repeat(12, 1fr)",
2889
- gap: "4"
2890
- }, React__default.default.createElement(boemly.GridItem, {
2891
- colSpan: [12, null, null, 7]
2892
- }, React__default.default.createElement(boemly.SimpleGrid, {
2893
- columns: [1, null, null, 2],
2894
- gap: ['12', null, null, '6']
2895
- }, slice.images.map(function (image) {
2896
- return React__default.default.createElement(boemly.Box, {
2897
- key: image.id
2898
- }, React__default.default.createElement(boemly.Box, {
2899
- height: "md",
2900
- position: "relative",
2901
- borderRadius: "xl"
2902
- }, React__default.default.createElement(Image__default.default, {
2903
- src: strapiMediaUrl(image.img.img, 'large'),
2904
- alt: image.img.alt,
2905
- fill: true,
2906
- style: {
2907
- objectFit: image.img.objectFit || 'cover',
2908
- borderRadius: 'var(--boemly-radii-xl)'
2909
- }
2910
- })), React__default.default.createElement(boemly.Text, {
2911
- mt: "3",
2912
- size: "xsLowNormal"
2913
- }, image.caption));
2914
- }))))));
2915
- };
2916
-
2917
- var CtaCardType;
2918
- (function (CtaCardType) {
2919
- CtaCardType["Left"] = "left";
2920
- CtaCardType["CenterWithoutImage"] = "centerWithoutImage";
2921
- CtaCardType["CenterWithImage"] = "centerWithImage";
2922
- CtaCardType["Right"] = "right";
2923
- })(CtaCardType || (CtaCardType = {}));
2924
- var STATES = {
2925
- left: {
2926
- textAlign: 'left',
2927
- paddingTagline: '0',
2928
- paddingTitle: '0',
2929
- justifyContent: 'space-between',
2930
- buttonJustifyContent: 'start',
2931
- textMarginLeft: ['0', null, null, null, '14']
2932
- },
2933
- centerWithoutImage: {
2934
- textAlign: 'center',
2935
- paddingTagline: '28',
2936
- paddingTitle: '20',
2937
- justifyContent: 'center',
2938
- buttonJustifyContent: 'center',
2939
- textMarginLeft: '0'
2940
- },
2941
- centerWithImage: {
2942
- textAlign: 'center',
2943
- paddingTagline: '28',
2944
- paddingTitle: '20',
2945
- justifyContent: 'center',
2946
- buttonJustifyContent: 'center',
2947
- textMarginLeft: '0'
2948
- },
2949
- right: {
2950
- textAlign: 'left',
2951
- paddingTagline: '0',
2952
- paddingTitle: '0',
2953
- justifyContent: 'start',
2954
- buttonJustifyContent: 'start',
2955
- textMarginLeft: '0'
2956
- }
2957
- };
2958
- var VARIANTS$3 = {
2959
- gray: {
2960
- backgroundColor: {
2961
- left: 'primary.50',
2962
- centerWithoutImage: 'primary.50',
2963
- centerWithImage: 'primary.50',
2964
- right: 'primary.50'
2965
- },
2966
- taglineColor: {
2967
- left: 'primary.500',
2968
- centerWithoutImage: 'primary.500',
2969
- centerWithImage: 'white',
2970
- right: 'primary.500'
2971
- },
2972
- titleColor: {
2973
- left: 'black',
2974
- centerWithoutImage: 'black',
2975
- centerWithImage: 'white',
2976
- right: 'black'
2977
- },
2978
- subTitleColor: {
2979
- left: 'black',
2980
- centerWithoutImage: 'black',
2981
- centerWithImage: 'white',
2982
- right: 'black'
2983
- }
2984
- },
2985
- green: {
2986
- backgroundColor: {
2987
- left: 'primary.800',
2988
- centerWithoutImage: 'primary.800',
2989
- centerWithImage: 'primary.800',
2990
- right: 'primary.800'
2991
- },
2992
- taglineColor: {
2993
- left: 'white',
2994
- centerWithoutImage: 'white',
2995
- centerWithImage: 'white',
2996
- right: 'white'
2997
- },
2998
- titleColor: {
2999
- left: 'white',
3000
- centerWithoutImage: 'white',
3001
- centerWithImage: 'white',
3002
- right: 'white'
3003
- },
3004
- subTitleColor: {
3005
- left: 'white',
3006
- centerWithoutImage: 'white',
3007
- centerWithImage: 'white',
3008
- right: 'white'
3009
- }
3010
- },
3011
- white: {
3012
- backgroundColor: {
3013
- left: 'white',
3014
- centerWithoutImage: 'white',
3015
- centerWithImage: 'primary.800',
3016
- right: 'white'
3017
- },
3018
- taglineColor: {
3019
- left: 'primary.500',
3020
- centerWithoutImage: 'primary.500',
3021
- centerWithImage: 'white',
3022
- right: 'primary.500'
3023
- },
3024
- titleColor: {
3025
- left: 'black',
3026
- centerWithoutImage: 'black',
3027
- centerWithImage: 'white',
3028
- right: 'black'
3029
- },
3030
- subTitleColor: {
3031
- left: 'black',
3032
- centerWithoutImage: 'black',
3033
- centerWithImage: 'white',
3034
- right: 'black'
3035
- }
3036
- }
3037
- };
3038
- var getTypeOfCard = function getTypeOfCard(ctaCard) {
3039
- if (ctaCard.textAlign === 'center') {
3040
- if (ctaCard.image) {
3041
- return CtaCardType.CenterWithImage;
3042
- }
3043
- return CtaCardType.CenterWithoutImage;
3044
- }
3045
- if (ctaCard.textAlign === 'left') {
3046
- return CtaCardType.Left;
3047
- }
3048
- return CtaCardType.Right;
3049
- };
3050
- var Cta = function Cta(_ref) {
3051
- var slice = _ref.slice;
3052
- var _useContext = React.useContext(IntlContext),
3053
- formatMessage = _useContext.formatMessage;
3054
- return React__default.default.createElement(boemly.DefaultSectionContainer, {
3055
- backgroundColor: VARIANTS$3[slice.variant].backgroundColor.left
3056
- }, React__default.default.createElement(boemly.Wrapper, null, slice.title ? React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(boemly.Flex, {
3057
- alignItems: "center",
3058
- flexDirection: "column"
3059
- }, React__default.default.createElement(boemly.DefaultSectionHeader, {
3060
- tagline: slice.tagline,
3061
- taglineProps: {
3062
- color: VARIANTS$3[slice.variant].taglineColor.left,
3063
- textAlign: 'center',
3064
- maxWidth: '3xl'
3065
- },
3066
- title: slice.title,
3067
- titleProps: {
3068
- color: VARIANTS$3[slice.variant].titleColor.left,
3069
- textAlign: 'center',
3070
- width: 'full',
3071
- maxWidth: '3xl'
3072
- },
3073
- text: slice.subTitle,
3074
- textProps: {
3075
- color: VARIANTS$3[slice.variant].subTitleColor.left,
3076
- textAlign: 'center',
3077
- maxWidth: '3xl'
3078
- }
3079
- })), React__default.default.createElement(boemly.Spacer, {
3080
- height: ['16', null, null, null, '20']
3081
- })) : React__default.default.createElement(React__default.default.Fragment, null), React__default.default.createElement(boemly.Flex, {
3082
- gap: "4",
3083
- flexDirection: "column"
3084
- }, slice.ctaCards.map(function (ctaCard) {
3085
- var ctaCardType = getTypeOfCard(ctaCard);
3086
- return React__default.default.createElement(boemly.Container, {
3087
- backgroundColor: VARIANTS$3[ctaCard.variant].backgroundColor[ctaCardType],
3088
- key: ctaCard.id,
3089
- position: "relative",
3090
- elevation: "none"
3091
- }, ctaCard.image && ctaCardType === CtaCardType.CenterWithImage ? React__default.default.createElement(boemly.Box, {
3092
- position: "absolute",
3093
- left: "0",
3094
- top: "0",
3095
- width: "full",
3096
- height: "full",
3097
- borderRadius: "xl",
3098
- overflow: "hidden"
3099
- }, React__default.default.createElement(Image__default.default, {
3100
- src: strapiMediaUrl(ctaCard.image.img, 'large'),
3101
- alt: ctaCard.image.alt,
3102
- fill: true,
3103
- style: {
3104
- objectFit: ctaCard.image.objectFit || 'cover',
3105
- borderRadius: 'var(--boemly-radii-xl)'
3106
- }
3107
- }), React__default.default.createElement(boemly.Gradient, null)) : React__default.default.createElement(React__default.default.Fragment, null), ctaCard.backgroundShape ? React__default.default.createElement(boemly.Box, {
3108
- position: "absolute",
3109
- left: "0",
3110
- top: "0",
3111
- width: "full",
3112
- height: "full"
3113
- }, React__default.default.createElement(Image__default.default, {
3114
- src: ctaCardType === CtaCardType.CenterWithImage || ctaCard.variant === 'green' ? CDN_URI + "/assets/v3/strapi-slices/shapes-dark.svg" : CDN_URI + "/assets/v3/strapi-slices/shapes-light.svg",
3115
- alt: formatMessage({
3116
- id: "sections.cta.backgroundShapes" + (ctaCardType === CtaCardType.CenterWithImage || ctaCard.variant === 'green' ? 'Dark' : 'Light')
3117
- }),
3118
- fill: true,
3119
- style: {
3120
- objectFit: 'cover',
3121
- borderRadius: 'var(--boemly-radii-xl)'
3122
- }
3123
- })) : React__default.default.createElement(React__default.default.Fragment, null), React__default.default.createElement(boemly.Flex, {
3124
- flexDir: ['column', null, null, null, 'row'],
3125
- flexGrow: "1",
3126
- gap: ['8', null, null, null, '16'],
3127
- justifyContent: STATES[ctaCardType].justifyContent
3128
- }, ctaCard.image && ctaCardType === CtaCardType.Right ? React__default.default.createElement(boemly.Box, {
3129
- position: "relative",
3130
- height: ['3xs', null, null, null, 'auto'],
3131
- minWidth: [null, null, null, null, '50%']
3132
- }, React__default.default.createElement(Image__default.default, {
3133
- src: strapiMediaUrl(ctaCard.image.img, 'medium'),
3134
- alt: ctaCard.image.alt,
3135
- fill: true,
3136
- style: {
3137
- objectFit: ctaCard.image.objectFit || 'cover',
3138
- borderRadius: 'var(--boemly-radii-xl)'
3139
- }
3140
- })) : React__default.default.createElement(React__default.default.Fragment, null), React__default.default.createElement(boemly.Box, {
3141
- zIndex: "base",
3142
- marginLeft: STATES[ctaCardType].textMarginLeft,
3143
- maxWidth: "3xl"
3144
- }, React__default.default.createElement(boemly.Spacer, {
3145
- height: ['0', null, null, null, '20']
3146
- }), React__default.default.createElement(boemly.DefaultSectionHeader, {
3147
- tagline: ctaCard.tagline,
3148
- taglineProps: {
3149
- textAlign: STATES[ctaCardType].textAlign,
3150
- color: VARIANTS$3[ctaCard.variant].taglineColor[ctaCardType],
3151
- paddingX: ['0', null, null, null, STATES[ctaCardType].paddingTagline]
3152
- },
3153
- title: ctaCard.title,
3154
- titleProps: {
3155
- fontFamily: 'Inter',
3156
- fontSize: '4xl',
3157
- fontWeight: '600',
3158
- lineHeight: '9',
3159
- textAlign: STATES[ctaCardType].textAlign,
3160
- paddingX: ['0', null, null, null, STATES[ctaCardType].paddingTitle],
3161
- color: VARIANTS$3[ctaCard.variant].titleColor[ctaCardType]
3162
- },
3163
- text: ctaCard.subTitle,
3164
- textProps: {
3165
- textAlign: STATES[ctaCardType].textAlign,
3166
- color: VARIANTS$3[ctaCard.variant].subTitleColor[ctaCardType]
3167
- }
3168
- }), ctaCard.buttons && ctaCard.buttons.length > 0 ? React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(boemly.Spacer, {
3169
- height: "8"
3170
- }), React__default.default.createElement(boemly.Flex, {
3171
- gap: "2",
3172
- justifyContent: STATES[ctaCardType].buttonJustifyContent
3173
- }, ctaCard.buttons && ctaCard.buttons.map(function (button) {
3174
- return React__default.default.createElement(StrapiLinkButton, {
3175
- key: button.button.id,
3176
- link: button.button,
3177
- size: "md",
3178
- variant: button.variant
3179
- });
3180
- }))) : React__default.default.createElement(React__default.default.Fragment, null), React__default.default.createElement(boemly.Spacer, {
3181
- height: ['1', null, null, null, '20']
3182
- })), ctaCard.image && ctaCardType === CtaCardType.Left ? React__default.default.createElement(boemly.Box, {
3183
- position: "relative",
3184
- height: ['3xs', null, null, null, 'auto'],
3185
- minWidth: [null, null, null, null, '50%']
3186
- }, React__default.default.createElement(Image__default.default, {
3187
- src: strapiMediaUrl(ctaCard.image.img, 'medium'),
3188
- alt: ctaCard.image.alt,
3189
- fill: true,
3190
- style: {
3191
- objectFit: ctaCard.image.objectFit || 'cover',
3192
- borderRadius: 'var(--boemly-radii-xl)'
3193
- }
3194
- })) : React__default.default.createElement(React__default.default.Fragment, null)));
3195
- }))));
3196
- };
3197
-
3198
- var CtaOnly = function CtaOnly(_ref) {
3199
- var slice = _ref.slice;
3200
- return React__default.default.createElement(boemly.Wrapper, null, React__default.default.createElement(boemly.Box, {
3201
- position: "absolute",
3202
- top: "-28",
3203
- transform: "translateY(50%)"
3204
- }, React__default.default.createElement(StrapiLinkButton, {
3205
- size: "md",
3206
- link: slice.button
3207
- })));
3208
- };
3209
-
3210
- var Glossary = function Glossary(_ref) {
3211
- var slice = _ref.slice;
3212
- var _useCopyToClipboard = reactUse.useCopyToClipboard(),
3213
- copyToClipboard = _useCopyToClipboard[1];
3214
- var _useContext = React.useContext(IntlContext),
3215
- formatMessage = _useContext.formatMessage;
3216
- var grouped = {};
3217
- var _useState = React.useState(),
3218
- copiedItem = _useState[0],
3219
- setCopiedItem = _useState[1];
3220
- slice.glossary_items.sort(function (a, b) {
3221
- return a.attributes.title.localeCompare(b.attributes.title);
3222
- }).forEach(function (curr) {
3223
- var _curr$attributes$titl;
3224
- var index = ((_curr$attributes$titl = curr.attributes.title.at(0)) == null ? void 0 : _curr$attributes$titl.toUpperCase()) || 'A';
3225
- if (!grouped[index]) {
3226
- grouped[index] = [];
3227
- }
3228
- grouped[index].push(curr.attributes);
3229
- }, {});
3230
- var handleAnchorClick = /*#__PURE__*/function () {
3231
- var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(slug) {
3232
- var _window;
3233
- var currentUrl;
3234
- return _regeneratorRuntime().wrap(function _callee$(_context) {
3235
- while (1) switch (_context.prev = _context.next) {
3236
- case 0:
3237
- if ((_window = window) != null && _window.location) {
3238
- currentUrl = window.location.href.split('#')[0];
3239
- copyToClipboard(currentUrl + "#" + slug);
3240
- setCopiedItem(slug);
3241
- setTimeout(function () {
3242
- setCopiedItem(undefined);
3243
- }, 1200);
3244
- }
3245
- case 1:
3246
- case "end":
3247
- return _context.stop();
3248
- }
3249
- }, _callee);
3250
- }));
3251
- return function handleAnchorClick(_x) {
3252
- return _ref2.apply(this, arguments);
3253
- };
3254
- }();
3255
- return React__default.default.createElement(boemly.DefaultSectionContainer, null, React__default.default.createElement(boemly.Wrapper, null, React__default.default.createElement(boemly.SimpleGrid, null, Object.entries(grouped).map(function (_ref3, index) {
3256
- var letter = _ref3[0],
3257
- items = _ref3[1];
3258
- return React__default.default.createElement(boemly.GridItem, {
3259
- maxW: "xl",
3260
- placeSelf: "center",
3261
- key: letter
3262
- }, React__default.default.createElement(boemly.Heading, {
3263
- size: "3xl",
3264
- mb: "8"
3265
- }, letter), React__default.default.createElement(boemly.SimpleGrid, {
3266
- spacing: "6"
3267
- }, items.map(function (item) {
3268
- return React__default.default.createElement(boemly.GridItem, {
3269
- key: item.slug
3270
- }, React__default.default.createElement(boemly.Flex, {
3271
- mb: "2",
3272
- gap: "1.5",
3273
- alignItems: "center"
3274
- }, React__default.default.createElement(boemly.Heading, {
3275
- size: "xl",
3276
- id: item.slug,
3277
- scrollMarginTop: "calc(var(--header-height) + var(--boemly-sizes-10))"
3278
- }, item.title), React__default.default.createElement(boemly.IconButton, {
3279
- variant: "ghost",
3280
- size: "xs",
3281
- icon: copiedItem === item.slug ? React__default.default.createElement(react.Check, {
3282
- size: "16",
3283
- "data-testid": "check-icon"
3284
- }) : React__default.default.createElement(react.Link, {
3285
- size: "16"
3286
- }),
3287
- title: formatMessage({
3288
- id: 'sections.glossary.copyButtonLabel'
3289
- }),
3290
- "aria-label": formatMessage({
3291
- id: 'sections.glossary.copyButtonLabel'
3292
- }),
3293
- onClick: function () {
3294
- var _onClick = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
3295
- return _regeneratorRuntime().wrap(function _callee2$(_context2) {
3296
- while (1) switch (_context2.prev = _context2.next) {
3297
- case 0:
3298
- return _context2.abrupt("return", handleAnchorClick(item.slug));
3299
- case 1:
3300
- case "end":
3301
- return _context2.stop();
3302
- }
3303
- }, _callee2);
3304
- }));
3305
- function onClick() {
3306
- return _onClick.apply(this, arguments);
3307
- }
3308
- return onClick;
3309
- }()
3310
- })), React__default.default.createElement(boemly.Text, {
3311
- color: "black"
3312
- }, item.text));
3313
- })), index !== Object.keys(grouped).length - 1 && React__default.default.createElement(boemly.Divider, {
3314
- maxW: "xl",
3315
- placeSelf: "center",
3316
- mb: "10",
3317
- mt: "10"
3318
- }));
3319
- }))));
3320
- };
3321
-
3322
- var MINIMUM_CONTRIBUTION_VALUE_IN_MONEY = 10;
3323
- var MAXIMUM_CONTRIBUTION_VALUE_IN_MONEY = 60000;
3324
-
3325
- var ShopCheckout = function ShopCheckout(_ref) {
3326
- var slice = _ref.slice;
3327
- var _useToken = boemly.useToken('colors', ['primary.50']),
3328
- primary50 = _useToken[0];
3329
- var _useContext = React.useContext(IntlContext),
3330
- formatMessage = _useContext.formatMessage,
3331
- formatNumber = _useContext.formatNumber,
3332
- locale = _useContext.locale;
3333
- var _useRouter = router.useRouter(),
3334
- push = _useRouter.push;
3335
- var validateForm = React.useCallback(function (values) {
3336
- var errors = {};
3337
- if (!values.contributionValue) {
3338
- errors.contributionValue = formatMessage({
3339
- id: 'sections.shopCheckout.contributionValue.validation.empty'
3340
- });
3341
- } else if (values.contributionValue < MINIMUM_CONTRIBUTION_VALUE_IN_MONEY) {
3342
- errors.contributionValue = formatMessage({
3343
- id: "sections.shopCheckout.contributionValue.validation.tooLow." + slice.currency
3344
- });
3345
- } else if (values.contributionValue > MAXIMUM_CONTRIBUTION_VALUE_IN_MONEY) {
3346
- errors.contributionValue = formatMessage({
3347
- id: 'sections.shopCheckout.contributionValue.validation.tooHigh'
3348
- });
3349
- }
3350
- return errors;
3351
- }, [locale]);
3352
- var onSubmit = function onSubmit(_ref2) {
3353
- var contributionValue = _ref2.contributionValue;
3354
- var url = new URL(FPM_API_URI + "/v1/webhooks/shop/checkout");
3355
- url.searchParams.append('batchId', slice.batchId);
3356
- url.searchParams.append('quantity', Math.floor(contributionValue / slice.pricePerKg).toString());
3357
- if (slice.couponId) url.searchParams.append('couponId', slice.couponId);
3358
- push(url.toString());
3359
- };
3360
- return React__default.default.createElement(boemly.DefaultSectionContainer, {
3361
- backgroundColor: primary50,
3362
- title: slice.title
3363
- }, React__default.default.createElement(boemly.Wrapper, null, React__default.default.createElement(boemly.Flex, {
3364
- flexDir: ['column', null, null, null, 'row'],
3365
- justifyContent: "space-between",
3366
- alignItems: ['left', null, null, null, 'center']
3367
- }, React__default.default.createElement(boemly.Box, {
3368
- marginRight: ['0', null, null, null, '36'],
3369
- flexShrink: 2
3370
- }, React__default.default.createElement(boemly.DefaultSectionHeader, {
3371
- tagline: slice.tagline,
3372
- title: slice.title,
3373
- text: slice.text
3374
- })), React__default.default.createElement(boemly.Container, {
3375
- maxWidth: "md",
3376
- padding: "lg",
3377
- shadow: "lg"
3378
- }, slice.badge ? React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(boemly.Badge, {
3379
- colorScheme: "green",
3380
- textTransform: "none",
3381
- whiteSpace: "unset"
3382
- }, slice.badge), React__default.default.createElement(boemly.Spacer, {
3383
- height: "3"
3384
- })) : React__default.default.createElement(React__default.default.Fragment, null), React__default.default.createElement(boemly.RichText, {
3385
- content: slice.checkoutText,
3386
- textProps: {
3387
- color: 'gray.500'
3388
- }
3389
- }), React__default.default.createElement(boemly.Spacer, {
3390
- height: "6"
3391
- }), React__default.default.createElement(boemly.Divider, null), React__default.default.createElement(boemly.Spacer, {
3392
- height: "6"
3393
- }), React__default.default.createElement(boemly.LabelNumberPair, {
3394
- label: formatMessage({
3395
- id: 'sections.shopCheckout.intro.price'
3396
- }),
3397
- number: formatNumber(slice.pricePerKg * 100, {
3398
- style: 'currency',
3399
- currency: slice.currency
3400
- }) + "/" + formatNumber(100, {
3401
- style: 'unit',
3402
- unit: 'kilogram'
3403
- }) + " CO\u2082"
3404
- }), React__default.default.createElement(boemly.Spacer, {
3405
- height: "6"
3406
- }), React__default.default.createElement(boemly.Divider, null), React__default.default.createElement(boemly.Spacer, {
3407
- height: "6"
3408
- }), React__default.default.createElement(formik.Formik, {
3409
- initialValues: {
3410
- contributionValue: slice.initialContributionValue
3411
- },
3412
- validate: validateForm,
3413
- onSubmit: onSubmit
3414
- }, function (_ref3) {
3415
- var errors = _ref3.errors,
3416
- touched = _ref3.touched,
3417
- handleSubmit = _ref3.handleSubmit,
3418
- values = _ref3.values;
3419
- return React__default.default.createElement(formik.Form, {
3420
- onSubmit: handleSubmit
3421
- }, React__default.default.createElement(boemly.Box, {
3422
- width: "full"
3423
- }, React__default.default.createElement(formik.Field, {
3424
- name: "contributionValue"
3425
- }, function (_ref4) {
3426
- var field = _ref4.field;
3427
- return React__default.default.createElement(boemly.BoemlyFormControl, {
3428
- id: "contributionValue",
3429
- size: "md",
3430
- inputProps: _extends({
3431
- type: 'number'
3432
- }, field),
3433
- label: formatMessage({
3434
- id: "sections.shopCheckout.contributionValue.label." + slice.currency
3435
- }),
3436
- rightAddonsOrElements: [React__default.default.createElement(boemly.InputRightAddon, {
3437
- key: "1"
3438
- }, formatMessage({
3439
- id: "sections.shopCheckout.contributionValue.unit." + slice.currency
3440
- }))],
3441
- isInvalid: !!errors.contributionValue && touched.contributionValue,
3442
- errorMessage: errors.contributionValue
3443
- });
3444
- })), React__default.default.createElement(boemly.Spacer, {
3445
- height: "6"
3446
- }), React__default.default.createElement(boemly.SimpleGrid, {
3447
- columns: 2,
3448
- gap: "4"
3449
- }, React__default.default.createElement(boemly.LabelNumberPair, {
3450
- label: formatMessage({
3451
- id: 'sections.shopCheckout.summary.kg'
3452
- }),
3453
- number: formatNumber(Math.floor(values.contributionValue / slice.pricePerKg), {
3454
- style: 'unit',
3455
- unit: 'kilogram',
3456
- maximumFractionDigits: 0
3457
- }) + " CO\u2082"
3458
- }), React__default.default.createElement(boemly.LabelNumberPair, {
3459
- label: formatMessage({
3460
- id: 'sections.shopCheckout.summary.price'
3461
- }),
3462
- number: formatNumber(Math.floor(values.contributionValue / slice.pricePerKg) * slice.pricePerKg, {
3463
- style: 'currency',
3464
- currency: slice.currency,
3465
- minimumFractionDigits: 2,
3466
- maximumFractionDigits: 2
3467
- })
3468
- })), React__default.default.createElement(boemly.Spacer, {
3469
- height: "6"
3470
- }), React__default.default.createElement(boemly.Button, {
3471
- type: "submit",
3472
- width: "full"
3473
- }, formatMessage({
3474
- id: 'sections.shopCheckout.submit'
3475
- })));
3476
- })))));
3477
- };
3478
-
3479
- var VARIANTS$2 = {
3480
- gray: {
3481
- backgroundColor: 'primary.50',
3482
- tagLineColor: 'primary.500',
3483
- titleColor: 'black',
3484
- subTitleColor: 'black',
3485
- factKeyColor: 'gray.700',
3486
- factValueColor: 'gray.700'
3487
- },
3488
- green: {
3489
- backgroundColor: 'primary.800',
3490
- tagLineColor: 'white',
3491
- titleColor: 'white',
3492
- subTitleColor: 'white',
3493
- factKeyColor: 'whiteAlpha.900',
3494
- factValueColor: 'white'
3495
- },
3496
- white: {
3497
- backgroundColor: 'white',
3498
- tagLineColor: 'primary.500',
3499
- titleColor: 'black',
3500
- subTitleColor: 'black',
3501
- factKeyColor: 'gray.700',
3502
- factValueColor: 'gray.700'
3503
- }
3504
- };
3505
- var Facts = function Facts(_ref) {
3506
- var slice = _ref.slice;
3507
- return React__default.default.createElement(boemly.DefaultSectionContainer, {
3508
- backgroundColor: VARIANTS$2[slice.variant].backgroundColor,
3509
- flexDir: "column",
3510
- textAlign: "center",
3511
- justifyContent: "space-between",
3512
- paddingX: ['6', null, '8'],
3513
- title: slice.title
3514
- }, React__default.default.createElement(React__default.default.Fragment, null, slice.title && React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(boemly.DefaultSectionHeader, {
3515
- tagline: slice.tagline,
3516
- text: slice.subTitle,
3517
- title: slice.title,
3518
- taglineProps: {
3519
- color: VARIANTS$2[slice.variant].tagLineColor,
3520
- textAlign: 'center'
3521
- },
3522
- titleProps: {
3523
- color: VARIANTS$2[slice.variant].titleColor,
3524
- textAlign: 'center',
3525
- maxW: '6xl',
3526
- marginX: 'auto'
3527
- },
3528
- textProps: {
3529
- color: VARIANTS$2[slice.variant].subTitleColor,
3530
- textAlign: 'center',
3531
- maxW: '3xl',
3532
- marginX: 'auto'
3533
- }
3534
- }), React__default.default.createElement(boemly.Spacer, {
3535
- height: ['0', null, '12']
3536
- })), React__default.default.createElement(boemly.Flex, {
3537
- justifyContent: slice.facts.length < 3 ? 'center' : 'flex-start',
3538
- alignItems: "center",
3539
- flexWrap: "wrap",
3540
- mx: [null, null, null, '22', '28'],
3541
- flexDir: ['column', null, null, 'row'],
3542
- gap: [null, null, null, '12']
3543
- }, slice.facts.map(function (fact) {
3544
- return React__default.default.createElement(boemly.Flex, {
3545
- key: fact.key,
3546
- flexDir: "column",
3547
- width: ['var(--boemly-sizes-full)', null, null, 'calc((var(--boemly-sizes-full) - var(--boemly-space-24))/ 3 )'],
3548
- mt: ['8', '8', '8', slice.facts.length > 3 ? '16' : '0']
3549
- }, React__default.default.createElement(boemly.Heading, {
3550
- fontSize: "6xl",
3551
- fontFamily: "GintoNord",
3552
- lineHeight: "10",
3553
- fontWeight: "700",
3554
- color: VARIANTS$2[slice.variant].factValueColor,
3555
- mb: "2",
3556
- as: "p"
3557
- }, fact.value), React__default.default.createElement(boemly.Text, {
3558
- size: "mdLowNormal",
3559
- color: VARIANTS$2[slice.variant].factKeyColor
3560
- }, fact.key));
3561
- })), slice.button && React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(boemly.Spacer, {
3562
- height: ['0', null, '20']
3563
- }), React__default.default.createElement(StrapiLinkButton, {
3564
- link: slice.button,
3565
- size: "md",
3566
- variant: slice.variant === 'green' ? 'outline' : 'solid'
3567
- }))));
3568
- };
3569
-
3570
- var VARIANTS$1 = {
3571
- white: {
3572
- backgroundColor: 'white'
3573
- },
3574
- gray: {
3575
- backgroundColor: 'primary.50'
3576
- }
3577
- };
3578
- var sortByCreatedAt = function sortByCreatedAt(a, b) {
3579
- return new Date(b.attributes.createdAt).getTime() - new Date(a.attributes.createdAt).getTime();
3580
- };
3581
- var BlogCards = function BlogCards(_ref) {
3582
- var slice = _ref.slice,
3583
- blogPosts = _ref.blogPosts;
3584
- var _useContext = React.useContext(IntlContext),
3585
- formatDate = _useContext.formatDate;
3586
- var _useMediaQuery = boemly.useMediaQuery(BREAKPOINT_LG_QUERY),
3587
- mobile = _useMediaQuery[0];
3588
- var _useToken = boemly.useToken('colors', ['gray.700']),
3589
- gray700 = _useToken[0];
3590
- var sortedBlogPosts = React.useMemo(function () {
3591
- return blogPosts.sort(sortByCreatedAt);
3592
- }, [blogPosts]);
3593
- var blogPostsToDisplay = React.useMemo(function () {
3594
- var _slice$blogPostCatego;
3595
- return (_slice$blogPostCatego = slice.blogPostCategory) != null && (_slice$blogPostCatego = _slice$blogPostCatego.data) != null && _slice$blogPostCatego.attributes.name ? sortedBlogPosts.filter(function (blogPost) {
3596
- var _blogPost$attributes$, _slice$blogPostCatego2;
3597
- return ((_blogPost$attributes$ = blogPost.attributes.category) == null ? void 0 : _blogPost$attributes$.data.attributes.name) === ((_slice$blogPostCatego2 = slice.blogPostCategory) == null || (_slice$blogPostCatego2 = _slice$blogPostCatego2.data) == null ? void 0 : _slice$blogPostCatego2.attributes.name);
3598
- }).slice(0, 3) : sortedBlogPosts.slice(0, 3);
3599
- }, [sortedBlogPosts, slice]);
3600
- return React__default.default.createElement(boemly.DefaultSectionContainer, {
3601
- backgroundColor: VARIANTS$1[slice.variant].backgroundColor,
3602
- title: slice.title
3603
- }, React__default.default.createElement(boemly.Wrapper, null, mobile || !slice.button ? React__default.default.createElement(boemly.DefaultSectionHeader, {
3604
- tagline: slice.tagline,
3605
- title: slice.title,
3606
- text: slice.subTitle,
3607
- titleProps: {
3608
- maxW: '2xl'
3609
- },
3610
- textProps: {
3611
- maxW: '2xl'
3612
- }
3613
- }) : React__default.default.createElement(boemly.Flex, {
3614
- justifyContent: "space-between",
3615
- alignItems: "center",
3616
- gap: "60"
3617
- }, React__default.default.createElement(boemly.Box, null, React__default.default.createElement(boemly.DefaultSectionHeader, {
3618
- tagline: slice.tagline,
3619
- title: slice.title,
3620
- text: slice.subTitle
3621
- })), React__default.default.createElement(boemly.Box, {
3622
- minWidth: "40"
3623
- }, React__default.default.createElement(StrapiLinkButton, {
3624
- link: slice.button,
3625
- size: "lg",
3626
- variant: "outline",
3627
- rightIcon: React__default.default.createElement(react.CaretRight, {
3628
- color: gray700
3629
- })
3630
- }))), React__default.default.createElement(boemly.Spacer, {
3631
- height: "14"
3632
- }), React__default.default.createElement(boemly.SimpleGrid, {
3633
- columns: [1, null, null, 3],
3634
- spacingX: 4,
3635
- spacingY: 24,
3636
- flexShrink: "0"
3637
- }, blogPostsToDisplay.map(function (blogPost) {
3638
- return React__default.default.createElement(BlogItemContainer, {
3639
- as: Link__default.default,
3640
- href: "/blog/" + blogPost.attributes.slug,
3641
- "data-testid": "blog-item",
3642
- key: blogPost.attributes.slug
3643
- }, React__default.default.createElement(ImageContainer$1, null, React__default.default.createElement(Image__default.default, {
3644
- src: strapiMediaUrl(blogPost.attributes.img.img, 'medium'),
3645
- alt: blogPost.attributes.img.alt,
3646
- fill: true,
3647
- style: {
3648
- objectFit: blogPost.attributes.img.objectFit || 'cover'
3649
- }
3650
- })), React__default.default.createElement(boemly.Box, {
3651
- px: "2",
3652
- py: "8"
3653
- }, blogPost.attributes.category && React__default.default.createElement(boemly.Text, {
3654
- size: "smMonoUppercase",
3655
- color: "primary.800",
3656
- mb: "2"
3657
- }, blogPost.attributes.category.data.attributes.name), React__default.default.createElement(boemly.Heading, {
3658
- size: "lg"
3659
- }, blogPost.attributes.title), blogPost.attributes.teaser && React__default.default.createElement(boemly.Text, {
3660
- size: "mdRegularNormal",
3661
- mt: "2"
3662
- }, blogPost.attributes.teaser), React__default.default.createElement(boemly.Spacer, {
3663
- height: "4"
3664
- }), React__default.default.createElement(boemly.DatePersonPair, {
3665
- date: formatDate(blogPost.attributes.createdAt),
3666
- person: blogPost.attributes.author ? {
3667
- name: blogPost.attributes.author.data.attributes.name,
3668
- image: React__default.default.createElement(Image__default.default, {
3669
- src: strapiMediaUrl(blogPost.attributes.author.data.attributes.img.img, 'thumbnail'),
3670
- alt: blogPost.attributes.author.data.attributes.img.alt,
3671
- fill: true,
3672
- style: {
3673
- objectFit: blogPost.attributes.author.data.attributes.img.objectFit || 'cover'
3674
- }
3675
- })
3676
- } : undefined
3677
- })));
3678
- })), React__default.default.createElement(React__default.default.Fragment, null, mobile && slice.button && React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(boemly.Box, {
3679
- minWidth: "40",
3680
- mt: "6"
3681
- }, React__default.default.createElement(StrapiLinkButton, {
3682
- link: slice.button,
3683
- size: "lg",
3684
- variant: "outline",
3685
- rightIcon: React__default.default.createElement(react.CaretRight, {
3686
- color: gray700
3687
- })
3688
- }))))));
3689
- };
3690
-
3691
- var SmallCheckout = function SmallCheckout(_ref) {
3692
- var pricePerKg = _ref.pricePerKg,
3693
- currency = _ref.currency,
3694
- batchId = _ref.batchId,
3695
- initialContributionValue = _ref.initialContributionValue,
3696
- checkoutText = _ref.checkoutText,
3697
- title = _ref.title,
3698
- subtitle = _ref.subtitle,
3699
- button = _ref.button;
3700
- var _useContext = React.useContext(IntlContext),
3701
- formatNumber = _useContext.formatNumber,
3702
- formatMessage = _useContext.formatMessage,
3703
- locale = _useContext.locale;
3704
- var _useRouter = router.useRouter(),
3705
- push = _useRouter.push;
3706
- var validateForm = React.useCallback(function (values) {
3707
- var errors = {};
3708
- if (!values.contributionValueCurrency) {
3709
- errors.contributionValueCurrency = formatMessage({
3710
- id: 'portfolio.smallCheckout.contributionValueCurrency.validation.empty'
3711
- });
3712
- } else if (values.contributionValueCurrency < MINIMUM_CONTRIBUTION_VALUE_IN_MONEY) {
3713
- errors.contributionValueCurrency = formatMessage({
3714
- id: "portfolio.smallCheckout.contributionValueCurrency.validation.tooLow." + currency
3715
- });
3716
- } else if (values.contributionValueCurrency > MAXIMUM_CONTRIBUTION_VALUE_IN_MONEY) {
3717
- errors.contributionValueCurrency = formatMessage({
3718
- id: 'portfolio.smallCheckout.contributionValueCurrency.validation.tooHigh'
3719
- });
3720
- }
3721
- return errors;
3722
- }, [locale]);
3723
- var onSubmit = /*#__PURE__*/function () {
3724
- var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(_ref2) {
3725
- var contributionValueCurrency;
3726
- return _regeneratorRuntime().wrap(function _callee$(_context) {
3727
- while (1) switch (_context.prev = _context.next) {
3728
- case 0:
3729
- contributionValueCurrency = _ref2.contributionValueCurrency;
3730
- push(FPM_API_URI + "/v1/webhooks/shop/checkout?batchId=" + batchId + "&quantity=" + Math.floor(contributionValueCurrency / pricePerKg));
3731
- case 2:
3732
- case "end":
3733
- return _context.stop();
3734
- }
3735
- }, _callee);
3736
- }));
3737
- return function onSubmit(_x) {
3738
- return _ref3.apply(this, arguments);
3739
- };
3740
- }();
3741
- return React__default.default.createElement(boemly.Flex, {
3742
- width: "full",
3743
- height: "full",
3744
- borderRadius: "xl",
3745
- background: "primary.100",
3746
- padding: "6",
3747
- direction: "column"
3748
- }, React__default.default.createElement(boemly.Flex, {
3749
- gap: "1",
3750
- alignItems: "end",
3751
- mb: "6"
3752
- }, React__default.default.createElement(boemly.Text, {
3753
- color: "black",
3754
- lineHeight: "0"
3755
- }, formatMessage({
3756
- id: 'unit.formatter.tonsCo2'
3757
- }, {
3758
- number: React__default.default.createElement(boemly.Text, {
3759
- as: "span",
3760
- size: "lgLowBold",
3761
- color: "black"
3762
- }, formatNumber(pricePerKg * 1000, {
3763
- style: 'currency',
3764
- currency: currency,
3765
- maximumFractionDigits: 0
3766
- }))
3767
- }))), React__default.default.createElement(formik.Formik, {
3768
- initialValues: {
3769
- contributionValueCurrency: initialContributionValue,
3770
- contributionValueKgs: initialContributionValue / pricePerKg / 1000
3771
- },
3772
- validate: validateForm,
3773
- onSubmit: onSubmit
3774
- }, function (_ref4) {
3775
- var errors = _ref4.errors,
3776
- touched = _ref4.touched,
3777
- handleSubmit = _ref4.handleSubmit,
3778
- setValues = _ref4.setValues;
3779
- return React__default.default.createElement(formik.Form, {
3780
- onSubmit: handleSubmit
3781
- }, React__default.default.createElement(boemly.Flex, {
3782
- gap: "4"
3783
- }, React__default.default.createElement(boemly.Box, {
3784
- width: "full"
3785
- }, React__default.default.createElement(formik.Field, {
3786
- name: "contributionValueCurrency"
3787
- }, function (_ref5) {
3788
- var field = _ref5.field;
3789
- return React__default.default.createElement(boemly.BoemlyFormControl, {
3790
- id: "contributionValueCurrency",
3791
- size: "md",
3792
- inputType: "NumberInput",
3793
- numberInputProps: {
3794
- value: field.value,
3795
- onChange: function onChange(valueString) {
3796
- // valueAsNumber might be NaN
3797
- var value = parseInt(valueString || '0', 10);
3798
- setValues({
3799
- contributionValueCurrency: value,
3800
- contributionValueKgs: value / pricePerKg / 1000
3801
- });
3802
- }
3803
- },
3804
- label: formatMessage({
3805
- id: "portfolio.smallCheckout.contributionValueCurrency.label." + currency
3806
- }),
3807
- rightAddonsOrElements: [React__default.default.createElement(boemly.InputRightAddon, {
3808
- key: "currencyUnit"
3809
- }, formatMessage({
3810
- id: "portfolio.smallCheckout.contributionValueCurrency.unit." + currency
3811
- }))],
3812
- isInvalid: !!errors.contributionValueCurrency && touched.contributionValueCurrency,
3813
- errorMessage: errors.contributionValueCurrency
3814
- });
3815
- })), React__default.default.createElement(boemly.Box, {
3816
- width: "full"
3817
- }, React__default.default.createElement(formik.Field, {
3818
- name: "contributionValueKgs"
3819
- }, function (_ref6) {
3820
- var field = _ref6.field;
3821
- return React__default.default.createElement(boemly.BoemlyFormControl, {
3822
- id: "contributionValueKgs",
3823
- size: "md",
3824
- inputType: "NumberInput",
3825
- numberInputProps: {
3826
- value: field.value,
3827
- onChange: function onChange(valueString) {
3828
- var value = parseInt(valueString || '0', 10);
3829
- setValues({
3830
- contributionValueCurrency: value * pricePerKg * 1000,
3831
- contributionValueKgs: value
3832
- });
3833
- }
3834
- },
3835
- label: formatMessage({
3836
- id: 'portfolio.smallCheckout.contributionValueKgs.label'
3837
- }),
3838
- rightAddonsOrElements: [React__default.default.createElement(boemly.InputRightAddon, {
3839
- key: "tCO\u2082"
3840
- }, "tCO\u2082")],
3841
- isInvalid: !!errors.contributionValueKgs && touched.contributionValueKgs,
3842
- errorMessage: errors.contributionValueKgs
3843
- });
3844
- }))), React__default.default.createElement(boemly.Spacer, {
3845
- height: "4"
3846
- }), React__default.default.createElement(boemly.Button, {
3847
- type: "submit",
3848
- width: "full"
3849
- }, formatMessage({
3850
- id: 'portfolio.smallCheckout.submitButton'
3851
- })));
3852
- }), React__default.default.createElement(boemly.Flex, {
3853
- width: "full",
3854
- justifyContent: "center",
3855
- alignItems: "center",
3856
- mt: "6",
3857
- gap: "2"
3858
- }, React__default.default.createElement(Image__default.default, {
3859
- src: CDN_URI + "/assets/v3/strapi-slices/globe-love-icon.svg",
3860
- alt: "Icon",
3861
- width: 20,
3862
- height: 20
3863
- }), React__default.default.createElement(boemly.Text, {
3864
- size: "smLowNormal"
3865
- }, checkoutText)), React__default.default.createElement(boemly.Divider, {
3866
- my: "6"
3867
- }), React__default.default.createElement(boemly.Flex, {
3868
- width: "full",
3869
- alignItems: "center",
3870
- direction: "column"
3871
- }, title && React__default.default.createElement(boemly.Text, {
3872
- size: "smLowBold",
3873
- textAlign: "center",
3874
- color: "black",
3875
- mb: "2"
3876
- }, title), subtitle && React__default.default.createElement(boemly.Text, {
3877
- size: "smRegularNormal",
3878
- textAlign: "center",
3879
- mb: "3"
3880
- }, subtitle), button && React__default.default.createElement(StrapiLinkButton, {
3881
- link: {
3882
- id: 1,
3883
- intercomLauncher: true,
3884
- text: button.text
3885
- },
3886
- variant: "outline"
3887
- })));
3888
- };
3889
-
3890
- var convertAreaM2ToHa = function convertAreaM2ToHa(areaInM2) {
3891
- return parseInt(areaInM2, 10) / 10000;
3892
- };
3893
-
3894
- var convertCo2AmountKgToTons = function convertCo2AmountKgToTons(amount) {
3895
- return parseInt(amount, 10) / 1000;
3896
- };
3897
-
3898
- var FORMAT_AS_HECTARE_CONFIG = {
3899
- unit: 'hectare',
3900
- unitDisplay: 'short',
3901
- style: 'unit',
3902
- maximumFractionDigits: 2
3903
- };
3904
- var FORMAT_AS_PERCENT_CONFIG = {
3905
- style: 'percent',
3906
- maximumFractionDigits: 2
3907
- };
3908
-
3909
- var getTimeSpanInYears = function getTimeSpanInYears(start, end) {
3910
- var monthsDifference = end.getMonth() - start.getMonth();
3911
- var yearsDifference = end.getFullYear() - start.getFullYear();
3912
- if (monthsDifference > 4) {
3913
- return yearsDifference + 1;
3914
- }
3915
- if (monthsDifference < -4) {
3916
- return yearsDifference - 1;
3917
- }
3918
- return yearsDifference;
3919
- };
3920
-
3921
- var ProjectInfo = function ProjectInfo(_ref) {
3922
- var project = _ref.project,
3923
- subtitles = _ref.subtitles;
3924
- var _useContext = React.useContext(IntlContext),
3925
- formatMessage = _useContext.formatMessage,
3926
- formatNumber = _useContext.formatNumber,
3927
- formatDate = _useContext.formatDate;
3928
- return React__default.default.createElement(boemly.Container, {
3929
- p: "2",
3930
- width: "full"
3931
- }, React__default.default.createElement(boemly.Heading, {
3932
- size: "xl",
3933
- textAlign: "left"
3934
- }, formatMessage({
3935
- id: 'features.projectInfo.projectInfo.value'
3936
- })), React__default.default.createElement(boemly.Spacer, {
3937
- height: "8"
3938
- }), React__default.default.createElement(boemly.SimpleGrid, {
3939
- columns: [1, null, null, 2],
3940
- gap: "8",
3941
- spacingX: "10",
3942
- spacingY: "8"
3943
- }, project.area && React__default.default.createElement(boemly.Box, null, React__default.default.createElement(boemly.LabelTextPair, {
3944
- label: formatMessage({
3945
- id: 'features.projectInfo.properties.area'
3946
- }),
3947
- text: formatNumber(convertAreaM2ToHa(project.area.toString()), FORMAT_AS_HECTARE_CONFIG),
3948
- caption: subtitles.areaSubtitle
3949
- })), project.location && React__default.default.createElement(boemly.Box, null, React__default.default.createElement(boemly.LabelTextPair, {
3950
- label: formatMessage({
3951
- id: 'features.projectInfo.properties.location'
3952
- }),
3953
- text: project.location,
3954
- caption: subtitles.locationSubtitle
3955
- })), project.start && React__default.default.createElement(boemly.Box, null, React__default.default.createElement(boemly.LabelTextPair, {
3956
- label: formatMessage({
3957
- id: 'features.projectInfo.properties.start'
3958
- }),
3959
- text: formatDate(project.start, {
3960
- year: 'numeric',
3961
- month: 'long'
3962
- }),
3963
- caption: subtitles.startSubtitle
3964
- })), project.start && project.end && React__default.default.createElement(boemly.Box, null, React__default.default.createElement(boemly.LabelTextPair, {
3965
- label: formatMessage({
3966
- id: 'features.projectInfo.properties.timeSpan'
3967
- }),
3968
- text: formatMessage({
3969
- id: 'features.projectInfo.properties.year'
3970
- }, {
3971
- years: getTimeSpanInYears(new Date(project.start), new Date(project.end))
3972
- }),
3973
- caption: subtitles.timeSpanSubtitle
3974
- }))), project.projectType || project.projectDeveloper || project.verificationStandard ? React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(boemly.Spacer, {
3975
- height: "6"
3976
- }), React__default.default.createElement(boemly.Divider, null), React__default.default.createElement(boemly.Spacer, {
3977
- height: "6"
3978
- })) : React__default.default.createElement(React__default.default.Fragment, null), React__default.default.createElement(boemly.SimpleGrid, {
3979
- columns: [1, null, null, 2],
3980
- spacingX: "10",
3981
- spacingY: "8"
3982
- }, project.projectType && React__default.default.createElement(boemly.Box, null, React__default.default.createElement(boemly.LabelTextPair, {
3983
- label: formatMessage({
3984
- id: 'features.projectInfo.properties.projectType'
3985
- }),
3986
- text: project.projectType.title,
3987
- caption: subtitles.projectTypeSubtitle
3988
- })), project.projectDeveloper && React__default.default.createElement(boemly.Box, null, React__default.default.createElement(boemly.LabelTextPair, {
3989
- label: formatMessage({
3990
- id: 'features.projectInfo.properties.projectDeveloper'
3991
- }),
3992
- text: project.projectDeveloper.name,
3993
- caption: subtitles.projectDeveloperSubtitle
3994
- }))), project.verificationStandard ? React__default.default.createElement(React__default.default.Fragment, null, project.projectType || project.projectDeveloper ? React__default.default.createElement(boemly.Spacer, {
3995
- height: "6"
3996
- }) : React__default.default.createElement(React__default.default.Fragment, null), React__default.default.createElement(boemly.Flex, {
3997
- justifyContent: "space-between",
3998
- alignItems: "center"
3999
- }, React__default.default.createElement(boemly.Box, null, React__default.default.createElement(boemly.LabelTextPair, {
4000
- label: formatMessage({
4001
- id: 'features.projectInfo.properties.verificationStandard.label'
4002
- }),
4003
- text: formatMessage({
4004
- id: "features.projectInfo.properties.verificationStandard.value." + project.verificationStandard.id,
4005
- defaultMessage: project.verificationStandard.id
4006
- }),
4007
- caption: subtitles.verificationStandardSubtitle
4008
- })), project.defaultIssuer && React__default.default.createElement(boemly.Box, {
4009
- position: "relative",
4010
- width: "14",
4011
- height: "8"
4012
- }, React__default.default.createElement(Image__default.default, {
4013
- src: project.defaultIssuer.logoUrl,
4014
- alt: project.defaultIssuer.name + " logo",
4015
- fill: true,
4016
- style: {
4017
- objectFit: 'contain'
4018
- }
4019
- })))) : React__default.default.createElement(React__default.default.Fragment, null), project.forecastedAmountYearly && project.riskBuffer ? React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(boemly.Spacer, {
4020
- height: "8"
4021
- }), React__default.default.createElement(boemly.Divider, null), React__default.default.createElement(boemly.Spacer, {
4022
- height: "8"
4023
- }), React__default.default.createElement(boemly.SimpleGrid, {
4024
- columns: [1, null, null, 2],
4025
- spacingX: "10",
4026
- spacingY: "8"
4027
- }, React__default.default.createElement(boemly.Box, null, React__default.default.createElement(boemly.LabelTextPair, {
4028
- label: formatMessage({
4029
- id: 'features.projectInfo.properties.forecastedAmountYear.label'
4030
- }),
4031
- text: formatMessage({
4032
- id: 'unit.formatter.tonsCo2PerYear'
4033
- }, {
4034
- number: formatNumber(convertCo2AmountKgToTons(project.forecastedAmountYearly.toString()), {
4035
- maximumFractionDigits: 0
4036
- })
4037
- }),
4038
- caption: subtitles.forecastedAmountSubtitle
4039
- })), React__default.default.createElement(boemly.Box, null, React__default.default.createElement(boemly.LabelTextPair, {
4040
- label: formatMessage({
4041
- id: 'features.projectInfo.properties.riskBuffer'
4042
- }),
4043
- text: formatNumber(project.riskBuffer / 100, FORMAT_AS_PERCENT_CONFIG),
4044
- caption: subtitles.riskBufferSubtitle
4045
- })))) : React__default.default.createElement(React__default.default.Fragment, null), project.creditsAvailable ? React__default.default.createElement(boemly.Box, {
4046
- mt: "2"
4047
- }, React__default.default.createElement(CreditsAvailableBadge, {
4048
- status: project.creditsAvailable
4049
- })) : React__default.default.createElement(React__default.default.Fragment, null));
4050
- };
4051
-
4052
- var DocumentsDownloadList = function DocumentsDownloadList(_ref) {
4053
- var documentUrls = _ref.documentUrls;
4054
- var _useContext = React.useContext(IntlContext),
4055
- formatMessage = _useContext.formatMessage;
4056
- return React__default.default.createElement(boemly.Container, {
4057
- p: "2"
4058
- }, React__default.default.createElement(boemly.Heading, {
4059
- size: "xl",
4060
- textAlign: "left"
4061
- }, formatMessage({
4062
- id: 'features.portfolio.documentsDownloadList.projectDocuments'
4063
- })), React__default.default.createElement(boemly.Flex, {
4064
- flexDir: "column"
4065
- }, documentUrls.map(function (documentUrl) {
4066
- return React__default.default.createElement(boemly.Flex, {
4067
- justifyContent: "space-between",
4068
- alignItems: "center",
4069
- mt: "6",
4070
- key: documentUrl.text
4071
- }, React__default.default.createElement(boemly.Flex, {
4072
- alignItems: "center"
4073
- }, React__default.default.createElement(boemly.Center, {
4074
- w: "8",
4075
- h: "8",
4076
- borderRadius: "full",
4077
- borderWidth: "1px",
4078
- borderColor: "grey.200"
4079
- }, React__default.default.createElement(react.FilePdf, null)), React__default.default.createElement(boemly.Spacer, {
4080
- width: "4"
4081
- }), React__default.default.createElement(boemly.Flex, {
4082
- flexDir: "column"
4083
- }, React__default.default.createElement(boemly.Text, {
4084
- size: "smMonoNormal"
4085
- }, "PDF"), React__default.default.createElement(boemly.Text, {
4086
- size: "mdLowBold",
4087
- color: "black",
4088
- textAlign: "left"
4089
- }, documentUrl.text))), React__default.default.createElement(boemly.Spacer, {
4090
- width: "32"
4091
- }), React__default.default.createElement(boemly.IconButton, {
4092
- variant: "outline",
4093
- "aria-label": formatMessage({
4094
- id: 'features.portfolio.documentsDownloadList.downloadDocument'
4095
- }),
4096
- icon: React__default.default.createElement(react.DownloadSimple, null),
4097
- as: Link__default.default,
4098
- href: documentUrl.url,
4099
- size: "sm"
4100
- }));
4101
- })));
4102
- };
4103
-
4104
- var Contact = function Contact(_ref) {
4105
- var avatar = _ref.avatar,
4106
- title = _ref.title,
4107
- text = _ref.text,
4108
- button = _ref.button;
4109
- return React__default.default.createElement(boemly.Container, {
4110
- backgroundColor: "primary.100",
4111
- border: "none",
4112
- p: "8",
4113
- height: "full"
4114
- }, React__default.default.createElement(boemly.Flex, {
4115
- flexDir: "column",
4116
- justifyContent: "center",
4117
- alignItems: "center",
4118
- height: "full"
4119
- }, avatar ? React__default.default.createElement(boemly.Box, {
4120
- position: "relative",
4121
- width: "20",
4122
- height: "20",
4123
- borderRadius: "full",
4124
- overflow: "hidden"
4125
- }, React__default.default.createElement(Image__default.default, {
4126
- src: strapiMediaUrl(avatar.img, 'small'),
4127
- alt: avatar.alt,
4128
- fill: true,
4129
- objectFit: avatar.objectFit
4130
- })) : React__default.default.createElement(React__default.default.Fragment, null), title ? React__default.default.createElement(boemly.Heading, {
4131
- mt: "6",
4132
- size: "md",
4133
- fontWeight: "500",
4134
- textAlign: "center",
4135
- color: "black"
4136
- }, title) : React__default.default.createElement(React__default.default.Fragment, null), text ? React__default.default.createElement(boemly.Text, {
4137
- mt: "2",
4138
- size: "smRegularNormal",
4139
- textAlign: "center"
4140
- }, text) : React__default.default.createElement(React__default.default.Fragment, null), button ? React__default.default.createElement(StrapiLinkButton, {
4141
- mt: "6",
4142
- link: button,
4143
- size: "md",
4144
- variant: "outline"
4145
- }) : React__default.default.createElement(React__default.default.Fragment, null)));
4146
- };
4147
-
4148
- var ProjectFacts = function ProjectFacts(_ref) {
4149
- var slice = _ref.slice,
4150
- project = _ref.project;
4151
- if (!project) {
4152
- return React__default.default.createElement(React__default.default.Fragment, null, "Invalid configuration, check if a project this id exists in the FPM");
4153
- }
4154
- return React__default.default.createElement(boemly.DefaultSectionContainer, null, React__default.default.createElement(boemly.Wrapper, null, React__default.default.createElement(boemly.Flex, {
4155
- flexDir: ['column', null, null, 'row'],
4156
- gap: "4",
4157
- width: "full"
4158
- }, React__default.default.createElement(ProjectInfo, {
4159
- project: project,
4160
- subtitles: slice
4161
- }), React__default.default.createElement(boemly.Flex, {
4162
- flexDir: "column",
4163
- gap: "4",
4164
- width: "full"
4165
- }, slice.documentUrls && slice.documentUrls.length > 0 && React__default.default.createElement(DocumentsDownloadList, {
4166
- documentUrls: slice.documentUrls
4167
- }), slice.batchId && slice.pricePerKg && slice.currency && slice.initialContributionValue ? React__default.default.createElement(SmallCheckout, {
4168
- batchId: slice.batchId,
4169
- checkoutText: slice.checkoutText,
4170
- currency: slice.currency,
4171
- initialContributionValue: slice.initialContributionValue,
4172
- pricePerKg: slice.pricePerKg,
4173
- title: slice.customTitle,
4174
- subtitle: slice.customSubtitle,
4175
- button: slice.customButton
4176
- }) : (slice.contactTitle || slice.contactText || slice.contactButton || slice.contactAvatar) && React__default.default.createElement(Contact, {
4177
- title: slice.contactTitle,
4178
- text: slice.contactText,
4179
- button: slice.contactButton,
4180
- avatar: slice.contactAvatar
4181
- })))));
4182
- };
4183
-
4184
- var CustomerStories = function CustomerStories(_ref) {
4185
- var slice = _ref.slice,
4186
- customerStories = _ref.customerStories;
4187
- var _useContext = React.useContext(IntlContext),
4188
- formatMessage = _useContext.formatMessage;
4189
- return React__default.default.createElement(boemly.DefaultSectionContainer, null, React__default.default.createElement(boemly.Wrapper, null, React__default.default.createElement(boemly.SimpleGrid, {
4190
- columns: [1, null, null, 2],
4191
- spacingX: 56,
4192
- spacingY: 24
4193
- }, slice.customer_stories.map(function (_ref2) {
4194
- var attributes = _ref2.attributes;
4195
- var customerStory = customerStories.find(function (cs) {
4196
- return cs.attributes.slug === attributes.slug;
4197
- });
4198
- if (!customerStory) {
4199
- return null;
4200
- }
4201
- return React__default.default.createElement(boemly.Container, {
4202
- padding: "none",
4203
- key: customerStory.id
4204
- }, React__default.default.createElement(boemly.Center, {
4205
- height: "24",
4206
- backgroundColor: "primary.50",
4207
- borderTopRadius: "xl"
4208
- }, React__default.default.createElement(boemly.Box, {
4209
- position: "relative",
4210
- height: "12",
4211
- width: "12"
4212
- }, React__default.default.createElement(Image__default.default, {
4213
- src: strapiMediaUrl(customerStory.attributes.customerLogo.img, 'medium'),
4214
- alt: customerStory.attributes.customerLogo.alt,
4215
- fill: true,
4216
- style: {
4217
- objectFit: customerStory.attributes.customerLogo.objectFit
4218
- }
4219
- }))), React__default.default.createElement(boemly.Box, {
4220
- px: "6",
4221
- pt: "12",
4222
- pb: "6"
4223
- }, React__default.default.createElement(boemly.Text, {
4224
- size: "xsMonoUppercase",
4225
- color: "gray.500",
4226
- mb: "2"
4227
- }, customerStory.attributes.customerIndustry), React__default.default.createElement(boemly.Heading, {
4228
- size: "xl"
4229
- }, customerStory.attributes.title), React__default.default.createElement(boemly.Button, {
4230
- as: Link__default.default,
4231
- href: "/customer-stories/" + customerStory.attributes.slug,
4232
- variant: "outline",
4233
- size: "sm",
4234
- mt: "12"
4235
- }, formatMessage({
4236
- id: 'sections.customerStories.more'
4237
- }))));
4238
- }))));
4239
- };
4240
-
4241
- var BULLET_POINT_VARIANTS = {
4242
- gray: {
4243
- bulletPointColor: 'black'
4244
- },
4245
- green: {
4246
- bulletPointColor: 'white'
4247
- },
4248
- white: {
4249
- bulletPointColor: 'black'
4250
- }
4251
- };
4252
- var Icon = function Icon(_ref) {
4253
- var variant = _ref.variant,
4254
- icon = _ref.icon;
4255
- switch (icon) {
4256
- case 'check':
4257
- return React__default.default.createElement(react.Check, {
4258
- size: 20,
4259
- color: "var(--boemly-colors-primary-500)"
4260
- });
4261
- case 'cross':
4262
- return React__default.default.createElement(react.X, {
4263
- size: 20,
4264
- color: "var(--boemly-colors-red-500)"
4265
- });
4266
- default:
4267
- return React__default.default.createElement(boemly.Box, {
4268
- "data-testid": "bullet-point-box",
4269
- borderRadius: "full",
4270
- backgroundColor: BULLET_POINT_VARIANTS[variant].bulletPointColor,
4271
- width: "2",
4272
- height: "2",
4273
- margin: "1.5"
4274
- });
4275
- }
4276
- };
4277
-
4278
- var VARIANTS = {
4279
- gray: {
4280
- backgroundColor: 'primary.50',
4281
- textColor: 'black',
4282
- subTitleColor: 'gray.500',
4283
- factColor: 'primary.800',
4284
- dividerColor: 'gray.200'
4285
- },
4286
- green: {
4287
- backgroundColor: 'primary.800',
4288
- textColor: 'white',
4289
- subTitleColor: 'whiteAlpha.900',
4290
- factColor: 'white',
4291
- dividerColor: 'whiteAlpha.200'
4292
- },
4293
- white: {
4294
- backgroundColor: 'white',
4295
- textColor: 'black',
4296
- subTitleColor: 'gray.500',
4297
- factColor: 'primary.800',
4298
- dividerColor: 'gray.200'
4299
- }
4300
- };
4301
- var Comparison = function Comparison(_ref) {
4302
- var slice = _ref.slice;
4303
- var _useContext = React.useContext(IntlContext),
4304
- formatMessage = _useContext.formatMessage;
4305
- return React__default.default.createElement(boemly.DefaultSectionContainer, null, React__default.default.createElement(boemly.Wrapper, null, slice.title ? React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(boemly.Flex, {
4306
- alignItems: "center",
4307
- flexDirection: "column"
4308
- }, React__default.default.createElement(boemly.DefaultSectionHeader, {
4309
- tagline: slice.tagline,
4310
- title: slice.title,
4311
- text: slice.subTitle,
4312
- textProps: {
4313
- maxW: '2xl',
4314
- textAlign: 'center'
4315
- },
4316
- titleProps: {
4317
- textAlign: 'center',
4318
- maxWidth: '3xl'
4319
- },
4320
- taglineProps: {
4321
- textAlign: 'center',
4322
- maxWidth: '3xl'
4323
- }
4324
- })), React__default.default.createElement(boemly.Spacer, {
4325
- height: "12"
4326
- })) : React__default.default.createElement(React__default.default.Fragment, null), React__default.default.createElement(boemly.SimpleGrid, {
4327
- columns: [1, null, null, null, slice.comparisonCards.length],
4328
- spacing: "4"
4329
- }, slice.comparisonCards.map(function (comparisonCard) {
4330
- return React__default.default.createElement(boemly.Container, {
4331
- boxShadow: comparisonCard.variant === 'green' ? 'xl' : 'base',
4332
- border: comparisonCard.variant === 'green' ? 'primary.800' : undefined,
4333
- zIndex: "base",
4334
- key: comparisonCard.id,
4335
- position: "relative",
4336
- elevation: "none",
4337
- p: "3",
4338
- backgroundColor: VARIANTS[comparisonCard.variant].backgroundColor
4339
- }, comparisonCard.variant === 'green' ? React__default.default.createElement(boemly.Box, {
4340
- position: "absolute",
4341
- left: "0",
4342
- top: "0",
4343
- width: "full",
4344
- height: "full",
4345
- zIndex: "-1"
4346
- }, React__default.default.createElement(Image__default.default, {
4347
- src: CDN_URI + "/assets/v3/strapi-slices/shapes-comparison.svg",
4348
- alt: formatMessage({
4349
- id: 'sections.comparison.backgroundShapes'
4350
- }),
4351
- fill: true,
4352
- style: {
4353
- objectFit: 'cover',
4354
- borderRadius: 'var(--boemly-radii-xl)'
4355
- }
4356
- })) : React__default.default.createElement(React__default.default.Fragment, null), React__default.default.createElement(boemly.Flex, {
4357
- flexDir: "column",
4358
- gap: "4"
4359
- }, comparisonCard.image && React__default.default.createElement(boemly.Box, {
4360
- position: "relative",
4361
- height: "7",
4362
- width: "100%"
4363
- }, React__default.default.createElement(Image__default.default, {
4364
- src: strapiMediaUrl(comparisonCard.image.img, 'small'),
4365
- alt: comparisonCard.image.alt,
4366
- fill: true,
4367
- style: {
4368
- objectFit: comparisonCard.image.objectFit
4369
- }
4370
- })), React__default.default.createElement(boemly.Flex, {
4371
- gap: "2",
4372
- alignItems: "center",
4373
- flexWrap: "wrap"
4374
- }, React__default.default.createElement(boemly.Heading, {
4375
- size: "2xl",
4376
- color: VARIANTS[comparisonCard.variant].textColor,
4377
- whiteSpace: "pre-line"
4378
- }, comparisonCard.title), comparisonCard.badge && React__default.default.createElement(boemly.Badge, {
4379
- backgroundColor: "green.100",
4380
- borderRadius: "md",
4381
- whiteSpace: "pre-line"
4382
- }, comparisonCard.badge))), React__default.default.createElement(boemly.Spacer, {
4383
- height: "4"
4384
- }), React__default.default.createElement(boemly.Text, {
4385
- size: "smRegularNormal",
4386
- color: VARIANTS[comparisonCard.variant].subTitleColor
4387
- }, comparisonCard.subTitle), comparisonCard.factTitle || comparisonCard.factSubtitle || comparisonCard.button ? React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(boemly.Spacer, {
4388
- height: "6"
4389
- }), React__default.default.createElement(boemly.Flex, {
4390
- flexDir: "column"
4391
- }, comparisonCard.factTitle && React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(boemly.Text, {
4392
- color: VARIANTS[comparisonCard.variant].factColor,
4393
- size: "lgMonoNormal"
4394
- }, comparisonCard.factTitle), React__default.default.createElement(boemly.Text, {
4395
- color: VARIANTS[comparisonCard.variant].factColor,
4396
- size: "smLowNormal"
4397
- }, comparisonCard.factSubtitle)), comparisonCard.button && React__default.default.createElement(StrapiLinkButton, {
4398
- mt: "6",
4399
- link: comparisonCard.button,
4400
- size: "md",
4401
- variant: "outline",
4402
- rightIcon: React__default.default.createElement(react.CaretRight, {
4403
- size: 16,
4404
- weight: "bold"
4405
- })
4406
- }))) : React__default.default.createElement(React__default.default.Fragment, null), React__default.default.createElement(React__default.default.Fragment, null, comparisonCard.lists.map(function (list) {
4407
- return React__default.default.createElement(boemly.Box, {
4408
- key: list.id
4409
- }, React__default.default.createElement(boemly.Divider, {
4410
- my: "8",
4411
- color: VARIANTS[comparisonCard.variant].dividerColor
4412
- }), React__default.default.createElement(boemly.Text, {
4413
- size: "smLowBold",
4414
- color: VARIANTS[comparisonCard.variant].textColor
4415
- }, list.title), React__default.default.createElement(React__default.default.Fragment, null, list.items.map(function (item) {
4416
- return React__default.default.createElement(boemly.Box, {
4417
- key: item.id
4418
- }, React__default.default.createElement(boemly.Spacer, {
4419
- height: "4"
4420
- }), React__default.default.createElement(boemly.Flex, {
4421
- gap: "4",
4422
- alignItems: "center"
4423
- }, React__default.default.createElement(boemly.Box, null, React__default.default.createElement(Icon, {
4424
- variant: comparisonCard.variant,
4425
- icon: item.icon
4426
- })), React__default.default.createElement(boemly.Text, {
4427
- size: "smLowNormal",
4428
- color: VARIANTS[comparisonCard.variant].textColor
4429
- }, item.text)));
4430
- })));
4431
- })));
4432
- }))));
4433
- };
4434
-
4435
- var SliceRenderer = function SliceRenderer(_ref) {
4436
- var slices = _ref.slices,
4437
- blogPosts = _ref.blogPosts,
4438
- projects = _ref.projects,
4439
- customerStories = _ref.customerStories,
4440
- _ref$locale = _ref.locale,
4441
- locale = _ref$locale === void 0 ? 'en' : _ref$locale,
4442
- CustomSlice = _ref.CustomSlice;
4443
- return React__default.default.createElement(ContextProvider, {
4444
- locale: locale
4445
- }, slices.map(function (slice) {
4446
- switch (slice.__component) {
4447
- case 'sections.hero':
4448
- return React__default.default.createElement(Hero, {
4449
- key: slice.__component + "-" + slice.id,
4450
- slice: slice
4451
- });
4452
- case 'sections.map-hero':
4453
- return React__default.default.createElement(MapHero, {
4454
- key: slice.__component + "-" + slice.id,
4455
- slice: slice
4456
- });
4457
- case 'sections.rich-text':
4458
- return React__default.default.createElement(RichTextSection, {
4459
- key: slice.__component + "-" + slice.id,
4460
- slice: slice
4461
- });
4462
- case 'sections.left-text-right-card':
4463
- return React__default.default.createElement(LeftTextRightCard, {
4464
- key: slice.__component + "-" + slice.id,
4465
- slice: slice
4466
- });
4467
- case 'sections.text-with-card':
4468
- return React__default.default.createElement(TextWithCard, {
4469
- key: slice.__component + "-" + slice.id,
4470
- slice: slice
4471
- });
4472
- case 'sections.logo-grid-with-text':
4473
- return React__default.default.createElement(LogoGridWithText, {
4474
- key: slice.__component + "-" + slice.id,
4475
- slice: slice
4476
- });
4477
- case 'sections.quote-cards':
4478
- return React__default.default.createElement(QuoteCards, {
4479
- key: slice.__component + "-" + slice.id,
4480
- slice: slice
4481
- });
4482
- case 'sections.q-and-a':
4483
- return React__default.default.createElement(QAndA, {
4484
- key: slice.__component + "-" + slice.id,
4485
- slice: slice
4486
- });
4487
- case 'sections.image-grid':
4488
- return React__default.default.createElement(ImageGrid, {
4489
- key: slice.__component + "-" + slice.id,
4490
- slice: slice
4491
- });
4492
- case 'sections.full-width-image':
4493
- return React__default.default.createElement(FullWidthImage, {
4494
- key: slice.__component + "-" + slice.id,
4495
- slice: slice
4496
- });
4497
- case 'sections.text-with-text-cards':
4498
- return React__default.default.createElement(TextWithTextCards, {
4499
- key: slice.__component + "-" + slice.id,
4500
- slice: slice
4501
- });
4502
- case 'sections.text-card-grid':
4503
- return React__default.default.createElement(TextCardGrid, {
4504
- key: slice.__component + "-" + slice.id,
4505
- slice: slice
4506
- });
4507
- case 'sections.icon-grid':
4508
- return React__default.default.createElement(IconGrid, {
4509
- key: slice.__component + "-" + slice.id,
4510
- slice: slice
4511
- });
4512
- case 'sections.image-text-sequence':
4513
- return React__default.default.createElement(ImageTextSequence, {
4514
- key: slice.__component + "-" + slice.id,
4515
- slice: slice
4516
- });
4517
- case 'sections.steps':
4518
- return React__default.default.createElement(Steps, {
4519
- key: slice.__component + "-" + slice.id,
4520
- slice: slice
4521
- });
4522
- case 'sections.text-carousel':
4523
- return React__default.default.createElement(TextCarousel, {
4524
- key: slice.__component + "-" + slice.id,
4525
- slice: slice
4526
- });
4527
- case 'sections.link-cards-grid':
4528
- return React__default.default.createElement(LinkCardsGrid, {
4529
- key: slice.__component + "-" + slice.id,
4530
- slice: slice
4531
- });
4532
- case 'sections.small-hero':
4533
- return React__default.default.createElement(SmallHero, {
4534
- key: slice.__component + "-" + slice.id,
4535
- slice: slice,
4536
- theme: "dark"
4537
- });
4538
- case 'sections.small-hero-light':
4539
- return React__default.default.createElement(SmallHero, {
4540
- key: slice.__component + "-" + slice.id,
4541
- slice: slice,
4542
- theme: "light"
4543
- });
4544
- case 'sections.project-facts':
4545
- return React__default.default.createElement(ProjectFacts, {
4546
- key: slice.__component + "-" + slice.id,
4547
- slice: slice,
4548
- project: projects.find(function (p) {
4549
- return p.id === slice.projectId;
4550
- })
4551
- });
4552
- case 'sections.projects-grid':
4553
- return React__default.default.createElement(ProjectsGrid, {
4554
- key: slice.__component + "-" + slice.id,
4555
- slice: slice
4556
- });
4557
- case 'sections.projects-map':
4558
- return React__default.default.createElement(ProjectsMap, {
4559
- key: slice.__component + "-" + slice.id,
4560
- slice: slice,
4561
- projects: projects
4562
- });
4563
- case 'sections.video':
4564
- return React__default.default.createElement(Video, {
4565
- key: slice.__component + "-" + slice.id,
4566
- slice: slice
4567
- });
4568
- case 'sections.full-width-highlight-quote':
4569
- return React__default.default.createElement(FullWidthHighlightQuote, {
4570
- key: slice.__component + "-" + slice.id,
4571
- slice: slice
4572
- });
4573
- case 'sections.full-width-image-slider':
4574
- return React__default.default.createElement(FullWidthImageSlider, {
4575
- key: slice.__component + "-" + slice.id,
4576
- slice: slice
4577
- });
4578
- case 'sections.side-by-side-images':
4579
- return React__default.default.createElement(SideBySideImages, {
4580
- key: slice.__component + "-" + slice.id,
4581
- slice: slice
4582
- });
4583
- case 'sections.cta-only':
4584
- return React__default.default.createElement(CtaOnly, {
4585
- key: slice.__component + "-" + slice.id,
4586
- slice: slice
4587
- });
4588
- case 'sections.cta':
4589
- return React__default.default.createElement(Cta, {
4590
- key: slice.__component + "-" + slice.id,
4591
- slice: slice
4592
- });
4593
- case 'sections.shop-checkout':
4594
- return React__default.default.createElement(ShopCheckout, {
4595
- key: slice.__component + "-" + slice.id,
4596
- slice: slice
4597
- });
4598
- case 'sections.facts':
4599
- return React__default.default.createElement(Facts, {
4600
- key: slice.__component + "-" + slice.id,
4601
- slice: slice
4602
- });
4603
- case 'sections.blog-cards':
4604
- return React__default.default.createElement(BlogCards, {
4605
- key: slice.__component + "-" + slice.id,
4606
- slice: slice,
4607
- blogPosts: blogPosts
4608
- });
4609
- case 'sections.blog':
4610
- return React__default.default.createElement(Blog, {
4611
- key: slice.__component + "-" + slice.id,
4612
- slice: _extends({}, slice, {
4613
- blog_posts: slice.blog_posts.data
4614
- }),
4615
- blogPosts: blogPosts
4616
- });
4617
- case 'sections.glossary':
4618
- return React__default.default.createElement(Glossary, {
4619
- key: slice.__component + "-" + slice.id,
4620
- slice: _extends({}, slice, {
4621
- glossary_items: slice.glossary_items.data
4622
- })
4623
- });
4624
- case 'sections.customer-stories':
4625
- return React__default.default.createElement(CustomerStories, {
4626
- key: slice.__component + "-" + slice.id,
4627
- slice: _extends({}, slice, {
4628
- customer_stories: slice.customer_stories.data
4629
- }),
4630
- customerStories: customerStories
4631
- });
4632
- case 'sections.comparison':
4633
- return React__default.default.createElement(Comparison, {
4634
- key: slice.__component + "-" + slice.id,
4635
- slice: slice
4636
- });
4637
- default:
4638
- if (CustomSlice) {
4639
- return React__default.default.createElement(CustomSlice, {
4640
- key: slice.__component + "-" + slice.id,
4641
- id: slice.__component,
4642
- slice: slice
4643
- });
4644
- }
4645
- return React__default.default.createElement("div", {
4646
- key: slice.__component + "-" + slice.id
4647
- }, "Slice component not supported");
4648
- }
4649
- }));
4650
- };
4651
-
4652
- exports.SliceRenderer = SliceRenderer;
4653
- //# sourceMappingURL=strapi-slices.cjs.development.js.map