Accessibility (a11y) ensures that all users — including those using assistive technologies — can effectively use the product.
The design system targets WCAG 2.1 AA compliance:
| Context | Minimum Ratio | Notes |
|---|---|---|
| Body text | 4.5:1 | --ds-color-text-primary against background |
| Large text (≥18px bold / ≥24px) | 3:1 | Headings, button labels |
| Non-text elements | 3:1 | Icons, borders, focus indicators |
| Decorative elements | None | Pure decoration, conveys no information |
accent1) may have insufficient contrast against white backgrounds in light mode — use with caution for text--ds-color-text-white-primary against brand color backgroundsAll interactive components must support keyboard operation:
| Key | Behavior |
|---|---|
Tab | Move forward through focusable elements |
Shift + Tab | Move backward through focusable elements |
Enter / Space | Activate buttons, links |
Escape | Close dialogs, menus, popovers |
Arrow Keys | Move within option groups (Radio, Menu, Tabs) |
Home / End | Jump to first/last option |
2px solid outline with color --ds-color-brand-accent1-default| Component | Required Attributes |
|---|---|
| Button | role="button", aria-disabled, aria-pressed (toggle) |
| Checkbox | role="checkbox", aria-checked (supports mixed) |
| Radio | role="radio", aria-checked, role="radiogroup" wrapper |
| Dialog | role="dialog", aria-modal="true", aria-labelledby |
| Tabs | role="tablist", role="tab", role="tabpanel", aria-selected |
| Menu | role="menu", role="menuitem", aria-expanded |
| Search | role="search", aria-label |
| Badge | aria-label describing the count meaning |
| Alert | role="alert", aria-live="assertive" |
alt textaria-hidden="true"aria-live regionsaria-describedby)