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.