@treely/strapi-slices 3.0.0 → 3.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,18 @@
1
- import IStrapi from './IStrapi';
2
1
  import IStrapiData from './IStrapiData';
2
+ import StrapiImage from './StrapiImage';
3
3
  import StrapiProject from './StrapiProject';
4
4
  interface StrapiProjectCard {
5
5
  id: number;
6
- project: IStrapi<IStrapiData<StrapiProject>>;
6
+ title: string;
7
+ facts: {
8
+ id: number;
9
+ text: string;
10
+ }[];
11
+ footerTitle: string;
12
+ footerSubTitle: string;
13
+ image: StrapiImage;
14
+ project?: {
15
+ data?: IStrapiData<StrapiProject>;
16
+ };
7
17
  }
8
18
  export default StrapiProjectCard;
@@ -1,6 +1,10 @@
1
1
  import React from 'react';
2
2
  import PortfolioProject from '../../models/PortfolioProject';
3
+ import { IStrapi, IStrapiData, StrapiProject } from '../..';
3
4
  export interface ProjectsGridProps {
5
+ slice: {
6
+ projects: IStrapi<IStrapiData<StrapiProject>[]>;
7
+ };
4
8
  projects: PortfolioProject[];
5
9
  }
6
10
  export declare const ProjectsGrid: React.FC<ProjectsGridProps>;
@@ -1,7 +1,6 @@
1
1
  import React from 'react';
2
2
  import StrapiLink from '../../models/strapi/StrapiLink';
3
3
  import StrapiProjectCard from '../../models/strapi/StrapiProjectCard';
4
- import PortfolioProject from '../../models/PortfolioProject';
5
4
  interface TextWithCardSlice {
6
5
  tagline?: string;
7
6
  title: string;
@@ -16,7 +15,6 @@ interface TextWithCardSlice {
16
15
  }
17
16
  export interface TextWithCardProps {
18
17
  slice: TextWithCardSlice;
19
- projects: PortfolioProject[];
20
18
  }
21
19
  export declare const TextWithCard: React.FC<TextWithCardProps>;
22
20
  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-map', 'sections.project-facts'];
492
+ var SECTIONS_WITH_PROJECTS = ['sections.projects-grid', 'sections.projects-map', 'sections.project-facts'];
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,25 +2127,204 @@ var TextWithTextCards = function TextWithTextCards(_ref) {
2127
2127
  }))));
2128
2128
  };
2129
2129
 
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;
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
+ };
2138
2180
 
2139
- var FORMAT_AS_HECTARE_CONFIG = {
2140
- unit: 'hectare',
2141
- unitDisplay: 'short',
2142
- style: 'unit',
2143
- maximumFractionDigits: 2
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
+ }))));
2144
2242
  };
2145
- var FORMAT_AS_PERCENT_CONFIG = {
2146
- style: 'percent',
2147
- maximumFractionDigits: 2
2243
+
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
+ }
2148
2257
  };
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
+ })))));
2323
+ };
2324
+
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);
2149
2328
 
2150
2329
  var messagesDe$b = {
2151
2330
  'sections.comparison.backgroundShapes': 'Hintergrundformen'
@@ -2342,8 +2521,8 @@ var messagesEn = {
2342
2521
 
2343
2522
  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);
2344
2523
 
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);
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);
2347
2526
 
2348
2527
  var FONT_CUSTOMIZATIONS = {
2349
2528
  body: 'Inter',
@@ -2377,236 +2556,6 @@ var ContextProvider = function ContextProvider(_ref) {
2377
2556
  }, children));
2378
2557
  };
