# Contrato · Avatar

> Segue o modelo de `contratos/ruler.md`. Implementado em
> `app/src/componentes/Avatar/Avatar.tsx`, com CSS em `estilo/02-shell.css`
> (`.av`). Sem contrato original — não é um dos 7 da Fase 1.

> **Não é um dos 7 da Fase 1.** Tem página própria em `/componentes/avatar`
> desde 27/ago/2026, além da vitrine.

Iniciais num círculo — não há `<img>` em lugar nenhum do protótipo hoje
(`<div class="av">GM</div>`, no rodapé do rail). Achado revisando os prints
do usuário: a "foto" no print original é isto, não uma imagem de perfil.

## Props

| Prop | Tipo | Observação |
|---|---|---|
| `iniciais` | `string` | obrigatória — não trunca nem valida, o CSS é 26×26px |
| `nome` | `string` (opcional) | nome completo, pra leitor de tela |

## Acessibilidade

`iniciais` sozinha ("GM") não identifica ninguém pra quem usa leitor de
tela. Quando `nome` é passado, o componente vira `role="img"` +
`aria-label={nome}`. Quando não é (porque o contexto já tem o nome escrito
ao lado, como em `.rail-foot`), fica `aria-hidden` — decorativo, o texto
irmão já carrega a informação. A decisão de qual dos dois casos se aplica é
de quem usa o componente, não um default arriscado.

## Achado construindo, não estava previsto

- **`.rail-foot .quem small` (o texto da empresa ao lado do avatar, "Dataland")
  media 4,19:1** — mesmo defeito de `--t4` já achado repetidamente nesta
  sessão, desta vez na composição real de uso do Avatar, não no componente em
  si. Corrigido pra `--t2` em `estilo/02-shell.css`.

## Fora do contrato

- **Sem imagem.** Se o produto um dia tiver foto de perfil de verdade, é
  decisão de design nova (fallback pra iniciais quando a imagem falha,
  `<img>` com `object-fit`, etc.) — não adicionada especulativamente aqui.
- **Puramente decorativo/estático.** Sem hover, foco ou desabilitado — um
  avatar não é um controle.

## Pendências deste componente

Nenhuma aberta.

*Resolvido: "sem página de documentação própria" — a frase ficou no contrato
depois que `AvatarDoc.tsx` (27/ago/2026) já existia. Página em
`/componentes/avatar`. Achado e corrigido na auditoria de 21/set/2026.*
