import type { ResponseGetData } from '@/api/ius/types'; import { create } from 'zustand'; type Values = ResponseGetData; type ElementValidation = { message: string; valid: boolean; }; type FormState = { defaultValues: Values; init: (values: Values) => void; reset: () => void; resetValidation: () => void; setValidation: (input: { name: string } & ElementValidation) => void; setValue: ({ name, value }: { name: string; value: Values[number] }) => void; status?: 'init' | 'edited'; validation: Record; values: Values; }; export const useFormStore = create((set) => ({ defaultValues: {}, init: (values) => set(() => ({ defaultValues: values, status: 'init', values, })), reset: () => set((state) => ({ status: 'init', validation: {}, values: state.defaultValues, })), resetValidation: () => set(() => ({ validation: {}, })), setValidation: ({ message, name, valid }) => set((state) => ({ validation: { ...state.validation, [name]: { message, valid }, }, })), setValue: ({ name, value }) => set((state) => ({ status: 'edited', validation: { ...state.validation, [name]: undefined, }, values: { ...state.values, [name]: value, }, })), validation: {}, values: {}, }));