Superpuestos@unozero-ai/ui

Sheet

Panel lateral sobre la página para el detalle o la edición de un registro sin perder el contexto de la lista.

Usar

import { Sheet } from "@unozero-ai/ui/react";

<Sheet></Sheet>

Detalle sin salir de la lista

Pulsa una llegada: el panel entra por la derecha con la reserva y la lista sigue detrás, en su sitio. Es el hueco que el kit React no tenía: antes, consultar un detalle pedía un modal o una página. heading y description pintan la cabecera con la ✕; el cuerpo hace scroll solo y las acciones del slot footer se quedan fijas al pie.

Va sobre el <dialog> nativo, como Modal: el foco entra al abrir, queda atrapado, vuelve a la fila que lo abrió y la página queda inerte. Tú controlas open y lo cierras en onClose, que llega con Esc, el clic fuera o la ✕. active en la fila deja claro de quién es el panel.

PagadaAnticipoPagada
Habitación
204 · Doble Estándar
Noches
3
Total
936.000 COP
Pago
Pagada por transferencia
CerrarHacer check-in

Lados y tamaños

side elige el borde: right por defecto, left para una navegación secundaria y bottom para móvil, donde ocupa todo el ancho y hasta el 85 % del alto. size fija el ancho de los laterales, de sm (384 px) a xl (896 px), y siempre deja 40 px de página a la vista; en el inferior no aplica. Entra y sale deslizándose desde su borde en 300 ms; cerrar a mitad de la entrada da la vuelta desde donde va.

Derecha (md)Izquierda (sm)Derecha (xl)Abajo

El lado por defecto: el detalle de lo que se pulsó en la lista.

Cambios sin guardar

Esc, el clic fuera y la ✕ no cierran directamente: emiten uz-request-close (onRequestClose), que es cancelable. Con preventDefault() el panel sigue abierto y puedes preguntar con confirm() antes de perder lo escrito. El botón «Cancelar» llama al método requestClose() para pasar por la misma pregunta.

Si nunca debe cerrarse por fuera, dismissible={false} apaga Esc y el clic fuera, y deja solo la ✕ y tus botones.

Laura Méndez · laura.mendez@correo.com

Editar huésped
CancelarGuardar cambios

Sheet, Modal o Popover

  • Sheet: el detalle o la edición de un registro mientras la lista importa. Se puede leer con la lista detrás y volver a ella sin perder el scroll.
  • Modal: una tarea corta que pide toda la atención y no puede quedarse a medias.
  • Popover: unos filtros o dos campos junto a su botón, sin bloquear la página.

API

Generada del custom-elements.json que publica @unozero-ai/ui. Las partes se estilan desde tu CSS con el nombre del elemento: uz-button::part(base).

Sheet · <uz-sheet>

PropTipoDefectoDescripción
openbooleanfalseAbierto o cerrado; se refleja como atributo.
headingstring""Título de la cabecera.
descriptionstring""Línea bajo el título que da el contexto.
side"right" | "left" | "bottom""right"Borde por el que entra: right, left o bottom.
size"sm" | "md" | "lg" | "xl""md"Ancho del panel lateral. No aplica a side="bottom".
dismissiblebooleantruefalse: ni Escape ni el clic fuera lo cierran (solo la ✕ y la app).
EventoDescripción
onRequestCloseCancelable. El usuario pidió cerrar.
onCloseEl panel se cerró.
SlotDescripción
(por defecto)El cuerpo, con scroll propio.
footerLas acciones, fijas al pie.
Parte CSSDescripción
uz-sheet::part(panel)El <dialog>.
uz-sheet::part(body)El cuerpo con scroll.
MétodoDescripción
requestClose()Cierre pedido por el usuario: se puede cancelar desde fuera.