@treely/strapi-slices 3.1.1 → 3.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.
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import StrapiLink from '../../models/strapi/StrapiLink';
3
3
  import StrapiProjectCard from '../../models/strapi/StrapiProjectCard';
4
+ import { IStrapi, IStrapiData, PortfolioProject, StrapiProject } from '../..';
4
5
  interface TextWithCardSlice {
5
6
  tagline?: string;
6
7
  title: string;
@@ -11,10 +12,12 @@ interface TextWithCardSlice {
11
12
  }[];
12
13
  button?: StrapiLink;
13
14
  card?: StrapiProjectCard;
15
+ project?: IStrapi<IStrapiData<StrapiProject>>;
14
16
  cardPosition: 'left' | 'right';
15
17
  }
16
18
  export interface TextWithCardProps {
17
19
  slice: TextWithCardSlice;
20
+ projects: PortfolioProject[];
18
21
  }
19
22
  export declare const TextWithCard: React.FC<TextWithCardProps>;
20
23
  export {};
@@ -489,7 +489,7 @@ var EXTENDABLE_HEADER_SECTIONS = ['sections.hero', 'sections.map-hero', 'section
489
489
  var DARK_THEME_HEADER_SECTIONS = ['sections.hero', 'sections.small-hero'];
490
490
  var SECTIONS_WITH_BLOG_POSTS = ['sections.blog', 'sections.blog-cards'];
491
491
  var SECTIONS_WITH_CUSTOMER_STORIES = ['sections.customer-stories'];
492
- var SECTIONS_WITH_PROJECTS = ['sections.projects-grid', 'sections.projects-map', 'sections.project-facts'];
492
+ var SECTIONS_WITH_PROJECTS = ['sections.projects-grid', 'sections.projects-map', 'sections.project-facts', 'sections.text-with-card'];
493
493
 
494
494
  var mergeGlobalAndStrapiPageData = function mergeGlobalAndStrapiPageData(context, global, page, blogPosts, customerStories, projects) {
495
495
  var _page$attributes$meta, _page$attributes$meta2, _page$attributes$meta3, _global$attributes$me, _page$attributes$meta4, _page$attributes, _page$attributes$slic, _page$attributes$slic2, _page$attributes$meta5, _page$attributes$meta6, _page$attributes$meta7, _page$attributes$meta8, _ref, _page$attributes$meta9, _page$attributes$meta10, _global$attributes$me2;
@@ -2127,205 +2127,26 @@ var TextWithTextCards = function TextWithTextCards(_ref) {
2127
2127
  }))));
2128
2128
  };
2129
2129
 
