# Profile Form

Editar o perfil com foto, nome e e-mail verificado. Quando não dá pra salvar, o motivo aparece no campo, não num toast.

- Nome no registry: `profile-form`
- Tipo: componente
- Dependências npm: lucide-react
- Demo: https://ui.visantlabs.com/c/profile-form
- Categorias: controles, conta, formulario, validacao

## Quando usar

- Use quando: Página de configurações da conta com foto, nome e e-mail verificado, erro no próprio campo
- Evite quando: Editar um campo solto no lugar: inline-edit; só o acesso à conta no cabeçalho, auth-button

## Instalar

```bash
npx shadcn@latest add @visant/profile-form
```

## Usar

```tsx
<ProfileForm
  emailVerified
/>
```

## API

### ProfileForm

- `onSave: (next: ProfileValue, extra: { avatarFile: File; }) => Promise<void>`
- `value: ProfileValue` — O valor SALVO — a fonte de verdade. O rascunho é interno.
- `className?: string`
- `emailVerified?: boolean = false` — Verificação do e-mail salvo. Muda o e-mail, o selo cai sozinho.
- `onResendVerification?: () => void | Promise<void>`
- `undoWindowMs?: number = 6000` — Janela do desfazer depois de salvar. `0` desliga.
- `validate?: (draft: ProfileValue) => Partial<Record<"name" | "email", string>>` — Validação de negócio, somada à básica (obrigatório / formato de e-mail).