2379
2558
 
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 fpmData = projects.find(function (project) {
2421
- var _slice$card;
2422
- return project.slug === ((_slice$card = slice.card) == null || (_slice$card = _slice$card.project) == null ? void 0 : _slice$card.data.attributes.slug);
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
- }, slice.card && fpmData && React__default.default.createElement(PortfolioProjectCard, {
2430
- project: _extends({}, slice.card, fpmData)
2431
- }));
2432
- return React__default.default.createElement(boemly.DefaultSectionContainer, {
2433
- title: slice.title
2434
- }, React__default.default.createElement(boemly.Wrapper, null, React__default.default.createElement(boemly.Grid, {
2435
- templateColumns: ['repeat(4, auto)', null, null, null, 'repeat(6, auto)'],
2436
- templateRows: ['repeat(2, auto)', null, null, null, 'repeat(1, auto)'],
2437
- rowGap: "12",
2438
- columnGap: ['0', null, null, null, '28']
2439
- }, slice.cardPosition === 'left' && card, React__default.default.createElement(boemly.GridItem, {
2440
- colSpan: 4,
2441
- rowSpan: 1,
2442
- position: "relative"
2443
- }, React__default.default.createElement(boemly.DefaultSectionHeader, {
2444
- tagline: slice.tagline,
2445
- title: slice.title,
2446
- text: slice.text
2447
- }), slice.listItems && React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(boemly.Spacer, {
2448
- height: "10"
2449
- }), React__default.default.createElement(boemly.BoemlyList, {
2450
- listItems: slice.listItems
2451
- }), React__default.default.createElement(boemly.Spacer, {
2452
- height: "10"
2453
- })), slice.button && React__default.default.createElement(StrapiLinkButton, {
2454
- link: slice.button,
2455
- size: "md",
2456
- colorScheme: "white",
2457
- variant: "outline",
2458
- rightIcon: React__default.default.createElement(react.ArrowRight, null)
2459
- })), slice.cardPosition === 'right' && card)));
2460
- };
2461
-
2462
- var MEDIUM_TRANSITION_DURATION = 0.2;
2463
-
2464
- var LinkCardsGrid = function LinkCardsGrid(_ref) {
2465
- var slice = _ref.slice;
2466
- return React__default.default.createElement(boemly.DefaultSectionContainer, {
2467
- title: slice.title
2468
- }, React__default.default.createElement(boemly.Wrapper, null, React__default.default.createElement(boemly.DefaultSectionHeader, {
2469
- tagline: slice.tagline,
2470
- title: slice.title,
2471
- text: slice.text
2472
- }), React__default.default.createElement(boemly.SimpleGrid, {
2473
- mt: "16",
2474
- columns: [1, null, null, null, 2],
2475
- gap: "4"
2476
- }, slice.cards.map(function (_ref2) {
2477
- var id = _ref2.id,
2478
- title = _ref2.title,
2479
- text = _ref2.text,
2480
- link = _ref2.link;
2481
- return React__default.default.createElement(boemly.Box, {
2482
- key: id,
2483
- as: Link__default.default,
2484
- href: strapiLinkUrl(link),
2485
- "data-testid": "link",
2486
- px: "10",
2487
- py: "8",
2488
- borderStyle: "solid",
2489
- borderWidth: "thin",
2490
- borderColor: "gray.200",
2491
- borderRadius: "2xl",
2492
- display: "flex",
2493
- flexDir: "row",
2494
- alignItems: "center",
2495
- justifyContent: "space-between",
2496
- cursor: "pointer",
2497
- transitionDuration: MEDIUM_TRANSITION_DURATION + "s",
2498
- _hover: {
2499
- backgroundColor: 'gray.50'
2500
- }
2501
- }, React__default.default.createElement("div", null, React__default.default.createElement(boemly.Heading, {
2502
- as: "h4",
2503
- size: "lg"
2504
- }, title), text && React__default.default.createElement(boemly.Text, {
2505
- mt: "2",
2506
- size: "smRegularNormal"
2507
- }, text)), React__default.default.createElement(boemly.Box, {
2508
- display: "flex",
2509
- alignItems: "center",
2510
- justifyContent: "center",
2511
- borderStyle: "solid",
2512
- borderWidth: "thin",
2513
- borderColor: "gray.200",
2514
- borderRadius: "2xl",
2515
- height: "12",
2516
- width: "12",
2517
- minWidth: "12",
2518
- minHeight: "12",
2519
- ml: "6",
2520
- backgroundColor: "white"
2521
- }, React__default.default.createElement(react.CaretRight, null)));
2522
- }))));
2523
- };
2524
-
2525
- var colors = {
2526
- dark: {
2527
- tagline: 'white',
2528
- title: 'white',
2529
- text: 'white',
2530
- background: 'gray.900'
2531
- },
2532
- light: {
2533
- tagline: 'primary.500',
2534
- title: 'black',
2535
- text: 'gray.500',
2536
- background: 'primary.50'
2537
- }
2538
- };
2539
- var SmallHero = function SmallHero(_ref) {
2540
- var slice = _ref.slice,
2541
- theme = _ref.theme;
2542
- return React__default.default.createElement(boemly.Box, {
2543
- position: "relative",
2544
- width: "full",
2545
- height: "xl",
2546
- backgroundColor: colors[theme].background
2547
- }, slice.image && React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(Image__default.default, {
2548
- src: strapiMediaUrl(slice.image.img, 'xLarge'),
2549
- alt: slice.image.alt,
2550
- fill: true,
2551
- style: {
2552
- objectFit: slice.image.objectFit || 'cover'
2553
- }
2554
- }), slice.gradient && React__default.default.createElement(boemly.Gradient, null)), React__default.default.createElement(boemly.Box, {
2555
- position: "absolute",
2556
- left: "0",
2557
- top: "60%",
2558
- width: "full",
2559
- textAlign: "center",
2560
- transform: "translateY(-50%)"
2561
- }, React__default.default.createElement(boemly.Wrapper, null, React__default.default.createElement(React__default.default.Fragment, null, slice.tags && React__default.default.createElement(boemly.Flex, {
2562
- direction: "row",
2563
- justify: "center",
2564
- gap: "2",
2565
- mb: "4",
2566
- wrap: "wrap"
2567
- }, slice.tags.map(function (_ref2) {
2568
- var id = _ref2.id,
2569
- text = _ref2.text,
2570
- colorScheme = _ref2.colorScheme;
2571
- return React__default.default.createElement(boemly.Tag, {
2572
- key: id,
2573
- colorScheme: colorScheme,
2574
- size: "md",
2575
- variant: "subtle"
2576
- }, text);
2577
- })), React__default.default.createElement(boemly.DefaultSectionHeader, {
2578
- isHero: true,
2579
- tagline: slice.tagline,
2580
- title: slice.title,
2581
- text: slice.subTitle,
2582
- taglineProps: {
2583
- color: colors[theme].tagline,
2584
- textAlign: 'center',
2585
- mx: 'auto'
2586
- },
2587
- titleProps: {
2588
- color: colors[theme].title,
2589
- maxW: '4xl',
2590
- textAlign: 'center',
2591
- mx: 'auto'
2592
- },
2593
- textProps: {
2594
- maxW: '2xl',
2595
- textAlign: 'center',
2596
- mx: 'auto',
2597
- color: colors[theme].text
2598
- }
2599
- }), slice.button && React__default.default.createElement(StrapiLinkButton, {
2600
- link: slice.button,
2601
- mt: "6",
2602
- size: "lg"
2603
- })))));
2604
- };
2605
-
2606
- var _templateObject$3, _templateObject2$1;
2607
- 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"])));
2608
- 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);
2609
-
2610
2559
  var Blog = function Blog(_ref) {
2611
2560
  var slice = _ref.slice,
2612
2561
  blogPosts = _ref.blogPosts;
@@ -2669,6 +2618,63 @@ var Blog = function Blog(_ref) {
2669
2618
  }))));
