UI

Sheet

Painel que desliza de uma borda da tela, ideal para menu mobile, filtros de listagem e edição rápida sem sair da página.

Instalação

npx shadcn@latest add @lenstech/sheet

Uso

import { Button } from "@/components/ui/button"
import {
  Sheet,
  SheetClose,
  SheetContent,
  SheetDescription,
  SheetFooter,
  SheetHeader,
  SheetTitle,
} from "@/components/ui/sheet"
<Sheet>
  <Button variant="outline">Abrir</Button>
  <SheetContent side="right">
    <SheetHeader>
      <SheetTitle>Perfil da loja</SheetTitle>
      <SheetDescription>Dados exibidos no rodapé do site.</SheetDescription>
    </SheetHeader>
    {/* conteúdo */}
    <SheetFooter>
      <SheetClose>Fechar</SheetClose>
    </SheetFooter>
  </SheetContent>
</Sheet>

Mesma mecânica do Dialog

O Sheet é um modal do React Aria com outra aparência: o primeiro filho de Sheet é o gatilho, o segundo é o SheetContent, e botões com slot="close" (como SheetClose) fecham o painel. Foco preso, Esc e bloqueio de rolagem funcionam igual ao Dialog.

Exemplos

Lados

Use side para escolher de qual borda o painel desliza: top, right (padrão), bottom ou left.

Um caso clássico em sites institucionais: o botão de menu abre a navegação pela esquerda. Use a função close para fechar o painel ao escolher um link.

Filtros

Filtros de listagem em um painel lateral mantêm a lista visível ao fundo. As escolhas só são aplicadas ao confirmar.

Exibindo: Pendente

Quando usar

  • Use para navegação no mobile, filtros de listagens e edição rápida mantendo o contexto da página.
  • Use quando o conteúdo é maior do que cabe num Popover, mas não merece uma página.
  • Não use para confirmações — use Alert Dialog.
  • Não use para mensagens curtas centradas — use Dialog.

API

Sheet

Mesmo componente que Dialog (DialogTrigger do React Aria): aceita isOpen, defaultOpen e onOpenChange.

SheetContent

Aceita todas as props do Dialog do React Aria, mais:

Prop

Type

Demais partes

Prop

Type

On this page