This diff fixes the new modals. Allowing the presenter to pass a React tree as the content of the alert makes the rendering fully flexible but didn't work because the internal implementation was serializing the alert to JSON.
This diff also fixes several regressions caused by the previous patch that moved a few things to the Hook syntax and exposed places where we need better test coverage. (It's surprising to me that the previous patch passed all the tests, actually.) I will write some additional tests in another diff.