T2 EducaçãoMidas

Field

Estrutura de campo de formulário: Field, FieldLabel (com required e badge), FieldDescription, FieldError e FieldGroup. Orientação vertical ou horizontal, estados inválido e desabilitado.

Código-fonte

Exemplos

Interaja com o componente e copie o código de cada exemplo.

Básico

Escolha um nome de usuário único.

Obrigatório

Precisamos dele para o suporte.

Com badge

Horizontal

Grade

Formulário completo

Nunca compartilhamos seu e-mail.

import {
  Field,
  FieldDescription,
  FieldError,
  FieldGroup,
  FieldLabel,
  Label,
} from "@t2-educacao/midas";

Uso

<Field>
  <FieldLabel htmlFor="usuario">Usuário</FieldLabel>
  <Input id="usuario" placeholder="seu.usuario" />
  <FieldDescription>Escolha um nome de usuário único.</FieldDescription>
</Field>

Componentes

ComponenteO que é
FieldAgrupa label, controle, descrição e erro (8px entre eles)
FieldLabelLabel do campo. required mostra o asterisco
FieldDescriptionTexto de apoio em cinza
FieldErrorMensagem de erro em vermelho, anunciada como alerta. Não renderiza nada sem conteúdo
FieldGroupEmpilha vários Field com 24px entre eles
LabelLabel simples, para usar fora de um Field

Props

Field

PropTipoPadrãoDescrição
orientation"vertical" | "horizontal""vertical"Label acima do campo ou ao lado
invalidbooleanfalseDeixa o label vermelho
disabledbooleanfalseDeixa label e descrição esmaecidos

FieldLabel

PropTipoDescrição
htmlForstringid do campo (obrigatório para acessibilidade)
requiredbooleanMostra * em vermelho

Exemplos

Grupo de campos

<FieldGroup>
  <Field>
    <FieldLabel htmlFor="nome">Nome</FieldLabel>
    <Input id="nome" />
  </Field>
  <Field>
    <FieldLabel htmlFor="email">E-mail</FieldLabel>
    <Input id="email" type="email" />
    <FieldDescription>Vamos mandar novidades para este endereço.</FieldDescription>
  </Field>
</FieldGroup>

Inválido

<Field invalid>
  <FieldLabel htmlFor="cpf">CPF</FieldLabel>
  <Input id="cpf" aria-invalid aria-describedby="cpf-erro" />
  <FieldError id="cpf-erro">Este CPF é inválido.</FieldError>
</Field>

Obrigatório

<Field>
  <FieldLabel htmlFor="telefone" required>Telefone</FieldLabel>
  <Input id="telefone" required />
</Field>

Desabilitado

<Field disabled>
  <FieldLabel htmlFor="plano">Plano</FieldLabel>
  <Input id="plano" disabled value="Assinatura anual" />
</Field>

Com badge no label

<Field>
  <FieldLabel htmlFor="webhook">
    Webhook <Badge>Beta</Badge>
  </FieldLabel>
  <Input id="webhook" placeholder="https://api.exemplo.com/webhook" />
</Field>

Em grade

<div className="grid grid-cols-2 gap-4">
  <Field>
    <FieldLabel htmlFor="nome">Nome</FieldLabel>
    <Input id="nome" />
  </Field>
  <Field>
    <FieldLabel htmlFor="sobrenome">Sobrenome</FieldLabel>
    <Input id="sobrenome" />
  </Field>
</div>

Acessibilidade

  • Ligue sempre FieldLabel htmlFor ao id do campo.
  • Ligue descrição e erro com aria-describedby.
  • required no label é só visual: coloque required também no campo.
  • FieldError tem role="alert": o erro é anunciado assim que aparece.

Não faça

  • Mostrar erro só com cor: sempre escreva a mensagem em FieldError.
  • Esconder o label e deixar só o placeholder.

On this page