feat: update Preistraeger page to include a simple winner grid for 2023 and remove unused components

fix: change featured status for participation content and remove deprecated award card

feat: add migration for new participation phase form fields and backfill existing data

feat: create AwardsGridSection component for displaying awards with improved layout

feat: implement NewsletterInterestForm component for newsletter sign-up with validation
This commit is contained in:
syntaxbullet
2026-07-01 18:02:12 +02:00
parent 2fda7e8122
commit 2842caa936
15 changed files with 1274 additions and 255 deletions

View File

@@ -7,6 +7,7 @@ import { Link, useLocation } from '@/spa/router';
import { ArrowRight } from 'lucide-react';
import LoadingScreen from '@/spa/components/ui/LoadingScreen';
import { useIsMobile } from '@/spa/hooks/useIsMobile';
import { useApplicationPhase } from '@/spa/cmsRoute';
import {
defaultFooterData,
defaultHeaderData,
@@ -37,6 +38,7 @@ const LINE = 'rgba(239,191,4,0.35)';
const FF_DISPLAY = '"IBM Plex Sans", sans-serif';
const FF_BODY = '"Inter", sans-serif';
const HIDE_MEMBERSHIP_FOOTER_ENTRY = true;
const APPLICATION_PHASE_OPEN = '0';
const isMembershipFooterLink = (link?: { label?: string; path?: string }) =>
link?.path === '/mitglied-werden' || link?.label?.trim().toLowerCase() === 'mitglied werden';
@@ -72,6 +74,8 @@ const Layout: React.FC<LayoutProps> = ({ children, header = defaultHeaderData, f
const footerCtas = footer.ctas;
const fallbackHeaderCtas = defaultHeaderData.ctas;
const fallbackFooterCtas = defaultFooterData.ctas;
const applicationPhase = useApplicationPhase();
const showFloatingApplicationCta = applicationPhase?.activePhase === APPLICATION_PHASE_OPEN;
const footerMembershipCta = footerCtas[1] || fallbackFooterCtas[1];
const showFooterMembershipCta =
!HIDE_MEMBERSHIP_FOOTER_ENTRY || !isMembershipFooterLink(footerMembershipCta);
@@ -565,7 +569,7 @@ const Layout: React.FC<LayoutProps> = ({ children, header = defaultHeaderData, f
{/* ── FLOATING CTA ─────────────────────────────── */}
{location.pathname === '/' && !formVisible && !isMobile && (
{location.pathname === '/' && showFloatingApplicationCta && !formVisible && !isMobile && (
<Link
to="/teilnahme"
style={{