241 lines
7.4 KiB
TypeScript
241 lines
7.4 KiB
TypeScript
import { EtibBlock } from './types';
|
|
import { HeroVideo } from '@/components/blocks/HeroVideo';
|
|
import { SubCompanyTiles } from '@/components/blocks/SubCompanyTiles';
|
|
import { CompetenceBentoGrid } from '@/components/blocks/CompetenceBentoGrid';
|
|
import { ReferencesSlider } from '@/components/blocks/ReferencesSlider';
|
|
import Hero from '@/components/home/Hero';
|
|
import ProductCategories from '@/components/home/ProductCategories';
|
|
import WhatWeDo from '@/components/home/WhatWeDo';
|
|
import RecentPosts from '@/components/home/RecentPosts';
|
|
import Experience from '@/components/home/Experience';
|
|
import WhyChooseUs from '@/components/home/WhyChooseUs';
|
|
import MeetTheTeam from '@/components/home/MeetTheTeam';
|
|
import GallerySection from '@/components/home/GallerySection';
|
|
import VideoSection from '@/components/home/VideoSection';
|
|
import CTA from '@/components/home/CTA';
|
|
|
|
export const HomeHero: EtibBlock = {
|
|
slug: 'homeHero',
|
|
interfaceName: 'HomeHeroBlock',
|
|
render: HeroVideo,
|
|
fields: [
|
|
{ name: 'title', type: 'text', localized: true },
|
|
{ name: 'subtitle', type: 'text', localized: true },
|
|
{ name: 'videoUrl', type: 'text', admin: { description: 'URL to the background mp4 video' } },
|
|
{ name: 'posterImage', type: 'upload', relationTo: 'media' },
|
|
{ name: 'ctaLabel', type: 'text', localized: true },
|
|
{ name: 'ctaHref', type: 'text' },
|
|
{ name: 'secondaryCtaLabel', type: 'text', localized: true },
|
|
{ name: 'secondaryCtaHref', type: 'text' },
|
|
],
|
|
};
|
|
|
|
export const HomeSubCompanyTiles: EtibBlock = {
|
|
slug: 'homeSubCompanyTiles',
|
|
interfaceName: 'HomeSubCompanyTilesBlock',
|
|
render: SubCompanyTiles,
|
|
fields: [
|
|
{ name: 'badge', type: 'text', localized: true },
|
|
{ name: 'title', type: 'text', localized: true },
|
|
{
|
|
name: 'companies',
|
|
type: 'array',
|
|
localized: true,
|
|
fields: [
|
|
{ name: 'title', type: 'text' },
|
|
{ name: 'description', type: 'textarea' },
|
|
{ name: 'icon', type: 'text', admin: { description: 'SVG path for the icon' } },
|
|
{ name: 'backgroundImage', type: 'upload', relationTo: 'media' },
|
|
],
|
|
},
|
|
],
|
|
};
|
|
|
|
export const HomeCompetenceBentoGrid: EtibBlock = {
|
|
slug: 'homeCompetenceBentoGrid',
|
|
interfaceName: 'HomeCompetenceBentoGridBlock',
|
|
render: CompetenceBentoGrid,
|
|
fields: [
|
|
{ name: 'badge', type: 'text', localized: true },
|
|
{ name: 'title', type: 'text', localized: true },
|
|
{ name: 'ctaLabel', type: 'text', localized: true },
|
|
{ name: 'ctaHref', type: 'text' },
|
|
{
|
|
name: 'items',
|
|
type: 'array',
|
|
localized: true,
|
|
fields: [
|
|
{ name: 'title', type: 'text' },
|
|
{ name: 'description', type: 'textarea' },
|
|
{ name: 'tag', type: 'text' },
|
|
{ name: 'image', type: 'upload', relationTo: 'media' },
|
|
{
|
|
name: 'size',
|
|
type: 'select',
|
|
options: [
|
|
{ label: 'Large (2x2)', value: 'large' },
|
|
{ label: 'Medium (1x2)', value: 'medium' },
|
|
{ label: 'Small (1x1)', value: 'small' },
|
|
{ label: 'Accent (Text only)', value: 'accent' },
|
|
],
|
|
defaultValue: 'small',
|
|
},
|
|
],
|
|
},
|
|
],
|
|
};
|
|
|
|
export const HomeReferencesSlider: EtibBlock = {
|
|
slug: 'homeReferencesSlider',
|
|
interfaceName: 'HomeReferencesSliderBlock',
|
|
render: ReferencesSlider,
|
|
fields: [
|
|
{ name: 'badge', type: 'text', localized: true },
|
|
{ name: 'title', type: 'text', localized: true },
|
|
{ name: 'description', type: 'textarea', localized: true },
|
|
{ name: 'ctaLabel', type: 'text', localized: true },
|
|
{ name: 'ctaHref', type: 'text' },
|
|
],
|
|
};
|
|
|
|
export const HomeProductCategories: EtibBlock = {
|
|
slug: 'homeProductCategories',
|
|
interfaceName: 'HomeProductCategoriesBlock',
|
|
render: ProductCategories,
|
|
fields: [
|
|
{ name: 'title', type: 'text', localized: true },
|
|
{ name: 'subtitle', type: 'text', localized: true },
|
|
],
|
|
};
|
|
|
|
export const HomeWhatWeDo: EtibBlock = {
|
|
slug: 'homeWhatWeDo',
|
|
interfaceName: 'HomeWhatWeDoBlock',
|
|
render: WhatWeDo,
|
|
fields: [
|
|
{ name: 'title', type: 'text', localized: true },
|
|
{ name: 'subtitle', type: 'text', localized: true },
|
|
{ name: 'expertiseLabel', type: 'text', localized: true },
|
|
{ name: 'quote', type: 'textarea', localized: true },
|
|
{
|
|
name: 'items',
|
|
type: 'array',
|
|
localized: true,
|
|
fields: [
|
|
{ name: 'title', type: 'text' },
|
|
{ name: 'description', type: 'textarea' },
|
|
],
|
|
},
|
|
],
|
|
};
|
|
|
|
export const HomeRecentPosts: EtibBlock = {
|
|
slug: 'homeRecentPosts',
|
|
interfaceName: 'HomeRecentPostsBlock',
|
|
render: RecentPosts,
|
|
fields: [
|
|
{ name: 'title', type: 'text', localized: true },
|
|
{ name: 'subtitle', type: 'text', localized: true },
|
|
],
|
|
};
|
|
|
|
export const HomeExperience: EtibBlock = {
|
|
slug: 'homeExperience',
|
|
interfaceName: 'HomeExperienceBlock',
|
|
render: Experience,
|
|
fields: [
|
|
{ name: 'title', type: 'text', localized: true },
|
|
{ name: 'subtitle', type: 'text', localized: true },
|
|
{ name: 'paragraph1', type: 'textarea', localized: true },
|
|
{ name: 'paragraph2', type: 'textarea', localized: true },
|
|
{ name: 'badge1', type: 'text', localized: true },
|
|
{ name: 'badge1Text', type: 'text', localized: true },
|
|
{ name: 'badge2', type: 'text', localized: true },
|
|
{ name: 'badge2Text', type: 'text', localized: true },
|
|
],
|
|
};
|
|
|
|
export const HomeWhyChooseUs: EtibBlock = {
|
|
slug: 'homeWhyChooseUs',
|
|
interfaceName: 'HomeWhyChooseUsBlock',
|
|
render: WhyChooseUs,
|
|
fields: [
|
|
{ name: 'title', type: 'text', localized: true },
|
|
{ name: 'subtitle', type: 'text', localized: true },
|
|
{ name: 'tagline', type: 'text', localized: true },
|
|
{
|
|
name: 'features',
|
|
type: 'array',
|
|
localized: true,
|
|
fields: [{ name: 'feature', type: 'text' }],
|
|
},
|
|
{
|
|
name: 'items',
|
|
type: 'array',
|
|
localized: true,
|
|
fields: [
|
|
{ name: 'title', type: 'text' },
|
|
{ name: 'description', type: 'textarea' },
|
|
],
|
|
},
|
|
],
|
|
};
|
|
|
|
export const HomeMeetTheTeam: EtibBlock = {
|
|
slug: 'homeMeetTheTeam',
|
|
interfaceName: 'HomeMeetTheTeamBlock',
|
|
render: MeetTheTeam,
|
|
fields: [
|
|
{ name: 'title', type: 'text', localized: true },
|
|
{ name: 'subtitle', type: 'text', localized: true },
|
|
{ name: 'description', type: 'textarea', localized: true },
|
|
{ name: 'ctaLabel', type: 'text', localized: true },
|
|
{ name: 'networkLabel', type: 'text', localized: true },
|
|
],
|
|
};
|
|
|
|
export const HomeGallery: EtibBlock = {
|
|
slug: 'homeGallery',
|
|
interfaceName: 'HomeGalleryBlock',
|
|
render: GallerySection,
|
|
fields: [
|
|
{ name: 'title', type: 'text', localized: true },
|
|
{ name: 'subtitle', type: 'text', localized: true },
|
|
],
|
|
};
|
|
|
|
export const HomeVideo: EtibBlock = {
|
|
slug: 'homeVideo',
|
|
interfaceName: 'HomeVideoBlock',
|
|
render: VideoSection,
|
|
fields: [{ name: 'title', type: 'text', localized: true }],
|
|
};
|
|
|
|
export const HomeCTA: EtibBlock = {
|
|
slug: 'homeCTA',
|
|
interfaceName: 'HomeCTABlock',
|
|
render: CTA,
|
|
fields: [
|
|
{ name: 'title', type: 'text', localized: true },
|
|
{ name: 'subtitle', type: 'text', localized: true },
|
|
{ name: 'description', type: 'textarea', localized: true },
|
|
{ name: 'buttonLabel', type: 'text', localized: true },
|
|
],
|
|
};
|
|
|
|
export const homeBlocksArray = [
|
|
HomeHero,
|
|
HomeSubCompanyTiles,
|
|
HomeCompetenceBentoGrid,
|
|
HomeReferencesSlider,
|
|
HomeProductCategories,
|
|
HomeWhatWeDo,
|
|
HomeRecentPosts,
|
|
HomeExperience,
|
|
HomeWhyChooseUs,
|
|
HomeMeetTheTeam,
|
|
HomeGallery,
|
|
HomeVideo,
|
|
HomeCTA,
|
|
];
|