Panel
Header bar · body · footer, plus a collapsible panel
Session settings
nockerl-cli · primary
A panel is a persistent, in-layout region: a header bar with a title and actions, a padded body, and an optional footer. Larger than a card; not an overlay.
The header chevron collapses and expands the body. The transition animates grid height (flash-free) and freezes under reduced-motion. Click the header to toggle.
Toolbar row · inspector (key / value) · nested sections
Output
A toolbar row hosts secondary controls (toggles, actions) on a slightly raised tier between the header and the body. Word wrap is on.
Inspector
Selected session
Advanced
Sampling
A panel can contain section panels: a nested surface a tier up, with its own header and body.
Permissions
Sections share the panel material at the control radius, divided by hairlines.
Split pane: two panels + a draggable, keyboard-operable splitter
Explorer
12 sessions
The left pane. Drag the splitter, or focus it and press Arrow Left / Right (Home / End to snap). Width is clamped between 25% and 75%.
Detail
nockerl-cli · gateway
The right pane fills the remaining space. A split-pane region stays in the layout; it is not an overlay like a drawer.
Saved 0 times · drag or arrow-key the splitter. The island is live.
The web console’s dockable side
panel (inspector, outline, agent details) is a composition of this Panel (with its
working splitter) beside the main surface, optionally inside a
Drawer on narrow widths. It ships as an app VIEW; no
DevSidePanel component exists or is planned. If drag-to-dock behavior is ever needed,
it lands here as a Panel extension, never a fork.
Parameters
Section titled “Parameters”Panel vs. card vs. drawer: a panel is a persistent, in-layout region defined by a header bar + body (+ footer). It is larger than a card (a content tile) and, unlike a drawer, it stays in the layout rather than overlaying as an edge-anchored sheet. The real divergences:
- No panel component yet (web + Android + Swift). Web ships the intended
Panel/PanelGroupAPI above; Android composes a panel fromNockerlCard+NockerlPanelShape(asToolCallCard/AgentTranscriptPaneldo); Swift’s closest isSettingsCard(title + body, no footer / toolbar / collapse). OnePanelwrapper per platform is the planned step. - Panel radius: the token
radius.panelis 12 (ComposeNockerlPanelShape= 12dp matches). Swift’sSettingsCardusescardRadius(14pt) thoughNockerlTheme.panelRadius(12) exists; it should read the panel token. - Split pane: web has a draggable, keyboard-operable
PanelResizeHandle(role="separator"+ Arrow keys). Swift builds a fixed-width pane in anHStack(no live resize) and deliberately avoidsNavigationSplitView(its opaque sidebar fights the facet background). Compose has no split-pane idiom yet. - Collapse: web animates grid height; Compose uses
AnimatedVisibility; SwiftSettingsCardhas no collapse. One collapse affordance needs to win.