GitHub

Resizable

Create horizontally or vertically resizable panel layouts.

Loading
Loading...
import {
  ResizableHandle,
  ResizablePanel,
  ResizablePanelGroup,
} from "@/components/ui/resizable";
 
export function ResizableDemo() {
  return (
    <ResizablePanelGroup
      className="max-w-sm rounded-lg border"
      orientation="horizontal"
    >
      <ResizablePanel defaultSize="50%">
        <div className="flex h-[200px] items-center justify-center p-6">
          <span className="font-semibold">One</span>
        </div>
      </ResizablePanel>
      <ResizableHandle withHandle />
      <ResizablePanel defaultSize="50%">
        <ResizablePanelGroup orientation="vertical">
          <ResizablePanel defaultSize="25%">
            <div className="flex h-full items-center justify-center p-6">
              <span className="font-semibold">Two</span>
            </div>
          </ResizablePanel>
          <ResizableHandle withHandle />
          <ResizablePanel defaultSize="75%">
            <div className="flex h-full items-center justify-center p-6">
              <span className="font-semibold">Three</span>
            </div>
          </ResizablePanel>
        </ResizablePanelGroup>
      </ResizablePanel>
    </ResizablePanelGroup>
  );
}

Installation

npx shadcn@latest add "https://ui.blode.co/r/styles/default/resizable"

Usage

import {
  ResizableHandle,
  ResizablePanel,
  ResizablePanelGroup,
} from "@/components/ui/resizable";
<ResizablePanelGroup orientation="horizontal">
  <ResizablePanel defaultSize="50%">Left</ResizablePanel>
  <ResizableHandle withHandle />
  <ResizablePanel defaultSize="50%">Right</ResizablePanel>
</ResizablePanelGroup>