Get Started
Components
- Accordion
- Alert
- Alert Dialog
- Aspect Ratio
- Avatar
- Badge
- Breadcrumb
- Button
- Calendar
- Card
- Carousel
- Chart
- Checkbox
- Collapsible
- Combobox
- Command
- Context Menu
- Data Table
- Date Picker
- Dialog
- Drawer
- Dropdown Menu
- React Hook Form
- Hover Card
- Input
- Input OTP
- Label
- Menubar
- Navigation Menu
- Pagination
- Popover
- Progress
- Radio Group
- Resizable
- Scroll-area
- Select
- Separator
- Sheet
- Sidebar
- Skeleton
- Slider
- Sonner
- Switch
- Table
- Tabs
- Textarea
- Toast
- Toggle
- Toggle Group
- Tooltip
- Typography
Installation
One
Two
Three
import { ResizableHandle, ResizablePanel, ResizablePanelGroup, } from "@/components/ui/resizable" export function ResizableDemo() { return ( <ResizablePanelGroup direction="horizontal" className="max-w-md rounded-lg border md:min-w-[450px]" > <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
pnpm dlx shadcn@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.
Header
Content
import { ResizableHandle, ResizablePanel, ResizablePanelGroup, } from "@/components/ui/resizable" export function ResizableDemo() { return ( <ResizablePanelGroup direction="vertical" className="min-h-[200px] max-w-md rounded-lg border md:min-w-[450px]" > <ResizablePanel defaultSize={25}> <div className="flex h-full items-center justify-center p-6"> <span className="font-semibold">Header</span> </div> </ResizablePanel> <ResizableHandle /> <ResizablePanel defaultSize={75}> <div className="flex h-full items-center justify-center p-6"> <span className="font-semibold">Content</span> </div> </ResizablePanel> </ResizablePanelGroup> ) }
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.
Sidebar
Content
import { ResizableHandle, ResizablePanel, ResizablePanelGroup, } from "@/components/ui/resizable" export function ResizableHandleDemo() { return ( <ResizablePanelGroup direction="horizontal" className="min-h-[200px] max-w-md rounded-lg border md:min-w-[450px]" > <ResizablePanel defaultSize={25}> <div className="flex h-full items-center justify-center p-6"> <span className="font-semibold">Sidebar</span> </div> </ResizablePanel> <ResizableHandle withHandle /> <ResizablePanel defaultSize={75}> <div className="flex h-full items-center justify-center p-6"> <span className="font-semibold">Content</span> </div> </ResizablePanel> </ResizablePanelGroup> ) }
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> ) }
Deploy your shadcn/ui app on Vercel
Trusted by OpenAI, Sonos, Adobe, and more.
Vercel provides tools and infrastructure to deploy apps and features at scale.
Deploy to Vercel