hacifootprint
hcifootprintType Aliases

Binding

Type Alias: Binding

Binding = { actuation?: Actuation; kind: "element"; locator: ElementLocator; } | { chord: string; kind: "keychord"; } | { kind: "programmatic"; provider: string; } | { href: string; kind: "url"; } | { kind: "tab"; target: string; }

Defined in: src/atom/types.ts:192

Activation descriptor. Generalized past "element selector" because keyboard shortcuts have no element and canvas surfaces have no ARIA — those bind via keychord and programmatic (the component publishes its own affordance). With url and tab the set covers the four gestures a routed web app actually performs: url | click (element) | tab | programmatic.

Union Members

Type Literal

{ actuation?: Actuation; kind: "element"; locator: ElementLocator; }


Type Literal

{ chord: string; kind: "keychord"; }


Type Literal

{ kind: "programmatic"; provider: string; }


Type Literal

{ href: string; kind: "url"; }

A literal address the app's OWN router can be handed (see SessionOptions.navigate). href must be FULLY literal — a ':param' segment is refused loudly at authoring, because the library never guesses params: an address either exists as bytes or the gesture does not exist.


Type Literal

{ kind: "tab"; target: string; }

A tab switch to a sibling node path. Its own gesture, DESCRIPTIVE in v1: it materialises only via a registered handler, and the GESTURE never moves the page cursor — flipping a tab is not, by itself, changing the page you are on. After the app's handler flips tabs, the existing visibility wire (show/setVisible) reports the result; fire() itself never writes the PresenceIndex.

What DOES move the cursor is the app declaring effect.navigatesTo on the edge, and that is true of every gesture including this one — a graph that models a tab as a page is saying the page changes, and the library takes the declaration rather than second-guessing it by gesture. Such a fire claims its destination (TransitionRecord.arrival) exactly like a link would.

On this page