Problem
The shared Button component hides its children while isLoading is true and only shows a spinner. In several flows, this removes important context such as whether a project is being submitted, updated, or loaded.
Suggested fix
Let loading buttons keep their label by default, optionally replacing only icons with the spinner. Add an accessible loading label when needed.
Acceptance criteria
Loading buttons retain meaningful text.
Spinner has appropriate accessible treatment.
Existing callers continue to work without layout shifts.
Forms still prevent duplicate submits while loading.
Problem
The shared Button component hides its children while isLoading is true and only shows a spinner. In several flows, this removes important context such as whether a project is being submitted, updated, or loaded.
Suggested fix
Let loading buttons keep their label by default, optionally replacing only icons with the spinner. Add an accessible loading label when needed.
Acceptance criteria
Loading buttons retain meaningful text.
Spinner has appropriate accessible treatment.
Existing callers continue to work without layout shifts.
Forms still prevent duplicate submits while loading.