For AI agents: the complete documentation index is available at https://a3s-lab.github.io/UI/v0.4.1/en/llms.txt, the full documentation bundle is available at https://a3s-lab.github.io/UI/v0.4.1/en/llms-full.txt, and this page is available as Markdown at https://a3s-lab.github.io/UI/v0.4.1/en/harness/dock-workspace.md.

Dock Workspace

Dock Workspace is for professional applications that continuously rearrange context, a primary canvas, inspectors, previews, and output. A3S UI re-exports the complete Dockview 8.1.0 MIT API and adds an A3S theme, versioned layout persistence, and React/Vue hooks. The host still owns panel content, permissions, data, and window policy.

Live preview
Dockable workspaceDrag a tab or splitter to change the layout

The container needs a computed width and height. Do not use panel layout as a replacement for business routing; persist only user-recoverable view state.

Framework usage

useDockviewLayout restores a versioned snapshot when the layout becomes ready, creates the default layout after an unsuccessful restore, and debounce-saves subsequent changes. It returns api, status, save(), restore(), clear(), and reset(). The reset path removes retained Edge Group slots before rebuilding the default layout; native integrations can call resetDockviewLayout(api, initialize) for the same behavior. Supply migrate and validate for older snapshots; never place business data in a layout snapshot.

MIT capability coverage

AreaIntegrated capabilities
LayoutDockable two-dimensional grid, nested layouts, resizable splitters, size constraints, auto-resize, borderless mode, and watermark
Tabs and headersHeader position, headerless groups, full-width single tab, custom tabs, action slots, overflow menu, animated dragging, Tab Groups, and custom Group Chips
Drag and dropTab and group DnD, external DnD, touch and pen, per-feature opt-out, edge targets, backend strategy, custom overlay, and custom drag preview
Groups and windowsFloating Groups, bounds, custom drag handle, Popout Windows, custom popout URL, Edge Groups, locked groups, maximize, and restore
StatetoJSON() / fromJSON(), full layout state, custom panel parameters, empty state, versioned migration, and local persistence
Rendering and themeRender modes, custom scrollbars, strict CSP, built-in themes, CSS variables, tab-group palette, and Shadow DOM
API and eventsProgrammatic add/remove/move, directional placement, panel and group APIs, active-panel tracking, lifecycle events, runtime options, and custom UI strings
AccessibilityARIA, screen-reader announcements, visible focus, and baseline keyboard focus navigation
Standalone viewsGrid View, Split View, and Pane View
FrameworksVanilla TypeScript/JavaScript, React, and Vue 3

Essential orchestration

Edge, floating, popout, and maximize

const explorer = api.addEdgeGroup("left", {
  id: "explorer-edge",
  initialSize: 240,
  collapsedSize: 34,
});
api.addPanel({
  id: "files",
  component: "explorer",
  position: { referenceGroup: explorer.id },
});

api.addFloatingGroup(api.getPanel("inspector"), {
  width: 320,
  height: 440,
  position: { right: 24, top: 56 },
});
await api.addPopoutGroup(api.getPanel("preview"));
api.activePanel?.api.maximize();
api.activePanel?.api.exitMaximized();

External drag and events

External resources must pass host authorization before a panel is created. onWillDrop may reject a target; onDidDrop records only a completed result.

<DockviewReact
  components={components}
  onReady={layout.onReady}
  onWillDrop={(event) => {
    if (!canOpenResource(event)) event.preventDefault();
  }}
  onDidDrop={(event) => auditLayoutDrop(event)}
/>

Licence boundary

These entrypoints depend only on the MIT edition and do not reproduce commercial modules. Advanced overflow, multi-row tabs, pinned tabs, tab and Group Chip context menus, DnD compass, Smart Guides, auto-hide Edge Groups, automatic edge docking, layout history, spatial keyboard navigation, and keyboard docking are outside this integration. Evaluate the upstream commercial licence when those capabilities are required.

Product and accessibility requirements

  • Give every panel a stable ID, understandable title, and explicit scroll owner; position must not carry the only meaning.
  • A blocked popout must preserve the original panel and provide a retry path.
  • Persistence failure must not block dragging or resizing; failed restoration falls back to a usable default layout.
  • Custom tabs, header actions, and panel content need visible focus and accessible names.
  • Touch targets need sufficient size. On narrow screens, merge complex panes into a tab group instead of squeezing unreadable columns.