Skip to content

Add an in-app loading state to StreamRow action buttons and announce success/failure accessibly #219

@greatest0fallt1me

Description

@greatest0fallt1me

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

  1. Fork the repo and create a branch
    git checkout -b task/streamrow-action-loading
  2. Implement changes
    • app/components/StreamRow.tsx
    • app/globals.css (button busy/spinner styles)
  3. 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

  • Action button shows disabled+busy visual while processing
  • aria-busy is set during the request
  • Success is announced; focus is preserved
  • Existing error/retry behavior intact

Guidelines

  • WCAG 2.1 AA: 4.1.3 status messages, 2.4.3 focus order
  • Clear documentation and inline comments
  • Timeframe: 96 hours

Metadata

Metadata

Assignees

Labels

Stellar WaveIssues in the Stellar wave programaccessibilityWCAG 2.1 AA accessibilityenhancementNew feature or improvementui/uxUI/UX design, usability, and visual polish

Type

No fields configured for Task.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions