Resizable Panels
Resizable Panels — a CSS-first, fully-tokened Resizable Panels component from SilicaUI. Accessible by default via Base UI, themeable with color × variant × size × shape props, and available in React, framework-neutral HTML, and a zero-dependency vanilla runtime. No runtime CSS-in-JS, no safelist.
Real use · sidebar + editor + preview
Vertical stack
Using Resizable Panels
Silica ships one design system through three paths. They share a class vocabulary but are not interchangeable — pick the one that matches what you are building.
Plain HTML — CSS classes
The Tailwind v4 plugin. Works in any framework or none — Rails, Django, PHP, Go, a static file. This path ships no JavaScript, so a component that needs interaction is styled but inert.
/* in your CSS */
@import "tailwindcss";
@plugin "@wizeworks/silicaui";Root class resizable-group, with 3 modifiers:
.resizable-group.resizable-handle.resizable-handle-grip.resizable-panel
React
Typed components over those same classes, with behavior and accessibility from Base UI.
npm i @wizeworks/silicaui-panelsimport { ResizablePanels } from "@wizeworks/silicaui-panels";Source of the demo above
The exact file that renders the examples above, so it can never drift from them. It imports a few of this site’s own layout helpers (../lib/…), so read it for the component calls rather than copying it whole.
Show source
import {
ResizablePanelGroup,
ResizablePanel,
ResizeHandle,
} from "@wizeworks/silicaui-panels";
import { Section } from "../lib/Section";
export function ResizablePanelsDemo() {
return (
<>
<Section title="Real use · sidebar + editor + preview">
<ResizablePanelGroup
direction="horizontal"
className="h-64 max-w-2xl rounded-box border border-base-300"
>
<ResizablePanel defaultSize={20} minSize={15}>
<div className="flex h-full items-center justify-center bg-base-200 text-sm">
Sidebar
</div>
</ResizablePanel>
<ResizeHandle />
<ResizablePanel defaultSize={50} minSize={30}>
<div className="flex h-full items-center justify-center text-sm">
Editor
</div>
</ResizablePanel>
<ResizeHandle />
<ResizablePanel defaultSize={30} minSize={15}>
<div className="flex h-full items-center justify-center bg-base-200 text-sm">
Preview
</div>
</ResizablePanel>
</ResizablePanelGroup>
</Section>
<Section title="Vertical stack">
<ResizablePanelGroup
direction="vertical"
className="h-64 max-w-md rounded-box border border-base-300"
>
<ResizablePanel defaultSize={50}>
<div className="flex h-full items-center justify-center bg-base-200 text-sm">
Top
</div>
</ResizablePanel>
<ResizeHandle />
<ResizablePanel defaultSize={50}>
<div className="flex h-full items-center justify-center text-sm">
Bottom
</div>
</ResizablePanel>
</ResizablePanelGroup>
</Section>
</>
);
}The full API for Resizable Panels, on every path, is available through the Silica MCP server.