Telegram: https://t.me/+DOylgFv1jyJlNzM0
Why this matters
The shared Button (frontend/src/components/ui/Button.tsx) shows a spinner SVG when loading is true, but the button gets no aria-busy="true" and the spinner has no accessible name. Screen-reader users get no indication the action is in progress; the disabled state is conveyed but not the "loading" semantics. This affects every loading button in the app (create, withdraw, top-up, cancel).
Acceptance criteria
Files to touch
frontend/src/components/ui/Button.tsx
Out of scope
Telegram: https://t.me/+DOylgFv1jyJlNzM0
Why this matters
The shared
Button(frontend/src/components/ui/Button.tsx) shows a spinner SVG whenloadingis true, but the button gets noaria-busy="true"and the spinner has no accessible name. Screen-reader users get no indication the action is in progress; the disabled state is conveyed but not the "loading" semantics. This affects every loading button in the app (create, withdraw, top-up, cancel).Acceptance criteria
aria-busy={loading}on the buttonaria-hidden="true"and add an accessible loading indicator (e.g. visually-hidden "Loading" text) whenloadingFiles to touch
frontend/src/components/ui/Button.tsxOut of scope