2130
- var TextWithCard = function TextWithCard(_ref) {
2131
- var slice = _ref.slice;
2132
- var card = React__default.default.createElement(boemly.GridItem, {
2133
- colSpan: [4, null, null, null, 2],
2134
- rowSpan: 1,
2135
- position: "relative",
2136
- "data-testid": "card-position-" + slice.cardPosition
2137
- }, slice.card && React__default.default.createElement(boemly.ProjectCard, {
2138
- facts: slice.card.facts,
2139
- footerSubTitle: slice.card.footerSubTitle,
2140
- footerTitle: slice.card.footerTitle,
2141
- title: slice.card.title,
2142
- image: React__default.default.createElement(Image__default.default, {
2143
- src: strapiMediaUrl(slice.card.image.img, 'medium'),
2144
- alt: slice.card.image.alt,
2145
- fill: true,
2146
- style: {
2147
- objectFit: slice.card.image.objectFit || 'cover'
2148
- }
2149
- })
2150
- }));
2151
- return React__default.default.createElement(boemly.DefaultSectionContainer, {
2152
- title: slice.title
2153
- }, React__default.default.createElement(boemly.Wrapper, null, React__default.default.createElement(boemly.Grid, {
2154
- templateColumns: ['repeat(4, auto)', null, null, null, 'repeat(6, auto)'],
2155
- templateRows: ['repeat(2, auto)', null, null, null, 'repeat(1, auto)'],
2156
- rowGap: "12",
2157
- columnGap: ['0', null, null, null, '28']
2158
- }, slice.cardPosition === 'left' && card, React__default.default.createElement(boemly.GridItem, {
2159
- colSpan: 4,
2160
- rowSpan: 1,
2161
- position: "relative"
2162
- }, React__default.default.createElement(boemly.DefaultSectionHeader, {
2163
- tagline: slice.tagline,
2164
- title: slice.title,
2165
- text: slice.text
2166
- }), slice.listItems && React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(boemly.Spacer, {
2167
- height: "10"
2168
- }), React__default.default.createElement(boemly.BoemlyList, {
2169
- listItems: slice.listItems
2170
- }), React__default.default.createElement(boemly.Spacer, {
2171
- height: "10"
2172
- })), slice.button && React__default.default.createElement(StrapiLinkButton, {
2173
- link: slice.button,
2174
- size: "md",
2175
- colorScheme: "white",
2176
- variant: "outline",
2177
- rightIcon: React__default.default.createElement(react.ArrowRight, null)
2178
- })), slice.cardPosition === 'right' && card)));
2179
- };
2180
-
2181
- var MEDIUM_TRANSITION_DURATION = 0.2;
2182
-
2183
- var LinkCardsGrid = function LinkCardsGrid(_ref) {
2184
- var slice = _ref.slice;
2185
- return React__default.default.createElement(boemly.DefaultSectionContainer, {
2186
- title: slice.title
2187
- }, React__default.default.createElement(boemly.Wrapper, null, React__default.default.createElement(boemly.DefaultSectionHeader, {
2188
- tagline: slice.tagline,
2189
- title: slice.title,
2190
- text: slice.text
2191
- }), React__default.default.createElement(boemly.SimpleGrid, {
2192
- mt: "16",
2193
- columns: [1, null, null, null, 2],
2194
- gap: "4"
2195
- }, slice.cards.map(function (_ref2) {
2196
- var id = _ref2.id,
2197
- title = _ref2.title,
2198
- text = _ref2.text,
2199
- link = _ref2.link;
2200
- return React__default.default.createElement(boemly.Box, {
2201
- key: id,
2202
- as: Link__default.default,
2203
- href: strapiLinkUrl(link),
2204
- "data-testid": "link",
2205
- px: "10",
2206
- py: "8",
2207
- borderStyle: "solid",
2208
- borderWidth: "thin",
2209
- borderColor: "gray.200",
2210
- borderRadius: "2xl",
2211
- display: "flex",
2212
- flexDir: "row",
2213
- alignItems: "center",
2214
- justifyContent: "space-between",
2215
- cursor: "pointer",
2216
- transitionDuration: MEDIUM_TRANSITION_DURATION + "s",
2217
- _hover: {
2218
- backgroundColor: 'gray.50'
2219
- }
2220
- }, React__default.default.createElement("div", null, React__default.default.createElement(boemly.Heading, {
2221
- as: "h4",
2222
- size: "lg"
2223
- }, title), text && React__default.default.createElement(boemly.Text, {
2224
- mt: "2",
2225
- size: "smRegularNormal"
2226
- }, text)), React__default.default.createElement(boemly.Box, {
2227
- display: "flex",
2228
- alignItems: "center",
2229
- justifyContent: "center",
2230
- borderStyle: "solid",
2231
- borderWidth: "thin",
2232
- borderColor: "gray.200",
2233
- borderRadius: "2xl",
2234
- height: "12",
2235
- width: "12",
2236
- minWidth: "12",
2237
- minHeight: "12",
2238
- ml: "6",
2239
- backgroundColor: "white"
2240
- }, React__default.default.createElement(react.CaretRight, null)));
2241
- }))));
2242
- };
2130
+ var CreditsAvailableState;
2131
+ (function (CreditsAvailableState) {
2132
+ CreditsAvailableState["YES"] = "yes";
2133
+ CreditsAvailableState["SOME"] = "some";
2134
+ CreditsAvailableState["NO"] = "no";
2135
+ CreditsAvailableState["NOT_YET"] = "notYet";
2136
+ })(CreditsAvailableState || (CreditsAvailableState = {}));
2137
+ var CreditsAvailableState$1 = CreditsAvailableState;
2243
2138
 
