Pular para o conteúdo

CloseButton

Botão de fechar para dispensar avisos, painéis e diálogos.

O CloseButton é o "X" padrão para dispensar conteúdo: um aviso de duplicidade, os detalhes de um Pedido, um painel. Ele já traz o ícone e o foco da fachada. Para uma ação com texto (Cancelar, Concluir), use Button; para fechar um Modal ou Sheet, use o fechar embutido neles.

import { CloseButton } from "@rastreio-x/ui";

Padrão

Sempre com aria-label: o botão só tem um ícone.

Estados

onPress trata a ação e isDisabled bloqueia.

Em um aviso

Dentro de um Alert, ele dispensa a mensagem. Diga no rótulo qual aviso é.

No cabeçalho de um painel

Título à esquerda e o botão à direita, com o rótulo citando o objeto.

Anatomia

O CloseButton é uma peça só: um botão com o ícone de fechar (substituível pelos filhos).

Propriedades

CloseButton
PropTipoPadrãoDescrição
aria-labelstring-Nome acessível, lido por leitores de tela quando não há rótulo visível.
autoFocusboolean-Foca o elemento ao renderizar.
childrenChildrenOrFunction<ButtonRenderProps>-Conteúdo do componente.
classNameClassNameOrFunction<ButtonRenderProps>'react-aria-Button'Classes CSS aplicadas ao elemento.
excludeFromTabOrderboolean-Tira o elemento da ordem do Tab. Evite, salvo quando há outro caminho pelo teclado.
formstring-Id do `<form>` ao qual o elemento está associado.
formActionstring | ((formData: FormData) => void | Promise<void>)-URL ou função que processa o envio; sobrescreve a ação do formulário.
formEncTypestring-Codificação dos dados enviados pelo formulário.
formMethodstring-Método HTTP do envio do formulário.
formNoValidateboolean-Desativa a validação nativa do formulário no envio.
formTargetstring-Janela de destino do envio; sobrescreve a do formulário.
idstring-Identificador único do elemento.
isDisabledboolean-Desabilita o componente: sem foco, clique nem envio.
isPendingboolean-Estado de carregamento: bloqueia novos cliques, mantém o foco e anuncia o estado a leitores de tela.
namestring-Nome do campo enviado com o formulário.
onPress((e: PressEvent) => void)-Chamada ao soltar o clique, o toque ou a tecla sobre o elemento.
preventFocusOnPressboolean-Impede que o foco vá para o elemento ao pressioná-lo. Pode prejudicar a acessibilidade.
renderDOMRenderFunction<'button', ButtonRenderProps>-Troca o elemento DOM padrão por outro, mantendo o comportamento e as props do componente.
styleStyleOrFunction<ButtonRenderProps>-Estilos em linha aplicados ao elemento.
type'button' | 'submit' | 'reset''button'Tipo do elemento; define o comportamento nativo (em botões, `button`, `submit` ou `reset`).
valuestring-Valor atual (controlado). Em campos de formulário, é o valor enviado.
variant'default'-Variante visual do componente.

Animações

  • CSS
  • indicativo

Só há transição de cor no hover e o encolhimento ao pressionar. Com prefers-reduced-motion, a folha global da fachada reduz as transições a 0,01 ms.

Acessibilidade

  • É um <button>: Enter e Espaço ativam, e o foco visível usa o token --focus.
  • aria-label obrigatório e específico ("Fechar detalhes do Pedido ped-8"), porque o ícone não tem texto.
  • A área de toque tem pelo menos 24 px no desktop; use className="size-11" no celular se estiver perto de outros alvos.
  • Ao fechar, mova o foco para um elemento que faça sentido (o gatilho do painel, por exemplo).

Boas práticas

Faça

Rótulo que cita o objeto e foco devolvido ao gatilho depois de fechar.

Evite

CloseButton sem aria-label, ou avisos importantes que só se dispensam e somem sem registro.
  • Em erros e avisos importantes, deixe o texto visível por mais tempo ou ofereça uma ação.
  • Posicione sempre no canto superior direito do contêiner.
  • Não coloque dois botões de fechar na mesma camada.

Relacionados

  • Alert para o aviso que o botão dispensa.
  • Modal e Sheet, que já incluem o fechar.
  • Button para ações com texto.