This is an example reusable element I made for our application https://github.com/sporto/elm-select
My current API is not great as it requires a lot of boilerplate to hook init, state, update and view.
But in summary this library requires:
- Some configuration
- App state: Some state that the application manages e.g. currently selected thing
- Hidden state: Some state that the component cares about, that can be hidden from the app