Basel Standard

Basel Standard / Docs

Resizable

Adjustable panel layout primitives for dense product workspaces that need user-controlled balance.

Navigation
Collections
Issues
Assets
Workspace
Issue overview
Resize the split to bias the interface toward navigation or content without changing route structure.

Resizable panels are for workspaces where the right balance changes by task. The Swiss wrapper keeps the panel API close to react-resizable-panels, then adds quieter dividers and an optional handle treatment that fits the rest of the system.

Installation

Install
Purchase access, then open /account/install to issue a registry token.

Usage

import {
  ResizableHandle,
  ResizablePanel,
  ResizablePanelGroup,
} from "@/components/ui/resizable"
<ResizablePanelGroup orientation="horizontal">
  <ResizablePanel defaultSize={35}>Navigation</ResizablePanel>
  <ResizableHandle withHandle />
  <ResizablePanel defaultSize={65}>Content</ResizablePanel>
</ResizablePanelGroup>

Why This Primitive Exists

Some interfaces should adapt without sending the user into a different layout mode.

  • Use resizable panels for dense product surfaces like archives, operations tools, and review workspaces.
  • Prefer them when two or more panes stay relevant, but the user may need to bias attention toward one of them.
  • Avoid them for simple marketing or document pages where the split adds control without adding clarity.

Examples

Basic Horizontal Split

The baseline pattern is a side navigation or inspector paired with a larger work area.

Navigation
Collections
Issues
Assets
Workspace
Issue overview
Resize the split to bias the interface toward navigation or content without changing route structure.
<ResizablePanelGroup orientation="horizontal">
  <ResizablePanel defaultSize={38} minSize={24}>Sidebar</ResizablePanel>
  <ResizableHandle withHandle />
  <ResizablePanel defaultSize={62} minSize={40}>Main panel</ResizablePanel>
</ResizablePanelGroup>

Vertical Stacks

Vertical groups work well when one pane summarizes the state and the other carries detail, activity, or logs.

Summary
Revenue projection and release timing stay visible in the upper pane.
Activity
Pricing approved by finance
Editorial assets attached
Final review scheduled for 16:00
<ResizablePanelGroup orientation="vertical">
  <ResizablePanel defaultSize={48}>Summary</ResizablePanel>
  <ResizableHandle />
  <ResizablePanel defaultSize={52}>Activity</ResizablePanel>
</ResizablePanelGroup>

In Context

For product tools, resizable panels often sit inside a card or page shell rather than becoming a special full-screen system.

Operations layout

Resizable panels help dense tools balance navigation, detail, and live review.

The split lives inside a normal card shell, which keeps the interaction legible without turning it into a special layout system.

Queues
Pending review
Approved
Scheduled
Published
Selected issue
Basel Edition 06
Cover story, release notes, and distribution rules remain editable in the main pane.
Review log
Legal approved asset rights
Pricing export attached
Subscriber note drafted

Guidance

Start With A Real Layout Need

  • Add a resizable split when users genuinely need to rebalance adjacent panes.
  • If one pane is rarely useful, hide or collapse it instead of making it resizable.
  • Keep the default ratio sensible so the layout still works before anyone drags a handle.

Protect Minimum Sizes

  • Set minSize for panes that need a readable lower bound.
  • Use larger minimums for forms, tables, and inspectors with fixed metadata rows.
  • Do not rely on the handle alone to keep a panel usable.

Keep Pane Roles Clear

  • Use the left or top pane for navigation, lists, or overview.
  • Use the right or bottom pane for editing, detail, or contextual review.
  • Add the visible withHandle grip when the resize affordance should be more explicit.

API Reference

Exports

ExportRendersNotes
ResizablePanelGroupreact-resizable-panels groupFlex wrapper that switches layout direction from the orientation prop.
ResizablePanelreact-resizable-panels panelIndividual pane with the upstream sizing API.
ResizableHandlereact-resizable-panels resize handleDivider line with optional visible grip.

Notable Props

ExportPropTypeNotes
ResizablePanelGrouporientation"horizontal" | "vertical"Sets the layout axis.
ResizablePanelGroupclassNamestringExtends the base flex container.
ResizablePaneldefaultSizenumberInitial percentage size.
ResizablePanelminSize, maxSizenumberBounds to keep panels usable.
ResizablePanelcollapsible, collapsedSizeupstream panel propsUse when a pane may intentionally collapse.
ResizableHandlewithHandlebooleanAdds the small visible grip inside the divider.
ResizableHandleclassNamestringExtends the divider styling.

Visual Notes

AreaDetail
DividerThin border line by default so the split stays structural, not decorative.
Handle targetInvisible hit area remains wider than the line for easier dragging.
Vertical groupsThe same handle adapts to horizontal divider placement automatically.

The component family is intentionally close to react-resizable-panels, so the upstream panel persistence and callback props remain available.