This is a way to add back some of the "free" animations that we lose when
creating custom bindings instead of using `@State` variables, which is
extremely common in TCA / unidirectional architecture.
For an example check out the live preview in the `WithStateBinding` file.
The first is with a standard State binding, click to get the detail and then
drag from the leading edge slowly. You will notice the selection highlight _gradually_
gets less the more you drag (or stronger if you go back).
For the second one with a custom binding, drag back and you will notice it is either
entirely selected, or deselected.
The third uses `WithStateBinding` to give _back_ the nice animations to custom bindings.
This gives us a more readable approach to set up navigation links
that mirrors other `SwiftUI` navigation paradigms such as `.sheet`.
We use the modifier to simplify navigation link setup for `TransactionHistoryView`
We also include some `Binding` extensions to help creating them.
This adds a "TCA" feature of a (very) basic transaction history and detail.
It demonstrates a purely state driven navigation stack.
Specifically, a `route: Route?` value is tracked in the state.
This value is driven by the selection of a transaction in the list,
setting it to to `.selectedTransaction(transaction)`,
which then pushes the detail view for that `transaction` onto the `NavigationView`.
Popping the detail view sets the property to `nil`.
Take a look at the previews in `TransactionHistoryView` try them "live" as well.
**N.B** The models are _not_ correct in any way, though are meant to be somewhat representative
and give something to display.