Documentation
    Preparing search index...

    Interface WidgetAccessibility

    §75's accessibility description of a widget, carried verbatim as data.

    §75 spells this as a plain assignable record — button.accessibility = { role, label, description, tabIndex } — and that is exactly what ships: typed, serializable (§79).

    Live fields. WidgetAccessibility.tabIndex orders (and can exclude from) the Tab traversal keyboard.ts implements, as of 2026-08-07 (A-13). role, label, description, and the §75 states (disabled, checked, slider/progress values) are projected by installAccessibilityMirror (2026-09-06, A-13 remainder). Convenience accessors UIWidget.label and UIWidget.role write these fields so a setter can push a screen-reader update without replacing the whole record.

    interface WidgetAccessibility {
        description?: string;
        label?: string;
        role?: string;
        tabIndex?: number;
    }
    Index
    description?: string

    Accessible description (§75).

    label?: string

    Accessible name (§75).

    role?: string

    Semantic role, e.g. "button" (§75). Free-form: ARIA's vocabulary is not restated here.

    tabIndex?: number

    Keyboard traversal order (§75); absent means 0.

    Widgets are visited in ascending tabIndex, ties broken by scene order, and a negative value removes the widget from the traversal without making it unfocusable — focus() still works on it. See collectFocusOrder, which also states why this engine sorts plainly rather than copying the DOM's positive-before-zero rule.