Docs
Resizable
Resizable
Accessible resizable panel groups and layouts with keyboard support.
import { ResizableHandle, ResizablePanel, ResizablePanelGroup } from 'ui'
export function ResizableDemo() {
return (
<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">One</span>
</div>
</ResizablePanel>
<ResizableHandle />
<ResizablePanel defaultSize={50}>
<ResizablePanelGroup direction="vertical">
<ResizablePanel defaultSize={25}>
<div className="flex h-full items-center justify-center p-6">
<span className="font-semibold">Two</span>
</div>
</ResizablePanel>
<ResizableHandle />
<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>
)
}
About
The Resizable
component is built on top of react-resizable-panels by bvaughn.
Installation
npx shadcn-ui@latest add resizable
Usage
import { ResizableHandle, ResizablePanel, ResizablePanelGroup } from '@/components/ui/resizable'
<ResizablePanelGroup direction="horizontal">
<ResizablePanel>One</ResizablePanel>
<ResizableHandle />
<ResizablePanel>Two</ResizablePanel>
</ResizablePanelGroup>
Examples
Vertical
Use the direction
prop to set the direction of the resizable panels.
import { ResizableHandle, ResizablePanel, ResizablePanelGroup } from '@/components/ui/resizable'
export default function Example() {
return (
<ResizablePanelGroup direction="vertical">
<ResizablePanel>One</ResizablePanel>
<ResizableHandle />
<ResizablePanel>Two</ResizablePanel>
</ResizablePanelGroup>
)
}
Handle
You can set or hide the handle by using the withHandle
prop on the ResizableHandle
component.
import { ResizableHandle, ResizablePanel, ResizablePanelGroup } from '@/components/ui/resizable'
export default function Example() {
return (
<ResizablePanelGroup direction="horizontal">
<ResizablePanel>One</ResizablePanel>
<ResizableHandle withHandle />
<ResizablePanel>Two</ResizablePanel>
</ResizablePanelGroup>
)
}