Pular para o conteúdo

Search

Campo de busca em pílula com ícone, rótulo opcional e botão de limpar.

Em cada stack

HTML e Astro
Classes itps-* do CSS Sinapse, com todas as variantes desta página.
React e Vue
Componente Sinapse, com as variantes desta página (add @sinapse/search).

Instalação

O comando instala o componente Search do Sinapse: pílula, tamanhos, rótulo em linha e botão “Limpar busca”. Não é o Input Group do shadcn. Configure o registry uma vez por projeto em Comece por aqui.

terminal · React/Next

pnpm dlx shadcn@latest add @sinapse/search

terminal · Vue 3/Nuxt 4

pnpm dlx shadcn-vue@latest add https://dsystem.sinapse.org.br/r/vue/search.json

Sem shadcn, não há instalação por componente: use o CSS Sinapse e as classes da API copy-first desta página.

Uso

Use itps-search para busca principal ou filtros de lista. O input é nativo type="search"; o botão de limpar usa os atributos data-itps-search-input e data-itps-search-clear; o comportamento fica por conta do produto (o script deste site não é distribuído).

Em React/Next com shadcn/ui e Vue 3/Nuxt 4 com shadcn-vue, use Search. As props vão para o input nativo; size (sm, md, lg), floating e label seguem os modificadores do HTML. O botão de limpar esvazia o campo, devolve o foco e chama onClear (React) ou emite clear (Vue); em Vue, use v-model. Para HTML ou wrappers finos, use itps-search e os hooks data-itps-search*.

Exemplos

Composições

Use os modificadores de escala quando a busca participa de layouts densos ou destacados. O rótulo em linha fica dentro da pílula (label no componente); sem ele, dê nome ao campo com aria-label.

API copy-first

Classe/atributoUso
itps-searchContêiner visual da busca.
itps-search--smAltura compacta de 40px.
itps-search--lgAltura ampla de 56px.
itps-search--floatingSuperfície destacada para busca global ou hero.
itps-search__iconÍcone decorativo de busca.
itps-search__labelLabel inline opcional.
itps-search__inputControle nativo type="search".
itps-search__clearBotão opcional para limpar a busca.
data-itps-search*Atributos lidos pelo script do produto (este site usa src/scripts/forms.ts).
aria-labelNomeia busca sem label visível e botão de limpar.
aria-hidden="true"Esconde ícones decorativos de tecnologias assistivas.

Acessibilidade

Quando houver label visível, conecte for e id. O botão de limpar deve ser button type="button" com aria-label. Mantenha a lupa e o X decorativos com aria-hidden="true" quando o controle já tiver nome acessível.