@treely/strapi-slices 3.3.0 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/README.md +2 -2
  2. package/dist/constants/slicesConfig.d.ts +5 -0
  3. package/dist/index.d.ts +1 -2
  4. package/dist/rootMessages.de.d.ts +2 -0
  5. package/dist/rootMessages.en.d.ts +2 -0
  6. package/dist/slices/Timeline/Timeline.d.ts +27 -0
  7. package/dist/slices/Timeline/index.d.ts +2 -0
  8. package/dist/slices/Timeline/messages.de.d.ts +5 -0
  9. package/dist/slices/Timeline/messages.en.d.ts +5 -0
  10. package/dist/strapi-slices.cjs.development.js +258 -43
  11. package/dist/strapi-slices.cjs.development.js.map +1 -1
  12. package/dist/strapi-slices.cjs.production.min.js +1 -1
  13. package/dist/strapi-slices.cjs.production.min.js.map +1 -1
  14. package/dist/strapi-slices.esm.js +260 -42
  15. package/dist/strapi-slices.esm.js.map +1 -1
  16. package/package.json +1 -1
  17. package/src/components/SliceRenderer/SliceRenderer.tsx +5 -0
  18. package/src/constants/{sectionsConfig.ts → slicesConfig.ts} +3 -6
  19. package/src/index.tsx +0 -11
  20. package/src/rootMessages.de.ts +2 -0
  21. package/src/rootMessages.en.ts +2 -0
  22. package/src/slices/Timeline/Timeline.stories.tsx +196 -0
  23. package/src/slices/Timeline/Timeline.test.tsx +228 -0
  24. package/src/slices/Timeline/Timeline.tsx +331 -0
  25. package/src/slices/Timeline/index.ts +3 -0
  26. package/src/slices/Timeline/messages.de.ts +5 -0
  27. package/src/slices/Timeline/messages.en.ts +5 -0
  28. package/src/utils/mergeGlobalAndStrapiBlogPostData.ts +6 -4
  29. package/src/utils/mergeGlobalAndStrapiCustomerStoryData.ts +2 -2
  30. package/src/utils/mergeGlobalAndStrapiPageData.ts +7 -7
  31. package/src/utils/mergeGlobalAndStrapiProjectData.ts +5 -5
  32. package/dist/constants/sectionsConfig.d.ts +0 -5
package/README.md CHANGED
@@ -62,7 +62,7 @@ Find the build in the `dist` folder.
62
62
  Install the package:
63
63
 
64
64
  ```bash
65
- npm install @tree-ly/strapi-slices
65
+ npm install @treely/strapi-slices
66
66
  ```
67
67
 
68
68
  Use the slices:
@@ -73,7 +73,7 @@ import {
73
73
  SliceRenderer,
74
74
  StrapiBlogPost,
75
75
  StrapiCustomerStory,
76
- } from '@tree-ly/strapi-slices';
76
+ } from '@treely/strapi-slices';
77
77
 
78
78
  // Get the slices, blog posts, and customer stories from Strapi
79
79
  // Get the projects from the FPM API
@@ -0,0 +1,5 @@
1
+ export declare const EXTENDABLE_HEADER_SECTIONS: string[];
2
+ export declare const DARK_THEME_HEADER_SECTIONS: string[];
3
+ export declare const SLICES_WITH_BLOG_POSTS: string[];
4
+ export declare const SLICES_WITH_CUSTOMER_STORIES: string[];
5
+ export declare const SLICES_WITH_PROJECTS: string[];
package/dist/index.d.ts CHANGED
@@ -49,8 +49,7 @@ import mergeGlobalAndStrapiPageData from './utils/mergeGlobalAndStrapiPageData';
49
49
  import mergeGlobalAndStrapiProjectData from './utils/mergeGlobalAndStrapiProjectData';
50
50
  import strapiLinkUrl from './utils/strapiLinkUrl';
51
51
  import strapiMediaUrl from './utils/strapiMediaUrl';
52
- import { SECTIONS_WITH_BLOG_POSTS, SECTIONS_WITH_CUSTOMER_STORIES, SECTIONS_WITH_PROJECTS } from './constants/sectionsConfig';
53
52
  export * from './components/SEOTags';
54
53
  export * from './components/SliceRenderer';
