Skip to content

Resizable

Panel groups redimensionables por el usuario, tipo editor de código o split view.


Import

jsx
import {
  ResizablePanelGroup,
  ResizablePanel,
  ResizableHandle,
} from '@imansi/ui';

Uso básico (dos columnas)

jsx
<ResizablePanelGroup direction="horizontal" className="max-w-md rounded-lg border">
  <ResizablePanel defaultSize={50}>
    <div className="flex h-[200px] items-center justify-center p-6">
      <span className="font-semibold">Izquierda</span>
    </div>
  </ResizablePanel>
  <ResizableHandle />
  <ResizablePanel defaultSize={50}>
    <div className="flex h-[200px] items-center justify-center p-6">
      <span className="font-semibold">Derecha</span>
    </div>
  </ResizablePanel>
</ResizablePanelGroup>

Vertical

jsx
<ResizablePanelGroup direction="vertical">
  <ResizablePanel defaultSize={50}>Arriba</ResizablePanel>
  <ResizableHandle />
  <ResizablePanel defaultSize={50}>Abajo</ResizablePanel>
</ResizablePanelGroup>

Con 3 paneles

jsx
<ResizablePanelGroup direction="horizontal">
  <ResizablePanel defaultSize={20}>Sidebar</ResizablePanel>
  <ResizableHandle withHandle />
  <ResizablePanel defaultSize={60}>Main</ResizablePanel>
  <ResizableHandle withHandle />
  <ResizablePanel defaultSize={20}>Detail</ResizablePanel>
</ResizablePanelGroup>

Props

ResizablePanelGroup

PropTipoDefaultDescripción
direction'horizontal' | 'vertical''horizontal'Orientación
autoSaveIdstringGuarda el layout en localStorage

ResizablePanel

PropTipoDefaultDescripción
defaultSizenumberTamaño inicial (%)
minSizenumberTamaño mínimo (%)
maxSizenumberTamaño máximo (%)
collapsiblebooleanfalseSe puede colapsar

ResizableHandle

PropTipoDefaultDescripción
withHandlebooleanfalseMuestra un grip visual

Accesibilidad

  • Navegable con Tab
  • Flechas ← → (o ↑↓) redimensionan
  • Enter colapsa si collapsible={true}
  • role="separator" en el handle

Hecho con ❤️ en Argentina