Summary
<InlineLoading> and <InlineNotification> components appear and disappear dynamically in MuscleMap.jsx, History.jsx, Report.jsx, and other pages, but they are not wrapped in aria-live regions. Screen reader users must manually navigate to discover that the app is loading or that an error has occurred. Errors in particular require immediate announcement — a user who submits a form and receives an error should hear it without having to hunt for it.
Priority
High
Acceptance criteria
Summary
<InlineLoading>and<InlineNotification>components appear and disappear dynamically inMuscleMap.jsx,History.jsx,Report.jsx, and other pages, but they are not wrapped inaria-liveregions. Screen reader users must manually navigate to discover that the app is loading or that an error has occurred. Errors in particular require immediate announcement — a user who submits a form and receives an error should hear it without having to hunt for it.Priority
High
Acceptance criteria
<InlineNotification>instances are wrapped in (or themselves are inside) arole=\"alert\"/aria-live=\"assertive\"region, so errors are announced immediately<InlineLoading>instances are wrapped in anaria-live=\"polite\"region witharia-busy=\"true\"while loading andaria-busy=\"false\"when completeInlineNotificationalready setsrole=\"alert\"internally; if it does, document this; if it does not, add the wrapper