ObjectStackObjectStack

Keyboard

Keyboard protocol schemas

Focus Trap Configuration Schema

Constrains keyboard focus within a specific container (e.g., modals, dialogs).

Source: packages/spec/src/ui/keyboard.zod.ts

TypeScript Usage

import { FocusManagement, FocusTrapConfig, KeyboardNavigationConfig, KeyboardShortcut } from '@objectstack/spec/ui';
import type { FocusManagement, FocusTrapConfig, KeyboardNavigationConfig, KeyboardShortcut } from '@objectstack/spec/ui';

// Validate data
const result = FocusManagement.parse(data);

FocusManagement

Focus and tab navigation management

Properties

PropertyTypeRequiredDescription
tabOrderEnum<'auto' | 'manual'>Tab order strategy: auto (DOM order) or manual (explicit tabIndex)
skipLinksbooleanProvide skip-to-content navigation links
focusVisiblebooleanShow visible focus indicators for keyboard users
focusTrapObjectoptionalFocus trap settings
arrowNavigationbooleanEnable arrow key navigation between focusable items

FocusTrapConfig

Focus trap configuration for modal-like containers

Properties

PropertyTypeRequiredDescription
enabledbooleanEnable focus trapping within this container
initialFocusstringoptionalCSS selector for the element to focus on activation
returnFocusbooleanReturn focus to trigger element on deactivation
escapeDeactivatesbooleanAllow Escape key to deactivate the focus trap

KeyboardNavigationConfig

Keyboard navigation and shortcut configuration

Properties

PropertyTypeRequiredDescription
shortcutsObject[]optionalRegistered keyboard shortcuts
focusManagementObjectoptionalFocus and tab order management
rovingTabindexbooleanEnable roving tabindex pattern for composite widgets
ariaLabelstring | ObjectoptionalAccessible label for screen readers (WAI-ARIA aria-label)
ariaDescribedBystringoptionalID of element providing additional description (WAI-ARIA aria-describedby)
rolestringoptionalWAI-ARIA role attribute (e.g., "dialog", "navigation", "alert")

KeyboardShortcut

Keyboard shortcut binding

Properties

PropertyTypeRequiredDescription
keystringKey combination (e.g., "Ctrl+S", "Alt+N", "Escape")
actionstringAction identifier to invoke when shortcut is triggered
descriptionstring | ObjectoptionalHuman-readable description of what the shortcut does
scopeEnum<'global' | 'view' | 'form' | 'modal' | 'list'>Scope in which this shortcut is active

On this page