'use client'; import { zodResolver } from '@hookform/resolvers/zod'; import { useForm } from 'react-hook-form'; import { useAction } from 'next-safe-action/hooks'; import { useRouter } from 'next/navigation'; import { Button } from '@kit/ui/button'; import { Input } from '@kit/ui/input'; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from '@kit/ui/form'; import { Card, CardContent, CardHeader, CardTitle } from '@kit/ui/card'; import { toast } from '@kit/ui/sonner'; import { CreateMemberSchema } from '../schema/member.schema'; import { createMember } from '../server/actions/member-actions'; interface Props { accountId: string; account: string; // slug for redirect duesCategories: Array<{ id: string; name: string; amount: number }>; } export function CreateMemberForm({ accountId, account, duesCategories }: Props) { const router = useRouter(); const form = useForm({ resolver: zodResolver(CreateMemberSchema), defaultValues: { accountId, firstName: '', lastName: '', email: '', phone: '', mobile: '', street: '', houseNumber: '', postalCode: '', city: '', country: 'DE', memberNumber: '', status: 'active' as const, entryDate: new Date().toISOString().split('T')[0]!, iban: '', bic: '', accountHolder: '', gdprConsent: false, notes: '', }, }); const { execute, isPending } = useAction(createMember, { onSuccess: ({ data }) => { if (data?.success) { toast.success('Mitglied erfolgreich erstellt'); router.push(`/home/${account}/members-cms`); } }, onError: ({ error }) => { toast.error(error.serverError ?? 'Fehler beim Erstellen'); }, }); return (
); }