55
- export { mergeGlobalAndStrapiBlogPostData, mergeGlobalAndStrapiCustomerStoryData, mergeGlobalAndStrapiPageData, mergeGlobalAndStrapiProjectData, strapiLinkUrl, strapiMediaUrl, SECTIONS_WITH_BLOG_POSTS, SECTIONS_WITH_CUSTOMER_STORIES, SECTIONS_WITH_PROJECTS, };
54
+ export { mergeGlobalAndStrapiBlogPostData, mergeGlobalAndStrapiCustomerStoryData, mergeGlobalAndStrapiPageData, mergeGlobalAndStrapiProjectData, strapiLinkUrl, strapiMediaUrl, };
56
55
  export type { IStrapi, IStrapiData, IStrapiResponse, StrapiAuthor, StrapiAvatarWithName, StrapiBanner, StrapiBlogPost, StrapiBlogPostProps, StrapiButtonWithVariant, StrapiCategory, StrapiContactArea, StrapiCustomerStory, StrapiCustomerStoryProps, StrapiDefaultHeader, StrapiGlobal, StrapiGlossaryItem, StrapiHeroCard, StrapiImage, StrapiImageFormat, StrapiImageWithLink, StrapiLink, StrapiLinkList, StrapiLinkPage, StrapiLinkWithIcon, StrapiLocalization, StrapiMedia, StrapiMetadata, StrapiNavMenu, StrapiPage, StrapiPageProps, StrapiPortfolio, StrapiPortfolioCard, StrapiProject, StrapiProjectProps, StrapiProjectCard, StrapiQuoteCard, StrapiShapesCard, StrapiTextCardWithIcons, StrapiTopBanner, HeaderType, Image, Locale, PageMetadata, PageProps, PortfolioProject, };
