SearchField
Campo de busca com ícone, botão de limpar e envio por Enter.
O SearchField é o campo de busca do Admin: ícone de lupa, texto e um botão de limpar que só aparece quando há texto. É a peça de busca da barra de filtros da lista de Pedidos. Para texto livre em formulários use TextField; para escolher entre opções conhecidas, Select.
import { SearchField } from "@rastreio-x/ui";
Padrão
A composição é SearchField.Group com SearchIcon, Input e ClearButton. Sem rótulo visível, aria-label é obrigatório.
Variantes
primary tem sombra suave; secondary não tem, e é a variante para usar em cartões e barras de filtro.
Filtro ao digitar
Com value e onChange você filtra a cada tecla. Serve para listas locais pequenas; anuncie o resultado em uma região aria-live.
Envio por Enter
onSubmit recebe o texto ao pressionar Enter e onClear avisa quando o botão (ou Esc) limpa o campo. É o padrão da lista de Pedidos: a busca vai ao servidor só quando a pessoa confirma.
Estados
Preenchido, com o botão de limpar visível, e desabilitado.
Anatomia
SearchField.Group: o contêiner que desenha o campo.SearchField.SearchIcon: a lupa, decorativa.SearchField.Input: o campo de texto, complaceholder.SearchField.ClearButton: limpa o texto; some quando o campo está vazio.
Propriedades
Raiz (SearchField):
Campo (SearchField.Input):
Botão de limpar (SearchField.ClearButton):
Animações
O botão de limpar aparece e some com uma transição curta de opacidade do HeroUI, e o foco troca o fundo do campo com transição de cor. Com prefers-reduced-motion, a folha global da fachada reduz tudo a 0,01 ms.
Acessibilidade
- O campo tem papel
searchbox; o grupo ao redor fica dentro de uma regiãorole="search"quando está numFilterBar. - Sem
Labelvisível, passearia-labelaoSearchField: busca sem nome acessível é falha. - Esc limpa o texto; Enter dispara
onSubmit. O botão de limpar é focável e tem nome (Limpar busca). - A lupa é
aria-hidden. Anuncie contagem de resultados em uma regiãoaria-live="polite". - O anel de foco mantém 3:1 contra a superfície; o texto, 4,5:1.
Boas práticas
Faça
Evite
- Prefira
onSubmitquando a busca vai ao servidor; filtre ao digitar só em listas locais. - Mostre o estado vazio explicando que nenhum item combina e como limpar a busca.
- Use
variant="secondary"em cartões e barras de filtro. - Mantenha o texto buscado na URL quando a lista é uma página navegável.
Relacionados
- FilterField a barra de filtros onde a busca mora.
- TextField para texto livre em formulários.
- Select para opções conhecidas.
- Input o campo simples de uma linha.