Tessli
  • K-01
  • Components
  • Draft

Native elements first

Use the native element (button, a, details, input, select, dialog) before a custom widget.

Draft — not yet reviewed by a maintainer

Why it matters

Native elements come with keyboard support, focus handling, form behaviour and screen-reader semantics. A custom widget has to rebuild all of that and usually misses some of it.

How to check it

No clickable div or span (onClick, role="button"); Tab reaches every control.

The default it guards against

A div with onClick as a button, a script-driven accordion instead of details and summary, a custom toggle that isn't a radio or checkbox.

Library items that apply it

Where it comes from

  • WCAG 2.2 SC 4.1.2 Name, Role, Value (A)
  • WCAG 2.2 SC 2.1.1 Keyboard (A)
  • docs/quality-gates.md (no invalid nested interactive markup)