React dialogs often start simple.
You add an isOpen state, then a selected item state, then confirm/cancel callbacks, then another dialog after the first one.
Eventually, a simple flow can become scattered across multiple components.
For example, a user flow like this:
Select a user