2244
- var colors = {
2245
- dark: {
2246
- tagline: 'white',
2247
- title: 'white',
2248
- text: 'white',
2249
- background: 'gray.900'
2250
- },
2251
- light: {
2252
- tagline: 'primary.500',
2253
- title: 'black',
2254
- text: 'gray.500',
2255
- background: 'primary.50'
2256
- }
2139
+ var FORMAT_AS_HECTARE_CONFIG = {
2140
+ unit: 'hectare',
2141
+ unitDisplay: 'short',
2142
+ style: 'unit',
2143
+ maximumFractionDigits: 2
2257
2144
  };
2258
- var SmallHero = function SmallHero(_ref) {
2259
- var slice = _ref.slice,
2260
- theme = _ref.theme;
2261
- return React__default.default.createElement(boemly.Box, {
2262
- position: "relative",
2263
- width: "full",
2264
- height: "xl",
2265
- backgroundColor: colors[theme].background
2266
- }, slice.image && React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(Image__default.default, {
2267
- src: strapiMediaUrl(slice.image.img, 'xLarge'),
2268
- alt: slice.image.alt,
2269
- fill: true,
2270
- style: {
2271
- objectFit: slice.image.objectFit || 'cover'
2272
- }
2273
- }), slice.gradient && React__default.default.createElement(boemly.Gradient, null)), React__default.default.createElement(boemly.Box, {
2274
- position: "absolute",
2275
- left: "0",
2276
- top: "60%",
2277
- width: "full",
2278
- textAlign: "center",
2279
- transform: "translateY(-50%)"
2280
- }, React__default.default.createElement(boemly.Wrapper, null, React__default.default.createElement(React__default.default.Fragment, null, slice.tags && React__default.default.createElement(boemly.Flex, {
2281
- direction: "row",
2282
- justify: "center",
2283
- gap: "2",
2284
- mb: "4",
2285
- wrap: "wrap"
2286
- }, slice.tags.map(function (_ref2) {
2287
- var id = _ref2.id,
2288
- text = _ref2.text,
2289
- colorScheme = _ref2.colorScheme;
2290
- return React__default.default.createElement(boemly.Tag, {
2291
- key: id,
2292
- colorScheme: colorScheme,
2293
- size: "md",
2294
- variant: "subtle"
2295
- }, text);
2296
- })), React__default.default.createElement(boemly.DefaultSectionHeader, {
2297
- isHero: true,
2298
- tagline: slice.tagline,
2299
- title: slice.title,
2300
- text: slice.subTitle,
2301
- taglineProps: {
2302
- color: colors[theme].tagline,
2303
- textAlign: 'center',
2304
- mx: 'auto'
2305
- },
2306
- titleProps: {
2307
- color: colors[theme].title,
2308
- maxW: '4xl',
2309
- textAlign: 'center',
2310
- mx: 'auto'
2311
- },
2312
- textProps: {
2313
- maxW: '2xl',
2314
- textAlign: 'center',
2315
- mx: 'auto',
2316
- color: colors[theme].text
2317
- }
2318
- }), slice.button && React__default.default.createElement(StrapiLinkButton, {
2319
- link: slice.button,
2320
- mt: "6",
2321
- size: "lg"
2322
- })))));
2145
+ var FORMAT_AS_PERCENT_CONFIG = {
2146
+ style: 'percent',
2147
+ maximumFractionDigits: 2
2323
2148
  };
2324
2149
 
2325
- var _templateObject$4, _templateObject2$1;
2326
- 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"])));
2327
- 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);
2328
-
2329
2150
  var messagesDe$b = {
2330
2151
  'sections.comparison.backgroundShapes': 'Hintergrundformen'
2331
2152
  };
