Skip to content

kanso-ui

The accessibility lives once. The frameworks are skins.

One core, two frameworks

State, keyboard handling, ARIA and focus management live once in plain TypeScript. Vue and React are thin adapters that bind reactivity and render.

Headless by default

Components expose data-part and data-state. The stylesheet is opt-in, and the library ships no fonts.

Keyboard tested, not just scanned

axe cannot detect a broken arrow-key handler or a leaking focus trap. Every interactive component asserts its full keyboard map in both frameworks.

SSR safe

IDs come from the framework’s own stable primitive, never generated in core — the mismatch that breaks naive headless libraries.