Skip to main content
Version: v1.3.2

Accessibility

Raaghu Design System follows accessibility best practices to ensure components work with assistive technologies and meet WCAG 2.1 AA standards.


Color Contrast​

Default color choices conform to WCAG 2.0 level AA requirements:

  • Normal text: Minimum 4.5:1 contrast ratio
  • Large text: Minimum 3:1 contrast ratio
  • Interactive elements: Minimum 3:1 contrast ratio

Guidelines:

  • Don't rely solely on color to convey information
  • Use multiple visual cues (icons, text, patterns)
  • Test color combinations with accessibility tools

High Contrast Support​

Browser Support:

  • Primary: Microsoft Edge and Internet Explorer 11
  • Secondary: Mozilla Firefox

Best Practices:

// ✅ Use semantic HTML elements
<button>Click me</button>

// ❌ Avoid non-semantic elements for interactions
<div onClick={handleClick}>Click me</div>

High Contrast CSS:

@media (-ms-high-contrast: active) {
.custom-element {
background-color: ButtonFace;
color: ButtonText;
border: 1px solid ButtonText;
}
}

Screen Reader Support​

Primary support: Microsoft Edge with Windows Narrator

ARIA Implementation:

// Descriptive labels
<button aria-label="Close dialog">×</button>

// Progress indicators
<div
role="progressbar"
aria-valuenow={50}
aria-valuemin={0}
aria-valuemax={100}
>
50%
</div>

// Live regions for dynamic content
<div aria-live="polite">{statusMessage}</div>

Screen Reader Only Text:

.sr-only {
position: absolute;
width: 1px;
height: 1px;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
}

Keyboard Navigation​

Focus Management:

.interactive-element:focus {
outline: 2px solid #005fcc;
outline-offset: 2px;
}

Key Interactions:

  • Tab/Shift+Tab: Navigate between elements
  • Enter/Space: Activate buttons and links
  • Arrow keys: Navigate within components
  • Escape: Close modals or cancel actions

Component Examples​

Accessible Button:

<RdsButton
label="Submit form"
aria-describedby={hasError ? "error-message" : undefined}
/>

Accessible Form:

<label htmlFor="email">Email *</label>
<input
id="email"
type="email"
aria-invalid={hasError}
aria-describedby="email-error"
/>
{hasError && (
<div id="email-error" role="alert">
Please enter a valid email
</div>
)}

Accessible Modal:

<div
role="dialog"
aria-labelledby="dialog-title"
aria-modal="true"
>
<h2 id="dialog-title">Confirm Action</h2>
{/* Modal content */}
</div>

Testing Tools​

Testing Checklist:

  1. Keyboard navigation only
  2. Screen reader testing
  3. High contrast mode
  4. Color blind simulation
  5. Automated accessibility scans