@@ -2521,8 +2342,8 @@ var messagesEn = {
2521
2342
 
2522
2343
  var rootMessagesEn = /*#__PURE__*/_extends({}, messagesEn$4, messagesEn$3, messagesEn, messagesEn$2, messagesEn$1, messagesEn$b, messagesEn$a, messagesEn$9, messagesEn$8, messagesEn$7, messagesEn$6, messagesEn$5, unitMessagesEn);
2523
2344
 
2524
- var _templateObject$3;
2525
- 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);
2345
+ var _templateObject$4;
2346
+ var GLOBAL_STYLE = /*#__PURE__*/react$1.css(_templateObject$4 || (_templateObject$4 = /*#__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);
2526
2347
 
2527
2348
  var FONT_CUSTOMIZATIONS = {
2528
2349
  body: 'Inter',
@@ -2556,6 +2377,249 @@ var ContextProvider = function ContextProvider(_ref) {
2556
2377
  }, children));
2557
2378
  };
2558
2379
 
2380
+ var PortfolioProjectCard = function PortfolioProjectCard(_ref) {
2381
+ var _creditsAvailableMess, _project$creditsAvail, _project$thumbnail, _project$thumbnail2, _project$thumbnail3;
2382
+ var project = _ref.project;
2383
+ var _useContext = React.useContext(IntlContext),
2384
+ formatMessage = _useContext.formatMessage,
2385
+ formatNumber = _useContext.formatNumber;
2386
+ var creditsAvailableMessages = (_creditsAvailableMess = {}, _creditsAvailableMess[CreditsAvailableState$1.YES] = formatMessage({
2387
+ id: 'components.portfolioProjectCard.text.yes'
2388
+ }), _creditsAvailableMess[CreditsAvailableState$1.SOME] = formatMessage({
2389
+ id: 'components.portfolioProjectCard.text.some'
2390
+ }), _creditsAvailableMess[CreditsAvailableState$1.NO] = formatMessage({
2391
+ id: 'components.portfolioProjectCard.text.no'
2392
+ }), _creditsAvailableMess[CreditsAvailableState$1.NOT_YET] = formatMessage({
2393
+ id: 'components.portfolioProjectCard.text.notYet'
2394
+ }), _creditsAvailableMess);
2395
+ return React__default.default.createElement(boemly.ProjectCard, {
2396
+ title: project.title,
2397
+ facts: [{
2398
+ id: 1,
2399
+ text: formatNumber((project.area || 0) / 10000, FORMAT_AS_HECTARE_CONFIG)
2400
+ }, {
2401
+ id: 2,
2402
+ text: project.location || ''
2403
+ }],
2404
+ footerTitle: creditsAvailableMessages[(_project$creditsAvail = project.creditsAvailable) != null ? _project$creditsAvail : CreditsAvailableState$1.NOT_YET],
2405
+ footerSubTitle: project.footerSubTitle || '',
2406
+ image: project.thumbnail && React__default.default.createElement(Image__default.default, {
2407
+ src: strapiMediaUrl((_project$thumbnail = project.thumbnail) == null ? void 0 : _project$thumbnail.img, 'medium'),
2408
+ alt: (_project$thumbnail2 = project.thumbnail) == null ? void 0 : _project$thumbnail2.alt,
2409
+ fill: true,
2410
+ style: {
2411
+ objectFit: ((_project$thumbnail3 = project.thumbnail) == null ? void 0 : _project$thumbnail3.objectFit) || 'cover'
2412
+ }
2413
+ })
2414
+ });
2415
+ };
2416
+
2417
+ var TextWithCard = function TextWithCard(_ref) {
2418
+ var slice = _ref.slice,
2419
+ projects = _ref.projects;
2420
+ var portfolioProject = projects.find(function (p) {
2421
+ var _slice$project, _slice$project2;
2422
+ return ((_slice$project = slice.project) == null ? void 0 : _slice$project.data.attributes.fpmProjectId) && p.id === ((_slice$project2 = slice.project) == null ? void 0 : _slice$project2.data.attributes.fpmProjectId);
2423
+ });
2424
+ var card = React__default.default.createElement(boemly.GridItem, {
2425
+ colSpan: [4, null, null, null, 2],
2426
+ rowSpan: 1,
2427
+ position: "relative",
2428
+ "data-testid": "card-position-" + slice.cardPosition
2429
+ }, portfolioProject && React__default.default.createElement(PortfolioProjectCard, {
2430
+ project: portfolioProject
2431
+ }), !portfolioProject && slice.card && React__default.default.createElement(boemly.ProjectCard, {
2432
+ facts: slice.card.facts,
2433
+ footerSubTitle: slice.card.footerSubTitle,
2434
+ footerTitle: slice.card.footerTitle,
2435
+ title: slice.card.title,
2436
+ image: React__default.default.createElement(Image__default.default, {
2437
+ src: strapiMediaUrl(slice.card.image.img, 'medium'),
2438
+ alt: slice.card.image.alt,
2439
+ fill: true,
2440
+ style: {
2441
+ objectFit: slice.card.image.objectFit || 'cover'
2442
+ }
2443
+ })
2444
+ }));
2445
+ return React__default.default.createElement(boemly.DefaultSectionContainer, {
2446
+ title: slice.title
2447
+ }, React__default.default.createElement(boemly.Wrapper, null, React__default.default.createElement(boemly.Grid, {
2448
+ templateColumns: ['repeat(4, auto)', null, null, null, 'repeat(6, auto)'],
2449
+ templateRows: ['repeat(2, auto)', null, null, null, 'repeat(1, auto)'],
2450
+ rowGap: "12",
2451
+ columnGap: ['0', null, null, null, '28']
2452
+ }, slice.cardPosition === 'left' && card, React__default.default.createElement(boemly.GridItem, {
2453
+ colSpan: 4,
2454
+ rowSpan: 1,
2455
+ position: "relative"
2456
+ }, React__default.default.createElement(boemly.DefaultSectionHeader, {
2457
+ tagline: slice.tagline,
2458
+ title: slice.title,
2459
+ text: slice.text
2460
+ }), slice.listItems && React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(boemly.Spacer, {
2461
+ height: "10"
2462
+ }), React__default.default.createElement(boemly.BoemlyList, {
2463
+ listItems: slice.listItems
2464
+ }), React__default.default.createElement(boemly.Spacer, {
2465
+ height: "10"
2466
+ })), slice.button && React__default.default.createElement(StrapiLinkButton, {
2467
+ link: slice.button,
2468
+ size: "md",
2469
+ colorScheme: "white",
2470
+ variant: "outline",
2471
+ rightIcon: React__default.default.createElement(react.ArrowRight, null)
2472
+ })), slice.cardPosition === 'right' && card)));
2473
+ };
2474
+
2475
+ var MEDIUM_TRANSITION_DURATION = 0.2;
2476
+
2477
+ var LinkCardsGrid = function LinkCardsGrid(_ref) {
2478
+ var slice = _ref.slice;
2479
+ return React__default.default.createElement(boemly.DefaultSectionContainer, {
2480
+ title: slice.title
2481
+ }, React__default.default.createElement(boemly.Wrapper, null, React__default.default.createElement(boemly.DefaultSectionHeader, {
2482
+ tagline: slice.tagline,
2483
+ title: slice.title,
2484
+ text: slice.text
2485
+ }), React__default.default.createElement(boemly.SimpleGrid, {
2486
+ mt: "16",
2487
+ columns: [1, null, null, null, 2],
2488
+ gap: "4"
2489
+ }, slice.cards.map(function (_ref2) {
2490
+ var id = _ref2.id,
2491
+ title = _ref2.title,
2492
+ text = _ref2.text,
2493
+ link = _ref2.link;
2494
+ return React__default.default.createElement(boemly.Box, {
2495
+ key: id,
2496
+ as: Link__default.default,
2497
+ href: strapiLinkUrl(link),
2498
+ "data-testid": "link",
2499
+ px: "10",
2500
+ py: "8",
2501
+ borderStyle: "solid",
2502
+ borderWidth: "thin",
2503
+ borderColor: "gray.200",
2504
+ borderRadius: "2xl",
2505
+ display: "flex",
2506
+ flexDir: "row",
2507
+ alignItems: "center",
2508
+ justifyContent: "space-between",
2509
+ cursor: "pointer",
2510
+ transitionDuration: MEDIUM_TRANSITION_DURATION + "s",
2511
+ _hover: {
2512
+ backgroundColor: 'gray.50'
2513
+ }
2514
+ }, React__default.default.createElement("div", null, React__default.default.createElement(boemly.Heading, {
2515
+ as: "h4",
2516
+ size: "lg"
2517
+ }, title), text && React__default.default.createElement(boemly.Text, {
2518
+ mt: "2",
2519
+ size: "smRegularNormal"
2520
+ }, text)), React__default.default.createElement(boemly.Box, {
2521
+ display: "flex",
2522
+ alignItems: "center",
2523
+ justifyContent: "center",
2524
+ borderStyle: "solid",
2525
+ borderWidth: "thin",
2526
+ borderColor: "gray.200",
2527
+ borderRadius: "2xl",
2528
+ height: "12",
2529
+ width: "12",
2530
+ minWidth: "12",
2531
+ minHeight: "12",
2532
+ ml: "6",
2533
+ backgroundColor: "white"
2534
+ }, React__default.default.createElement(react.CaretRight, null)));
2535
+ }))));
2536
+ };
2537
+
2538
+ var colors = {
2539
+ dark: {
2540
+ tagline: 'white',
2541
+ title: 'white',
2542
+ text: 'white',
2543
+ background: 'gray.900'
2544
+ },
2545
+ light: {
2546
+ tagline: 'primary.500',
2547
+ title: 'black',
2548
+ text: 'gray.500',
2549
+ background: 'primary.50'
2550
+ }
2551
+ };
2552
+ var SmallHero = function SmallHero(_ref) {
2553
+ var slice = _ref.slice,
2554
+ theme = _ref.theme;
2555
+ return React__default.default.createElement(boemly.Box, {
2556
+ position: "relative",
2557
+ width: "full",
2558
+ height: "xl",
2559
+ backgroundColor: colors[theme].background
2560
+ }, slice.image && React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(Image__default.default, {
2561
+ src: strapiMediaUrl(slice.image.img, 'xLarge'),
2562
+ alt: slice.image.alt,
2563
+ fill: true,
2564
+ style: {
2565
+ objectFit: slice.image.objectFit || 'cover'
2566
+ }
2567
+ }), slice.gradient && React__default.default.createElement(boemly.Gradient, null)), React__default.default.createElement(boemly.Box, {
2568
+ position: "absolute",
2569
+ left: "0",
2570
+ top: "60%",
2571
+ width: "full",
2572
+ textAlign: "center",
2573
+ transform: "translateY(-50%)"
2574
+ }, React__default.default.createElement(boemly.Wrapper, null, React__default.default.createElement(React__default.default.Fragment, null, slice.tags && React__default.default.createElement(boemly.Flex, {
2575
+ direction: "row",
2576
+ justify: "center",
2577
+ gap: "2",
2578
+ mb: "4",
2579
+ wrap: "wrap"
2580
+ }, slice.tags.map(function (_ref2) {
2581
+ var id = _ref2.id,
2582
+ text = _ref2.text,
2583
+ colorScheme = _ref2.colorScheme;
2584
+ return React__default.default.createElement(boemly.Tag, {
2585
+ key: id,
2586
+ colorScheme: colorScheme,
2587
+ size: "md",
2588
+ variant: "subtle"
2589
+ }, text);
2590
+ })), React__default.default.createElement(boemly.DefaultSectionHeader, {
2591
+ isHero: true,
2592
+ tagline: slice.tagline,
2593
+ title: slice.title,
2594
+ text: slice.subTitle,
2595
+ taglineProps: {
2596
+ color: colors[theme].tagline,
2597
+ textAlign: 'center',
2598
+ mx: 'auto'
2599
+ },
2600
+ titleProps: {
2601
+ color: colors[theme].title,
2602
+ maxW: '4xl',
2603
+ textAlign: 'center',
2604
+ mx: 'auto'
2605
+ },
2606
+ textProps: {
2607
+ maxW: '2xl',
2608
+ textAlign: 'center',
2609
+ mx: 'auto',
2610
+ color: colors[theme].text
2611
+ }
2612
+ }), slice.button && React__default.default.createElement(StrapiLinkButton, {
2613
+ link: slice.button,
2614
+ mt: "6",
2615
+ size: "lg"
2616
+ })))));
2617
+ };
2618
+
2619
+ var _templateObject$3, _templateObject2$1;
2620
+ var BlogItemContainer = /*#__PURE__*/styled__default.default(boemly.Link)(_templateObject$3 || (_templateObject$3 = /*#__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"])));
2621
+ 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);
2622
+
2559
2623
  var Blog = function Blog(_ref) {
2560
2624
  var slice = _ref.slice,
2561
2625
  blogPosts = _ref.blogPosts;
@@ -2618,63 +2682,6 @@ var Blog = function Blog(_ref) {
2618
2682
  }))));
2619
2683
  };
2620
2684
 
2621
- var CreditsAvailableState;
2622
- (function (CreditsAvailableState) {
2623
- CreditsAvailableState["YES"] = "yes";
2624
- CreditsAvailableState["SOME"] = "some";
2625
- CreditsAvailableState["NO"] = "no";
2626
- CreditsAvailableState["NOT_YET"] = "notYet";
2627
- })(CreditsAvailableState || (CreditsAvailableState = {}));
2628
- var CreditsAvailableState$1 = CreditsAvailableState;
2629
-
2630
- var FORMAT_AS_HECTARE_CONFIG = {
2631
- unit: 'hectare',
2632
- unitDisplay: 'short',
2633
- style: 'unit',
2634
- maximumFractionDigits: 2
2635
- };
2636
- var FORMAT_AS_PERCENT_CONFIG = {
2637
- style: 'percent',
2638
- maximumFractionDigits: 2
2639
- };
2640
-
2641
- var PortfolioProjectCard = function PortfolioProjectCard(_ref) {
2642
- var _creditsAvailableMess, _project$creditsAvail, _project$thumbnail, _project$thumbnail2, _project$thumbnail3;
2643
- var project = _ref.project;
2644
- var _useContext = React.useContext(IntlContext),
2645
- formatMessage = _useContext.formatMessage,
2646
- formatNumber = _useContext.formatNumber;
2647
- var creditsAvailableMessages = (_creditsAvailableMess = {}, _creditsAvailableMess[CreditsAvailableState$1.YES] = formatMessage({
2648
- id: 'components.portfolioProjectCard.text.yes'
2649
- }), _creditsAvailableMess[CreditsAvailableState$1.SOME] = formatMessage({
2650
- id: 'components.portfolioProjectCard.text.some'
2651
- }), _creditsAvailableMess[CreditsAvailableState$1.NO] = formatMessage({
2652
- id: 'components.portfolioProjectCard.text.no'
2653
- }), _creditsAvailableMess[CreditsAvailableState$1.NOT_YET] = formatMessage({
2654
- id: 'components.portfolioProjectCard.text.notYet'
2655
- }), _creditsAvailableMess);
2656
- return React__default.default.createElement(boemly.ProjectCard, {
2657
- title: project.title,
2658
- facts: [{
2659
- id: 1,
2660
- text: formatNumber((project.area || 0) / 10000, FORMAT_AS_HECTARE_CONFIG)
2661
- }, {
2662
- id: 2,
2663
- text: project.location || ''
2664
- }],
2665
- footerTitle: creditsAvailableMessages[(_project$creditsAvail = project.creditsAvailable) != null ? _project$creditsAvail : CreditsAvailableState$1.NOT_YET],
2666
- footerSubTitle: project.footerSubTitle || '',
2667
- image: project.thumbnail && React__default.default.createElement(Image__default.default, {
2668
- src: strapiMediaUrl((_project$thumbnail = project.thumbnail) == null ? void 0 : _project$thumbnail.img, 'medium'),
2669
- alt: (_project$thumbnail2 = project.thumbnail) == null ? void 0 : _project$thumbnail2.alt,
2670
- fill: true,
2671
- style: {
2672
- objectFit: ((_project$thumbnail3 = project.thumbnail) == null ? void 0 : _project$thumbnail3.objectFit) || 'cover'
2673
- }
2674
- })
2675
- });
2676
- };
2677
-
2678
2685
  var ConditionalWrapper = function ConditionalWrapper(_ref) {
2679
2686
  var condition = _ref.condition,
2680
2687
  wrapper = _ref.wrapper,
@@ -4724,7 +4731,8 @@ var SliceRenderer = function SliceRenderer(_ref) {
4724
4731
  case 'sections.text-with-card':
4725
4732
  return React__default.default.createElement(TextWithCard, {
4726
4733
  key: slice.__component + "-" + slice.id,
4727
- slice: slice
4734
+ slice: slice,
4735
+ projects: projects
4728
4736
  });
4729
4737
  case 'sections.logo-grid-with-text':
4730
4738
  return React__default.default.createElement(LogoGridWithText, {