WCAG 2.1 AA — release blocker
Web (React DOM)
- The component renders a generic
<div>. It does not choose a heading level for you — pass an<h2>/<h3>element astitlewhen the section belongs in your page outline. - The description is plain muted text. It reads after the title in DOM order.
- The
actionslot sits to the right of the title; any focusable child must satisfy its own a11y contract.
React Native
- Renders
View+Text. EachTextis independently focusable for screen readers. - For sectioned forms, set
accessibilityRole="header"on the titleTextif you want it announced as a heading.
Color is never the only signal
- The title uses
text-foregroundand the description usestext-muted-foreground— both verified ≥ 4.5:1 against the card background in light AND dark.
Audit checklist
- Title element has a proper heading level when the section belongs in the page outline.
- Action slot's child satisfies its own a11y rules (button focus, link href, badge
aria-label). - Description contrast ≥ 4.5:1 in light AND dark.