- Cotizador (/quote): 4 propuestas con formulas validadas del Excel, comparador, combobox de unidades, vigencia, PDF ANEXO A - Alta Clientes (/client): wizard 8 pasos, validacion CURP RENAPO, OCR de INE, checklist de expediente, firma digital, 5 PDFs legales - Cobranza (/pay): planes de enganche, mora, vista cobranza del dia, recibos PDF, bitacora, dashboard con filtros - Landing (/): entrada al ecosistema - Design system StudioBlank (monocromo, acento #1B4332) en las 4 apps - 123 tests vitest
31 lines
924 B
TypeScript
31 lines
924 B
TypeScript
import { useForm, FormProvider } from 'react-hook-form'
|
|
import { zodResolver } from '@hookform/resolvers/zod'
|
|
import type { DatosGenerales } from '../types'
|
|
import { datosGeneralesSchema } from '../lib/schemas'
|
|
import DatosGeneralesCampos from './DatosGeneralesCampos'
|
|
import Navegacion from './Navegacion'
|
|
|
|
export interface PasoProps<T> {
|
|
valores: T
|
|
onAnterior?: () => void
|
|
onSiguiente: (datos: T) => void
|
|
}
|
|
|
|
/** Paso 1: datos generales del cliente */
|
|
export default function DatosGeneralesForm({ valores, onSiguiente }: PasoProps<DatosGenerales>) {
|
|
const metodos = useForm<DatosGenerales>({
|
|
resolver: zodResolver(datosGeneralesSchema),
|
|
defaultValues: valores,
|
|
mode: 'onSubmit',
|
|
})
|
|
|
|
return (
|
|
<FormProvider {...metodos}>
|
|
<form onSubmit={metodos.handleSubmit(onSiguiente)} noValidate>
|
|
<DatosGeneralesCampos prefix="" />
|
|
<Navegacion />
|
|
</form>
|
|
</FormProvider>
|
|
)
|
|
}
|