Todos los componentes

MotionSheet

Una hoja inferior, una hoja superior o un cajón lateral con posiciones de anclaje, gestos rápidos y paso al scroll.

WebReact NativeSuperposiciones

Pruébalo

Preparando el ejemplo…

Uso mínimo

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

Lo que resuelve por ti

  • Sigue los arrastres, ofrece resistencia más allá de su posición más grande y se asienta con la velocidad con la que sueltas; un gesto rápido la mueve una posición o la cierra.
  • Los arrastres táctiles pasan al contenido con scroll: tirar hacia abajo desplaza el contenido hasta arriba antes de que se mueva la hoja.
  • Posiciones como fracciones de la pantalla, píxeles o 'content' para el tamaño natural del contenido.
  • Una hoja modal mantiene el foco dentro, deja la página inerte y se cierra con Escape o con el fondo.

Úsalo para

  • Un panel de filtros.
  • Un menú para compartir.
  • Un cajón de navegación con side="start".

Props

PropTipoPor defectoDescripción
openbooleanfalseSi la hoja se muestra.
onOpenChange(open) => voidSe ejecuta con false cuando la hoja se cierra arrastrando, tocando o con Escape.
detents(number | 'content')[]['content']Tamaños de reposo: una fracción de la pantalla, píxeles o 'content'.
detentnumberÍndice de posición controlado.
defaultDetentnumber0Índice de posición que se usa al abrir sin detent.
onDetentChange(index) => voidSe ejecuta con el índice de la posición en la que se asienta la hoja.
side'bottom' | 'top' | 'start' | 'end''bottom'El borde desde el que aparece la hoja.
modalbooleantrueAñade un fondo, mantiene el foco dentro y deja la página inerte.
dismissiblebooleantrueArrastrar más allá de la posición más pequeña, el fondo y Escape la cierran.
backdropClassNamestringClase para el fondo; backdropStyle fija su estilo en línea.
transitionTransitionspringUna curva de tiempo { duration, easing } o un resorte { tempo: 'spring', spring }. Los resortes conservan su impulso cuando se interrumpen.

Las demás props van al elemento renderizado, así que className, style y los manejadores de eventos funcionan como siempre.

Web y React Native

En la web, una hoja modal es un dialog nativo; el panel es una columna flex a la que das estilo con className.

En React Native se renderiza en un Modal transparente y el botón de retroceso la cierra. Los ScrollView internos conservan sus propios gestos, así que la hoja se arrastra desde su asa, su cabecera y otras zonas fijas.

Se usa en estos ejemplos

Buscar

Escribe para buscar en la documentación.