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.TriggereSheet.Close: envolvem o botão que abre e o que fecha.Sheet.Backdrop: o fundo (opaque,bluroutransparent).Sheet.ContenteSheet.Dialog: o painel e a superfície do diálogo.Sheet.HeadereSheet.Heading: o cabeçalho com o título.Sheet.BodyeSheet.Footer: o conteúdo com rolagem e as ações.Sheet.HandleeSheet.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.Headingnomeia o diálogo poraria-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
Evite
- Desktop:
placement="right"; celular: o painel sobe pela base. - Um painel por vez; evite
Sheetaninhado. - 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.