Skip to content
Extensões

Input

Campo de entrada de texto com label, ícone opcional e mensagem de apoio. Suporta variante textarea. Dark mode automático via tokens semânticos.

components/input.cssAbrir no Figma

Padrão

Campo de texto simples. Interaja com o primeiro exemplo para ver hover e foco.

Carregando exemplo...

Com ícone

Ícone posicionado à direita do campo. No erro, o ícone também assume a cor de erro.

Carregando exemplo...

Textarea

Variante para textos longos. Usa a mesma classe `.input` aplicada ao elemento `textarea`.

Carregando exemplo...

Anatomia

Estrutura interna do componente e seus elementos.

ParteElementoDescrição
Grupo.input-groupWrapper flex column
Label.input-labelInter 14px medium, line-height 24px
Container.input-containerPosition relative para ícones
Campo.inputAltura 40px, padding 12px, radius 6px, borda 1px
Ícone.input-icon18x18, position absolute, pointer-events none
Helper.input-helperInter 12px regular, margin-top 4px

Propriedades

Classes disponíveis para configurar o input.

PropriedadeTipoDefaultDescrição
.input-groupclasseWrapper flex column do campo.
.input-labelclasseLabel do campo (14px medium).
.input-label-requiredclasseAdiciona asterisco vermelho ao label.
.input-containerclasseContainer relativo para posicionar ícones.
.inputclasseCampo de entrada (input ou textarea).
.input-iconclasseÍcone posicionado dentro do campo (18x18).
.input-icon-rightclassePosiciona o ícone à direita.
.input-has-icon-rightclasseAplica padding-right no input para acomodar o ícone.
.input-helperclasseTexto de apoio abaixo do campo (12px).
.has-errorclasseAplicar no .input-group para ativar estado de erro.

Código

Snippets prontos para copiar e usar no seu projeto.

Input simples

html
<div class="input-group">
    <label class="input-label">Nome completo</label>
    <div class="input-container">
        <input type="text" class="input" placeholder="Digite seu nome">
    </div>
</div>

Input com ícone

html
<div class="input-group">
    <label class="input-label">Pesquisar</label>
    <div class="input-container">
        <input type="text" class="input input-has-icon-right" placeholder="Buscar...">
        <span class="input-icon input-icon-right">
            <!-- SVG do ícone (18x18, viewBox 48x48) -->
        </span>
    </div>
</div>

Input com erro

html
<div class="input-group has-error">
    <label class="input-label">E-mail</label>
    <div class="input-container">
        <input type="email" class="input" value="email-invalido">
    </div>
    <span class="input-helper">Informe um e-mail válido</span>
</div>

Label obrigatório

html
<div class="input-group">
    <label class="input-label input-label-required">Campo obrigatório</label>
    <div class="input-container">
        <input type="text" class="input" placeholder="Preencha este campo">
    </div>
</div>

Textarea

html
<div class="input-group">
    <label class="input-label">Descrição</label>
    <div class="input-container">
        <textarea class="input" placeholder="Digite uma descrição"></textarea>
    </div>
</div>

Desativado

html
<div class="input-group">
    <label class="input-label">Campo bloqueado</label>
    <div class="input-container">
        <input type="text" class="input" placeholder="Indisponível" disabled>
    </div>
</div>

Tokens utilizados

Variáveis semânticas aplicadas ao componente.

TokenUso
--surface-base-neutral-container-defaultBackground do campo
--surface-base-neutral-container-hoverBackground no hover
--surface-base-neutral-container-emphasisBackground no disabled
--border-base-neutral-defaultBorda padrão
--border-base-neutral-strongBorda no foco
--border-base-neutral-subtleBorda no disabled
--border-base-error-defaultBorda no erro
--text-base-neutral-defaultCor do label e texto digitado
--text-base-neutral-subtleCor do placeholder
--text-base-error-defaultCor do texto e helper no erro
--icon-base-neutral-defaultCor do ícone
--icon-base-error-defaultCor do ícone no erro
--radius-defaultBorder-radius do campo (6px)
--spacing-2Padding vertical / gap label→campo (8px)
--spacing-3Padding horizontal (12px)
--spacing-1Gap campo→helper (4px)

Design System interno do GALES