@@ -1,6 +1,8 @@
1
1
  declare const rootMessagesDe: {
2
2
  'unit.formatter.tonsCo2': string;
3
3
  'unit.formatter.tonsCo2PerYear': string;
4
+ 'sections.timeline.backgroundShapes': string;
5
+ 'sections.timeline.showMoreButton': string;
4
6
  'sections.shopCheckout.intro.price': string;
5
7
  'sections.shopCheckout.contributionValue.label.EUR': string;
6
8
  'sections.shopCheckout.contributionValue.label.CHF': string;
@@ -1,6 +1,8 @@
1
1
  declare const rootMessagesEn: {
2
2
  'unit.formatter.tonsCo2': string;
3
3
  'unit.formatter.tonsCo2PerYear': string;
4
+ 'sections.timeline.backgroundShapes': string;
5
+ 'sections.timeline.showMoreButton': string;
4
6
  'sections.shopCheckout.intro.price': string;
5
7
  'sections.shopCheckout.contributionValue.label.EUR': string;
6
8
  'sections.shopCheckout.contributionValue.label.CHF': string;
@@ -0,0 +1,27 @@
1
+ import React from 'react';
2
+ import StrapiImage from '../../models/strapi/StrapiImage';
3
+ import StrapiLink from '../../models/strapi/StrapiLink';
4
+ export interface TimelineProps {
5
+ slice: {
6
+ title: string;
7
+ text?: string;
8
+ tagline?: string;
9
+ timelineItems: TimelineItem[];
10
+ };
11
+ }
12
+ export interface TimelineItem {
13
+ id: number;
14
+ tagline?: string;
15
+ title: string;
16
+ text?: string;
17
+ badge?: {
18
+ text: string;
19
+ variant: 'orange' | 'green' | 'red' | 'gray';
20
+ };
21
+ logo?: StrapiImage;
22
+ icon?: StrapiImage;
23
+ image?: StrapiImage;
24
+ button?: StrapiLink;
25
+ backgroundShapes?: boolean;
26
+ }
27
+ export declare const Timeline: React.FC<TimelineProps>;
@@ -0,0 +1,2 @@
1
+ import { Timeline } from './Timeline';
2
+ export default Timeline;
@@ -0,0 +1,5 @@
1
+ declare const messagesDe: {
2
+ 'sections.timeline.backgroundShapes': string;
3
+ 'sections.timeline.showMoreButton': string;
4
+ };
5
+ export default messagesDe;
@@ -0,0 +1,5 @@
1
+ declare const messagesEn: {
2
+ 'sections.timeline.backgroundShapes': string;
3
+ 'sections.timeline.showMoreButton': string;
4
+ };
5
+ export default messagesEn;
@@ -414,14 +414,20 @@ var strapiMediaUrl = function strapiMediaUrl(media, preferredSize) {
414
414
  var DEFAULT_SHARE_IMAGE = 'https://cdn.tree.ly/assets/v3/app/share-image-generic.webp';
415
415
  var DEFAULT_SHARE_ALT = 'Share Image';
416
416
 
417
+ var EXTENDABLE_HEADER_SECTIONS = ['sections.hero', 'sections.map-hero', 'sections.full-width-image', 'sections.small-hero', 'sections.small-hero-light'];
418
+ var DARK_THEME_HEADER_SECTIONS = ['sections.hero', 'sections.small-hero'];
419
+ var SLICES_WITH_BLOG_POSTS = ['sections.blog', 'sections.blog-cards'];
420
+ var SLICES_WITH_CUSTOMER_STORIES = ['sections.customer-stories'];
421
+ var SLICES_WITH_PROJECTS = ['sections.projects-grid', 'sections.projects-map', 'sections.project-facts', 'sections.text-with-card'];
422
+
417
423
  var mergeGlobalAndStrapiBlogPostData = function mergeGlobalAndStrapiBlogPostData(context, global, post, blog, projects) {
418
424
  var _post$attributes$meta, _post$attributes$meta2, _post$attributes$meta3, _global$attributes$me, _post$attributes, _post$attributes$meta4, _post$attributes$meta5, _post$attributes$meta6, _post$attributes$meta7, _ref, _post$attributes$meta8, _post$attributes$meta9, _global$attributes$me2;
419
425
  var metaShareImageUrl = (_post$attributes$meta = post.attributes.metadata) != null && _post$attributes$meta.shareImage ? strapiMediaUrl((_post$attributes$meta2 = (_post$attributes$meta3 = post.attributes.metadata) == null ? void 0 : _post$attributes$meta3.shareImage.media) != null ? _post$attributes$meta2 : (_global$attributes$me = global.attributes.metadata.shareImage) == null ? void 0 : _global$attributes$me.media, 'large') : DEFAULT_SHARE_IMAGE;
420
426
  var returnBlog = post.attributes.slices.some(function (slice) {
421
- return SECTIONS_WITH_BLOG_POSTS.includes(slice.__component);
427
+ return SLICES_WITH_BLOG_POSTS.includes(slice.__component);
422
428
  });
423
429
  var returnProjects = post.attributes.slices.some(function (slice) {
424
- return SECTIONS_WITH_PROJECTS.includes(slice.__component);
430
+ return SLICES_WITH_PROJECTS.includes(slice.__component);
425
431
  });
426
432
  return _extends({}, post, {
427
433
  // Portfolio Projects
@@ -460,7 +466,7 @@ var mergeGlobalAndStrapiCustomerStoryData = function mergeGlobalAndStrapiCustome
460
466
  var _customerStory$attrib, _customerStory$attrib2, _customerStory$attrib3, _global$attributes$me, _customerStory$attrib4, _customerStory$attrib5, _customerStory$attrib6, _customerStory$attrib7, _customerStory$attrib8, _ref, _customerStory$attrib9, _customerStory$attrib10, _global$attributes$me2;
461
467
  var metaShareImageUrl = (_customerStory$attrib = customerStory.attributes.metadata) != null && _customerStory$attrib.shareImage ? strapiMediaUrl((_customerStory$attrib2 = (_customerStory$attrib3 = customerStory.attributes.metadata) == null ? void 0 : _customerStory$attrib3.shareImage.media) != null ? _customerStory$attrib2 : (_global$attributes$me = global.attributes.metadata.shareImage) == null ? void 0 : _global$attributes$me.media, 'large') : DEFAULT_SHARE_IMAGE;
462
468
  var returnCustomerStories = customerStory.attributes.slices.some(function (slice) {
463
- return SECTIONS_WITH_CUSTOMER_STORIES.includes(slice.__component);
469
+ return SLICES_WITH_CUSTOMER_STORIES.includes(slice.__component);
464
470
  });
465
471
  return _extends({}, customerStory, {
466
472
  // Portfolio Projects
@@ -494,23 +500,17 @@ var mergeGlobalAndStrapiCustomerStoryData = function mergeGlobalAndStrapiCustome
494
500
  });
495
501
  };
496
502
 
497
- var EXTENDABLE_HEADER_SECTIONS = ['sections.hero', 'sections.map-hero', 'sections.full-width-image', 'sections.small-hero', 'sections.small-hero-light'];
498
- var DARK_THEME_HEADER_SECTIONS = ['sections.hero', 'sections.small-hero'];
499
- var SECTIONS_WITH_BLOG_POSTS = ['sections.blog', 'sections.blog-cards'];
500
- var SECTIONS_WITH_CUSTOMER_STORIES = ['sections.customer-stories'];
501
- var SECTIONS_WITH_PROJECTS = ['sections.projects-grid', 'sections.projects-map', 'sections.project-facts', 'sections.text-with-card'];
502
-
503
503
  var mergeGlobalAndStrapiPageData = function mergeGlobalAndStrapiPageData(context, global, page, blogPosts, customerStories, projects) {
504
504
  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;
505
505
  var metaShareImageUrl = (_page$attributes$meta = page.attributes.metadata) != null && _page$attributes$meta.shareImage ? strapiMediaUrl((_page$attributes$meta2 = (_page$attributes$meta3 = page.attributes.metadata) == null ? void 0 : _page$attributes$meta3.shareImage.media) != null ? _page$attributes$meta2 : (_global$attributes$me = global.attributes.metadata.shareImage) == null ? void 0 : _global$attributes$me.media, 'large') : DEFAULT_SHARE_IMAGE;
506
506
  var returnBlogPosts = page.attributes.slices.some(function (slice) {
507
- return SECTIONS_WITH_BLOG_POSTS.includes(slice.__component);
507
+ return SLICES_WITH_BLOG_POSTS.includes(slice.__component);
508
508
  });
509
509
  var returnCustomerStories = page.attributes.slices.some(function (slice) {
510
- return SECTIONS_WITH_CUSTOMER_STORIES.includes(slice.__component);
510
+ return SLICES_WITH_CUSTOMER_STORIES.includes(slice.__component);
511
511
  });
512
512
  var returnProjects = page.attributes.slices.some(function (slice) {
513
- return SECTIONS_WITH_PROJECTS.includes(slice.__component);
513
+ return SLICES_WITH_PROJECTS.includes(slice.__component);
514
514
  });
515
515
  return _extends({}, page, {
516
516
  // Portfolio Projects
@@ -549,10 +549,10 @@ var mergeGlobalAndStrapiProject = function mergeGlobalAndStrapiProject(context,
549
549
  var _project$attributes$m, _project$attributes$m2, _project$attributes$m3, _global$attributes$me, _project$attributes, _project$attributes$s, _project$attributes$s2, _project$attributes$m4, _project$attributes$m5, _project$attributes$m6, _project$attributes$m7, _ref, _project$attributes$m8, _project$attributes$m9, _global$attributes$me2;
550
550
  var metaShareImageUrl = (_project$attributes$m = project.attributes.metadata) != null && _project$attributes$m.shareImage ? strapiMediaUrl((_project$attributes$m2 = (_project$attributes$m3 = project.attributes.metadata) == null ? void 0 : _project$attributes$m3.shareImage.media) != null ? _project$attributes$m2 : (_global$attributes$me = global.attributes.metadata.shareImage) == null ? void 0 : _global$attributes$me.media, 'large') : DEFAULT_SHARE_IMAGE;
551
551
  var returnBlogPosts = project.attributes.slices.some(function (slice) {
552
- return SECTIONS_WITH_BLOG_POSTS.includes(slice.__component);
552
+ return SLICES_WITH_BLOG_POSTS.includes(slice.__component);
553
553
  });
554
554
  var returnProjects = project.attributes.slices.some(function (slice) {
555
- return SECTIONS_WITH_PROJECTS.includes(slice.__component);
555
+ return SLICES_WITH_PROJECTS.includes(slice.__component);
556
556
  });
557
557
  return _extends({}, project, {
558
558
  // Portfolio Projects
@@ -2171,35 +2171,35 @@ var FORMAT_AS_PERCENT_CONFIG = {
2171
2171
  maximumFractionDigits: 2
2172
2172
  };
2173
2173
 
2174
- var messagesDe$b = {
2174
+ var messagesDe$c = {
2175
2175
  'sections.comparison.backgroundShapes': 'Hintergrundformen'
2176
2176
  };
2177
2177
 
2178
- var messagesDe$a = {
2178
+ var messagesDe$b = {
2179
2179
  'sections.cta.backgroundShapes': 'Dunkle Hintergrundformen',
2180
2180
  'sections.cta.backgroundShapesLight': 'Helle Hintergrundformen'
2181
2181
  };
2182
2182
 
2183
- var messagesDe$9 = {
2183
+ var messagesDe$a = {
2184
2184
  'sections.customerStories.more': 'Weiterlesen'
2185
2185
  };
2186
2186
 
2187
- var messagesDe$8 = {
2187
+ var messagesDe$9 = {
2188
2188
  'sections.glossary.copyButtonLabel': 'Kopiere den Link zu diesem Abschnitt in die Zwischenablage',
2189
2189
  'sections.glossary.copySuccessMessage': 'Link in die Zwischenablage kopiert',
2190
2190
  'sections.glossary.copyFailureMessage': 'Link konnte nicht in die Zwischenablage kopiert werden'
2191
2191
  };
2192
2192
 
2193
- var messagesDe$7 = {
2193
+ var messagesDe$8 = {
2194
2194
  'sections.projectFacts.projectInfo.value': 'Projekt Infos',
2195
2195
  'projects.projectFacts.properties.area': 'Fläche'
2196
2196
  };
2197
2197
 
2198
- var messagesDe$6 = {
2198
+ var messagesDe$7 = {
2199
2199
  'sections.projectsMap.link.text': 'Mehr Infos'
2200
2200
  };
2201
2201
 
2202
- var messagesDe$5 = {
2202
+ var messagesDe$6 = {
2203
2203
  'sections.shopCheckout.intro.price': 'Preis',
2204
2204
  'sections.shopCheckout.contributionValue.label.EUR': 'Geben sie einen Betrag in € ein',
2205
2205
  'sections.shopCheckout.contributionValue.label.CHF': 'Geben sie einen Betrag in CHF ein',
@@ -2214,19 +2214,19 @@ var messagesDe$5 = {
2214
2214
  'sections.shopCheckout.submit': 'Kaufen'
2215
2215
  };
2216
2216
 
2217
- var messagesDe$4 = {
2217
+ var messagesDe$5 = {
2218
2218
  'components.creditsAvailableBadge.text.yes': 'Credits verfügbar',
2219
2219
  'components.creditsAvailableBadge.text.some': 'Einige verbleibende Credits',
2220
2220
  'components.creditsAvailableBadge.text.no': 'Keine verbleibenden Credits',
2221
2221
  'components.creditsAvailableBadge.text.notYet': 'Noch keine Credits verfügbar'
2222
2222
  };
2223
2223
 
2224
- var messagesDe$3 = {
2224
+ var messagesDe$4 = {
2225
2225
  'features.portfolio.documentsDownloadList.projectDocuments': 'Projektdokumente',
2226
2226
  'features.portfolio.documentsDownloadList.downloadDocument': 'Dokument herunterladen'
2227
2227
  };
2228
2228
 
2229
- var messagesDe$2 = {
2229
+ var messagesDe$3 = {
2230
2230
  'features.projectInfo.projectInfo.value': 'Projekt Infos',
2231
2231
  'features.projectInfo.properties.area': 'Projekt Fläche',
2232
2232
  'features.projectInfo.properties.location': 'Standort',
@@ -2241,7 +2241,7 @@ var messagesDe$2 = {
2241
2241
  'features.projectInfo.properties.year': '{years} {years, plural, one {Jahr} other {Jahre} }'
2242
2242
  };
2243
2243
 
2244
- var messagesDe$1 = {
2244
+ var messagesDe$2 = {
2245
2245
  'portfolio.smallCheckout.contributionValueCurrency.label.CHF': 'Geben Sie den Beitrag in Fr. ein',
2246
2246
  'portfolio.smallCheckout.contributionValueCurrency.label.EUR': 'Geben Sie den Beitrag in € ein',
2247
2247
  'portfolio.smallCheckout.contributionValueCurrency.unit.EUR': '€',
@@ -2257,49 +2257,54 @@ var messagesDe$1 = {
2257
2257
  'portfolio.smallCheckout.cta.button': 'Unser Vertriebsteam kontaktieren'
2258
2258
  };
2259
2259
 
2260
- var messagesDe = {
2260
+ var messagesDe$1 = {
2261
2261
  'components.portfolioProjectCard.text.yes': 'Credits verfügbar',
2262
2262
  'components.portfolioProjectCard.text.some': 'Einige verbleibende Credits',
2263
2263
  'components.portfolioProjectCard.text.no': 'Keine verbleibenden Credits',
2264
2264
  'components.portfolioProjectCard.text.notYet': 'Noch keine Credits verfügbar'
2265
2265
  };
2266
2266
 
2267
+ var messagesDe = {
2268
+ 'sections.timeline.backgroundShapes': 'Hintergrundformen',
2269
+ 'sections.timeline.showMoreButton': 'Drei weitere Meilensteine anzeigen'
2270
+ };
2271
+
2267
2272
  var unitMessagesEn = {
2268
2273
  'unit.formatter.tonsCo2': '{number} /tCO₂',
2269
2274
  'unit.formatter.tonsCo2PerYear': '{number} tCO₂/year'
2270
2275
  };
2271
2276
 
2272
- var rootMessagesDe = /*#__PURE__*/_extends({}, messagesDe$4, messagesDe$3, messagesDe, messagesDe$2, messagesDe$1, messagesDe$b, messagesDe$a, messagesDe$9, messagesDe$8, messagesDe$7, messagesDe$6, messagesDe$5, unitMessagesEn);
2277
+ var rootMessagesDe = /*#__PURE__*/_extends({}, messagesDe$5, messagesDe$4, messagesDe$1, messagesDe$3, messagesDe$2, messagesDe$c, messagesDe$b, messagesDe$a, messagesDe$9, messagesDe$8, messagesDe$7, messagesDe$6, messagesDe, unitMessagesEn);
2273
2278
 
2274
- var messagesEn$b = {
2279
+ var messagesEn$c = {
2275
2280
  'sections.comparison.backgroundShapes': 'Background shapes'
2276
2281
  };
2277
2282
 
2278
- var messagesEn$a = {
2283
+ var messagesEn$b = {
2279
2284
  'sections.cta.backgroundShapesDark': 'Dark background shapes',
2280
2285
  'sections.cta.backgroundShapesLight': 'Light background shapes'
2281
2286
  };
2282
2287
 
2283
- var messagesEn$9 = {
2288
+ var messagesEn$a = {
2284
2289
  'sections.customerStories.more': 'Read more'
2285
2290
  };
2286
2291
 
2287
- var messagesEn$8 = {
2292
+ var messagesEn$9 = {
2288
2293
  'sections.glossary.copyButtonLabel': 'Copy a link to this section to your clipboard',
2289
2294
  'sections.glossary.copySuccessMessage': 'Copied the link to your clipboard',
2290
2295
  'sections.glossary.copyFailureMessage': 'Could not copy link to clipboard'
2291
2296
  };
2292
2297
 
2293
- var messagesEn$7 = {
2298
+ var messagesEn$8 = {
2294
2299
  'sections.projectFacts.projectInfo.value': 'Project Infos',
2295
2300
  'projects.projectFacts.properties.area': 'Area'
2296
2301
  };
2297
2302
 
2298
- var messagesEn$6 = {
2303
+ var messagesEn$7 = {
2299
2304
  'sections.projectsMap.link.text': 'Show more info'
2300
2305
  };
2301
2306
 
2302
- var messagesEn$5 = {
2307
+ var messagesEn$6 = {
2303
2308
  'sections.shopCheckout.intro.price': 'Price',
2304
2309
  'sections.shopCheckout.contributionValue.label.EUR': 'Enter contribution value in €',
2305
2310
  'sections.shopCheckout.contributionValue.label.CHF': 'Enter contribution value in CHF',
@@ -2314,19 +2319,19 @@ var messagesEn$5 = {
2314
2319
  'sections.shopCheckout.submit': 'Checkout'
2315
2320
  };
2316
2321
 
2317
- var messagesEn$4 = {
2322
+ var messagesEn$5 = {
2318
2323
  'components.creditsAvailableBadge.text.yes': 'Credits available',
2319
2324
  'components.creditsAvailableBadge.text.some': 'Some remaining credits',
2320
2325
  'components.creditsAvailableBadge.text.no': 'No remaining credits',
2321
2326
  'components.creditsAvailableBadge.text.notYet': 'No credits available yet'
2322
2327
  };
2323
2328
 
2324
- var messagesEn$3 = {
2329
+ var messagesEn$4 = {
2325
2330
  'features.portfolio.documentsDownloadList.projectDocuments': 'Project documents',
2326
2331
  'features.portfolio.documentsDownloadList.downloadDocument': 'Download document'
2327
2332
  };
2328
2333
 
2329
- var messagesEn$2 = {
2334
+ var messagesEn$3 = {
2330
2335
  'features.projectInfo.projectInfo.value': 'Project Infos',
2331
2336
  'features.projectInfo.properties.area': 'Project Area',
2332
2337
  'features.projectInfo.properties.location': 'Location',
@@ -2341,7 +2346,7 @@ var messagesEn$2 = {
2341
2346
  'features.projectInfo.properties.year': '{years} {years, plural, one {year} other {years} }'
2342
2347
  };
2343
2348
 
2344
- var messagesEn$1 = {
2349
+ var messagesEn$2 = {
2345
2350
  'portfolio.smallCheckout.contributionValueCurrency.label.CHF': 'Contribution Amount in CHF',
2346
2351
  'portfolio.smallCheckout.contributionValueCurrency.label.EUR': 'Contribution Amount in €',
2347
2352
  'portfolio.smallCheckout.contributionValueCurrency.unit.EUR': '€',
@@ -2357,14 +2362,19 @@ var messagesEn$1 = {
2357
2362
  'portfolio.smallCheckout.cta.button': 'Contact our Sales Team'
2358
2363
  };
2359
2364
 
2360
- var messagesEn = {
2365
+ var messagesEn$1 = {
2361
2366
  'components.portfolioProjectCard.text.yes': 'Credits available',
2362
2367
  'components.portfolioProjectCard.text.some': 'Some remaining credits',
2363
2368
  'components.portfolioProjectCard.text.no': 'No remaining credits',
2364
2369
  'components.portfolioProjectCard.text.notYet': 'No credits available yet'
2365
2370
  };
2366
2371
 
2367
- 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);
2372
+ var messagesEn = {
2373
+ 'sections.timeline.backgroundShapes': 'Background shapes',
2374
+ 'sections.timeline.showMoreButton': 'Show three more milestones'
2375
+ };
2376
+
2377
+ var rootMessagesEn = /*#__PURE__*/_extends({}, messagesEn$5, messagesEn$4, messagesEn$1, messagesEn$3, messagesEn$2, messagesEn$c, messagesEn$b, messagesEn$a, messagesEn$9, messagesEn$8, messagesEn$7, messagesEn$6, messagesEn, unitMessagesEn);
2368
2378
 
2369
2379
  var _templateObject$4;
2370
2380
  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);
@@ -4720,6 +4730,209 @@ var Comparison = function Comparison(_ref) {
4720
4730
  }))));
4721
4731
  };
4722
4732
 
4733
+ var Timeline = function Timeline(_ref) {
4734
+ var slice = _ref.slice;
4735
+ var _useContext = React.useContext(reactIntl.IntlContext),
4736
+ formatMessage = _useContext.formatMessage;
4737
+ var _useState = React.useState(3),
4738
+ visibleItems = _useState[0],
4739
+ setVisibleItems = _useState[1];
4740
+ var _useMediaQuery = boemly.useMediaQuery(BREAKPOINT_MD_QUERY),
4741
+ mobile = _useMediaQuery[0];
4742
+ var _useState2 = React.useState(false),
4743
+ isOpen = _useState2[0],
4744
+ setIsOpen = _useState2[1];
4745
+ var showMoreItems = function showMoreItems() {
4746
+ setVisibleItems(function (prevVisibleItems) {
4747
+ return prevVisibleItems + 3;
4748
+ });
4749
+ };
4750
+ return React__default.default.createElement(boemly.DefaultSectionContainer, null, React__default.default.createElement(boemly.Wrapper, null, React__default.default.createElement(boemly.Flex, {
4751
+ flexDir: ['column', null, null, 'row']
4752
+ }, React__default.default.createElement(boemly.Box, {
4753
+ width: ['full', null, null, '50%'],
4754
+ position: [null, null, null, 'sticky'],
4755
+ top: ['16', null, null, '32'],
4756
+ height: "full",
4757
+ paddingRight: [null, null, null, '28']
4758
+ }, React__default.default.createElement(boemly.DefaultSectionHeader, {
4759
+ tagline: slice.tagline,
4760
+ title: slice.title,
4761
+ text: slice.text
4762
+ }), mobile && React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(boemly.Spacer, {
4763
+ h: "10"
4764
+ }), React__default.default.createElement(boemly.Flex, {
4765
+ justifyContent: "center"
4766
+ }, React__default.default.createElement(boemly.Box, {
4767
+ borderRadius: "full",
4768
+ width: "3",
4769
+ height: "3",
4770
+ margin: "1.5",
4771
+ backgroundColor: "gray"
4772
+ })), React__default.default.createElement(boemly.Box, {
4773
+ overflow: "visible",
4774
+ borderRight: "dashed 1px var(--boemly-colors-gray-200)",
4775
+ transform: "translateX(-50%)",
4776
+ position: "relative",
4777
+ height: "20"
4778
+ }))), React__default.default.createElement(boemly.Box, {
4779
+ overflow: "visible",
4780
+ maxWidth: ['full', null, null, '50%'],
4781
+ borderLeft: [null, null, null, 'dashed 1px var(--boemly-colors-gray-200)'],
4782
+ position: "relative"
4783
+ }, React__default.default.createElement(boemly.Flex, {
4784
+ flexDir: "column",
4785
+ overflow: "visible",
4786
+ gap: [null, null, null, '8']
4787
+ }, slice.timelineItems.slice(0, visibleItems).map(function (item, index) {
4788
+ return React__default.default.createElement(boemly.SimpleGrid, {
4789
+ gap: ['none', null, null, '4'],
4790
+ key: item.id,
4791
+ columns: [1, null, null, 2],
4792
+ alignContent: "center",
4793
+ gridTemplateColumns: [null, null, null, '5% 85%'],
4794
+ position: "relative"
4795
+ }, React__default.default.createElement(boemly.Flex, {
4796
+ alignItems: "center",
4797
+ justifyContent: ['center', null, null, 'flex-start']
4798
+ }, React__default.default.createElement(boemly.Box, {
4799
+ position: "absolute",
4800
+ transform: [null, null, null, 'translateX(-50%)'],
4801
+ backgroundColor: "white"
4802
+ }, item.icon ? React__default.default.createElement(boemly.Box, {
4803
+ padding: "2"
4804
+ }, React__default.default.createElement(Image__default.default, {
4805
+ src: strapiMediaUrl(item.icon.img, 'xSmall'),
4806
+ alt: item.icon.alt,
4807
+ width: "21",
4808
+ height: "21"
4809
+ })) : React__default.default.createElement(boemly.Box, {
4810
+ padding: "2"
4811
+ }, React__default.default.createElement(boemly.Box, {
4812
+ borderRadius: "full",
4813
+ backgroundColor: "primary.800",
4814
+ width: "2",
4815
+ height: "2"
4816
+ })), mobile && React__default.default.createElement(boemly.Box, {
4817
+ overflow: "visible",
4818
+ borderRight: "dashed 1px var(--boemly-colors-gray-200)",
4819
+ transform: "translateX(-50%)",
4820
+ position: "relative",
4821
+ height: "10"
4822
+ }))), React__default.default.createElement(boemly.Container, {
4823
+ p: [null, null, null, '3'],
4824
+ zIndex: "base",
4825
+ position: "relative",
4826
+ elevation: "none"
4827
+ }, item.backgroundShapes ? React__default.default.createElement(boemly.Box, {
4828
+ position: "absolute",
4829
+ left: "0",
4830
+ top: "0",
4831
+ width: "full",
4832
+ height: "full",
4833
+ zIndex: "-1"
4834
+ }, React__default.default.createElement(Image__default.default, {
4835
+ src: CDN_URI + "/assets/v3/strapi-slices/timeline-shapes.svg",
4836
+ alt: formatMessage({
4837
+ id: 'sections.timeline.backgroundShapes'
4838
+ }),
4839
+ fill: true,
4840
+ style: {
4841
+ objectFit: 'cover',
4842
+ borderRadius: 'var(--boemly-radii-xl)'
4843
+ }
4844
+ })) : React__default.default.createElement(React__default.default.Fragment, null), React__default.default.createElement(boemly.Flex, {
4845
+ flexDir: "column"
4846
+ }, React__default.default.createElement(boemly.Flex, {
4847
+ alignItems: "flex-start",
4848
+ justifyContent: "space-between"
4849
+ }, React__default.default.createElement(boemly.Box, null, item.tagline && React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(boemly.Text, {
4850
+ color: "primary.800",
4851
+ size: "smMonoUppercase"
4852
+ }, item.tagline), React__default.default.createElement(boemly.Spacer, {
4853
+ h: "2"
4854
+ }))), React__default.default.createElement(boemly.Flex, null, item.badge && React__default.default.createElement(boemly.Tag, {
4855
+ colorScheme: item.badge.variant,
4856
+ borderRadius: "md"
4857
+ }, item.badge.text), item.logo && React__default.default.createElement(boemly.Box, {
4858
+ position: "relative",
4859
+ height: "8",
4860
+ width: "16"
4861
+ }, React__default.default.createElement(Image__default.default, {
4862
+ src: strapiMediaUrl(item.logo.img, 'small'),
4863
+ alt: item.logo.alt,
4864
+ fill: true,
4865
+ style: {
4866
+ objectFit: item.logo.objectFit
4867
+ }
4868
+ })))), React__default.default.createElement(boemly.Heading, {
4869
+ size: "lg",
4870
+ mt: ['6', null, null, '3'],
4871
+ maxWidth: "xs"
4872
+ }, item.title), item.text && React__default.default.createElement(boemly.Box, {
4873
+ mt: "3"
4874
+ }, React__default.default.createElement(boemly.RichText, {
4875
+ content: item.text
4876
+ })), item.button && React__default.default.createElement(boemly.Box, {
4877
+ textAlign: "left"
4878
+ }, React__default.default.createElement(boemly.Spacer, {
4879
+ h: "4"
4880
+ }), React__default.default.createElement(StrapiLinkButton, {
4881
+ link: item.button,
4882
+ size: "sm",
4883
+ variant: "outline"
4884
+ })), item.image ? React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(boemly.Box, {
4885
+ position: "relative",
4886
+ mt: "4",
4887
+ height: ['2xs', null, null, null, '48'],
4888
+ minWidth: [null, null, null, null, '50%']
4889
+ }, React__default.default.createElement(Image__default.default, {
4890
+ src: strapiMediaUrl(item.image.img, 'xLarge'),
4891
+ alt: item.image.alt,
4892
+ fill: true,
4893
+ style: {
4894
+ cursor: mobile ? 'unset' : 'pointer',
4895
+ objectFit: item.image.objectFit || 'cover',
4896
+ borderRadius: 'var(--boemly-radii-xl)'
4897
+ },
4898
+ onClick: function onClick() {
4899
+ return !mobile && setIsOpen(true);
4900
+ }
4901
+ }), React__default.default.createElement(FullScreenImage, {
4902
+ images: [item.image],
4903
+ isOpen: isOpen,
4904
+ onClose: function onClose() {
4905
+ return setIsOpen(false);
4906
+ }
4907
+ }))) : React__default.default.createElement(React__default.default.Fragment, null))), mobile && index + 1 < slice.timelineItems.length && React__default.default.createElement(boemly.Box, {
4908
+ overflow: "visible",
4909
+ borderRight: "dashed 1px var(--boemly-colors-gray-200)",
4910
+ transform: "translateX(-50%)",
4911
+ position: "relative",
4912
+ height: "20"
4913
+ }));
4914
+ })), visibleItems < slice.timelineItems.length && React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(boemly.Box, {
4915
+ width: "full",
4916
+ height: ['36', null, null, '64'],
4917
+ position: "absolute",
4918
+ bottom: "0",
4919
+ zIndex: "1",
4920
+ background: "linear-gradient(180deg, rgba(255, 255, 255, 0.00) 0%, rgba(255, 255, 255, 0.98) 76.54%, #FFF 100%)"
4921
+ }), React__default.default.createElement(boemly.Box, {
4922
+ bottom: "0",
4923
+ textAlign: "center",
4924
+ zIndex: "overlay",
4925
+ position: "relative"
4926
+ }, React__default.default.createElement(boemly.Button, {
4927
+ variant: "outline",
4928
+ size: "sm",
4929
+ onClick: showMoreItems,
4930
+ m: [null, null, null, '8']
4931
+ }, React__default.default.createElement(reactIntl.FormattedMessage, {
4932
+ id: "sections.timeline.showMoreButton"
4933
+ }))))))));
4934
+ };
4935
+
4723
4936
  var SliceRenderer = function SliceRenderer(_ref) {
4724
4937
  var slices = _ref.slices,
4725
4938
  blogPosts = _ref.blogPosts,
@@ -4924,6 +5137,11 @@ var SliceRenderer = function SliceRenderer(_ref) {
4924
5137
  key: slice.__component + "-" + slice.id,
4925
5138
  slice: slice
4926
5139
  });
5140
+ case 'sections.timeline':
5141
+ return React__default.default.createElement(Timeline, {
5142
+ key: slice.__component + "-" + slice.id,
5143
+ slice: slice
5144
+ });
4927
5145
  default:
4928
5146
  if (CustomSlice) {
4929
5147
  return React__default.default.createElement(CustomSlice, {
@@ -4939,9 +5157,6 @@ var SliceRenderer = function SliceRenderer(_ref) {
4939
5157
  }));
4940
5158
  };
4941
5159
 
4942
- exports.SECTIONS_WITH_BLOG_POSTS = SECTIONS_WITH_BLOG_POSTS;
4943
- exports.SECTIONS_WITH_CUSTOMER_STORIES = SECTIONS_WITH_CUSTOMER_STORIES;
4944
- exports.SECTIONS_WITH_PROJECTS = SECTIONS_WITH_PROJECTS;
4945
5160
  exports.SEOTags = SEOTags;
4946
5161
  exports.SliceRenderer = SliceRenderer;
4947
5162
  exports.mergeGlobalAndStrapiBlogPostData = mergeGlobalAndStrapiBlogPostData;