'use client'; import { zodResolver } from '@hookform/resolvers/zod'; import { Button } from '@repo/shadcn/button'; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from '@repo/shadcn/form'; import { Input } from '@repo/shadcn/input'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@repo/shadcn/select'; import { useForm } from 'react-hook-form'; import { useCreateUser } from "../../hooks/use-mutation-users"; import { CreateUser, createUser } from '../../schemas/users'; const ROLES = { // 1: 'Superadmin', 2: 'Administrador', 3: 'autoridad', 4: 'Gerente', 5: 'Usuario', 6: 'Productor', 7: 'Organización' } interface CreateUserFormProps { onSuccess?: () => void; onCancel?: () => void; defaultValues?: Partial; } export function CreateUserForm({ onSuccess, onCancel, defaultValues, }: CreateUserFormProps) { const { mutate: saveAccountingAccounts, isPending: isSaving, isError, } = useCreateUser(); // const { data: AccoutingAccounts } = useSurveyMutation(); const defaultformValues = { username: defaultValues?.username || '', fullname: defaultValues?.fullname || '', email: defaultValues?.email || '', password: '', confirmPassword: '', id: defaultValues?.id, phone: defaultValues?.phone || '', role: defaultValues?.role, } const form = useForm({ resolver: zodResolver(createUser), defaultValues: defaultformValues, mode: 'onChange', // Enable real-time validation }); const onSubmit = async (data: CreateUser) => { const formData = data saveAccountingAccounts(formData, { onSuccess: () => { form.reset(); onSuccess?.(); }, onError: (e) => { form.setError('root', { type: 'manual', message: e.message, }); }, }); }; return (
{form.formState.errors.root && (
{form.formState.errors.root.message}
)}
( Usuario )} /> ( Nombre completo )} /> ( Correo )} /> ( Teléfono )} /> ( Contraseña )} /> ( Confirmar Contraseña )} /> ( Rol )} />
); }