accessible-notifications
π―Skillfrom alexanderop/workouttracker
Enhance mobile app accessibility by generating clear, context-aware notifications with screen reader compatibility and adaptive formatting.
Installation
npx skills add https://github.com/alexanderop/workouttracker --skill accessible-notificationsSkill Details
|
Overview
# Accessible Notifications
Critical: Toasts Are Not Recommended
Toasts pose significant accessibility concerns and should be avoided. Use the alternatives below instead.
Why Toasts Are Problematic
WCAG Violations
- 2.2.1 Timing Adjustable (A): Auto-dismiss prevents users from reading content
- 1.3.2 Meaningful Sequence (A): DOM placement disconnects toast from trigger
- 2.1.1 Keyboard (A): Focus management is complex and often broken
- 4.1.3 Status Messages (AA): Assistive technology announcements are disruptive
Usability Issues
- Large displays: Toasts appear outside user's field of view
- Screen magnification: Toast may be outside magnified area
- Multitasking: Auto-dismiss causes missed messages
- Blocking UI: Floats over important content like submit buttons
What to Use Instead
Successfully-Completed Simple Actions
Do nothing extra. Success should be self-evident.
```vue
```
Successfully-Completed Complex Actions
Use persistent banners or progressive content display:
```vue
Created {{ bulkResult.count }} issues successfully.
```
Unsuccessful Actions (Errors)
Use inline validation or banners:
```vue
{{ submitError.message }}
```
Form Submission Success
Use interstitial confirmation or redirect with banner:
```vue
Your request has been submitted. Reference: #{{ referenceId }}
// router.push({ name: 'item-detail', params: { id: newItem.id } })
```
Long-Running Tasks
Use persistent banners + other channels (email, push notifications):
```vue
Export complete. Download file
```
Assistive Technology Announcements
When to Announce
- Always: Location changes, navigation
- Always: Failed user actions (validation, errors)
- Sometimes: Essential streaming content (logs)
- Avoid: Non-essential updates (presence indicators, comments by others)
Implementation
Use aria-live regions for dynamic content that must be announced:
```vue
{{ statusMessage }}
```
Quick Decision Guide
| Scenario | Solution |
|----------|----------|
| Simple action succeeded | No feedback needed |
| Complex action succeeded | Persistent banner |
| Action failed | Inline error or banner |
| Form submitted | Confirmation page or redirect |
| Long task complete | Banner + email/push |
| Need user attention | Dialog (interruptive) |
More from this repository7
Tracks and automatically advances kettlebell swing progressions through reps, time, and weight phases using an EMOM timer.
Helps product owners and business analysts streamline product planning by creating, refining, and prioritizing user stories, PRDs, backlogs, and roadmaps.
Enables adding new exercises to the workout tracker database by specifying exercise details like name, equipment, muscle group, type, and tracking metrics.
Provides comprehensive Vitest mocking strategies for creating test doubles, replacing dependencies, and verifying interactions in JavaScript/TypeScript tests.
Enables comprehensive Vue 3 integration testing using Vitest Browser Mode and Page Objects for verifying complex user flows and multi-component interactions.
vue-composable-testing skill from alexanderop/workouttracker
Generates high-quality Vue 3 composables by following established patterns and best practices for creating reusable Composition API logic.