Todos os componentes

MotionSheet

Um bottom sheet, top sheet ou gaveta lateral com pontos de parada, gestos rápidos e passagem para a rolagem.

WebReact NativeSobreposições

Experimente

Preparando o exemplo…

Uso mais curto

Filters.jsx
<MotionSheet open={open} onOpenChange={setOpen} detents={[0.45, 0.92]}>
  <FilterList />
</MotionSheet>;

O que ele resolve para você

  • 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

PropTipoPadrãoDescrição
openbooleanfalseSe o sheet está visível.
onOpenChange(open) => voidRoda 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'.
detentnumberÍndice controlado do ponto de parada.
defaultDetentnumber0Índice do ponto de parada usado ao abrir sem detent.
onDetentChange(index) => voidRoda com o índice do ponto em que o sheet se acomoda.
side'bottom' | 'top' | 'start' | 'end''bottom'A borda de onde o sheet vem.
modalbooleantrueAdiciona um fundo, mantém o foco dentro e deixa a página inerte.
dismissiblebooleantrueArrastar além do menor ponto de parada, o fundo e Escape o fecham.
backdropClassNamestringClasse do fundo; backdropStyle define o estilo inline.
transitionTransitionspringUma 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.

Usado nestes exemplos

Pesquisar

Digite para pesquisar na documentação.