Vue 3 Forms & Validation
Guidelines completas para desenvolvimento de formulários com VeeValidate + Zod + zod-i18n-map no projeto Vue 3 FSD.
Princípios Fundamentais
- •VeeValidate + Zod: Usar VeeValidate para gerenciamento de formulários e Zod para validação
- •Schemas Tipados: Sempre usar
toTypedSchemapara integração VeeValidate + Zod - •i18n Integrado: Mensagens de erro traduzidas com zod-i18n-map
- •Feedback Visual: Erros inline + toast para feedback de submit
- •Componentes UI: Usar componentes de
@/shared/components/(shadcn-vue) para formulários
Quando Usar Esta Skill
- •Criando novos formulários
- •Criando schemas de validação Zod
- •Integrando validação com i18n
- •Implementando validação condicional
- •Tratando erros de formulário
- •Usando componentes de formulário do projeto (shadcn-vue)
Stack Tecnológica
- •VeeValidate 4.15.1 - Gerenciamento de formulários
- •Zod 3.25.76 - Schema validation
- •@vee-validate/zod - Integração VeeValidate + Zod
- •zod-i18n-map - Mensagens de erro internacionalizadas
- •shadcn-vue / Reka UI - Componentes em
@/shared/components/
Recursos Disponíveis
- •form-patterns.md - Padrões de estruturação de formulários
- •validation-schemas.md - Padrões de schemas Zod
- •error-handling.md - Tratamento de erros em formulários
- •templates.md - Templates prontos para copiar e adaptar
Configuração
Setup do i18n para Zod
O projeto já tem i18n configurado em app/plugins/i18n-zod.ts:
typescript
import i18next from 'i18next'
import { z } from 'zod'
import { zodI18nMap } from 'zod-i18n-map'
import translation from 'zod-i18n-map/locales/pt/zod.json'
export function setupI18nZod() {
i18next.init({
lng: 'pt',
resources: {
pt: {
zod: translation,
},
},
})
z.setErrorMap(zodI18nMap)
}
Não precisa configurar manualmente - já está no main.ts.
Convenções
- •Schemas: Criar em
features/[feature]/model/[feature]Schema.ts - •Tipos: Usar
z.infer<typeof schema>para tipos derivados - •Validação:
validateOnMount: falsepor padrão - •Submit: Validar antes de submeter com
validate() - •Erros: Exibir inline com
FormMessagee toast para erros de submit