Pular para o conteúdo

Sheet

Painel deslizante para detalhes e edição sem sair da tela.

O Sheet (do HeroUI Pro) abre um painel pela borda da tela para mostrar detalhes ou editar um objeto: a tentativa de um Pedido, o Preview da Jornada, uma rota. No celular ele sobe pela base e pode ser arrastado para fechar. Para uma tarefa curta use Modal.

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

Padrão

Sheet.Trigger envolve o botão que abre. O conteúdo fica em Sheet.Backdrop > Sheet.Content > Sheet.Dialog. Sheet.Close envolve um botão que fecha.

Posições

placement define a borda de entrada: right (padrão do Admin em desktop), left, bottom e top. Sheet.Handle aparece na borda do arrasto.

Com formulário

Edição em painel lateral, com os botões de salvar e cancelar no rodapé.

Controlado

Com isOpen e onOpenChange você abre o painel por qualquer evento. Devolva o foco ao botão que o abriu ao fechar.

Sem fechar por fora

isDismissable={false} impede fechar ao clicar fora ou arrastar. Use quando houver trabalho que não pode ser perdido.

Anatomia

  • Sheet.Trigger e Sheet.Close: envolvem o botão que abre e o que fecha.
  • Sheet.Backdrop: o fundo (opaque, blur ou transparent).
  • Sheet.Content e Sheet.Dialog: o painel e a superfície do diálogo.
  • Sheet.Header e Sheet.Heading: o cabeçalho com o título.
  • Sheet.Body e Sheet.Footer: o conteúdo com rolagem e as ações.
  • Sheet.Handle e Sheet.CloseTrigger: a alça de arrasto e o botão de fechar.

Propriedades

Raiz (Sheet):

Fundo (Sheet.Backdrop):

Animações

O painel desliza pela borda com transição CSS e responde ao arrasto no celular (a alça pode alternar pontos de parada). O fundo faz fade. Com prefers-reduced-motion, a folha global da fachada reduz as transições a 0,01 ms e o painel aparece sem deslizar.

Acessibilidade

  • Diálogo modal (React Aria): foco preso no painel, Esc fecha, o resto da página fica inerte.
  • Sheet.Heading nomeia o diálogo por aria-labelledby.
  • Sheet.CloseTrigger é um botão focável com nome acessível.
  • Devolva o foco ao elemento que abriu o painel ao fechar (a linha de uma lista, por exemplo).
  • Gestos de arrasto têm sempre alternativa por botão.

Boas práticas

Faça

Painel lateral para ver ou editar um objeto, com título que o nomeia e ação clara no rodapé.

Evite

Empilhar painéis, ou esconder ações essenciais fora do rodapé.
  • Desktop: placement="right"; celular: o painel sobe pela base.
  • Um painel por vez; evite Sheet aninhado.
  • Rodapé com cancelar e a ação principal; nunca só um "X".
  • Para tarefas de um passo, use Modal.

Relacionados

  • Modal para tarefas curtas e centradas.
  • AlertDialog para confirmar antes de fechar com perda.
  • DataGrid cujas linhas costumam abrir um Sheet.