'use client' import { useState, useEffect } from 'react' import Link from 'next/link' import { PagePurpose } from '@/components/common/PagePurpose' // Types interface FundingApplication { id: string application_number: string title: string funding_program: string status: string current_step: number total_steps: number requested_amount: number school_profile?: { name: string federal_state: string } created_at: string updated_at: string } interface Statistics { total_applications: number draft_count: number submitted_count: number approved_count: number total_requested: number total_approved: number } const API_BASE = process.env.NEXT_PUBLIC_SDK_API_URL || 'http://localhost:8080' // Status badge colors const statusColors: Record = { DRAFT: { bg: 'bg-slate-100', text: 'text-slate-700', label: 'Entwurf' }, IN_PROGRESS: { bg: 'bg-blue-100', text: 'text-blue-700', label: 'In Bearbeitung' }, REVIEW: { bg: 'bg-amber-100', text: 'text-amber-700', label: 'Pruefung' }, SUBMITTED: { bg: 'bg-purple-100', text: 'text-purple-700', label: 'Eingereicht' }, APPROVED: { bg: 'bg-green-100', text: 'text-green-700', label: 'Genehmigt' }, REJECTED: { bg: 'bg-red-100', text: 'text-red-700', label: 'Abgelehnt' }, } const programLabels: Record = { DIGITALPAKT_1: 'DigitalPakt 1.0', DIGITALPAKT_2: 'DigitalPakt 2.0', LANDESFOERDERUNG: 'Landesfoerderung', SCHULTRAEGER: 'Schultraeger', } export default function FoerderantragPage() { const [applications, setApplications] = useState([]) const [statistics, setStatistics] = useState(null) const [loading, setLoading] = useState(true) const [error, setError] = useState(null) useEffect(() => { loadData() }, []) const loadData = async () => { try { setLoading(true) // In production, these would be real API calls // For now, we use mock data setApplications([]) setStatistics({ total_applications: 0, draft_count: 0, submitted_count: 0, approved_count: 0, total_requested: 0, total_approved: 0, }) } catch (err) { setError('Fehler beim Laden der Daten') } finally { setLoading(false) } } const formatCurrency = (amount: number) => { return new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR', }).format(amount) } const formatDate = (dateStr: string) => { return new Date(dateStr).toLocaleDateString('de-DE', { day: '2-digit', month: '2-digit', year: 'numeric', }) } return (
{/* Page Purpose */} {/* Hero Section */}

Foerderantrag-Wizard

Erstellen Sie vollstaendige Foerderantraege fuer DigitalPakt 2.0 und Landesfoerderungen. Der Wizard fuehrt Sie durch alle 8 Schritte und generiert antragsfaehige Dokumente.

Neuen Antrag starten
{/* Statistics Cards */}
{statistics?.total_applications || 0}
Antraege gesamt
{statistics?.draft_count || 0}
Entwuerfe
{statistics?.submitted_count || 0}
Eingereicht
{formatCurrency(statistics?.total_requested || 0)}
Beantragt
{/* Quick Start Cards */}

BreakPilot Basis

Lokale KI-Arbeitsstation fuer eine Schule. Vorausgefuellte Kostenplanung und Datenschutzkonzept.

~18.500 EUR Foerdervolumen

BreakPilot Schulverbund

Zentrale KI-Infrastruktur fuer mehrere Schulen eines Traegers.

~68.500 EUR Foerdervolumen

Individueller Antrag

Leerer Wizard fuer individuelle Projekte. Volle Flexibilitaet bei der Planung.

Beliebiges Foerdervolumen
{/* Applications List */}

Meine Antraege

{loading ? (

Lade Antraege...

) : applications.length === 0 ? (

Noch keine Antraege

Starten Sie jetzt Ihren ersten Foerderantrag mit dem Wizard.

Ersten Antrag erstellen
) : (
{applications.map((app) => { const status = statusColors[app.status] || statusColors.DRAFT return (

{app.title}

{status.label}
{app.application_number} {programLabels[app.funding_program] || app.funding_program} {app.school_profile?.name && ( {app.school_profile.name} )}
{formatCurrency(app.requested_amount)}
Schritt {app.current_step}/{app.total_steps}
) })}
)}
{/* Info Box */}

Wichtiger Hinweis

Der Wizard erstellt einen antragsfaehigen Entwurf. Die finale Pruefung und Einreichung erfolgt durch den Schultraeger. Alle generierten Dokumente (Antragsschreiben, Kostenplan, Datenschutzkonzept) koennen als ZIP heruntergeladen werden.

) }