feat: implement homepage blocks, animations and sticky whatsapp CTA

This commit is contained in:
MichalC
2026-08-31 23:04:48 +02:00
parent d728108b3e
commit 0a1e74dbe4
26 changed files with 1056 additions and 43 deletions
+227 -6
View File
@@ -212,12 +212,118 @@ export interface Page {
*/
slug: string;
layout?:
| {
text?: string | null;
id?: string | null;
blockName?: string | null;
blockType: 'TextSection';
}[]
| (
| {
title: string;
subtitle: string;
primaryCta: string;
secondaryCta?: {
text?: string | null;
url?: string | null;
};
yearsOfExperience?: string | null;
id?: string | null;
blockName?: string | null;
blockType: 'hero';
}
| {
items?:
| {
text: string;
icon?: ('shield' | 'check' | 'message' | 'star') | null;
id?: string | null;
}[]
| null;
id?: string | null;
blockName?: string | null;
blockType: 'trustBar';
}
| {
title: string;
description: string;
id?: string | null;
blockName?: string | null;
blockType: 'uniqueValue';
}
| {
title: string;
services?:
| {
title: string;
description: string;
linkText: string;
id?: string | null;
}[]
| null;
id?: string | null;
blockName?: string | null;
blockType: 'servicesList';
}
| {
title: string;
steps?:
| {
title: string;
description: string;
id?: string | null;
}[]
| null;
ctaText?: string | null;
id?: string | null;
blockName?: string | null;
blockType: 'process';
}
| {
title: string;
description: string;
logo?: (number | null) | Media;
linkText?: string | null;
id?: string | null;
blockName?: string | null;
blockType: 'affiliation';
}
| {
title: string;
testimonials?:
| {
quote: string;
author: string;
id?: string | null;
}[]
| null;
id?: string | null;
blockName?: string | null;
blockType: 'testimonials';
}
| {
title: string;
questions?:
| {
question: string;
answer: string;
id?: string | null;
}[]
| null;
linkText?: string | null;
id?: string | null;
blockName?: string | null;
blockType: 'faqTeaser';
}
| {
title: string;
subtitle?: string | null;
buttonText: string;
id?: string | null;
blockName?: string | null;
blockType: 'finalCta';
}
| {
text?: string | null;
id?: string | null;
blockName?: string | null;
blockType: 'TextSection';
}
)[]
| null;
updatedAt: string;
createdAt: string;
@@ -391,6 +497,121 @@ export interface PagesSelect<T extends boolean = true> {
layout?:
| T
| {
hero?:
| T
| {
title?: T;
subtitle?: T;
primaryCta?: T;
secondaryCta?:
| T
| {
text?: T;
url?: T;
};
yearsOfExperience?: T;
id?: T;
blockName?: T;
};
trustBar?:
| T
| {
items?:
| T
| {
text?: T;
icon?: T;
id?: T;
};
id?: T;
blockName?: T;
};
uniqueValue?:
| T
| {
title?: T;
description?: T;
id?: T;
blockName?: T;
};
servicesList?:
| T
| {
title?: T;
services?:
| T
| {
title?: T;
description?: T;
linkText?: T;
id?: T;
};
id?: T;
blockName?: T;
};
process?:
| T
| {
title?: T;
steps?:
| T
| {
title?: T;
description?: T;
id?: T;
};
ctaText?: T;
id?: T;
blockName?: T;
};
affiliation?:
| T
| {
title?: T;
description?: T;
logo?: T;
linkText?: T;
id?: T;
blockName?: T;
};
testimonials?:
| T
| {
title?: T;
testimonials?:
| T
| {
quote?: T;
author?: T;
id?: T;
};
id?: T;
blockName?: T;
};
faqTeaser?:
| T
| {
title?: T;
questions?:
| T
| {
question?: T;
answer?: T;
id?: T;
};
linkText?: T;
id?: T;
blockName?: T;
};
finalCta?:
| T
| {
title?: T;
subtitle?: T;
buttonText?: T;
id?: T;
blockName?: T;
};
TextSection?:
| T
| {