0.1.0-rc.2

Window Splitter

Window splitters divide a container into two resizable panes for code editor layouts, preview panels, or master-detail views.

Try it

Editor
Preview

Usage

Set value to the primary pane percentage and orientation for horizontal or vertical splits. Provide two child panes.

import { RuiWindowSplitter } from '@ecopages/radiant-ui/window-splitter';
 
<RuiWindowSplitter value={50} orientation="horizontal" label="Split view">
  <div>Editor</div>
  <div>Preview</div>
</RuiWindowSplitter>

Initial pane ratio

value sets the primary pane percentage, clamped between 20 and 80. Users can drag the splitter to adjust.

Orientation

Use horizontal for side-by-side panes and vertical for stacked editor/console layouts.

Theming

Window Splitter maps to semantic border, surface, and focus roles, never Tailwind palette steps:

PartCSS roles
Frame (rui-window-splitter)border, radius-container
Panesbackground, on-background, --space-inset
Separatorborder
Separator focusfocus-ring

Override at the theme layer, not in component CSS.

API

RuiWindowSplitter is a custom element (<rui-window-splitter>) that owns the separator and pane sizing; the RuiWindowSplitter JSX view projects the two panes.

Attributes

AttributeTypeDefaultDescription
valuenumber50Primary pane size as a percentage (clamped 20–80).
orientationhorizontal · verticalhorizontalSplit axis.
labelstringSplit viewAccessible name for the separator.

Slots

SlotDescription
primaryFirst pane content.
secondarySecond pane content.

Events

EventDetailDescription
rui-splitter-change{ value: number }Emitted when the separator moves.

Props

PropTypeDefaultDescription
primaryJsxRenderableFirst pane content for the RuiWindowSplitter view.
secondaryJsxRenderableSecond pane content.

CSS classes

Public BEM classes on the composed surface (documented via @cssclass on RuiWindowSplitterElement):

ClassDescription
.rui-window-splitterRoot surface.
.rui-window-splitter--horizontalSide-by-side panes.
.rui-window-splitter--verticalStacked panes.
.rui-window-splitter__paneA pane region.
.rui-window-splitter__separatorFocusable separator (role="separator").

Theme roles

PartCSS variables consumed
Frame--border, --radius-container
Panes--background, --on-background, --space-inset
Separator--border
Separator focus--focus-ring

Accessibility

  • The splitter handle is keyboard focusable and adjustable with arrow keys.
  • Provide label so screen readers identify the split region.
  • Ensure both panes remain usable at minimum sizes; avoid content that breaks at narrow widths.