# Contrato · Input

> Segue o modelo de `contratos/ruler.md`. Implementado em
> `app/src/componentes/Input/Input.tsx`, com CSS em
> `estilo/12-v3-terreno.css` (`.inp-lei`). Sem contrato original — não é um
> dos 7 da Fase 1. Construído a partir do CSS/HTML real (`#pop-lei`,
> `#pop-doc`, `#pop-obra`), achado revisando os prints do usuário.

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

Campo de texto minimalista — sem borda, sem fundo, pensado pra blendar
numa linha (`.endereco`) ao lado de um botão ou prefixo, não pra ser uma
caixa autônoma.

## Props

| Prop | Tipo | Observação |
|---|---|---|
| `type` | `'text' \| 'search'` | default `'text'` — só os dois tipos que o `.inp-lei` real usa |
| `numeric` | `boolean` | aplica `.num` (`tabular-nums`), mesmo utilitário que `Numero` |
| ...resto | `InputHTMLAttributes` | `value`/`onChange`/`disabled`/`placeholder`/etc nativos |

## Achado construindo, não estava previsto

- **`outline:none` sem substituto apagava o anel de foco global inteiro.**
  `.inp-lei:focus{outline:none}` tinha especificidade maior que o
  `:focus-visible` solto em `00-tokens.css` (classe+pseudo-classe vence
  pseudo-classe sozinha), então o campo perdia QUALQUER indicador de foco
  por teclado. Removida a regra — mesma estratégia única já usada por
  `.btn`/`.bdg`/`.opt`.
- **Sem estado desabilitado no CSS original.** Adicionado
  `.inp-lei[disabled]{opacity:.45}`, mesma convenção já usada em outros
  componentes desta sessão.

## Fora do contrato

- **`.numerao input`** (o campo numérico grande do onboarding, com
  `.pre`/`.suf`) é um padrão visual DIFERENTE — maior, com borda inferior,
  fonte 30px — não coberto por este componente. Ver Pendências.
- **Prefixo/sufixo compostos automaticamente** (tipo `Numero`) não existem
  aqui: no protótipo real, `.pre-obra` é um `<span>` IRMÃO fora do input,
  não parte dele — a story mostra essa composição manual, não uma prop.

## Pendências deste componente

- **`.numerao` (campo numérico grande, com prefixo/sufixo e sublinhado) não
  foi construído** — padrão visual bastante diferente de `.inp-lei`,
  merece componente próprio se surgir necessidade real.
- ~~Sem página de documentação própria.~~ **Resolvido** — ver nota no topo
  do contrato. Achado desatualizado na auditoria de 21/set/2026.
