I have several components that have complex flows. For example, a "deploy this code" button. It might have the following flow:
- if the user is typing, the button is hidden
- after the user stops typing, the button appears, is disabled, and reads "Saving..."
- after the code is saved, the button is enabled and reads "Test & Deploy"
- after the user clicks the button, it is disabled and reads "Testing..."
- if the tests fail, the button remains disabled and reads "Tests Failed"
- if the tests pass, the button remains disabled and reads "Deploying..."