Resizable split pane
List and record side by side (tickets inbox, orders peek pinned to split). Drag the handle or use the keyboard; the width is remembered per person; collapse the list with ⌘\.
Covers: M06. Exports: SplitPane.
Anatomy
The component as it sits in the product: English, compact, real data shapes.
States
5 states, left to right, top to bottom. A mock poll never finishes, so each state is drawn on purpose.
Density
The phone shell is always comfortable (POWERUPS #15): 44px tap targets, 16px inputs. Compact exists on desktop only; see the desktop page.
English · 中文
Staff pick en or cn (T001 Q25). Labels arrive localised; CJK falls back to PingFang SC / Noto Sans SC.
Long string · permission denied
The long-string case (PL-063) and what a role without the permission sees (the server decides; T003).
Contract
The @rj/admin-kit API for this family. Mirrored in CONTRACT.md.
- Export
SplitPane·@rj/admin-kit- Props
left·right·defaultSize·minSize320px ·collapsible·storageKey- States
- default · dragging · collapsed · empty · loading
- shadcn / Radix
- Resizable (shadcn)
- Package underneath
- react-resizable-panels · zustand persist (width)
- Accessibility
- handle is role=separator with aria-valuenow; ←→ resize by 16px, Home/End collapse/expand
- API operations
- admin.tickets.index + admin.tickets.show · admin.orders.index + admin.orders.show
- Phone variant
- none: list → record