accessibility-first react components

Inaccessibility is a compile error.

Components that refuse to render inaccessibly. Copied into your repo, not installed from npm.

WebAIM Million 2026 found WCAG violations on 95.9% of the top one million homepages.

The same six categories show up every year: missing alt text, unlabelled inputs, empty buttons, low contrast. A library can prevent them.

The contract

Every artui component promises one or both of:

Compile-time prevention

If a usage cannot be accessible, it must be a TypeScript error. <Image /> with no alt does not compile. An Accordion.Trigger with an empty label does not compile.

Runtime fallback

Whatever the type system cannot express surfaces as a red development overlay and a console.error. Both layers are no-ops in production. Shipping is silent. Development is noisy on purpose.

Why shadcn-style distribution

artui has no runtime package. The CLI copies component source into your repo.

Audit every line

The dev overlay says exactly what triggered it. You can read, modify, and own every file.

No version coupling

When the registry changes, you opt in by running artui add again. Your existing copy keeps working.

No tree-shaking debates

You import what is in your repo, full stop. No barrel files, no surprise transitive bundles.

What artui is not