Description
This is a UI/UX issue. app/components/StreamRow.tsx tracks isProcessing while a pause/start/withdraw POST is in flight, but the action button does not show a spinner/disabled visual or set aria-busy, and success is not announced (only errors surface via ErrorToast). Polish the action button's loading and result feedback so the row clearly reflects in-flight and completed actions. This issue covers micro-interaction and status-message accessibility.
Requirements and Context
- While
isProcessing, show a disabled + spinner/label state on the action button and set aria-busy="true".
- On success, announce via a polite live region (or the shared toast system) and reflect the resulting status visually.
- Keep the existing
ErrorToast retry path; ensure focus is not lost when the button toggles state.
- Must be secure, tested, and documented
- Should be efficient and easy to review
Suggested Execution
- Fork the repo and create a branch
git checkout -b task/streamrow-action-loading
- Implement changes
app/components/StreamRow.tsx
app/globals.css (button busy/spinner styles)
- Test and commit
npm test -- StreamRow
- Cover edge cases (rapid clicks, failure)
Example commit message
task: add accessible loading and success feedback to StreamRow actions
Acceptance Criteria
Guidelines
- WCAG 2.1 AA: 4.1.3 status messages, 2.4.3 focus order
- Clear documentation and inline comments
- Timeframe: 96 hours
Description
This is a UI/UX issue.
app/components/StreamRow.tsxtracksisProcessingwhile a pause/start/withdraw POST is in flight, but the action button does not show a spinner/disabled visual or setaria-busy, and success is not announced (only errors surface viaErrorToast). Polish the action button's loading and result feedback so the row clearly reflects in-flight and completed actions. This issue covers micro-interaction and status-message accessibility.Requirements and Context
isProcessing, show a disabled + spinner/label state on the action button and setaria-busy="true".ErrorToastretry path; ensure focus is not lost when the button toggles state.Suggested Execution
app/components/StreamRow.tsxapp/globals.css(button busy/spinner styles)npm test -- StreamRowExample commit message
Acceptance Criteria
aria-busyis set during the requestGuidelines