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
autoSaveIdstring—Guarda el layout en localStorage

ResizablePanel ​

PropTipoDefaultDescripción
defaultSizenumber—Tamaño inicial (%)
minSizenumber—Tamaño mínimo (%)
maxSizenumber—Tamañ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