ObjectStackObjectStack

Touch

Touch protocol schemas

Touch Target Configuration Schema

Ensures touch targets meet WCAG 2.5.5 minimum size requirements (44x44px).

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

TypeScript Usage

import { GestureConfig, GestureType, LongPressGestureConfig, PinchGestureConfig, SwipeDirection, SwipeGestureConfig, TouchInteraction, TouchTargetConfig } from '@objectstack/spec/ui';
import type { GestureConfig, GestureType, LongPressGestureConfig, PinchGestureConfig, SwipeDirection, SwipeGestureConfig, TouchInteraction, TouchTargetConfig } from '@objectstack/spec/ui';

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

GestureConfig

Per-gesture configuration

Properties

PropertyTypeRequiredDescription
typeEnum<'swipe' | 'pinch' | 'long_press' | 'double_tap' | 'drag' | 'rotate' | 'pan'>Gesture type to configure
labelstring | ObjectoptionalDescriptive label for the gesture action
enabledbooleanWhether this gesture is active
swipeObjectoptionalSwipe gesture settings (when type is swipe)
pinchObjectoptionalPinch gesture settings (when type is pinch)
longPressObjectoptionalLong press settings (when type is long_press)

GestureType

Touch gesture type

Allowed Values

  • swipe
  • pinch
  • long_press
  • double_tap
  • drag
  • rotate
  • pan

LongPressGestureConfig

Long press gesture recognition settings

Properties

PropertyTypeRequiredDescription
durationnumberHold duration in milliseconds to trigger long press
moveTolerancenumberoptionalMax movement in pixels allowed during press

PinchGestureConfig

Pinch/zoom gesture recognition settings

Properties

PropertyTypeRequiredDescription
minScalenumberoptionalMinimum scale factor (e.g., 0.5 for 50%)
maxScalenumberoptionalMaximum scale factor (e.g., 3.0 for 300%)

SwipeDirection

Allowed Values

  • up
  • down
  • left
  • right

SwipeGestureConfig

Swipe gesture recognition settings

Properties

PropertyTypeRequiredDescription
directionEnum<'up' | 'down' | 'left' | 'right'>[]Allowed swipe directions
thresholdnumberoptionalMinimum distance in pixels to recognize swipe
velocitynumberoptionalMinimum velocity (px/ms) to trigger swipe

TouchInteraction

Touch and gesture interaction configuration

Properties

PropertyTypeRequiredDescription
gesturesObject[]optionalConfigured gesture recognizers
touchTargetObjectoptionalTouch target sizing and hit area
hapticFeedbackbooleanoptionalEnable haptic feedback on touch interactions
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")

TouchTargetConfig

Touch target sizing configuration (WCAG accessible)

Properties

PropertyTypeRequiredDescription
minWidthnumberMinimum touch target width in pixels (WCAG 2.5.5: 44px)
minHeightnumberMinimum touch target height in pixels (WCAG 2.5.5: 44px)
paddingnumberoptionalAdditional padding around touch target in pixels
hitSlopObjectoptionalInvisible hit area extension beyond the visible bounds

On this page