2670
2619
  };
2671
2620
 
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
+
2672
2678
  var ConditionalWrapper = function ConditionalWrapper(_ref) {
2673
2679
  var condition = _ref.condition,
2674
2680
  wrapper = _ref.wrapper,
@@ -2676,9 +2682,12 @@ var ConditionalWrapper = function ConditionalWrapper(_ref) {
2676
2682
  return condition ? wrapper(children) : children;
2677
2683
  };
2678
2684
  var ProjectsGrid = function ProjectsGrid(_ref2) {
2679
- var projects = _ref2.projects;
2680
- var filteredProjects = projects.filter(function (p) {
2681
- return p.thumbnail && p.slug && p.isPublic;
2685
+ var projects = _ref2.projects,
2686
+ slice = _ref2.slice;
2687
+ var filteredProjects = projects.filter(function (fpmProject) {
2688
+ return fpmProject.thumbnail && slice.projects.data.some(function (strapiProject) {
2689
+ return strapiProject.attributes.fpmProjectId === fpmProject.id;
2690
+ });
2682
2691
  });
2683
2692
  return React__default.default.createElement(boemly.DefaultSectionContainer, null, React__default.default.createElement(boemly.Wrapper, null, React__default.default.createElement(boemly.SimpleGrid, {
2684
2693
  columns: [1, null, null, 2, null, 3],
@@ -4715,8 +4724,7 @@ var SliceRenderer = function SliceRenderer(_ref) {
4715
4724
  case 'sections.text-with-card':
4716
4725
  return React__default.default.createElement(TextWithCard, {
4717
4726
  key: slice.__component + "-" + slice.id,
4718
- slice: slice,
4719
- projects: projects
4727
+ slice: slice
4720
4728
  });
4721
4729
  case 'sections.logo-grid-with-text':
4722
4730
  return React__default.default.createElement(LogoGridWithText, {
@@ -4801,6 +4809,7 @@ var SliceRenderer = function SliceRenderer(_ref) {
4801
4809
  case 'sections.projects-grid':
4802
4810
  return React__default.default.createElement(ProjectsGrid, {
4803
4811
  key: slice.__component + "-" + slice.id,
4812
+ slice: slice,
4804
4813
  projects: projects
4805
4814
  });
4806
4815
  case 'sections.projects-map':