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.
| Parte | Efeito | Quando usar |
|---|---|---|
PressableFeedback.Ripple | Ondulação do ponto do toque. | Botões. |
PressableFeedback.Highlight | Fundo iluminado. | Linhas e cartões clicáveis. |
PressableFeedback.HoldConfirm | Preenchimento enquanto segura. | Ação rara e arriscada. |
PressableFeedback.ProgressFeedback | Barra 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. HoldConfirmexige 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
Evite
- Use
Highlightem listas clicáveis; ele é mais discreto que a ondulação. - Prefira
AlertDialogpara confirmar destruição; reserveHoldConfirmpara atalhos de quem já sabe. - Em
HoldConfirmeProgressFeedback, mantenhadurationentre 800 e 2000 ms. - Repita o texto do botão dentro do
HoldConfirme doProgressFeedback, ou o rótulo some quando o preenchimento chega.
Relacionados
- Button que recebe o
Ripplee oHighlight. - AlertDialog para confirmar ações destrutivas.
- Tooltip para explicar botões só de ícone.