/** * FEAT-13: Einstellungen — Zuchtprofil (Verkäufer-Block der Abgabeverträge). * Einzelzeilen-Settings im Backend (/settings/breeder-profile); die Züchterin * pflegt ihre Daten hier statt in einer JSON-Datei. */ import { useState, type FormEvent } from 'react' import { de } from '../strings/de' import { EMPTY_BREEDER_PROFILE, getBreederProfile, isBreederProfileComplete, putBreederProfile, type BreederProfile, } from '../api/settings' import { useApi, useMutation } from '../hooks/useApi' import { useToast } from '../components/toast' // EXPORT-1 (Oscar): Datenexport-Karte import DatenexportCard from '../components/DatenexportCard' export default function EinstellungenPage() { const t = de.pages.einstellungen const tz = t.zuchtprofil const toast = useToast() const [form, setForm] = useState(EMPTY_BREEDER_PROFILE) const [initialized, setInitialized] = useState(false) const [saved, setSaved] = useState(false) const existing = useApi(() => getBreederProfile(), []) if (existing.data && !initialized) { setInitialized(true) setForm(existing.data) } const set = (key: K, value: string) => { setSaved(false) setForm((f) => ({ ...f, [key]: value })) } const mutation = useMutation((profile: BreederProfile) => putBreederProfile(profile)) async function onSubmit(e: FormEvent) { e.preventDefault() const result = await mutation.run(form) if (result.ok) { setSaved(true) toast.success(de.common.saved) } else { toast.error(result.error) } } if (existing.loading) return

{de.common.loading}

if (existing.error) { return (

{t.title}

{existing.error}
) } const field = ( key: keyof BreederProfile, label: string, hint?: string, type: string = 'text', ) => ( ) return (

{t.title}

{tz.title}

{tz.intro}

{!isBreederProfileComplete(form) &&
{tz.incompleteHint}
}
{field('zuchtName', tz.fields.zuchtName)} {field('nameSuffix', tz.fields.nameSuffix, tz.fields.nameSuffixHint)} {field('name', tz.fields.name, tz.fields.nameHint)} {field('address', tz.fields.address, tz.fields.addressHint)} {field('city', tz.fields.city)} {field('phone', tz.fields.phone, undefined, 'tel')} {field('email', tz.fields.email, undefined, 'email')} {field('homepage', tz.fields.homepage, undefined, 'url')} {mutation.error &&
{mutation.error}
}
{saved && {tz.saved}}
) }