Segue os arrastes, oferece resistência além do maior ponto de parada e se acomoda com a velocidade com que você solta; um gesto rápido move um ponto ou fecha.
Arrastes por toque passam para o conteúdo rolável: puxar para baixo rola o conteúdo de volta ao topo antes de o sheet se mover.
Pontos de parada como frações da tela, pixels ou 'content' para o tamanho natural do conteúdo.
Um sheet modal mantém o foco dentro, deixa a página inerte e fecha com Escape ou com o fundo.
Use para
Um painel de filtros.
Um menu de compartilhamento.
Uma gaveta de navegação com side="start".
Props
Prop
Tipo
Padrão
Descrição
open
boolean
false
Se o sheet está visível.
onOpenChange
(open) => void
Roda com false quando o sheet é fechado por arraste, toque ou Escape.
detents
(number | 'content')[]
['content']
Tamanhos de repouso: uma fração da tela, pixels ou 'content'.
detent
number
Índice controlado do ponto de parada.
defaultDetent
number
0
Índice do ponto de parada usado ao abrir sem detent.
onDetentChange
(index) => void
Roda com o índice do ponto em que o sheet se acomoda.
side
'bottom' | 'top' | 'start' | 'end'
'bottom'
A borda de onde o sheet vem.
modal
boolean
true
Adiciona um fundo, mantém o foco dentro e deixa a página inerte.
dismissible
boolean
true
Arrastar além do menor ponto de parada, o fundo e Escape o fecham.
backdropClassName
string
Classe do fundo; backdropStyle define o estilo inline.
transition
Transition
spring
Uma curva de tempo { duration, easing } ou uma mola { tempo: 'spring', spring }. As molas mantêm o embalo quando interrompidas.
As outras props vão para o elemento renderizado, então className, style e handlers de eventos funcionam normalmente.
Web e React Native
Na web, um sheet modal é um dialog nativo; o painel é uma coluna flex que você estiliza com className.
No React Native, ele é renderizado em um Modal transparente e o botão voltar o fecha. As ScrollViews internas mantêm os próprios gestos, então o sheet é arrastado pela alça, pelo cabeçalho e por outras áreas fixas.