feat: implement contact form submission and database integration

- Added a new collection for contact submissions with validation and error handling.
- Created a migration script to set up the contact submissions table in the database.
- Updated the SponsoringForm component to handle newsletter subscriptions based on application phase.
- Refactored the UI components for improved user experience and error messaging.
- Removed the package selection step from the sponsoring form.
- Updated the styling across various pages to maintain consistency with the new design.
This commit is contained in:
syntaxbullet
2026-07-13 19:56:36 +02:00
parent 308d75c44a
commit b372b23b0c
13 changed files with 451 additions and 99 deletions

View File

@@ -11,7 +11,7 @@ import { contactContent } from '@/spa/contactContent';
const NAVY = '#111D55';
const GOLD = '#EFBF04';
const CREAM = '#EFE5E3';
const WHITE = '#fff';
const INK = '#3A3A3A';
type ContactCms = NonNullable<Page['contact']>;
@@ -53,7 +53,7 @@ const Contact: React.FC = () => {
const faqItems = fallbackArray<FaqItem>(faq.items, contactContent.faq.items);
return (
<div style={{ background: CREAM }}>
<div style={{ background: WHITE }}>
{/* ── Hero ───────────────────────────────────────────────────────── */}
<section style={{ position: 'relative', height: '68vh', minHeight: 520, overflow: 'hidden', display: 'flex', alignItems: 'flex-end' }}>
@@ -210,7 +210,7 @@ const Contact: React.FC = () => {
</section>
{/* ── FAQ ────────────────────────────────────────────────────────── */}
<section id="faq" style={{ background: CREAM, padding: isMobile ? '56px 0 72px' : '96px 0 112px' }}>
<section id="faq" style={{ background: WHITE, padding: isMobile ? '56px 0 72px' : '96px 0 112px' }}>
<div className="container mx-auto px-6">
<div style={{ display: 'grid', gridTemplateColumns: isMobile ? '1fr' : '1fr 2fr', gap: isMobile ? 40 : 80 }}>