Accessibility

What is guaranteed, and what is still on you.

A component that skips keyboard support is not finished, so none of these ship without it. Here is the standing contract.

Guaranteed

  • Correct roles and ARIA state on every interactive element, reflecting the live model — never set once at render.
  • Full keyboard operation, documented per component, including roving tabindex where a group owns a single tab stop.
  • Visible focus that survives theming — focus rings derive from --hk-accent, so they follow your palette.
  • Focus trapped and restored by overlays; the trigger gets focus back on close.
  • Live regions for anything that appears unprompted, with polite or assertive chosen by tone.

Still your job

  • Writing labels that mean something. Every control accepts one; none of them invent it.
  • Contrast of your chosen accent against your chosen surface — the tokens do not police each other.
  • Reading order of your page. A component cannot fix a layout that tabs sideways.

Found a gap? That is a bug, not a feature request, and it jumps the queue.