Moodinary/UI

Resizable

Paneles donde el usuario decide el espacio (tabla + detalle). Arrastrá o usá flechas.

Dos paneles con un divisor que se arrastra o se mueve con teclado.

Instalación

shadcn
npx shadcn@latest add https://design.moodinary.com/r/resizable.json
import
import { Resizable } from "@moodinary/ui/components/resizable";

Ejemplos

Paneles

Lista y detalle. El tamaño es en porcentaje del panel inicial.

Equipos

4.º A · Equipo Ventas · Equipo Soporte

Detalle

Espacio para el detalle del equipo. Contenido ilustrativo.

Código
panels.tsx
import { Resizable } from "@moodinary/ui/components/resizable";

export default function ResizablePanels() {
	return (
		<Resizable
			end={
				<div>
					<h3 className="font-medium">Detalle</h3>
					<p className="mt-1 text-ink-2">
						Espacio para el detalle del equipo. Contenido ilustrativo.
					</p>
				</div>
			}
			label="Ancho de la lista de equipos"
			start={
				<div>
					<h3 className="font-medium">Equipos</h3>
					<p className="mt-1 text-ink-2">
						4.º A · Equipo Ventas · Equipo Soporte
					</p>
				</div>
			}
		/>
	);
}

Props

Resizable

PropTipoDefaultDescripción
startReactNode-Panel inicial.
endReactNode-Panel final.
defaultSizenumber40Tamaño inicial en %.
minSizenumber20Mínimo en %.
maxSizenumber80Máximo en %.
labelstring"Redimensionar"Nombre del divisor.
classNamestring-Clases extra.

Cuándo sí y cuándo no

Hacé
  • Poné límites para que ningún panel desaparezca.
  • Usalo en vistas de lista y detalle.
  • Nombrá el divisor.
Evitá
  • No lo uses en mobile como única forma de ver contenido.
  • No pongas más de dos paneles.
  • No guardes tamaños sin que la persona lo sepa.

Accesibilidad

  • El divisor es un separator con aria-valuenow.
  • Flechas mueven el divisor.