import { z } from 'zod'; /** Espelha `DOCUMENTO_REGEX` (`src/modules/customers/documento.util.ts`) — CPF/CNPJ, sem dígito verificador. */ const DOCUMENTO_REGEX = /^(\d{11}|\d{14}|\d{3}\.\d{3}\.\d{3}-\d{2}|\d{2}\.\d{3}\.\d{3}\/\d{4}-\d{2})$/; /** Espelha `CreateCustomerDto`/`UpdateCustomerDto` (`src/modules/customers/dto/`). */ export const customerSchema = z.object({ razao_social: z.string().min(2, 'Informe pelo menos 2 caracteres'), nome_fantasia: z.string().optional(), documento: z .string() .optional() .refine((v) => !v || DOCUMENTO_REGEX.test(v), { message: 'Informe um CPF ou CNPJ válido' }), email: z.email('E-mail inválido').optional().or(z.literal('')), telefone_whatsapp: z.string().optional(), endereco: z.string().optional(), cidade: z.string().optional(), uf: z.string().length(2, 'UF deve ter 2 letras').optional().or(z.literal('')), observacoes: z.string().optional(), }); export type CustomerFormValues = z.infer; /** Espelha `CreateContactDto`/`UpdateContactDto`. */ export const customerContactSchema = z.object({ nome: z.string().min(2, 'Informe pelo menos 2 caracteres'), cargo: z.string().optional(), email: z.email('E-mail inválido').optional().or(z.literal('')), telefone_whatsapp: z.string().optional(), principal: z.boolean(), }); export type CustomerContactFormValues = z.infer;