import React, { useState } from 'react' import { FileDown } from 'lucide-react' import { useFormSubmit } from '../hooks/useFormSubmit' function validate(data) { const errors = {} if (!data.name || data.name.trim().length === 0) errors.name = 'Name ist erforderlich.' if (data.name && data.name.length > 100) errors.name = 'Max. 100 Zeichen.' if (!data.email || !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(data.email)) errors.email = 'Gültige E-Mail erforderlich.' if (!data.message || data.message.trim().length === 0) errors.message = 'Bitte sag kurz, wer du bist.' if (data.message && data.message.length > 2000) errors.message = 'Max. 2000 Zeichen.' return { valid: Object.keys(errors).length === 0, errors } } const inputStyle = (hasError) => ({ width: '100%', padding: '12px', background: 'var(--bg-elevated)', border: hasError ? '1px solid #ff4444' : '1px solid var(--glass-border)', borderRadius: 'var(--radius-sm)', color: 'var(--text-primary)', fontSize: '1rem', }) export default function SpeakerCvRequest() { const [open, setOpen] = useState(false) const [form, setForm] = useState({ name: '', email: '', message: '', company_website: '' }) const { submit, loading, success, errors, serverError } = useFormSubmit('/api/speaker-cv', validate) function handleChange(e) { setForm(prev => ({ ...prev, [e.target.name]: e.target.value })) } async function handleSubmit(e) { e.preventDefault() await submit(form) } if (!open) { return ( ) } return (
Danke! Der Speaker CV ist auf dem Weg in dein Postfach.
) : ( )}