Pular para o conteúdo
// visualizar em
salvo em todas as páginas

Input group

Grupo de entrada — uma caixa de campo em volta de um input e dos textos, ícones ou botões que fazem parte dele. PasswordInput e SearchInput são grupos prontos para os dois casos mais comuns.

Feito com Base UIPadrão HTML input + buttonComponente clienteCódigo ↗
minimal · light · #3fa34d

Pelo menos 8 caracteres, com um número.

size
disabled

Instalação

Configure o Camaleo uma vez (Instalação) e importe o que precisar. Coloque dentro de um Field para dar um rótulo.

import { InputGroup, InputAddon, PasswordInput, SearchInput, Input } from "@camaleo/react";

Anatomia

O grupo desenha uma borda e um anel de foco só. O input de dentro perde os dele, e complementos, ícones e botões ficam nas pontas.

https://inputbotão
[data-slot="input-group"][data-slot="input-addon"] · [data-slot="icon"] · [data-slot="input-group-button"][data-slot="input-group-input"]

Exemplos

Cada exemplo é um arquivo real que você pode copiar. Todos usam o estilo, o modo e a cor escolhidos na barra acima.

minimal · light · #3fa34d

Pelo menos 8 caracteres, com um número.

Senha com regras ao vivo

Digite uma senha. Com o texto visível, a pessoa pega o erro de digitação antes que uma regra como "um número" recuse a senha duas vezes.

2 de 6 notas

  • NF 1042 · Acme Ltda.
  • NF 1045 · Acme Serviços

Busca com limpar

Digite e depois aperte o × ou Esc. Limpar dispara o onChange e devolve o foco ao input, e a contagem é anunciada com aria-live.

Aperte / em qualquer lugar da página para vir para cá.

Atalho de teclado

Aperte / fora de um campo. O shortcut só desenha a dica com o campo vazio: ligue a tecla você mesmo e declare com aria-keyshortcuts.

O endereço público da sua loja. O https:// a gente coloca.

URL com prefixo

A parte fixa fica num InputAddon, então a pessoa digita só o domínio e o valor salvo não tem "https://" para limpar.

R$/mês

Moeda e período

A moeda antes e o período depois dizem o que o número significa, então o rótulo pode ser curto.

Botão de copiar

Clique em Copiar. Um Button dentro do grupo divide a borda, e o novo texto é anunciado, então a pessoa sabe que funcionou.

Ícone à esquerda

O ícone ajuda a pessoa a percorrer um formulário longo, mas é decoração: marque aria-hidden e deixe o rótulo dar o nome.

.camaleo.app
acme.camaleo.app já está em uso. Tente acme-design.

Inválido

Num Field inválido o grupo inteiro fica vermelho, complemento incluído, e o erro diz o que tentar no lugar.

Em contexto

São pedaços inteiros de interface para copiar, no estilo que você escolheu.

Entre na Pão Quente

Use o e-mail que recebeu o convite.

Esqueceu a senha?
Cartão de loginCard · Field · InputGroup · PasswordInput · Button
Pão Quente
Busca no cabeçalho do appSearchInput · Button

Configurações da loja

O que o cliente vê na página de pagamento.

R$/mês
Configurações da lojaCard · Field · InputGroup · InputAddon · Button

Boas práticas

FaçaParte fixa num complemento.

A pessoa digita só o que muda e não tem como errar o prefixo.

EviteObrigar a digitar a parte fixa.

Metade esquece o "https://", a outra metade digita duas vezes.

FaçaUm campo de senha com botão de mostrar.

A pessoa confere o que digitou olhando.

EviteUm segundo campo para confirmar a senha.

Dobra a digitação e ainda não mostra um erro repetido nos dois campos.

Props

PasswordInput e SearchInput recebem todas as props do Input, mais as próprias:

PropriedadeTipoPadrãoDescrição
size"md" | "sm""md"Altura do campo. sm para barras de ferramentas e tabelas densas.
showLabelstring"Show password"Nome acessível do botão de visibilidade enquanto a senha está oculta (traduzível).
hideLabelstring"Hide password"Nome acessível do botão de visibilidade enquanto a senha está visível (traduzível).
disabledboolean—Desativa o input e o botão de mostrar.
Aceita também todas as props da primitiva por baixo e os atributos nativos.
PropriedadeTipoPadrãoDescrição
size"md" | "sm""md"Altura do campo. sm para barras de ferramentas e tabelas densas.
clearLabelstring"Clear search"Nome acessível do botão de limpar (traduzível).
shortcutReactNode—Dica de teclado mostrada com o campo vazio, como "Ctrl K". Use junto com aria-keyshortcuts.

O InputGroup recebe size e os atributos de uma <div>; o InputAddon, os de um <span>.

Styling hooks

Mude o visual sem copiar o componente: use os atributos ou defina os tokens num elemento pai, num estilo ou no próprio grupo.

Atributos

data-slot"input-group" · "input-group-input" · "input-addon" · "input-group-button"
data-size"sm" · "md" no grupo
data-pressedno botão de senha enquanto o texto está visível
data-invalidno input quando o Field é inválido; o grupo fica vermelho junto

Tokens que ele lê

Cor

--cml-border--cml-border-control--cml-danger--cml-fg--cml-fg-muted--cml-fg-secondary--cml-field-bg--cml-field-border-sides--cml-field-shadow--cml-focus-offset--cml-focus-ring--cml-focus-width--cml-input-button-on-bg

Forma e tamanho

--cml-control-height-sm--cml-control-padding-sm--cml-field-border-width--cml-field-height--cml-field-padding--cml-font-size-field--cml-gap--cml-radius-control--cml-radius-control-sm--cml-radius-field

Tipografia e movimento

--cml-duration-fast--cml-ease-standard--cml-font-field--cml-font-size-control-sm

Só deste componente

--cml-corner-shape--cml-disabled-opacity--cml-input-addon-fg--cml-item-highlight--cml-placeholder-style
/* complementos sem fundo, só no checkout */
.checkout [data-slot="input-group"] {
  --cml-input-addon-bg: transparent;
}

Acessibilidade

TabLeva o foco ao input e depois ao botão de mostrar/ocultar ou de limpar.
Enter · SpaceNo botão de mostrar/ocultar: mostra ou oculta a senha. No botão de limpar: limpa a busca.
EscapeNum SearchInput: limpa o texto (comportamento de busca do navegador).

Relacionados

Esta página foi útil? · Editar esta página no GitHub