Pular para o conteúdo

PressableFeedback

Camada de resposta ao toque: ondulação, destaque, segurar para confirmar e progresso.

O PressableFeedback (do HeroUI Pro) acrescenta uma resposta visual ao pressionar a qualquer elemento clicável. Ele não desenha o controle: entra como filho de um Button, de um ItemCard ou de um elemento próprio e escolhe um de quatro efeitos. É um complemento; o controle por baixo continua sendo o botão ou o link.

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

Ondulação

PressableFeedback.Ripple espalha uma ondulação a partir do ponto do toque e mostra um tom leve ao passar o ponteiro. Fica dentro do Button, antes do rótulo.

Destaque

PressableFeedback.Highlight ilumina o fundo do elemento sob o ponteiro e durante o toque, sem ondulação. É o efeito do Admin em linhas e cartões clicáveis.

Segurar para confirmar

PressableFeedback.HoldConfirm revela um preenchimento enquanto a pessoa segura; ao completar o tempo (duration, 2000 ms por padrão), chama onComplete. Soltar antes devolve o preenchimento. O conteúdo vai duas vezes: dentro do HoldConfirm (a versão sobre o preenchimento, com a cor do texto de cima) e depois como o rótulo normal.

Direção do preenchimento

sweep escolhe de onde o preenchimento cresce: right (padrão), left, up ou down.

Progresso

PressableFeedback.ProgressFeedback enche a barra depois de um clique, sem exigir que a pessoa segure. Quando acaba, chama onComplete e, depois de resetDelay (1500 ms), volta ao início (autoReset).

Desabilitado

Com o controle desabilitado, nenhum efeito aparece.

No Admin

Em Pedidos, Suporte e Domínios, cada linha clicável é um ItemCard com PressableFeedback.Highlight. O botão ou link vem do ItemCard; o destaque só responde ao ponteiro e ao teclado.

Anatomia

O componente é um conjunto de camadas que se posicionam dentro do elemento pressionável. Use uma por elemento.

ParteEfeitoQuando usar
PressableFeedback.RippleOndulação do ponto do toque.Botões.
PressableFeedback.HighlightFundo iluminado.Linhas e cartões clicáveis.
PressableFeedback.HoldConfirmPreenchimento enquanto segura.Ação rara e arriscada.
PressableFeedback.ProgressFeedbackBarra que enche depois do clique.Ação com espera curta.

Propriedades

Raiz (PressableFeedback):

Ondulação (PressableFeedback.Ripple):

Destaque (PressableFeedback.Highlight):

Segurar para confirmar (PressableFeedback.HoldConfirm):

Progresso (PressableFeedback.ProgressFeedback):

Animações

Todo o componente é movimento: a ondulação se expande (150 ms por padrão), o destaque aparece sob o ponteiro, e o HoldConfirm e o ProgressFeedback revelam o preenchimento por clip-path no tempo de duration. A folha global da fachada reduz transições CSS a 0,01 ms com prefers-reduced-motion; o Pro não documenta um tratamento próprio para esses efeitos, então teste o fluxo com movimento reduzido. Em qualquer caso o rótulo precisa dizer o gesto ("Segurar para Remover") e o resultado precisa aparecer em texto.

Acessibilidade

  • O efeito é só visual: o elemento por baixo (button, a) mantém o papel, o nome e o foco por teclado.
  • HoldConfirm exige manter o ponteiro pressionado, um gesto difícil por teclado e para quem tem pouca precisão motora. Nunca o use como única forma de concluir uma ação importante; ofereça também um diálogo de confirmação.
  • Anuncie o resultado: o contador do demo usa role="status".
  • Não passe só pela cor: o rótulo diz o que o botão faz.

Boas práticas

Faça

Um efeito por elemento: Highlight em linhas, Ripple em botões, HoldConfirm só para ação rara.

Evite

Empilhar Ripple e Highlight no mesmo botão, ou usar HoldConfirm para uma ação do dia a dia.
  • Use Highlight em listas clicáveis; ele é mais discreto que a ondulação.
  • Prefira AlertDialog para confirmar destruição; reserve HoldConfirm para atalhos de quem já sabe.
  • Em HoldConfirm e ProgressFeedback, mantenha duration entre 800 e 2000 ms.
  • Repita o texto do botão dentro do HoldConfirm e do ProgressFeedback, ou o rótulo some quando o preenchimento chega.

Relacionados

  • Button que recebe o Ripple e o Highlight.
  • AlertDialog para confirmar ações destrutivas.
  • Tooltip para explicar botões só de ícone.