Target

WCAG 2.1 AA for all interactive components. This covers contrast ratios, keyboard operability, focus management, and programmatic name. Components that only render content (Badge, Tag without href) have no interactivity requirements, though color usage still follows the non-reliance rule.

Principles

Semantic HTML first Components use native elements wherever possible. Tabs use button elements with role="tab", links use a, interactive chips use button. This gives correct baseline behavior without extra ARIA.
Color is not the only signal No component relies on color alone to convey state or meaning. Badge palette changes are always paired with a text label. Selected state in Chip is communicated via aria-pressed in addition to visual change.
Visible focus Every interactive element shows a focus ring when navigated by keyboard. Focus rings use :focus-visible so they do not appear on mouse click. Focus is never suppressed.
Accessible by default Components do not require extra props to be accessible. aria-pressed, aria-selected, and role attributes are applied internally based on component state.

Known considerations

These are areas where the component provides the structure but the consuming app carries responsibility.

External links Link and FeatureCard with external open a new tab. The visual arrow icon indicates this, but screen readers do not automatically announce the behavior. Add visible "(opens in new tab)" text or an aria-label on critical links.
Badge semantics Badge renders a plain span. If the badge conveys live status (e.g. an unread count that updates), the consuming app should add aria-live="polite" on a wrapping element.
FeatureCard link text When FeatureCard renders as a link, the accessible name comes from the card's text content. The title should be descriptive enough to make sense out of context. Avoid generic titles like "Learn more".
Disabled state Disabled Chips are not keyboard-reachable. WCAG 2.1 does not require disabled components to meet contrast ratios (exception in 1.4.3). Disabled FeatureCard renders a non-interactive div.