Component registry

Dock

Persistent place for the current task, clear of the phone app bar and keyboard.

All components · Kit documents · Definition as JSON

What shipped

4.198.0 let the Dock’s panels mount inside the menu on a phone (dock-mount.js), with no head of their own and the same state as the floating Dock; 4.196.0 made the Actor block one row and one field, and left out a black stage for a session that ended with no picture.

“combine and consolidate these two menus into one unified menu … easier to search between.” — the owner, 2026-11-10

92 The menu's places: Here, Feed, Chat, Vibe, You; Vibe holds Chat and Agents.37 The menu and the Dock lead to each other and wear one head.3 The button that opens it closes it.20 Status is a word, never colour alone.

Shipped in 4.198.0 · Every Shared release

Live web demo

Web source: openvibe-shared/kit · kit.dock({ action, name, placeholder, label })

Anatomy

  • surfacebottom container
  • contentcurrent task
  • actionsend or confirm

Props

content
string
action
action
busy
boolean

Behavior and accessibility

States
ready · busy · disabled
Tokens
color.bg.raised · color.line.strong · size.tap
Keyboard
Keeps the focused control in view
Outside tap
No dismissal
Scroll lock
Page remains scrollable
Reduced motion
Remove movement; keep the state change.
Accessibility
Dock. Keep the action after the content in focus order. At least 44 × 44 dp or pt for every touch action.

Android · Jetpack Compose

Use Scaffold.bottomBar and imePadding; keep the primary action in a 48 dp control.

Material 3 container: SurfaceContainer

iOS · SwiftUI

Use safeAreaInset(edge: .bottom) with keyboard avoidance.

Example definition

{
  "schema": "design.component@1",
  "name": "dock",
  "props": {
    "content": "Write a message",
    "action": "Send"
  }
}

Other components