Saltar al contenido
El Muestrario

componente · @solu30/ui-kit/feedback

Sheet

Panel que entra deslizándose desde un borde de la pantalla, en seis anchos.

Seguir leyendo — 1 párrafo más

Sheet component for side panel layouts. Wraps modal state management and CSS transition animation logic.

127 sitios de import en 9 de 15 verticales — un archivo que la importa cuenta una vez, monte una instancia o veinte.

  • TheCharterPanel
  • carlosmartinpavon
  • cmp-packages
  • dietaly
  • easycharter
  • elliot
  • gestorsalon
  • luigi
  • raquetea

El componente, montado

Cargando el espécimen…

Éste es el conjunto completo. Abajo, los mismos casos por separado, cada uno con su código.

Cómo se usa

import { Sheet } from '@solu30/ui-kit/feedback'
<Sheet isOpen={abierto} onClose={() => setAbierto(false)} side="right" title="Filtros de la agenda">
  <p className="text-sm text-content/70">Rango de fechas, estado y salón.</p>
</Sheet>

Props

11 props declaradas en los tipos de la versión instalada.
PropRequeridaTipoQué hace
isOpensíboolean—
onClosesí() => void—
titleopcionalstring—
sideopcional"right" | "left" | "bottom"—
sizeopcionalSheetSize—
childrensíReactNode—
headeropcionalReactNode—
footeropcionalReactNode—
classNameopcionalstring—
keepMountedopcionalbooleanWhen true, the sheet content stays mounted in the DOM even when closed. Use this when children hold imperative handles (useImperativeHandle / forwardRef) that must remain live while the sheet is hidden — e.g. an editor whose ref is called before the sheet opens. @default false
manageHistoryopcionalbooleanSi este Sheet participa en la integración de historial del kit (pushState al abrir + el botón "atrás" lo cierra). Ver ADR-262. Default `true` — sin cambios de comportamiento para consumidores existentes. Poné `false` cuando `isOpen`/`onClose` YA están sincronizados con la URL de la app (Next.js App Router: `?param=` + `router.push`/`searchParams`) — en ese caso el router del framework ya hace "atrás cierra esto" nativamente, y el pushState propio del kit compite por `window.history` con la navegación del framework y puede abortarla (Navigation API: cualquier `history.pushState` aborta una navegación async en vuelo, sin importar el orden). @default true

Lados

Cuando el panel lateral necesita cambiar de lado según el contexto — el mismo panel controlado, con el lado decidido por quien lo abre.

Cargando el espécimen…

Composición

Cuando el panel necesita un header y un footer propios, o abrirse por los cuatro lados —incluido el lado superior, que el panel de una pieza no ofrece—: la API de composición con la raíz, el disparador y el contenido separados.

Cargando el espécimen…

Ejemplo del paquete

// El panel controlado de una sola pieza: trae overlay, título y cierre.
<Sheet isOpen={abierto} onClose={cerrar} title="Filtros" side="right" size="md">
  <Filtros />
</Sheet>

Del @example del JSDoc de @solu30/ui-kit, sin editar: son 65 de los 541 símbolos. La sangría y los renglones en blanco son los del paquete.